aip-agents-binary 0.6.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of aip-agents-binary might be problematic. Click here for more details.
- aip_agents/__init__.py +65 -0
- aip_agents/__init__.pyi +19 -0
- aip_agents/a2a/__init__.py +19 -0
- aip_agents/a2a/__init__.pyi +3 -0
- aip_agents/a2a/server/__init__.py +10 -0
- aip_agents/a2a/server/__init__.pyi +4 -0
- aip_agents/a2a/server/base_executor.py +1086 -0
- aip_agents/a2a/server/base_executor.pyi +73 -0
- aip_agents/a2a/server/google_adk_executor.py +198 -0
- aip_agents/a2a/server/google_adk_executor.pyi +51 -0
- aip_agents/a2a/server/langflow_executor.py +180 -0
- aip_agents/a2a/server/langflow_executor.pyi +43 -0
- aip_agents/a2a/server/langgraph_executor.py +270 -0
- aip_agents/a2a/server/langgraph_executor.pyi +47 -0
- aip_agents/a2a/types.py +232 -0
- aip_agents/a2a/types.pyi +132 -0
- aip_agents/agent/__init__.py +27 -0
- aip_agents/agent/__init__.pyi +9 -0
- aip_agents/agent/base_agent.py +970 -0
- aip_agents/agent/base_agent.pyi +221 -0
- aip_agents/agent/base_langgraph_agent.py +3037 -0
- aip_agents/agent/base_langgraph_agent.pyi +233 -0
- aip_agents/agent/google_adk_agent.py +926 -0
- aip_agents/agent/google_adk_agent.pyi +141 -0
- aip_agents/agent/google_adk_constants.py +6 -0
- aip_agents/agent/google_adk_constants.pyi +3 -0
- aip_agents/agent/hitl/__init__.py +24 -0
- aip_agents/agent/hitl/__init__.pyi +6 -0
- aip_agents/agent/hitl/config.py +28 -0
- aip_agents/agent/hitl/config.pyi +15 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
- aip_agents/agent/hitl/manager.py +532 -0
- aip_agents/agent/hitl/manager.pyi +200 -0
- aip_agents/agent/hitl/models.py +18 -0
- aip_agents/agent/hitl/models.pyi +3 -0
- aip_agents/agent/hitl/prompt/__init__.py +9 -0
- aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
- aip_agents/agent/hitl/prompt/base.py +42 -0
- aip_agents/agent/hitl/prompt/base.pyi +24 -0
- aip_agents/agent/hitl/prompt/deferred.py +73 -0
- aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
- aip_agents/agent/hitl/registry.py +149 -0
- aip_agents/agent/hitl/registry.pyi +101 -0
- aip_agents/agent/interface.py +138 -0
- aip_agents/agent/interface.pyi +81 -0
- aip_agents/agent/interfaces.py +65 -0
- aip_agents/agent/interfaces.pyi +44 -0
- aip_agents/agent/langflow_agent.py +464 -0
- aip_agents/agent/langflow_agent.pyi +133 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.py +767 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.pyi +50 -0
- aip_agents/agent/langgraph_react_agent.py +2856 -0
- aip_agents/agent/langgraph_react_agent.pyi +170 -0
- aip_agents/agent/system_instruction_context.py +34 -0
- aip_agents/agent/system_instruction_context.pyi +13 -0
- aip_agents/clients/__init__.py +10 -0
- aip_agents/clients/__init__.pyi +4 -0
- aip_agents/clients/langflow/__init__.py +10 -0
- aip_agents/clients/langflow/__init__.pyi +4 -0
- aip_agents/clients/langflow/client.py +477 -0
- aip_agents/clients/langflow/client.pyi +140 -0
- aip_agents/clients/langflow/types.py +18 -0
- aip_agents/clients/langflow/types.pyi +7 -0
- aip_agents/constants.py +23 -0
- aip_agents/constants.pyi +7 -0
- aip_agents/credentials/manager.py +132 -0
- aip_agents/examples/__init__.py +5 -0
- aip_agents/examples/__init__.pyi +0 -0
- aip_agents/examples/compare_streaming_client.py +783 -0
- aip_agents/examples/compare_streaming_client.pyi +48 -0
- aip_agents/examples/compare_streaming_server.py +142 -0
- aip_agents/examples/compare_streaming_server.pyi +18 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
- aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
- aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +16 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +2 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.pyi +14 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +15 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +48 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +48 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +45 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_google_adk.py +41 -0
- aip_agents/examples/hello_world_google_adk.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_stream.py +44 -0
- aip_agents/examples/hello_world_google_adk_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain.py +28 -0
- aip_agents/examples/hello_world_langchain.pyi +5 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.pyi +2 -0
- aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_stream.py +36 -0
- aip_agents/examples/hello_world_langchain_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_langflow_agent.py +163 -0
- aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
- aip_agents/examples/hello_world_langgraph.py +39 -0
- aip_agents/examples/hello_world_langgraph.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.py +44 -0
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_stream.py +43 -0
- aip_agents/examples/hello_world_langgraph_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_model_switch_cli.py +210 -0
- aip_agents/examples/hello_world_model_switch_cli.pyi +30 -0
- aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
- aip_agents/examples/hello_world_multi_agent_adk.pyi +6 -0
- aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
- aip_agents/examples/hello_world_multi_agent_langchain.pyi +5 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.pyi +5 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_pii_logger.py +21 -0
- aip_agents/examples/hello_world_pii_logger.pyi +5 -0
- aip_agents/examples/hello_world_ptc.py +49 -0
- aip_agents/examples/hello_world_ptc.pyi +5 -0
- aip_agents/examples/hello_world_sentry.py +133 -0
- aip_agents/examples/hello_world_sentry.pyi +21 -0
- aip_agents/examples/hello_world_step_limits.py +273 -0
- aip_agents/examples/hello_world_step_limits.pyi +17 -0
- aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
- aip_agents/examples/hello_world_stock_a2a_server.pyi +17 -0
- aip_agents/examples/hello_world_tool_output_client.py +55 -0
- aip_agents/examples/hello_world_tool_output_client.pyi +5 -0
- aip_agents/examples/hello_world_tool_output_server.py +114 -0
- aip_agents/examples/hello_world_tool_output_server.pyi +19 -0
- aip_agents/examples/hitl_demo.py +724 -0
- aip_agents/examples/hitl_demo.pyi +67 -0
- aip_agents/examples/mcp_configs/configs.py +63 -0
- aip_agents/examples/mcp_servers/common.py +76 -0
- aip_agents/examples/mcp_servers/mcp_name.py +29 -0
- aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
- aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
- aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
- aip_agents/examples/mcp_servers/mcp_time.py +10 -0
- aip_agents/examples/pii_demo_langgraph_client.py +69 -0
- aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
- aip_agents/examples/pii_demo_langgraph_server.py +126 -0
- aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
- aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
- aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
- aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
- aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
- aip_agents/examples/tools/__init__.py +27 -0
- aip_agents/examples/tools/__init__.pyi +9 -0
- aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
- aip_agents/examples/tools/adk_arithmetic_tools.pyi +24 -0
- aip_agents/examples/tools/adk_weather_tool.py +60 -0
- aip_agents/examples/tools/adk_weather_tool.pyi +18 -0
- aip_agents/examples/tools/data_generator_tool.py +103 -0
- aip_agents/examples/tools/data_generator_tool.pyi +15 -0
- aip_agents/examples/tools/data_visualization_tool.py +312 -0
- aip_agents/examples/tools/data_visualization_tool.pyi +19 -0
- aip_agents/examples/tools/image_artifact_tool.py +136 -0
- aip_agents/examples/tools/image_artifact_tool.pyi +26 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.pyi +17 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +20 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +25 -0
- aip_agents/examples/tools/langchain_weather_tool.py +48 -0
- aip_agents/examples/tools/langchain_weather_tool.pyi +19 -0
- aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
- aip_agents/examples/tools/langgraph_streaming_tool.pyi +43 -0
- aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
- aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
- aip_agents/examples/tools/pii_demo_tools.py +189 -0
- aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
- aip_agents/examples/tools/random_chart_tool.py +142 -0
- aip_agents/examples/tools/random_chart_tool.pyi +20 -0
- aip_agents/examples/tools/serper_tool.py +202 -0
- aip_agents/examples/tools/serper_tool.pyi +16 -0
- aip_agents/examples/tools/stock_tools.py +82 -0
- aip_agents/examples/tools/stock_tools.pyi +36 -0
- aip_agents/examples/tools/table_generator_tool.py +167 -0
- aip_agents/examples/tools/table_generator_tool.pyi +22 -0
- aip_agents/examples/tools/time_tool.py +82 -0
- aip_agents/examples/tools/time_tool.pyi +15 -0
- aip_agents/examples/tools/weather_forecast_tool.py +38 -0
- aip_agents/examples/tools/weather_forecast_tool.pyi +14 -0
- aip_agents/executor/agent_executor.py +473 -0
- aip_agents/executor/base.py +48 -0
- aip_agents/guardrails/__init__.py +83 -0
- aip_agents/guardrails/__init__.pyi +6 -0
- aip_agents/guardrails/engines/__init__.py +69 -0
- aip_agents/guardrails/engines/__init__.pyi +4 -0
- aip_agents/guardrails/engines/base.py +90 -0
- aip_agents/guardrails/engines/base.pyi +61 -0
- aip_agents/guardrails/engines/nemo.py +101 -0
- aip_agents/guardrails/engines/nemo.pyi +46 -0
- aip_agents/guardrails/engines/phrase_matcher.py +113 -0
- aip_agents/guardrails/engines/phrase_matcher.pyi +48 -0
- aip_agents/guardrails/exceptions.py +39 -0
- aip_agents/guardrails/exceptions.pyi +23 -0
- aip_agents/guardrails/manager.py +163 -0
- aip_agents/guardrails/manager.pyi +42 -0
- aip_agents/guardrails/middleware.py +199 -0
- aip_agents/guardrails/middleware.pyi +87 -0
- aip_agents/guardrails/schemas.py +63 -0
- aip_agents/guardrails/schemas.pyi +43 -0
- aip_agents/guardrails/utils.py +45 -0
- aip_agents/guardrails/utils.pyi +19 -0
- aip_agents/mcp/__init__.py +1 -0
- aip_agents/mcp/__init__.pyi +0 -0
- aip_agents/mcp/client/__init__.py +14 -0
- aip_agents/mcp/client/__init__.pyi +5 -0
- aip_agents/mcp/client/base_mcp_client.py +369 -0
- aip_agents/mcp/client/base_mcp_client.pyi +148 -0
- aip_agents/mcp/client/connection_manager.py +228 -0
- aip_agents/mcp/client/connection_manager.pyi +51 -0
- aip_agents/mcp/client/google_adk/__init__.py +11 -0
- aip_agents/mcp/client/google_adk/__init__.pyi +3 -0
- aip_agents/mcp/client/google_adk/client.py +381 -0
- aip_agents/mcp/client/google_adk/client.pyi +75 -0
- aip_agents/mcp/client/langchain/__init__.py +11 -0
- aip_agents/mcp/client/langchain/__init__.pyi +3 -0
- aip_agents/mcp/client/langchain/client.py +265 -0
- aip_agents/mcp/client/langchain/client.pyi +48 -0
- aip_agents/mcp/client/persistent_session.py +612 -0
- aip_agents/mcp/client/persistent_session.pyi +122 -0
- aip_agents/mcp/client/session_pool.py +351 -0
- aip_agents/mcp/client/session_pool.pyi +101 -0
- aip_agents/mcp/client/transports.py +263 -0
- aip_agents/mcp/client/transports.pyi +132 -0
- aip_agents/mcp/utils/__init__.py +7 -0
- aip_agents/mcp/utils/__init__.pyi +0 -0
- aip_agents/mcp/utils/config_validator.py +139 -0
- aip_agents/mcp/utils/config_validator.pyi +82 -0
- aip_agents/memory/__init__.py +14 -0
- aip_agents/memory/__init__.pyi +5 -0
- aip_agents/memory/adapters/__init__.py +10 -0
- aip_agents/memory/adapters/__init__.pyi +4 -0
- aip_agents/memory/adapters/base_adapter.py +811 -0
- aip_agents/memory/adapters/base_adapter.pyi +176 -0
- aip_agents/memory/adapters/mem0.py +84 -0
- aip_agents/memory/adapters/mem0.pyi +22 -0
- aip_agents/memory/base.py +84 -0
- aip_agents/memory/base.pyi +60 -0
- aip_agents/memory/constants.py +49 -0
- aip_agents/memory/constants.pyi +25 -0
- aip_agents/memory/factory.py +86 -0
- aip_agents/memory/factory.pyi +24 -0
- aip_agents/memory/guidance.py +20 -0
- aip_agents/memory/guidance.pyi +3 -0
- aip_agents/memory/simple_memory.py +47 -0
- aip_agents/memory/simple_memory.pyi +23 -0
- aip_agents/middleware/__init__.py +17 -0
- aip_agents/middleware/__init__.pyi +5 -0
- aip_agents/middleware/base.py +96 -0
- aip_agents/middleware/base.pyi +75 -0
- aip_agents/middleware/manager.py +150 -0
- aip_agents/middleware/manager.pyi +84 -0
- aip_agents/middleware/todolist.py +274 -0
- aip_agents/middleware/todolist.pyi +125 -0
- aip_agents/ptc/__init__.py +48 -0
- aip_agents/ptc/__init__.pyi +10 -0
- aip_agents/ptc/doc_gen.py +122 -0
- aip_agents/ptc/doc_gen.pyi +40 -0
- aip_agents/ptc/exceptions.py +39 -0
- aip_agents/ptc/exceptions.pyi +22 -0
- aip_agents/ptc/executor.py +143 -0
- aip_agents/ptc/executor.pyi +73 -0
- aip_agents/ptc/mcp/__init__.py +45 -0
- aip_agents/ptc/mcp/__init__.pyi +7 -0
- aip_agents/ptc/mcp/sandbox_bridge.py +668 -0
- aip_agents/ptc/mcp/sandbox_bridge.pyi +47 -0
- aip_agents/ptc/mcp/templates/__init__.py +1 -0
- aip_agents/ptc/mcp/templates/__init__.pyi +0 -0
- aip_agents/ptc/mcp/templates/mcp_client.py.template +239 -0
- aip_agents/ptc/naming.py +184 -0
- aip_agents/ptc/naming.pyi +76 -0
- aip_agents/ptc/payload.py +26 -0
- aip_agents/ptc/payload.pyi +15 -0
- aip_agents/ptc/prompt_builder.py +571 -0
- aip_agents/ptc/prompt_builder.pyi +55 -0
- aip_agents/ptc/ptc_helper.py +16 -0
- aip_agents/ptc/ptc_helper.pyi +1 -0
- aip_agents/ptc/sandbox_bridge.py +58 -0
- aip_agents/ptc/sandbox_bridge.pyi +25 -0
- aip_agents/ptc/template_utils.py +33 -0
- aip_agents/ptc/template_utils.pyi +13 -0
- aip_agents/ptc/templates/__init__.py +1 -0
- aip_agents/ptc/templates/__init__.pyi +0 -0
- aip_agents/ptc/templates/ptc_helper.py.template +134 -0
- aip_agents/sandbox/__init__.py +43 -0
- aip_agents/sandbox/__init__.pyi +5 -0
- aip_agents/sandbox/defaults.py +9 -0
- aip_agents/sandbox/defaults.pyi +2 -0
- aip_agents/sandbox/e2b_runtime.py +267 -0
- aip_agents/sandbox/e2b_runtime.pyi +51 -0
- aip_agents/sandbox/template_builder.py +131 -0
- aip_agents/sandbox/template_builder.pyi +36 -0
- aip_agents/sandbox/types.py +24 -0
- aip_agents/sandbox/types.pyi +14 -0
- aip_agents/sandbox/validation.py +50 -0
- aip_agents/sandbox/validation.pyi +20 -0
- aip_agents/schema/__init__.py +69 -0
- aip_agents/schema/__init__.pyi +9 -0
- aip_agents/schema/a2a.py +56 -0
- aip_agents/schema/a2a.pyi +40 -0
- aip_agents/schema/agent.py +111 -0
- aip_agents/schema/agent.pyi +65 -0
- aip_agents/schema/hitl.py +157 -0
- aip_agents/schema/hitl.pyi +89 -0
- aip_agents/schema/langgraph.py +37 -0
- aip_agents/schema/langgraph.pyi +28 -0
- aip_agents/schema/model_id.py +97 -0
- aip_agents/schema/model_id.pyi +54 -0
- aip_agents/schema/step_limit.py +108 -0
- aip_agents/schema/step_limit.pyi +63 -0
- aip_agents/schema/storage.py +40 -0
- aip_agents/schema/storage.pyi +21 -0
- aip_agents/sentry/__init__.py +11 -0
- aip_agents/sentry/__init__.pyi +3 -0
- aip_agents/sentry/sentry.py +151 -0
- aip_agents/sentry/sentry.pyi +48 -0
- aip_agents/storage/__init__.py +41 -0
- aip_agents/storage/__init__.pyi +8 -0
- aip_agents/storage/base.py +85 -0
- aip_agents/storage/base.pyi +58 -0
- aip_agents/storage/clients/__init__.py +12 -0
- aip_agents/storage/clients/__init__.pyi +3 -0
- aip_agents/storage/clients/minio_client.py +318 -0
- aip_agents/storage/clients/minio_client.pyi +137 -0
- aip_agents/storage/config.py +62 -0
- aip_agents/storage/config.pyi +29 -0
- aip_agents/storage/providers/__init__.py +15 -0
- aip_agents/storage/providers/__init__.pyi +5 -0
- aip_agents/storage/providers/base.py +106 -0
- aip_agents/storage/providers/base.pyi +88 -0
- aip_agents/storage/providers/memory.py +114 -0
- aip_agents/storage/providers/memory.pyi +79 -0
- aip_agents/storage/providers/object_storage.py +214 -0
- aip_agents/storage/providers/object_storage.pyi +98 -0
- aip_agents/tools/__init__.py +64 -0
- aip_agents/tools/__init__.pyi +11 -0
- aip_agents/tools/browser_use/__init__.py +82 -0
- aip_agents/tools/browser_use/__init__.pyi +14 -0
- aip_agents/tools/browser_use/action_parser.py +103 -0
- aip_agents/tools/browser_use/action_parser.pyi +18 -0
- aip_agents/tools/browser_use/browser_use_tool.py +1120 -0
- aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
- aip_agents/tools/browser_use/llm_config.py +120 -0
- aip_agents/tools/browser_use/llm_config.pyi +52 -0
- aip_agents/tools/browser_use/minio_storage.py +198 -0
- aip_agents/tools/browser_use/minio_storage.pyi +109 -0
- aip_agents/tools/browser_use/schemas.py +119 -0
- aip_agents/tools/browser_use/schemas.pyi +32 -0
- aip_agents/tools/browser_use/session.py +76 -0
- aip_agents/tools/browser_use/session.pyi +4 -0
- aip_agents/tools/browser_use/session_errors.py +132 -0
- aip_agents/tools/browser_use/session_errors.pyi +53 -0
- aip_agents/tools/browser_use/steel_session_recording.py +317 -0
- aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
- aip_agents/tools/browser_use/streaming.py +815 -0
- aip_agents/tools/browser_use/streaming.pyi +81 -0
- aip_agents/tools/browser_use/structured_data_parser.py +257 -0
- aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
- aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
- aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
- aip_agents/tools/browser_use/types.py +78 -0
- aip_agents/tools/browser_use/types.pyi +45 -0
- aip_agents/tools/code_sandbox/__init__.py +26 -0
- aip_agents/tools/code_sandbox/__init__.pyi +3 -0
- aip_agents/tools/code_sandbox/constant.py +13 -0
- aip_agents/tools/code_sandbox/constant.pyi +4 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +306 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +102 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
- aip_agents/tools/constants.py +177 -0
- aip_agents/tools/constants.pyi +138 -0
- aip_agents/tools/date_range_tool.py +554 -0
- aip_agents/tools/date_range_tool.pyi +21 -0
- aip_agents/tools/document_loader/__init__.py +44 -0
- aip_agents/tools/document_loader/__init__.pyi +7 -0
- aip_agents/tools/document_loader/base_reader.py +302 -0
- aip_agents/tools/document_loader/base_reader.pyi +75 -0
- aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
- aip_agents/tools/document_loader/docx_reader_tool.pyi +10 -0
- aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
- aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
- aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
- aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
- aip_agents/tools/document_loader/pdf_splitter.py +169 -0
- aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
- aip_agents/tools/execute_ptc_code.py +308 -0
- aip_agents/tools/execute_ptc_code.pyi +90 -0
- aip_agents/tools/gl_connector/__init__.py +5 -0
- aip_agents/tools/gl_connector/__init__.pyi +3 -0
- aip_agents/tools/gl_connector/tool.py +383 -0
- aip_agents/tools/gl_connector/tool.pyi +74 -0
- aip_agents/tools/gl_connector_tools.py +119 -0
- aip_agents/tools/gl_connector_tools.pyi +39 -0
- aip_agents/tools/memory_search/__init__.py +29 -0
- aip_agents/tools/memory_search/__init__.pyi +5 -0
- aip_agents/tools/memory_search/base.py +200 -0
- aip_agents/tools/memory_search/base.pyi +69 -0
- aip_agents/tools/memory_search/mem0.py +365 -0
- aip_agents/tools/memory_search/mem0.pyi +29 -0
- aip_agents/tools/memory_search/schema.py +81 -0
- aip_agents/tools/memory_search/schema.pyi +25 -0
- aip_agents/tools/memory_search_tool.py +34 -0
- aip_agents/tools/memory_search_tool.pyi +3 -0
- aip_agents/tools/time_tool.py +117 -0
- aip_agents/tools/time_tool.pyi +16 -0
- aip_agents/tools/tool_config_injector.py +300 -0
- aip_agents/tools/tool_config_injector.pyi +26 -0
- aip_agents/tools/web_search/__init__.py +15 -0
- aip_agents/tools/web_search/__init__.pyi +3 -0
- aip_agents/tools/web_search/serper_tool.py +187 -0
- aip_agents/tools/web_search/serper_tool.pyi +19 -0
- aip_agents/types/__init__.py +70 -0
- aip_agents/types/__init__.pyi +36 -0
- aip_agents/types/a2a_events.py +13 -0
- aip_agents/types/a2a_events.pyi +3 -0
- aip_agents/utils/__init__.py +79 -0
- aip_agents/utils/__init__.pyi +11 -0
- aip_agents/utils/a2a_connector.py +1757 -0
- aip_agents/utils/a2a_connector.pyi +146 -0
- aip_agents/utils/artifact_helpers.py +502 -0
- aip_agents/utils/artifact_helpers.pyi +203 -0
- aip_agents/utils/constants.py +22 -0
- aip_agents/utils/constants.pyi +10 -0
- aip_agents/utils/datetime/__init__.py +34 -0
- aip_agents/utils/datetime/__init__.pyi +4 -0
- aip_agents/utils/datetime/normalization.py +231 -0
- aip_agents/utils/datetime/normalization.pyi +95 -0
- aip_agents/utils/datetime/timezone.py +206 -0
- aip_agents/utils/datetime/timezone.pyi +48 -0
- aip_agents/utils/env_loader.py +27 -0
- aip_agents/utils/env_loader.pyi +10 -0
- aip_agents/utils/event_handler_registry.py +58 -0
- aip_agents/utils/event_handler_registry.pyi +23 -0
- aip_agents/utils/file_prompt_utils.py +176 -0
- aip_agents/utils/file_prompt_utils.pyi +21 -0
- aip_agents/utils/final_response_builder.py +211 -0
- aip_agents/utils/final_response_builder.pyi +34 -0
- aip_agents/utils/formatter_llm_client.py +231 -0
- aip_agents/utils/formatter_llm_client.pyi +71 -0
- aip_agents/utils/langgraph/__init__.py +19 -0
- aip_agents/utils/langgraph/__init__.pyi +3 -0
- aip_agents/utils/langgraph/converter.py +128 -0
- aip_agents/utils/langgraph/converter.pyi +49 -0
- aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
- aip_agents/utils/langgraph/tool_managers/__init__.pyi +5 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +35 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +48 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1096 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +56 -0
- aip_agents/utils/langgraph/tool_output_management.py +1047 -0
- aip_agents/utils/langgraph/tool_output_management.pyi +329 -0
- aip_agents/utils/logger.py +195 -0
- aip_agents/utils/logger.pyi +60 -0
- aip_agents/utils/metadata/__init__.py +27 -0
- aip_agents/utils/metadata/__init__.pyi +5 -0
- aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
- aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
- aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
- aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
- aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
- aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
- aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
- aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
- aip_agents/utils/metadata/activity_narrative/context.py +49 -0
- aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
- aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
- aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
- aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
- aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
- aip_agents/utils/metadata/schemas/__init__.py +16 -0
- aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
- aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
- aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
- aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
- aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
- aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
- aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
- aip_agents/utils/metadata_helper.py +358 -0
- aip_agents/utils/metadata_helper.pyi +117 -0
- aip_agents/utils/name_preprocessor/__init__.py +17 -0
- aip_agents/utils/name_preprocessor/__init__.pyi +6 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +52 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +38 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.pyi +41 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +34 -0
- aip_agents/utils/pii/__init__.py +25 -0
- aip_agents/utils/pii/__init__.pyi +5 -0
- aip_agents/utils/pii/pii_handler.py +397 -0
- aip_agents/utils/pii/pii_handler.pyi +96 -0
- aip_agents/utils/pii/pii_helper.py +207 -0
- aip_agents/utils/pii/pii_helper.pyi +78 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
- aip_agents/utils/reference_helper.py +273 -0
- aip_agents/utils/reference_helper.pyi +81 -0
- aip_agents/utils/sse_chunk_transformer.py +831 -0
- aip_agents/utils/sse_chunk_transformer.pyi +166 -0
- aip_agents/utils/step_limit_manager.py +265 -0
- aip_agents/utils/step_limit_manager.pyi +112 -0
- aip_agents/utils/token_usage_helper.py +156 -0
- aip_agents/utils/token_usage_helper.pyi +60 -0
- aip_agents_binary-0.6.4.dist-info/METADATA +673 -0
- aip_agents_binary-0.6.4.dist-info/RECORD +612 -0
- aip_agents_binary-0.6.4.dist-info/WHEEL +5 -0
- aip_agents_binary-0.6.4.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"""Template builder for PTC sandbox templates.
|
|
2
|
+
|
|
3
|
+
This module provides utilities for creating and managing E2B sandbox templates
|
|
4
|
+
for programmatic tool calling (PTC) environments.
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from e2b import Template, default_build_logger
|
|
11
|
+
|
|
12
|
+
from aip_agents.sandbox.validation import validate_package_names
|
|
13
|
+
from aip_agents.utils.logger import get_logger
|
|
14
|
+
|
|
15
|
+
logger = get_logger(__name__)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def create_ptc_template(base_template: str, ptc_packages: list[str] | None) -> Template:
|
|
19
|
+
"""Create a PTC template definition based on a base template.
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
base_template: Base template alias to build from (e.g., "code-interpreter-v1").
|
|
23
|
+
ptc_packages: List of packages to install in the template.
|
|
24
|
+
If None or empty, skips pip install step.
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
Template: A configured template ready to be built.
|
|
28
|
+
"""
|
|
29
|
+
logger.info(f"Creating template from base: {base_template}")
|
|
30
|
+
template = Template().from_template(base_template)
|
|
31
|
+
|
|
32
|
+
if ptc_packages:
|
|
33
|
+
# Validate all packages before constructing command
|
|
34
|
+
validate_package_names(ptc_packages)
|
|
35
|
+
|
|
36
|
+
# Note: packages_str is safe because ptc_packages is a controlled list from
|
|
37
|
+
# configuration, not user input. Template.run_cmd() only accepts str.
|
|
38
|
+
packages_str = " ".join(ptc_packages)
|
|
39
|
+
logger.info(f"Installing packages: {packages_str}")
|
|
40
|
+
template.run_cmd(f"pip install -q {packages_str}")
|
|
41
|
+
|
|
42
|
+
return template
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _template_exists(template_id: str) -> bool:
|
|
46
|
+
"""Check if a template alias exists.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
template_id: The template alias to check.
|
|
50
|
+
|
|
51
|
+
Returns:
|
|
52
|
+
bool: True if alias exists, False otherwise.
|
|
53
|
+
"""
|
|
54
|
+
try:
|
|
55
|
+
return Template.alias_exists(template_id)
|
|
56
|
+
except Exception:
|
|
57
|
+
logger.warning(f"Template alias check failed for: {template_id}")
|
|
58
|
+
return False
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _build_template(template: Template, template_id: str) -> bool:
|
|
62
|
+
"""Build a template with the given alias.
|
|
63
|
+
|
|
64
|
+
Args:
|
|
65
|
+
template: The template to build.
|
|
66
|
+
template_id: The alias to assign to the built template.
|
|
67
|
+
|
|
68
|
+
Returns:
|
|
69
|
+
bool: True if build succeeded, False otherwise.
|
|
70
|
+
"""
|
|
71
|
+
try:
|
|
72
|
+
logger.info(f"Building template: {template_id}")
|
|
73
|
+
Template.build(
|
|
74
|
+
template,
|
|
75
|
+
alias=template_id,
|
|
76
|
+
on_build_logs=default_build_logger(),
|
|
77
|
+
)
|
|
78
|
+
logger.info(f"Template built successfully: {template_id}")
|
|
79
|
+
return True
|
|
80
|
+
except Exception as e:
|
|
81
|
+
logger.warning(f"Template build failed for {template_id}: {e}")
|
|
82
|
+
return False
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def ensure_ptc_template(
|
|
86
|
+
template_id: str,
|
|
87
|
+
base_template: str,
|
|
88
|
+
ptc_packages: list[str] | None,
|
|
89
|
+
force_rebuild: bool = False,
|
|
90
|
+
) -> str | None:
|
|
91
|
+
"""Ensure a PTC sandbox template exists, creating it if necessary.
|
|
92
|
+
|
|
93
|
+
This is an explicit helper that apps can call at startup to ensure the
|
|
94
|
+
template exists. It is never run implicitly by the SDK.
|
|
95
|
+
|
|
96
|
+
Args:
|
|
97
|
+
template_id: Unique alias for the template (e.g., "aip-agents-ptc-v1").
|
|
98
|
+
base_template: Base template alias to build from
|
|
99
|
+
(e.g., "code-interpreter-v1").
|
|
100
|
+
ptc_packages: List of packages to install in the template.
|
|
101
|
+
If None or empty, skips pip install step.
|
|
102
|
+
force_rebuild: If True, rebuild even if alias exists.
|
|
103
|
+
|
|
104
|
+
Returns:
|
|
105
|
+
The template_id on success, None if creation failed.
|
|
106
|
+
Never raises exceptions.
|
|
107
|
+
"""
|
|
108
|
+
# Fast path: template already exists and we're not forcing rebuild
|
|
109
|
+
if not force_rebuild and _template_exists(template_id):
|
|
110
|
+
logger.info(f"Template already exists: {template_id}")
|
|
111
|
+
return template_id
|
|
112
|
+
|
|
113
|
+
# Create and build the template
|
|
114
|
+
try:
|
|
115
|
+
template = create_ptc_template(base_template, ptc_packages)
|
|
116
|
+
except Exception as e:
|
|
117
|
+
logger.warning(f"Template creation failed for {template_id}: {e}")
|
|
118
|
+
return None
|
|
119
|
+
|
|
120
|
+
# Build the template
|
|
121
|
+
is_success = _build_template(template, template_id)
|
|
122
|
+
if is_success:
|
|
123
|
+
return template_id
|
|
124
|
+
|
|
125
|
+
# Build failed. Check if template exists anyway (race condition: another
|
|
126
|
+
# process may have built it while we were trying)
|
|
127
|
+
if _template_exists(template_id):
|
|
128
|
+
logger.info(f"Template already exists after failed build: {template_id}")
|
|
129
|
+
return template_id
|
|
130
|
+
|
|
131
|
+
return None
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.sandbox.validation import validate_package_names as validate_package_names
|
|
3
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
4
|
+
from e2b import Template
|
|
5
|
+
|
|
6
|
+
logger: Incomplete
|
|
7
|
+
|
|
8
|
+
def create_ptc_template(base_template: str, ptc_packages: list[str] | None) -> Template:
|
|
9
|
+
'''Create a PTC template definition based on a base template.
|
|
10
|
+
|
|
11
|
+
Args:
|
|
12
|
+
base_template: Base template alias to build from (e.g., "code-interpreter-v1").
|
|
13
|
+
ptc_packages: List of packages to install in the template.
|
|
14
|
+
If None or empty, skips pip install step.
|
|
15
|
+
|
|
16
|
+
Returns:
|
|
17
|
+
Template: A configured template ready to be built.
|
|
18
|
+
'''
|
|
19
|
+
def ensure_ptc_template(template_id: str, base_template: str, ptc_packages: list[str] | None, force_rebuild: bool = False) -> str | None:
|
|
20
|
+
'''Ensure a PTC sandbox template exists, creating it if necessary.
|
|
21
|
+
|
|
22
|
+
This is an explicit helper that apps can call at startup to ensure the
|
|
23
|
+
template exists. It is never run implicitly by the SDK.
|
|
24
|
+
|
|
25
|
+
Args:
|
|
26
|
+
template_id: Unique alias for the template (e.g., "aip-agents-ptc-v1").
|
|
27
|
+
base_template: Base template alias to build from
|
|
28
|
+
(e.g., "code-interpreter-v1").
|
|
29
|
+
ptc_packages: List of packages to install in the template.
|
|
30
|
+
If None or empty, skips pip install step.
|
|
31
|
+
force_rebuild: If True, rebuild even if alias exists.
|
|
32
|
+
|
|
33
|
+
Returns:
|
|
34
|
+
The template_id on success, None if creation failed.
|
|
35
|
+
Never raises exceptions.
|
|
36
|
+
'''
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"""Sandbox execution result types.
|
|
2
|
+
|
|
3
|
+
This module defines types for sandbox execution results.
|
|
4
|
+
|
|
5
|
+
Authors:
|
|
6
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from dataclasses import dataclass
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
@dataclass
|
|
13
|
+
class SandboxExecutionResult:
|
|
14
|
+
"""Result of a sandbox code execution.
|
|
15
|
+
|
|
16
|
+
Attributes:
|
|
17
|
+
stdout: Standard output from the execution.
|
|
18
|
+
stderr: Standard error from the execution.
|
|
19
|
+
exit_code: Exit code (0 for success, non-zero for failure).
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
stdout: str
|
|
23
|
+
stderr: str
|
|
24
|
+
exit_code: int
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
|
|
3
|
+
@dataclass
|
|
4
|
+
class SandboxExecutionResult:
|
|
5
|
+
"""Result of a sandbox code execution.
|
|
6
|
+
|
|
7
|
+
Attributes:
|
|
8
|
+
stdout: Standard output from the execution.
|
|
9
|
+
stderr: Standard error from the execution.
|
|
10
|
+
exit_code: Exit code (0 for success, non-zero for failure).
|
|
11
|
+
"""
|
|
12
|
+
stdout: str
|
|
13
|
+
stderr: str
|
|
14
|
+
exit_code: int
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"""Validation utilities for sandbox operations.
|
|
2
|
+
|
|
3
|
+
This module provides validation functions for sandbox-related operations
|
|
4
|
+
such as package name validation.
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import re
|
|
11
|
+
|
|
12
|
+
_PACKAGE_SPEC_PATTERN = re.compile(
|
|
13
|
+
r"^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?"
|
|
14
|
+
r"(?:\[[A-Za-z0-9._-]+(?:,[A-Za-z0-9._-]+)*\])?"
|
|
15
|
+
r"(?:"
|
|
16
|
+
r"(?:==|!=|<=|>=|~=|<|>)[0-9][A-Za-z0-9.*+!_-]*"
|
|
17
|
+
r"(?:,(?:==|!=|<=|>=|~=|<|>)[0-9][A-Za-z0-9.*+!_-]*)*"
|
|
18
|
+
r")?$"
|
|
19
|
+
)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def validate_package_name(package: str) -> bool:
|
|
23
|
+
"""Validate package name/specifier format for pip install.
|
|
24
|
+
|
|
25
|
+
Allows standard pip formats: package, package==version, package[extra].
|
|
26
|
+
|
|
27
|
+
Args:
|
|
28
|
+
package: Package name or specifier to validate.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
True if package name is valid, False otherwise.
|
|
32
|
+
"""
|
|
33
|
+
if not package:
|
|
34
|
+
return False
|
|
35
|
+
|
|
36
|
+
return bool(_PACKAGE_SPEC_PATTERN.fullmatch(package))
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def validate_package_names(packages: list[str]) -> None:
|
|
40
|
+
"""Validate all package names in a list.
|
|
41
|
+
|
|
42
|
+
Args:
|
|
43
|
+
packages: List of package names or specifiers to validate.
|
|
44
|
+
|
|
45
|
+
Raises:
|
|
46
|
+
ValueError: If any package name is invalid.
|
|
47
|
+
"""
|
|
48
|
+
for pkg in packages:
|
|
49
|
+
if not validate_package_name(pkg):
|
|
50
|
+
raise ValueError(f"Invalid package name format: {pkg}")
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
def validate_package_name(package: str) -> bool:
|
|
2
|
+
"""Validate package name/specifier format for pip install.
|
|
3
|
+
|
|
4
|
+
Allows standard pip formats: package, package==version, package[extra].
|
|
5
|
+
|
|
6
|
+
Args:
|
|
7
|
+
package: Package name or specifier to validate.
|
|
8
|
+
|
|
9
|
+
Returns:
|
|
10
|
+
True if package name is valid, False otherwise.
|
|
11
|
+
"""
|
|
12
|
+
def validate_package_names(packages: list[str]) -> None:
|
|
13
|
+
"""Validate all package names in a list.
|
|
14
|
+
|
|
15
|
+
Args:
|
|
16
|
+
packages: List of package names or specifiers to validate.
|
|
17
|
+
|
|
18
|
+
Raises:
|
|
19
|
+
ValueError: If any package name is invalid.
|
|
20
|
+
"""
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"""Central schema package for aip_agents data models."""
|
|
2
|
+
|
|
3
|
+
from aip_agents.schema.a2a import A2AEvent, A2AStreamEventType, ToolCallInfo, ToolResultInfo
|
|
4
|
+
from aip_agents.schema.agent import (
|
|
5
|
+
A2AClientConfig,
|
|
6
|
+
AgentConfig,
|
|
7
|
+
BaseAgentConfig,
|
|
8
|
+
CredentialType,
|
|
9
|
+
HttpxClientOptions,
|
|
10
|
+
LangflowAgentConfig,
|
|
11
|
+
StreamMode,
|
|
12
|
+
)
|
|
13
|
+
from aip_agents.schema.hitl import (
|
|
14
|
+
ApprovalDecision,
|
|
15
|
+
ApprovalDecisionType,
|
|
16
|
+
ApprovalLogEntry,
|
|
17
|
+
ApprovalRequest,
|
|
18
|
+
HitlMetadata,
|
|
19
|
+
)
|
|
20
|
+
from aip_agents.schema.langgraph import ToolCallResult, ToolStorageParams
|
|
21
|
+
from aip_agents.schema.model_id import ModelId, ModelProvider
|
|
22
|
+
from aip_agents.schema.step_limit import (
|
|
23
|
+
MaxDelegationDepthExceededError,
|
|
24
|
+
MaxStepsExceededError,
|
|
25
|
+
StepLimitConfig,
|
|
26
|
+
StepLimitError,
|
|
27
|
+
StepLimitErrorResponse,
|
|
28
|
+
StepLimitErrorType,
|
|
29
|
+
)
|
|
30
|
+
from aip_agents.schema.storage import OBJECT_STORAGE_PREFIX, StorageConfig, StorageType
|
|
31
|
+
|
|
32
|
+
__all__ = [
|
|
33
|
+
# A2A
|
|
34
|
+
"A2AEvent",
|
|
35
|
+
"A2AStreamEventType",
|
|
36
|
+
"ToolCallInfo",
|
|
37
|
+
"ToolResultInfo",
|
|
38
|
+
# Agent
|
|
39
|
+
"A2AClientConfig",
|
|
40
|
+
"AgentConfig",
|
|
41
|
+
"BaseAgentConfig",
|
|
42
|
+
"CredentialType",
|
|
43
|
+
"HttpxClientOptions",
|
|
44
|
+
"LangflowAgentConfig",
|
|
45
|
+
"StreamMode",
|
|
46
|
+
# HITL
|
|
47
|
+
"ApprovalDecision",
|
|
48
|
+
"ApprovalDecisionType",
|
|
49
|
+
"ApprovalLogEntry",
|
|
50
|
+
"ApprovalRequest",
|
|
51
|
+
"HitlMetadata",
|
|
52
|
+
# LangGraph
|
|
53
|
+
"ToolCallResult",
|
|
54
|
+
"ToolStorageParams",
|
|
55
|
+
# Model
|
|
56
|
+
"ModelId",
|
|
57
|
+
"ModelProvider",
|
|
58
|
+
# Storage
|
|
59
|
+
"OBJECT_STORAGE_PREFIX",
|
|
60
|
+
"StorageConfig",
|
|
61
|
+
"StorageType",
|
|
62
|
+
# Step Limit
|
|
63
|
+
"MaxDelegationDepthExceededError",
|
|
64
|
+
"MaxStepsExceededError",
|
|
65
|
+
"StepLimitConfig",
|
|
66
|
+
"StepLimitError",
|
|
67
|
+
"StepLimitErrorResponse",
|
|
68
|
+
"StepLimitErrorType",
|
|
69
|
+
]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
from aip_agents.schema.a2a import A2AEvent as A2AEvent, A2AStreamEventType as A2AStreamEventType, ToolCallInfo as ToolCallInfo, ToolResultInfo as ToolResultInfo
|
|
2
|
+
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig, AgentConfig as AgentConfig, BaseAgentConfig as BaseAgentConfig, CredentialType as CredentialType, HttpxClientOptions as HttpxClientOptions, LangflowAgentConfig as LangflowAgentConfig, StreamMode as StreamMode
|
|
3
|
+
from aip_agents.schema.hitl import ApprovalDecision as ApprovalDecision, ApprovalDecisionType as ApprovalDecisionType, ApprovalLogEntry as ApprovalLogEntry, ApprovalRequest as ApprovalRequest, HitlMetadata as HitlMetadata
|
|
4
|
+
from aip_agents.schema.langgraph import ToolCallResult as ToolCallResult, ToolStorageParams as ToolStorageParams
|
|
5
|
+
from aip_agents.schema.model_id import ModelId as ModelId, ModelProvider as ModelProvider
|
|
6
|
+
from aip_agents.schema.step_limit import MaxDelegationDepthExceededError as MaxDelegationDepthExceededError, MaxStepsExceededError as MaxStepsExceededError, StepLimitConfig as StepLimitConfig, StepLimitError as StepLimitError, StepLimitErrorResponse as StepLimitErrorResponse, StepLimitErrorType as StepLimitErrorType
|
|
7
|
+
from aip_agents.schema.storage import OBJECT_STORAGE_PREFIX as OBJECT_STORAGE_PREFIX, StorageConfig as StorageConfig, StorageType as StorageType
|
|
8
|
+
|
|
9
|
+
__all__ = ['A2AEvent', 'A2AStreamEventType', 'ToolCallInfo', 'ToolResultInfo', 'A2AClientConfig', 'AgentConfig', 'BaseAgentConfig', 'CredentialType', 'HttpxClientOptions', 'LangflowAgentConfig', 'StreamMode', 'ApprovalDecision', 'ApprovalDecisionType', 'ApprovalLogEntry', 'ApprovalRequest', 'HitlMetadata', 'ToolCallResult', 'ToolStorageParams', 'ModelId', 'ModelProvider', 'OBJECT_STORAGE_PREFIX', 'StorageConfig', 'StorageType', 'MaxDelegationDepthExceededError', 'MaxStepsExceededError', 'StepLimitConfig', 'StepLimitError', 'StepLimitErrorResponse', 'StepLimitErrorType']
|
aip_agents/schema/a2a.py
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"""A2A event schema definitions used for agent-executor communication."""
|
|
2
|
+
|
|
3
|
+
from enum import Enum
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from typing_extensions import TypedDict
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"A2AStreamEventType",
|
|
10
|
+
"A2AEvent",
|
|
11
|
+
"ToolCallInfo",
|
|
12
|
+
"ToolResultInfo",
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class A2AStreamEventType(Enum):
|
|
17
|
+
"""Semantic event types for A2A agent-executor communication."""
|
|
18
|
+
|
|
19
|
+
STATUS_UPDATE = "status_update"
|
|
20
|
+
CONTENT_CHUNK = "content_chunk"
|
|
21
|
+
FINAL_RESPONSE = "final_response"
|
|
22
|
+
TOOL_CALL = "tool_call"
|
|
23
|
+
TOOL_RESULT = "tool_result"
|
|
24
|
+
ERROR = "error"
|
|
25
|
+
STEP_LIMIT_EXCEEDED = "step_limit_exceeded"
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class A2AEvent(TypedDict):
|
|
29
|
+
"""Structured event data used by the A2A connector."""
|
|
30
|
+
|
|
31
|
+
event_type: A2AStreamEventType
|
|
32
|
+
content: str
|
|
33
|
+
metadata: dict[str, Any]
|
|
34
|
+
tool_info: dict[str, Any] | None
|
|
35
|
+
is_final: bool
|
|
36
|
+
artifacts: list[dict[str, Any]] | None
|
|
37
|
+
references: list[Any] | None
|
|
38
|
+
step_usage: dict[str, Any] | None
|
|
39
|
+
total_usage: dict[str, Any] | None
|
|
40
|
+
thinking_and_activity_info: dict[str, Any] | None
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class ToolCallInfo(TypedDict):
|
|
44
|
+
"""Structured information for tool invocation events."""
|
|
45
|
+
|
|
46
|
+
tool_calls: list[dict[str, Any]]
|
|
47
|
+
status: str
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class ToolResultInfo(TypedDict):
|
|
51
|
+
"""Structured information for tool completion events."""
|
|
52
|
+
|
|
53
|
+
name: str
|
|
54
|
+
args: dict[str, Any]
|
|
55
|
+
output: str
|
|
56
|
+
execution_time: float | None
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
from enum import Enum
|
|
2
|
+
from typing import Any
|
|
3
|
+
from typing_extensions import TypedDict
|
|
4
|
+
|
|
5
|
+
__all__ = ['A2AStreamEventType', 'A2AEvent', 'ToolCallInfo', 'ToolResultInfo']
|
|
6
|
+
|
|
7
|
+
class A2AStreamEventType(Enum):
|
|
8
|
+
"""Semantic event types for A2A agent-executor communication."""
|
|
9
|
+
STATUS_UPDATE: str
|
|
10
|
+
CONTENT_CHUNK: str
|
|
11
|
+
FINAL_RESPONSE: str
|
|
12
|
+
TOOL_CALL: str
|
|
13
|
+
TOOL_RESULT: str
|
|
14
|
+
ERROR: str
|
|
15
|
+
STEP_LIMIT_EXCEEDED: str
|
|
16
|
+
|
|
17
|
+
class A2AEvent(TypedDict):
|
|
18
|
+
"""Structured event data used by the A2A connector."""
|
|
19
|
+
event_type: A2AStreamEventType
|
|
20
|
+
content: str
|
|
21
|
+
metadata: dict[str, Any]
|
|
22
|
+
tool_info: dict[str, Any] | None
|
|
23
|
+
is_final: bool
|
|
24
|
+
artifacts: list[dict[str, Any]] | None
|
|
25
|
+
references: list[Any] | None
|
|
26
|
+
step_usage: dict[str, Any] | None
|
|
27
|
+
total_usage: dict[str, Any] | None
|
|
28
|
+
thinking_and_activity_info: dict[str, Any] | None
|
|
29
|
+
|
|
30
|
+
class ToolCallInfo(TypedDict):
|
|
31
|
+
"""Structured information for tool invocation events."""
|
|
32
|
+
tool_calls: list[dict[str, Any]]
|
|
33
|
+
status: str
|
|
34
|
+
|
|
35
|
+
class ToolResultInfo(TypedDict):
|
|
36
|
+
"""Structured information for tool completion events."""
|
|
37
|
+
name: str
|
|
38
|
+
args: dict[str, Any]
|
|
39
|
+
output: str
|
|
40
|
+
execution_time: float | None
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"""Schema definitions for agent configuration types."""
|
|
2
|
+
|
|
3
|
+
from enum import StrEnum
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from a2a.types import AgentCard
|
|
7
|
+
from gllm_core.utils.retry import RetryConfig
|
|
8
|
+
from pydantic import BaseModel, Field
|
|
9
|
+
|
|
10
|
+
try:
|
|
11
|
+
# Pydantic v2 preferred config
|
|
12
|
+
from pydantic import ConfigDict # type: ignore
|
|
13
|
+
except Exception: # pragma: no cover
|
|
14
|
+
ConfigDict = None # type: ignore
|
|
15
|
+
|
|
16
|
+
__all__ = [
|
|
17
|
+
"CredentialType",
|
|
18
|
+
"StreamMode",
|
|
19
|
+
"HttpxClientOptions",
|
|
20
|
+
"A2AClientConfig",
|
|
21
|
+
"BaseAgentConfig",
|
|
22
|
+
"AgentConfig",
|
|
23
|
+
"LangflowAgentConfig",
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class CredentialType(StrEnum):
|
|
28
|
+
"""Credential type enumeration for type safety and better developer experience."""
|
|
29
|
+
|
|
30
|
+
API_KEY = "api_key"
|
|
31
|
+
FILE = "file"
|
|
32
|
+
DICT = "dict"
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class StreamMode(StrEnum):
|
|
36
|
+
"""LangGraph stream modes for astream operations."""
|
|
37
|
+
|
|
38
|
+
VALUES = "values"
|
|
39
|
+
CUSTOM = "custom"
|
|
40
|
+
MESSAGES = "messages"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class HttpxClientOptions(BaseModel):
|
|
44
|
+
"""Options for the HTTP client."""
|
|
45
|
+
|
|
46
|
+
timeout: float = 360.0
|
|
47
|
+
trust_env: bool = False
|
|
48
|
+
follow_redirects: bool = True
|
|
49
|
+
|
|
50
|
+
if ConfigDict is not None:
|
|
51
|
+
# Pydantic v2 style config
|
|
52
|
+
model_config = ConfigDict(extra="allow") # type: ignore[assignment]
|
|
53
|
+
else: # pragma: no cover
|
|
54
|
+
|
|
55
|
+
class Config: # type: ignore[no-redef]
|
|
56
|
+
"""Pydantic v1 fallback config for HttpxClientOptions."""
|
|
57
|
+
|
|
58
|
+
extra = "allow"
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
class A2AClientConfig(BaseModel):
|
|
62
|
+
"""Configuration for A2A client."""
|
|
63
|
+
|
|
64
|
+
discovery_urls: list[str] | None = None
|
|
65
|
+
known_agents: dict[str, AgentCard] = Field(default_factory=dict)
|
|
66
|
+
httpx_client_options: HttpxClientOptions | None = HttpxClientOptions()
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
class BaseAgentConfig(BaseModel):
|
|
70
|
+
"""Base configuration for agent implementations."""
|
|
71
|
+
|
|
72
|
+
tools: list[Any] | None = None
|
|
73
|
+
default_hyperparameters: dict[str, Any] | None = None
|
|
74
|
+
|
|
75
|
+
if ConfigDict is not None:
|
|
76
|
+
model_config = ConfigDict(extra="allow") # type: ignore[assignment]
|
|
77
|
+
else: # pragma: no cover
|
|
78
|
+
|
|
79
|
+
class Config: # type: ignore[no-redef]
|
|
80
|
+
"""Pydantic v1 fallback config for BaseAgentConfig."""
|
|
81
|
+
|
|
82
|
+
extra = "allow"
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
class AgentConfig(BaseAgentConfig):
|
|
86
|
+
"""Configuration for agent implementations with language model settings."""
|
|
87
|
+
|
|
88
|
+
lm_name: str | None = None
|
|
89
|
+
lm_hyperparameters: dict[str, Any] | None = None
|
|
90
|
+
lm_provider: str | None = None
|
|
91
|
+
lm_base_url: str | None = None
|
|
92
|
+
lm_api_key: str | None = None
|
|
93
|
+
lm_credentials: str | dict[str, Any] | None = None
|
|
94
|
+
lm_retry_config: RetryConfig | None = None
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class LangflowAgentConfig(BaseAgentConfig):
|
|
98
|
+
"""Configuration for Langflow agent implementations."""
|
|
99
|
+
|
|
100
|
+
flow_id: str
|
|
101
|
+
base_url: str | None = None
|
|
102
|
+
api_key: str | None = None
|
|
103
|
+
|
|
104
|
+
if ConfigDict is not None:
|
|
105
|
+
model_config = ConfigDict(extra="allow") # type: ignore[assignment]
|
|
106
|
+
else: # pragma: no cover
|
|
107
|
+
|
|
108
|
+
class Config: # type: ignore[no-redef]
|
|
109
|
+
"""Pydantic v1 fallback config for LangflowAgentConfig."""
|
|
110
|
+
|
|
111
|
+
extra = "allow"
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from a2a.types import AgentCard
|
|
3
|
+
from enum import StrEnum
|
|
4
|
+
from gllm_core.utils.retry import RetryConfig
|
|
5
|
+
from pydantic import BaseModel
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
__all__ = ['CredentialType', 'StreamMode', 'HttpxClientOptions', 'A2AClientConfig', 'BaseAgentConfig', 'AgentConfig', 'LangflowAgentConfig']
|
|
9
|
+
|
|
10
|
+
class CredentialType(StrEnum):
|
|
11
|
+
"""Credential type enumeration for type safety and better developer experience."""
|
|
12
|
+
API_KEY: str
|
|
13
|
+
FILE: str
|
|
14
|
+
DICT: str
|
|
15
|
+
|
|
16
|
+
class StreamMode(StrEnum):
|
|
17
|
+
"""LangGraph stream modes for astream operations."""
|
|
18
|
+
VALUES: str
|
|
19
|
+
CUSTOM: str
|
|
20
|
+
MESSAGES: str
|
|
21
|
+
|
|
22
|
+
class HttpxClientOptions(BaseModel):
|
|
23
|
+
"""Options for the HTTP client."""
|
|
24
|
+
timeout: float
|
|
25
|
+
trust_env: bool
|
|
26
|
+
follow_redirects: bool
|
|
27
|
+
model_config: Incomplete
|
|
28
|
+
class Config:
|
|
29
|
+
"""Pydantic v1 fallback config for HttpxClientOptions."""
|
|
30
|
+
extra: str
|
|
31
|
+
|
|
32
|
+
class A2AClientConfig(BaseModel):
|
|
33
|
+
"""Configuration for A2A client."""
|
|
34
|
+
discovery_urls: list[str] | None
|
|
35
|
+
known_agents: dict[str, AgentCard]
|
|
36
|
+
httpx_client_options: HttpxClientOptions | None
|
|
37
|
+
|
|
38
|
+
class BaseAgentConfig(BaseModel):
|
|
39
|
+
"""Base configuration for agent implementations."""
|
|
40
|
+
tools: list[Any] | None
|
|
41
|
+
default_hyperparameters: dict[str, Any] | None
|
|
42
|
+
model_config: Incomplete
|
|
43
|
+
class Config:
|
|
44
|
+
"""Pydantic v1 fallback config for BaseAgentConfig."""
|
|
45
|
+
extra: str
|
|
46
|
+
|
|
47
|
+
class AgentConfig(BaseAgentConfig):
|
|
48
|
+
"""Configuration for agent implementations with language model settings."""
|
|
49
|
+
lm_name: str | None
|
|
50
|
+
lm_hyperparameters: dict[str, Any] | None
|
|
51
|
+
lm_provider: str | None
|
|
52
|
+
lm_base_url: str | None
|
|
53
|
+
lm_api_key: str | None
|
|
54
|
+
lm_credentials: str | dict[str, Any] | None
|
|
55
|
+
lm_retry_config: RetryConfig | None
|
|
56
|
+
|
|
57
|
+
class LangflowAgentConfig(BaseAgentConfig):
|
|
58
|
+
"""Configuration for Langflow agent implementations."""
|
|
59
|
+
flow_id: str
|
|
60
|
+
base_url: str | None
|
|
61
|
+
api_key: str | None
|
|
62
|
+
model_config: Incomplete
|
|
63
|
+
class Config:
|
|
64
|
+
"""Pydantic v1 fallback config for LangflowAgentConfig."""
|
|
65
|
+
extra: str
|