aip-agents-binary 0.0.0b2__py3-none-any.whl → 0.5.12__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.
- aip_agents/__init__.py +65 -0
- aip_agents/a2a/__init__.py +19 -0
- aip_agents/a2a/server/__init__.py +10 -0
- aip_agents/a2a/server/base_executor.py +1086 -0
- aip_agents/a2a/server/google_adk_executor.py +198 -0
- aip_agents/a2a/server/langflow_executor.py +180 -0
- aip_agents/a2a/server/langgraph_executor.py +270 -0
- aip_agents/a2a/types.py +232 -0
- aip_agents/agent/__init__.py +27 -0
- aip_agents/agent/base_agent.py +970 -0
- aip_agents/agent/base_langgraph_agent.py +2942 -0
- aip_agents/agent/google_adk_agent.py +926 -0
- aip_agents/agent/google_adk_constants.py +6 -0
- aip_agents/agent/hitl/__init__.py +24 -0
- aip_agents/agent/hitl/config.py +28 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
- aip_agents/agent/hitl/manager.py +532 -0
- aip_agents/agent/hitl/models.py +18 -0
- aip_agents/agent/hitl/prompt/__init__.py +9 -0
- aip_agents/agent/hitl/prompt/base.py +42 -0
- aip_agents/agent/hitl/prompt/deferred.py +73 -0
- aip_agents/agent/hitl/registry.py +149 -0
- aip_agents/agent/{interface.pyi → interface.py} +70 -13
- aip_agents/agent/interfaces.py +65 -0
- aip_agents/agent/langflow_agent.py +464 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
- aip_agents/agent/langgraph_react_agent.py +2514 -0
- aip_agents/agent/system_instruction_context.py +34 -0
- aip_agents/clients/__init__.py +10 -0
- aip_agents/clients/langflow/__init__.py +10 -0
- aip_agents/clients/langflow/client.py +477 -0
- aip_agents/clients/langflow/types.py +18 -0
- aip_agents/constants.py +23 -0
- aip_agents/credentials/manager.py +132 -0
- aip_agents/examples/__init__.py +5 -0
- aip_agents/examples/compare_streaming_client.py +783 -0
- aip_agents/examples/compare_streaming_server.py +142 -0
- aip_agents/examples/demo_memory_recall.py +401 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
- aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
- aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
- aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -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_server.py +251 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
- aip_agents/examples/hello_world_google_adk.py +41 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_stream.py +44 -0
- aip_agents/examples/hello_world_langchain.py +28 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
- aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
- aip_agents/examples/hello_world_langchain_stream.py +36 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
- aip_agents/examples/hello_world_langflow_agent.py +163 -0
- aip_agents/examples/hello_world_langgraph.py +39 -0
- aip_agents/examples/hello_world_langgraph_bosa_twitter.py +41 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_stream.py +43 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_model_switch_cli.py +210 -0
- aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
- aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
- aip_agents/examples/hello_world_pii_logger.py +21 -0
- aip_agents/examples/hello_world_sentry.py +133 -0
- aip_agents/examples/hello_world_step_limits.py +273 -0
- aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
- aip_agents/examples/hello_world_tool_output_client.py +46 -0
- aip_agents/examples/hello_world_tool_output_server.py +114 -0
- aip_agents/examples/hitl_demo.py +724 -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_server.py +126 -0
- aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
- aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
- aip_agents/examples/tools/__init__.py +27 -0
- aip_agents/examples/tools/{adk_arithmetic_tools.pyi → adk_arithmetic_tools.py} +12 -0
- aip_agents/examples/tools/adk_weather_tool.py +60 -0
- aip_agents/examples/tools/data_generator_tool.py +103 -0
- aip_agents/examples/tools/data_visualization_tool.py +312 -0
- aip_agents/examples/tools/image_artifact_tool.py +136 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
- aip_agents/examples/tools/langchain_weather_tool.py +48 -0
- aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
- aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
- aip_agents/examples/tools/pii_demo_tools.py +189 -0
- aip_agents/examples/tools/random_chart_tool.py +142 -0
- aip_agents/examples/tools/serper_tool.py +202 -0
- aip_agents/examples/tools/stock_tools.py +82 -0
- aip_agents/examples/tools/table_generator_tool.py +167 -0
- aip_agents/examples/tools/time_tool.py +82 -0
- aip_agents/examples/tools/weather_forecast_tool.py +38 -0
- aip_agents/executor/agent_executor.py +473 -0
- aip_agents/executor/base.py +48 -0
- aip_agents/mcp/__init__.py +1 -0
- aip_agents/mcp/client/__init__.py +14 -0
- aip_agents/mcp/client/base_mcp_client.py +369 -0
- aip_agents/mcp/client/connection_manager.py +193 -0
- aip_agents/mcp/client/google_adk/__init__.py +11 -0
- aip_agents/mcp/client/google_adk/client.py +381 -0
- aip_agents/mcp/client/langchain/__init__.py +11 -0
- aip_agents/mcp/client/langchain/client.py +265 -0
- aip_agents/mcp/client/persistent_session.py +359 -0
- aip_agents/mcp/client/session_pool.py +351 -0
- aip_agents/mcp/client/transports.py +215 -0
- aip_agents/mcp/utils/__init__.py +7 -0
- aip_agents/mcp/utils/config_validator.py +139 -0
- aip_agents/memory/__init__.py +14 -0
- aip_agents/memory/adapters/__init__.py +10 -0
- aip_agents/memory/adapters/base_adapter.py +717 -0
- aip_agents/memory/adapters/mem0.py +84 -0
- aip_agents/memory/{base.pyi → base.py} +40 -5
- aip_agents/memory/constants.py +49 -0
- aip_agents/memory/factory.py +86 -0
- aip_agents/memory/guidance.py +20 -0
- aip_agents/memory/simple_memory.py +47 -0
- aip_agents/middleware/__init__.py +17 -0
- aip_agents/middleware/base.py +88 -0
- aip_agents/middleware/manager.py +128 -0
- aip_agents/middleware/todolist.py +274 -0
- aip_agents/schema/__init__.py +69 -0
- aip_agents/schema/a2a.py +56 -0
- aip_agents/schema/agent.py +111 -0
- aip_agents/schema/hitl.py +157 -0
- aip_agents/schema/langgraph.py +37 -0
- aip_agents/schema/model_id.py +97 -0
- aip_agents/schema/step_limit.py +108 -0
- aip_agents/schema/storage.py +40 -0
- aip_agents/sentry/__init__.py +11 -0
- aip_agents/sentry/sentry.py +151 -0
- aip_agents/storage/__init__.py +41 -0
- aip_agents/storage/{base.pyi → base.py} +30 -4
- aip_agents/storage/clients/__init__.py +12 -0
- aip_agents/storage/clients/minio_client.py +318 -0
- aip_agents/storage/config.py +62 -0
- aip_agents/storage/providers/__init__.py +15 -0
- aip_agents/storage/providers/{base.pyi → base.py} +23 -6
- aip_agents/storage/providers/{memory.pyi → memory.py} +38 -3
- aip_agents/storage/providers/object_storage.py +214 -0
- aip_agents/tools/__init__.py +6 -0
- aip_agents/tools/bosa_tools.py +105 -0
- aip_agents/tools/browser_use/__init__.py +82 -0
- aip_agents/tools/browser_use/action_parser.py +103 -0
- aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
- aip_agents/tools/browser_use/llm_config.py +120 -0
- aip_agents/tools/browser_use/minio_storage.py +198 -0
- aip_agents/tools/browser_use/schemas.py +119 -0
- aip_agents/tools/browser_use/session.py +76 -0
- aip_agents/tools/browser_use/session_errors.py +132 -0
- aip_agents/tools/browser_use/steel_session_recording.py +317 -0
- aip_agents/tools/browser_use/streaming.py +813 -0
- aip_agents/tools/browser_use/structured_data_parser.py +257 -0
- aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
- aip_agents/tools/browser_use/types.py +78 -0
- aip_agents/tools/code_sandbox/__init__.py +26 -0
- aip_agents/tools/code_sandbox/constant.py +13 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +257 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
- aip_agents/tools/constants.py +165 -0
- aip_agents/tools/document_loader/__init__.py +37 -0
- aip_agents/tools/document_loader/base_reader.py +262 -0
- aip_agents/tools/document_loader/docx_reader_tool.py +53 -0
- aip_agents/tools/document_loader/excel_reader_tool.py +160 -0
- aip_agents/tools/document_loader/pdf_reader_tool.py +67 -0
- aip_agents/tools/document_loader/pdf_splitter.py +169 -0
- aip_agents/tools/gl_connector/__init__.py +5 -0
- aip_agents/tools/gl_connector/tool.py +351 -0
- aip_agents/tools/memory_search/__init__.py +22 -0
- aip_agents/tools/memory_search/base.py +200 -0
- aip_agents/tools/memory_search/mem0.py +258 -0
- aip_agents/tools/memory_search/schema.py +48 -0
- aip_agents/tools/memory_search_tool.py +26 -0
- aip_agents/tools/tool_config_injector.py +300 -0
- aip_agents/tools/web_search/__init__.py +15 -0
- aip_agents/tools/web_search/serper_tool.py +187 -0
- aip_agents/types/__init__.py +70 -0
- aip_agents/types/a2a_events.py +13 -0
- aip_agents/utils/__init__.py +79 -0
- aip_agents/utils/a2a_connector.py +1757 -0
- aip_agents/utils/artifact_helpers.py +502 -0
- aip_agents/utils/constants.py +22 -0
- aip_agents/utils/datetime/__init__.py +34 -0
- aip_agents/utils/datetime/normalization.py +231 -0
- aip_agents/utils/datetime/timezone.py +206 -0
- aip_agents/utils/env_loader.py +27 -0
- aip_agents/utils/event_handler_registry.py +58 -0
- aip_agents/utils/file_prompt_utils.py +176 -0
- aip_agents/utils/final_response_builder.py +211 -0
- aip_agents/utils/formatter_llm_client.py +231 -0
- aip_agents/utils/langgraph/__init__.py +19 -0
- aip_agents/utils/langgraph/converter.py +128 -0
- aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
- aip_agents/utils/langgraph/tool_managers/{base_tool_manager.pyi → base_tool_manager.py} +25 -8
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
- aip_agents/utils/langgraph/tool_output_management.py +967 -0
- aip_agents/utils/logger.py +195 -0
- aip_agents/utils/metadata/__init__.py +27 -0
- aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
- aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
- aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
- aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
- aip_agents/utils/metadata/activity_narrative/context.py +49 -0
- aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
- aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
- aip_agents/utils/metadata/schemas/__init__.py +16 -0
- aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
- aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
- aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
- aip_agents/utils/metadata_helper.py +358 -0
- aip_agents/utils/name_preprocessor/__init__.py +17 -0
- aip_agents/utils/name_preprocessor/{base_name_preprocessor.pyi → base_name_preprocessor.py} +22 -2
- aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
- aip_agents/utils/name_preprocessor/{openai_name_preprocessor.pyi → openai_name_preprocessor.py} +19 -5
- aip_agents/utils/pii/__init__.py +25 -0
- aip_agents/utils/pii/pii_handler.py +397 -0
- aip_agents/utils/pii/pii_helper.py +207 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
- aip_agents/utils/reference_helper.py +273 -0
- aip_agents/utils/sse_chunk_transformer.py +831 -0
- aip_agents/utils/step_limit_manager.py +265 -0
- aip_agents/utils/token_usage_helper.py +156 -0
- aip_agents_binary-0.5.12.dist-info/METADATA +689 -0
- aip_agents_binary-0.5.12.dist-info/RECORD +279 -0
- {aip_agents_binary-0.0.0b2.dist-info → aip_agents_binary-0.5.12.dist-info}/WHEEL +2 -1
- aip_agents_binary-0.5.12.dist-info/top_level.txt +1 -0
- aip_agents/__init__.pyi +0 -0
- aip_agents/a2a/__init__.pyi +0 -3
- aip_agents/a2a/server/__init__.pyi +0 -4
- aip_agents/a2a/server/base_executor.pyi +0 -63
- aip_agents/a2a/server/google_adk_executor.pyi +0 -51
- aip_agents/a2a/server/langgraph_executor.pyi +0 -48
- aip_agents/a2a/types.pyi +0 -125
- aip_agents/agent/__init__.pyi +0 -7
- aip_agents/agent/base_agent.pyi +0 -205
- aip_agents/agent/base_langgraph_agent.pyi +0 -164
- aip_agents/agent/google_adk_agent.pyi +0 -128
- aip_agents/agent/langgraph_react_agent.pyi +0 -131
- aip_agents/agent/types.pyi +0 -106
- aip_agents/constants.pyi +0 -6
- aip_agents/examples/__init__.pyi +0 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.pyi +0 -9
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +0 -9
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +0 -9
- aip_agents/examples/hello_world_a2a_google_adk_server.pyi +0 -10
- aip_agents/examples/hello_world_a2a_langchain_client.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +0 -10
- aip_agents/examples/hello_world_a2a_langchain_server.pyi +0 -10
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +0 -10
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +0 -11
- aip_agents/examples/hello_world_a2a_langgraph_client.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +0 -2
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_server.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +0 -10
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +0 -10
- aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +0 -48
- aip_agents/examples/hello_world_a2a_multi_agent_coordinator_client.pyi +0 -15
- aip_agents/examples/hello_world_a2a_multi_agent_coordinator_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_multi_agent_coordinator_server.pyi +0 -11
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +0 -23
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +0 -17
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +0 -5
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +0 -10
- aip_agents/examples/hello_world_google_adk.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_http.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain.pyi +0 -5
- aip_agents/examples/hello_world_langchain_lm_invoker.pyi +0 -2
- aip_agents/examples/hello_world_langchain_mcp_http.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_sse.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_langgraph.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_bosa.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_bosa_twitter.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_http.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_model_switch_cli.pyi +0 -15
- aip_agents/examples/hello_world_multi_agent_adk.pyi +0 -6
- aip_agents/examples/hello_world_multi_agent_langchain.pyi +0 -5
- aip_agents/examples/hello_world_multi_agent_langgraph.pyi +0 -5
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_pii_logger.pyi +0 -5
- aip_agents/examples/hello_world_sentry.pyi +0 -21
- aip_agents/examples/hello_world_stock_a2a_server.pyi +0 -12
- aip_agents/examples/hello_world_tool_output_client.pyi +0 -5
- aip_agents/examples/hello_world_tool_output_server.pyi +0 -14
- aip_agents/examples/tools/__init__.pyi +0 -7
- aip_agents/examples/tools/adk_weather_tool.pyi +0 -18
- aip_agents/examples/tools/data_generator_tool.pyi +0 -15
- aip_agents/examples/tools/data_visualization_tool.pyi +0 -17
- aip_agents/examples/tools/image_artifact_tool.pyi +0 -24
- aip_agents/examples/tools/langchain_arithmetic_tools.pyi +0 -10
- aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -21
- aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +0 -23
- aip_agents/examples/tools/langchain_weather_tool.pyi +0 -19
- aip_agents/examples/tools/langgraph_streaming_tool.pyi +0 -43
- aip_agents/examples/tools/pr_details_bosa_tool.pyi +0 -26
- aip_agents/examples/tools/serper_tool.pyi +0 -16
- aip_agents/examples/tools/stock_tools.pyi +0 -21
- aip_agents/examples/tools/table_generator_tool.pyi +0 -22
- aip_agents/examples/tools/time_tool.pyi +0 -15
- aip_agents/examples/tools/weather_forecast_tool.pyi +0 -14
- aip_agents/mcp/__init__.pyi +0 -0
- aip_agents/mcp/client/__init__.pyi +0 -4
- aip_agents/mcp/client/google_adk/__init__.pyi +0 -3
- aip_agents/mcp/client/google_adk/client.pyi +0 -38
- aip_agents/mcp/client/langchain/__init__.pyi +0 -3
- aip_agents/mcp/client/langchain/client.pyi +0 -3
- aip_agents/memory/__init__.pyi +0 -0
- aip_agents/memory/simple_memory.pyi +0 -22
- aip_agents/sentry/__init__.pyi +0 -3
- aip_agents/sentry/sentry.pyi +0 -48
- aip_agents/storage/__init__.pyi +0 -8
- aip_agents/storage/clients/__init__.pyi +0 -3
- aip_agents/storage/clients/minio_client.pyi +0 -137
- aip_agents/storage/config.pyi +0 -66
- aip_agents/storage/providers/__init__.pyi +0 -5
- aip_agents/storage/providers/object_storage.pyi +0 -98
- aip_agents/tools/__init__.pyi +0 -3
- aip_agents/tools/base.pyi +0 -44
- aip_agents/tools/base_bosa_tools.pyi +0 -12
- aip_agents/tools/bosa_connector.pyi +0 -30
- aip_agents/tools/bosa_tools.pyi +0 -37
- aip_agents/tools/bosa_tools_interface.pyi +0 -26
- aip_agents/tools/constants.pyi +0 -130
- aip_agents/tools/nested_agent_tool.pyi +0 -45
- aip_agents/tools/tool_config_injector.pyi +0 -26
- aip_agents/types/__init__.pyi +0 -3
- aip_agents/types/a2a_events.pyi +0 -74
- aip_agents/utils/__init__.pyi +0 -5
- aip_agents/utils/a2a_connector.pyi +0 -135
- aip_agents/utils/artifact_helpers.pyi +0 -179
- aip_agents/utils/langgraph/__init__.pyi +0 -3
- aip_agents/utils/langgraph/converter.pyi +0 -49
- aip_agents/utils/langgraph/tool_managers/__init__.pyi +0 -5
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +0 -35
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +0 -50
- aip_agents/utils/langgraph/tool_output_management.pyi +0 -310
- aip_agents/utils/logger_manager.pyi +0 -151
- aip_agents/utils/metadata_helper.pyi +0 -110
- aip_agents/utils/name_preprocessor/__init__.pyi +0 -6
- aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +0 -38
- aip_agents/utils/name_preprocessor/name_preprocessor.pyi +0 -41
- aip_agents/utils/reference_helper.pyi +0 -49
- aip_agents/utils/token_usage_helper.pyi +0 -60
- aip_agents_binary-0.0.0b2.dist-info/METADATA +0 -277
- aip_agents_binary-0.0.0b2.dist-info/RECORD +0 -157
aip_agents/agent/base_agent.pyi
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
import abc
|
|
2
|
-
from _typeshed import Incomplete
|
|
3
|
-
from a2a.types import AgentCard
|
|
4
|
-
from aip_agents.a2a.server.google_adk_executor import GoogleADKExecutor as GoogleADKExecutor
|
|
5
|
-
from aip_agents.a2a.server.langgraph_executor import LangGraphA2AExecutor as LangGraphA2AExecutor
|
|
6
|
-
from aip_agents.agent.interface import AgentInterface as AgentInterface
|
|
7
|
-
from aip_agents.agent.types import A2AClientConfig as A2AClientConfig, AgentConfig as AgentConfig, BaseAgentConfig as BaseAgentConfig, CredentialType as CredentialType
|
|
8
|
-
from aip_agents.credentials.manager import CredentialsManager as CredentialsManager
|
|
9
|
-
from aip_agents.utils.a2a_connector import A2AConnector as A2AConnector
|
|
10
|
-
from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
|
|
11
|
-
from aip_agents.utils.name_preprocessor.name_preprocessor import NamePreprocessor as NamePreprocessor
|
|
12
|
-
from starlette.applications import Starlette
|
|
13
|
-
from typing import Any, AsyncGenerator
|
|
14
|
-
|
|
15
|
-
logger: Incomplete
|
|
16
|
-
AGENT_EXECUTOR_MAPPING: Incomplete
|
|
17
|
-
DEFAULT_RETRY_CONFIG: Incomplete
|
|
18
|
-
LM_EXCLUDE_FIELDS: Incomplete
|
|
19
|
-
CUSTOM_PROVIDERS: Incomplete
|
|
20
|
-
OUTPUT_ANALYTICS_KEY: str
|
|
21
|
-
|
|
22
|
-
class BaseAgent(AgentInterface, metaclass=abc.ABCMeta):
|
|
23
|
-
"""Base class for agents, providing common A2A client method implementations.
|
|
24
|
-
|
|
25
|
-
Concrete agent implementations (e.g., LangGraphAgent, GoogleADKAgent)
|
|
26
|
-
should inherit from this class if they need to utilize the shared A2A
|
|
27
|
-
client functionalities.
|
|
28
|
-
|
|
29
|
-
This class now supports flexible model handling:
|
|
30
|
-
- model: Optional[Any] - can be an lm_invoker, string/ModelId, LangChain BaseChatModel, or other types
|
|
31
|
-
- Automatically sets self.lm_invoker if an lm_invoker is provided or can be built
|
|
32
|
-
- Stores the original model in self.model for subclass use
|
|
33
|
-
- Enhanced credential support with automatic type detection
|
|
34
|
-
"""
|
|
35
|
-
model: Incomplete
|
|
36
|
-
tools: Incomplete
|
|
37
|
-
mcp_config: Incomplete
|
|
38
|
-
tool_configs: Incomplete
|
|
39
|
-
name_preprocessor: Incomplete
|
|
40
|
-
def __init__(self, name: str, instruction: str, description: str | None = None, model: Any | None = None, tools: list[Any] | None = None, config: BaseAgentConfig | dict[str, Any] | None = None, tool_configs: dict[str, Any] | None = None, **kwargs: Any) -> None:
|
|
41
|
-
"""Initializes the BaseAgent.
|
|
42
|
-
|
|
43
|
-
Args:
|
|
44
|
-
name: The name of the agent.
|
|
45
|
-
instruction: The core directive or system prompt for the agent.
|
|
46
|
-
description: Human-readable description. Defaults to instruction if not provided.
|
|
47
|
-
model: The model to use. Can be:
|
|
48
|
-
- BaseLMInvoker instance (will be set as self.lm_invoker)
|
|
49
|
-
- String or ModelId (will build an lm_invoker)
|
|
50
|
-
- LangChain BaseChatModel (will be stored in self.model)
|
|
51
|
-
- Any other type (will be stored in self.model)
|
|
52
|
-
tools: List of tools available to the agent.
|
|
53
|
-
config: Additional configuration for the agent. Can be a BaseAgentConfig instance or dict.
|
|
54
|
-
tool_configs: Default tool configurations applied to all tool calls from this agent.
|
|
55
|
-
**kwargs: Additional keyword arguments for AgentInterface.
|
|
56
|
-
"""
|
|
57
|
-
def get_name_preprocessor(self) -> NamePreprocessor:
|
|
58
|
-
"""Get the name preprocessor based on the provider.
|
|
59
|
-
|
|
60
|
-
This will be used to correct the agent name and tool name. (mostly tool name)
|
|
61
|
-
|
|
62
|
-
Returns:
|
|
63
|
-
NamePreprocessor: The name preprocessor for the model.
|
|
64
|
-
"""
|
|
65
|
-
@property
|
|
66
|
-
def model_provider(self) -> str:
|
|
67
|
-
"""Get the provider of the model with simplified logic.
|
|
68
|
-
|
|
69
|
-
Returns:
|
|
70
|
-
str: The provider of the model.
|
|
71
|
-
"""
|
|
72
|
-
def to_a2a(self, agent_card: AgentCard, **kwargs: Any) -> Starlette:
|
|
73
|
-
"""Converts the agent to an A2A-compatible ASGI application.
|
|
74
|
-
|
|
75
|
-
This implementation provides a base setup for A2A server components.
|
|
76
|
-
Subclasses can override this method if they need custom executor
|
|
77
|
-
or task store implementations.
|
|
78
|
-
|
|
79
|
-
Args:
|
|
80
|
-
agent_card: The agent card to use for the A2A application.
|
|
81
|
-
**kwargs: Additional keyword arguments for ASGI application configuration.
|
|
82
|
-
|
|
83
|
-
Returns:
|
|
84
|
-
A Starlette ASGI application that can be used with any ASGI server.
|
|
85
|
-
"""
|
|
86
|
-
@classmethod
|
|
87
|
-
def discover_agents(cls, a2a_config: A2AClientConfig, **kwargs: Any) -> list[AgentCard]:
|
|
88
|
-
"""Discover agents from the URLs specified in a2a_config.discovery_urls.
|
|
89
|
-
|
|
90
|
-
This concrete implementation fetches and parses .well-known/agent.json
|
|
91
|
-
from each discovery URL to build a list of available agents.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
a2a_config: Configuration containing discovery URLs and other A2A settings.
|
|
95
|
-
**kwargs: Additional keyword arguments (unused in this implementation).
|
|
96
|
-
|
|
97
|
-
Returns:
|
|
98
|
-
A list of AgentCard objects representing discovered agents.
|
|
99
|
-
"""
|
|
100
|
-
def send_to_agent(self, agent_card: AgentCard, message: str | dict[str, Any], **kwargs: Any) -> dict[str, Any]:
|
|
101
|
-
"""Synchronously sends a message to another agent using the A2A protocol.
|
|
102
|
-
|
|
103
|
-
This method is a synchronous wrapper around asend_to_agent. It handles the creation
|
|
104
|
-
of an event loop if one doesn't exist, and manages the asynchronous call internally.
|
|
105
|
-
|
|
106
|
-
Args:
|
|
107
|
-
agent_card: The AgentCard instance containing the target agent's details including
|
|
108
|
-
URL, authentication requirements, and capabilities.
|
|
109
|
-
message: The message to send to the agent. Can be either a string for simple text
|
|
110
|
-
messages or a dictionary for structured data.
|
|
111
|
-
**kwargs: Additional keyword arguments passed to asend_to_agent.
|
|
112
|
-
|
|
113
|
-
Returns:
|
|
114
|
-
A dictionary containing the response details:
|
|
115
|
-
- status (str): 'success' or 'error'
|
|
116
|
-
- content (str): Extracted text content from the response
|
|
117
|
-
- task_id (str, optional): ID of the created/updated task
|
|
118
|
-
- task_state (str, optional): Current state of the task
|
|
119
|
-
- raw_response (str): Complete JSON response from the A2A client
|
|
120
|
-
- error_type (str, optional): Type of error if status is 'error'
|
|
121
|
-
- message (str, optional): Error message if status is 'error'
|
|
122
|
-
|
|
123
|
-
Raises:
|
|
124
|
-
RuntimeError: If called from within an existing event loop or if asend_to_agent
|
|
125
|
-
encounters an unhandled exception.
|
|
126
|
-
"""
|
|
127
|
-
async def asend_to_agent(self, agent_card: AgentCard, message: str | dict[str, Any], **kwargs: Any) -> dict[str, Any]:
|
|
128
|
-
"""Asynchronously sends a message to another agent using the A2A protocol.
|
|
129
|
-
|
|
130
|
-
This method handles the core A2A communication logic, creating and sending properly
|
|
131
|
-
formatted A2A messages and processing the responses.
|
|
132
|
-
|
|
133
|
-
Args:
|
|
134
|
-
agent_card: The AgentCard instance containing the target agent's details including
|
|
135
|
-
URL, authentication requirements, and capabilities.
|
|
136
|
-
message: The message to send to the agent. Can be either a string for simple text
|
|
137
|
-
messages or a dictionary for structured data.
|
|
138
|
-
**kwargs: Additional keyword arguments.
|
|
139
|
-
|
|
140
|
-
Returns:
|
|
141
|
-
A dictionary containing the response details:
|
|
142
|
-
- status (str): 'success' or 'error'
|
|
143
|
-
- content (str): Extracted text content from the response
|
|
144
|
-
- task_id (str, optional): ID of the created/updated task
|
|
145
|
-
- task_state (str, optional): Current state of the task
|
|
146
|
-
- raw_response (str): Complete JSON response from the A2A client
|
|
147
|
-
- error_type (str, optional): Type of error if status is 'error'
|
|
148
|
-
- message (str, optional): Error message if status is 'error'
|
|
149
|
-
|
|
150
|
-
Raises:
|
|
151
|
-
httpx.HTTPError: If there's an HTTP-related error during the request.
|
|
152
|
-
Exception: For any other unexpected errors during message sending or processing.
|
|
153
|
-
"""
|
|
154
|
-
async def astream_to_agent(self, agent_card: AgentCard, message: str | dict[str, Any], **kwargs: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
155
|
-
"""Asynchronously sends a streaming message to another agent using the A2A protocol.
|
|
156
|
-
|
|
157
|
-
This method supports streaming responses from the target agent, yielding chunks of
|
|
158
|
-
the response as they become available. It handles various types of streaming events
|
|
159
|
-
including task status updates, artifact updates, and message parts.
|
|
160
|
-
|
|
161
|
-
Args:
|
|
162
|
-
agent_card: The AgentCard instance containing the target agent's details including
|
|
163
|
-
URL, authentication requirements, and capabilities.
|
|
164
|
-
message: The message to send to the agent. Can be either a string for simple text
|
|
165
|
-
messages or a dictionary for structured data.
|
|
166
|
-
**kwargs: Additional keyword arguments.
|
|
167
|
-
|
|
168
|
-
Yields:
|
|
169
|
-
Dictionaries containing streaming response chunks:
|
|
170
|
-
For successful chunks:
|
|
171
|
-
- status (str): 'success'
|
|
172
|
-
- content (str): Extracted text content from the chunk
|
|
173
|
-
- task_id (str): ID of the associated task
|
|
174
|
-
- task_state (str): Current state of the task
|
|
175
|
-
- final (bool): Whether this is the final chunk
|
|
176
|
-
- artifact_name (str, optional): Name of the artifact if chunk is an artifact update
|
|
177
|
-
For error chunks:
|
|
178
|
-
- status (str): 'error'
|
|
179
|
-
- error_type (str): Type of error encountered
|
|
180
|
-
- message (str): Error description
|
|
181
|
-
|
|
182
|
-
Raises:
|
|
183
|
-
httpx.HTTPError: If there's an HTTP-related error during the streaming request.
|
|
184
|
-
Exception: For any other unexpected errors during message streaming or processing.
|
|
185
|
-
"""
|
|
186
|
-
@staticmethod
|
|
187
|
-
def format_agent_description(agent_card: AgentCard) -> str:
|
|
188
|
-
"""Format the description of an agent card including skills information.
|
|
189
|
-
|
|
190
|
-
Args:
|
|
191
|
-
agent_card (AgentCard): The agent card to format.
|
|
192
|
-
|
|
193
|
-
Returns:
|
|
194
|
-
str: The formatted description including skills.
|
|
195
|
-
"""
|
|
196
|
-
def add_mcp_server(self, mcp_config: dict[str, dict[str, Any]]) -> None:
|
|
197
|
-
"""Adds MCP servers to the agent.
|
|
198
|
-
|
|
199
|
-
Args:
|
|
200
|
-
mcp_config: A dictionary containing MCP server configurations.
|
|
201
|
-
|
|
202
|
-
Raises:
|
|
203
|
-
ValueError: If the MCP configuration is empty or None.
|
|
204
|
-
KeyError: If a server with the same name already exists in the MCP configuration.
|
|
205
|
-
"""
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import abc
|
|
2
|
-
from _typeshed import Incomplete
|
|
3
|
-
from a2a.types import AgentCard as AgentCard
|
|
4
|
-
from abc import abstractmethod
|
|
5
|
-
from aip_agents.agent.base_agent import BaseAgent as BaseAgent
|
|
6
|
-
from aip_agents.agent.types import StreamMode as StreamMode
|
|
7
|
-
from aip_agents.mcp.client.langchain import LangchainMCPClient as LangchainMCPClient
|
|
8
|
-
from aip_agents.tools.tool_config_injector import CONFIG_SCHEMA_ATTR as CONFIG_SCHEMA_ATTR, TOOL_CONFIG_SCHEMA_ATTR as TOOL_CONFIG_SCHEMA_ATTR, inject_config_methods_into_tool as inject_config_methods_into_tool
|
|
9
|
-
from aip_agents.types import A2AEvent as A2AEvent, A2AStreamEventType as A2AStreamEventType
|
|
10
|
-
from aip_agents.utils import validate_references as validate_references
|
|
11
|
-
from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
|
|
12
|
-
from aip_agents.utils.metadata_helper import DEFAULT_STEP_INDICATOR_MESSAGE as DEFAULT_STEP_INDICATOR_MESSAGE, FINAL_AGENT_THINKING_FINISHED_CONTENT as FINAL_AGENT_THINKING_FINISHED_CONTENT, Status as Status
|
|
13
|
-
from aip_agents.utils.token_usage_helper import STEP_USAGE_KEY as STEP_USAGE_KEY, TOTAL_USAGE_KEY as TOTAL_USAGE_KEY, USAGE_METADATA_KEY as USAGE_METADATA_KEY
|
|
14
|
-
from gllm_core.event import EventEmitter
|
|
15
|
-
from langchain_core.messages import BaseMessage as BaseMessage
|
|
16
|
-
from langchain_core.tools import BaseTool
|
|
17
|
-
from langgraph.graph import StateGraph
|
|
18
|
-
from langgraph.graph.message import add_messages as add_messages
|
|
19
|
-
from langgraph.graph.state import CompiledStateGraph as CompiledStateGraph
|
|
20
|
-
from langgraph.types import Checkpointer as Checkpointer, StreamWriter as StreamWriter
|
|
21
|
-
from typing import Any, AsyncGenerator, Sequence
|
|
22
|
-
|
|
23
|
-
logger: Incomplete
|
|
24
|
-
|
|
25
|
-
class BaseLangGraphAgent(BaseAgent, metaclass=abc.ABCMeta):
|
|
26
|
-
"""Base class for LangGraph-based agents with unified tool approach.
|
|
27
|
-
|
|
28
|
-
Provides core LangGraph functionality including:
|
|
29
|
-
- Graph compilation and execution
|
|
30
|
-
- State schema management
|
|
31
|
-
- I/O mapping between user inputs and graph states
|
|
32
|
-
- Event emission support
|
|
33
|
-
- Tool resolution and handling
|
|
34
|
-
- A2A communication capabilities via tools
|
|
35
|
-
- Agent delegation capabilities via tools
|
|
36
|
-
- MCP server integration via tools
|
|
37
|
-
- Enhanced output extraction from various state formats
|
|
38
|
-
|
|
39
|
-
Tool Management:
|
|
40
|
-
- regular_tools: Standard LangChain tools provided during initialization
|
|
41
|
-
- mcp_tools: Tools retrieved from MCP servers
|
|
42
|
-
- resolved_tools: Combined collection of all tools for graph execution
|
|
43
|
-
|
|
44
|
-
Subclasses must implement:
|
|
45
|
-
- define_graph(): Define the specific graph structure
|
|
46
|
-
- _prepare_graph_input(): Convert user input to graph state
|
|
47
|
-
- _format_graph_output(): Convert final graph state to user output
|
|
48
|
-
"""
|
|
49
|
-
state_schema: Incomplete
|
|
50
|
-
thread_id_key: Incomplete
|
|
51
|
-
event_emitter: Incomplete
|
|
52
|
-
checkpointer: Incomplete
|
|
53
|
-
a2a_tool_manager: Incomplete
|
|
54
|
-
delegation_tool_manager: Incomplete
|
|
55
|
-
regular_tools: list[BaseTool]
|
|
56
|
-
mcp_tools: list[BaseTool]
|
|
57
|
-
resolved_tools: list[BaseTool]
|
|
58
|
-
def __init__(self, name: str, instruction: str, description: str | None = None, model: Any | None = None, tools: Sequence[BaseTool] | None = None, state_schema: type | None = None, thread_id_key: str = 'thread_id', event_emitter: EventEmitter | None = None, checkpointer: Checkpointer | None = None, **kwargs: Any) -> None:
|
|
59
|
-
"""Initialize the BaseLangGraphAgent.
|
|
60
|
-
|
|
61
|
-
Args:
|
|
62
|
-
name: The name of the agent.
|
|
63
|
-
instruction: The system instruction for the agent.
|
|
64
|
-
description: Human-readable description of the agent.
|
|
65
|
-
model: The model to use (lm_invoker, LangChain model, string, etc.).
|
|
66
|
-
tools: Sequence of regular LangChain tools (not A2A or delegation tools).
|
|
67
|
-
state_schema: The state schema for the LangGraph. Defaults to basic message state.
|
|
68
|
-
thread_id_key: Key for thread ID in configuration.
|
|
69
|
-
event_emitter: Optional event emitter for streaming updates.
|
|
70
|
-
checkpointer: Optional checkpointer for conversation persistence.
|
|
71
|
-
**kwargs: Additional keyword arguments passed to BaseAgent (including tool_configs).
|
|
72
|
-
"""
|
|
73
|
-
@abstractmethod
|
|
74
|
-
def define_graph(self, graph_builder: StateGraph) -> CompiledStateGraph:
|
|
75
|
-
"""Define the specific graph structure for this agent type.
|
|
76
|
-
|
|
77
|
-
Subclasses must implement this method to:
|
|
78
|
-
1. Add nodes to the graph_builder
|
|
79
|
-
2. Add edges and conditional edges
|
|
80
|
-
3. Set entry points
|
|
81
|
-
4. Return the compiled graph
|
|
82
|
-
|
|
83
|
-
Args:
|
|
84
|
-
graph_builder: The StateGraph builder to define nodes and edges on.
|
|
85
|
-
|
|
86
|
-
Returns:
|
|
87
|
-
The compiled graph ready for execution.
|
|
88
|
-
"""
|
|
89
|
-
def register_a2a_agents(self, agent_cards: list[AgentCard]) -> None:
|
|
90
|
-
"""Register A2A communication capabilities using the A2A tool manager.
|
|
91
|
-
|
|
92
|
-
Args:
|
|
93
|
-
agent_cards (list[AgentCard]): List of AgentCard instances for external communication.
|
|
94
|
-
"""
|
|
95
|
-
def register_delegation_agents(self, agents: list[BaseAgent]) -> None:
|
|
96
|
-
"""Register internal agent delegation capabilities using the delegation tool manager.
|
|
97
|
-
|
|
98
|
-
Args:
|
|
99
|
-
agents: List of BaseAgent instances for internal task delegation.
|
|
100
|
-
"""
|
|
101
|
-
tools: Incomplete
|
|
102
|
-
def update_regular_tools(self, new_tools: list[BaseTool], rebuild_graph: bool | None = None) -> None:
|
|
103
|
-
"""Update regular tools (not capabilities).
|
|
104
|
-
|
|
105
|
-
Args:
|
|
106
|
-
new_tools: New list of regular tools to use.
|
|
107
|
-
rebuild_graph: Whether to rebuild graph. If None, uses auto_rebuild_graph setting.
|
|
108
|
-
"""
|
|
109
|
-
def run(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
110
|
-
"""Synchronously run the LangGraph agent.
|
|
111
|
-
|
|
112
|
-
Args:
|
|
113
|
-
query: The input query for the agent.
|
|
114
|
-
**kwargs: Additional keyword arguments.
|
|
115
|
-
|
|
116
|
-
Returns:
|
|
117
|
-
Dictionary containing the agent's response.
|
|
118
|
-
"""
|
|
119
|
-
async def arun(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
120
|
-
"""Asynchronously run the LangGraph agent.
|
|
121
|
-
|
|
122
|
-
If MCP configuration exists, connects to the MCP server and registers tools before running.
|
|
123
|
-
|
|
124
|
-
Args:
|
|
125
|
-
query: The input query for the agent.
|
|
126
|
-
**kwargs: Additional keyword arguments including configurable for LangGraph.
|
|
127
|
-
|
|
128
|
-
Returns:
|
|
129
|
-
Dictionary containing the agent's response and full final state.
|
|
130
|
-
"""
|
|
131
|
-
async def arun_stream(self, query: str, **kwargs: Any) -> AsyncGenerator[str | dict[str, Any], None]:
|
|
132
|
-
"""Asynchronously stream the LangGraph agent's response.
|
|
133
|
-
|
|
134
|
-
If MCP configuration exists, connects to the MCP server and registers tools before streaming.
|
|
135
|
-
This method properly handles both LM Invoker and LangChain model streaming:
|
|
136
|
-
- For LM Invoker: Uses StreamEventHandler to capture streaming events
|
|
137
|
-
- For LangChain models: Uses LangGraph's native streaming implementation
|
|
138
|
-
|
|
139
|
-
Args:
|
|
140
|
-
query: The input query for the agent.
|
|
141
|
-
**kwargs: Additional keyword arguments.
|
|
142
|
-
|
|
143
|
-
Yields:
|
|
144
|
-
Chunks of output (strings or dicts) from the streaming response.
|
|
145
|
-
"""
|
|
146
|
-
def add_mcp_server(self, mcp_config: dict[str, dict[str, Any]]) -> None:
|
|
147
|
-
"""Add MCP server configuration.
|
|
148
|
-
|
|
149
|
-
Args:
|
|
150
|
-
mcp_config (dict[str, dict[str, Any]]): Dictionary containing MCP server configurations.
|
|
151
|
-
"""
|
|
152
|
-
async def arun_a2a_stream(self, query: str, **kwargs: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
153
|
-
'''Asynchronously streams the agent\'s response in a generic format for A2A.
|
|
154
|
-
|
|
155
|
-
If MCP configuration exists, connects to the MCP server and registers tools before streaming.
|
|
156
|
-
|
|
157
|
-
Args:
|
|
158
|
-
query: The input query for the agent.
|
|
159
|
-
**kwargs: Additional keyword arguments.
|
|
160
|
-
|
|
161
|
-
Yields:
|
|
162
|
-
Dictionaries with "status" and "content" keys.
|
|
163
|
-
Possible statuses: "working", "completed", "failed", "canceled".
|
|
164
|
-
'''
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from a2a.types import AgentCard as AgentCard
|
|
3
|
-
from aip_agents.agent.base_agent import BaseAgent as BaseAgent
|
|
4
|
-
from aip_agents.mcp.client import GoogleADKMCPClient as GoogleADKMCPClient
|
|
5
|
-
from aip_agents.utils.a2a_connector import A2AConnector as A2AConnector
|
|
6
|
-
from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
|
|
7
|
-
from google.adk.agents import LlmAgent
|
|
8
|
-
from google.adk.tools.langchain_tool import LangchainTool
|
|
9
|
-
from langchain.tools import BaseTool as LangchainBaseTool
|
|
10
|
-
from pydantic import BaseModel
|
|
11
|
-
from typing import Any, AsyncGenerator, AsyncIterator
|
|
12
|
-
|
|
13
|
-
logger: Incomplete
|
|
14
|
-
MODEL_TEMPERATURE: float
|
|
15
|
-
DEFAULT_AUTH_URL: str
|
|
16
|
-
|
|
17
|
-
class A2AToolInput(BaseModel):
|
|
18
|
-
"""Input for the A2ATool."""
|
|
19
|
-
query: str
|
|
20
|
-
|
|
21
|
-
class A2ATool(LangchainBaseTool):
|
|
22
|
-
"""A tool that communicates with an A2A agent."""
|
|
23
|
-
name: str
|
|
24
|
-
description: str
|
|
25
|
-
args_schema: type[BaseModel]
|
|
26
|
-
agent_card: AgentCard
|
|
27
|
-
|
|
28
|
-
def create_a2a_tool(agent_card: AgentCard) -> LangchainTool:
|
|
29
|
-
"""Create a LangChain tool from an A2A agent card."""
|
|
30
|
-
|
|
31
|
-
class GoogleADKAgent(BaseAgent):
|
|
32
|
-
"""An agent that wraps a native Google ADK Agent.
|
|
33
|
-
|
|
34
|
-
This class implements the AgentInterface and uses Google's LlmAgent
|
|
35
|
-
to handle the core conversation and tool execution logic via ADK's
|
|
36
|
-
async-first design.
|
|
37
|
-
"""
|
|
38
|
-
adk_native_agent: LlmAgent
|
|
39
|
-
model: Incomplete
|
|
40
|
-
max_iterations: Incomplete
|
|
41
|
-
tools: Incomplete
|
|
42
|
-
agents: Incomplete
|
|
43
|
-
session_service: Incomplete
|
|
44
|
-
name: Incomplete
|
|
45
|
-
def __init__(self, name: str, instruction: str, model: str, tools: list[Any] | None = None, description: str | None = None, max_iterations: int = 3, agents: list['GoogleADKAgent'] | None = None, **kwargs: Any) -> None:
|
|
46
|
-
'''Initializes the GoogleADKAgent.
|
|
47
|
-
|
|
48
|
-
Args:
|
|
49
|
-
name: The name of this wrapper agent.
|
|
50
|
-
instruction: The instruction for this wrapper agent.
|
|
51
|
-
model: The name of the Google ADK model to use (e.g., "gemini-1.5-pro-latest").
|
|
52
|
-
tools: An optional list of callable tools for the ADK agent.
|
|
53
|
-
description: An optional human-readable description.
|
|
54
|
-
max_iterations: Maximum number of iterations to run (default: 3).
|
|
55
|
-
agents: Optional list of sub-agents that this agent can delegate to using ADK\'s
|
|
56
|
-
built-in multi-agent capabilities. These will be passed as sub_agents to the
|
|
57
|
-
underlying LlmAgent.
|
|
58
|
-
**kwargs: Additional keyword arguments passed to the parent `__init__`.
|
|
59
|
-
'''
|
|
60
|
-
def run(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
61
|
-
'''Synchronously runs the Google ADK agent by wrapping the internal async run method.
|
|
62
|
-
|
|
63
|
-
Args:
|
|
64
|
-
query: The input query for the agent.
|
|
65
|
-
**kwargs: Additional keyword arguments passed to the internal async run method.
|
|
66
|
-
Supports "session_id", "user_id", "app_name".
|
|
67
|
-
|
|
68
|
-
Returns:
|
|
69
|
-
A dictionary containing the agent\'s response.
|
|
70
|
-
|
|
71
|
-
Raises:
|
|
72
|
-
RuntimeError: If `asyncio.run()` is called from an already running event loop,
|
|
73
|
-
or for other unhandled errors during synchronous execution.
|
|
74
|
-
'''
|
|
75
|
-
async def arun(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
76
|
-
'''Asynchronously runs the agent with the given query and returns the response.
|
|
77
|
-
|
|
78
|
-
Args:
|
|
79
|
-
query: The user\'s query to process.
|
|
80
|
-
**kwargs: Additional keyword arguments. Supports "session_id", "user_id", "app_name".
|
|
81
|
-
|
|
82
|
-
Returns:
|
|
83
|
-
A dictionary containing the output and other metadata.
|
|
84
|
-
'''
|
|
85
|
-
async def arun_stream(self, query: str, **kwargs: Any) -> AsyncIterator[str]:
|
|
86
|
-
'''Runs the agent with the given query and streams the response parts.
|
|
87
|
-
|
|
88
|
-
Args:
|
|
89
|
-
query: The user\'s query to process.
|
|
90
|
-
**kwargs: Additional keyword arguments. Supports "session_id", "user_id", "app_name".
|
|
91
|
-
|
|
92
|
-
Yields:
|
|
93
|
-
Text response chunks from the model. If an error occurs, the error message is yielded.
|
|
94
|
-
'''
|
|
95
|
-
def register_a2a_agents(self, agent_cards: list[AgentCard]) -> None:
|
|
96
|
-
"""Convert known A2A agents to LangChain tools.
|
|
97
|
-
|
|
98
|
-
This method takes the agents from a2a_config.known_agents, creates A2AAgent
|
|
99
|
-
instances for each one, and wraps them in LangChain tools.
|
|
100
|
-
|
|
101
|
-
Returns:
|
|
102
|
-
None: The tools are added to the existing tools list.
|
|
103
|
-
"""
|
|
104
|
-
def add_mcp_server(self, mcp_config: dict[str, dict[str, Any]]) -> None:
|
|
105
|
-
"""Adds a new MCP server configuration.
|
|
106
|
-
|
|
107
|
-
Args:
|
|
108
|
-
mcp_config: Dictionary containing server name as key and its configuration as value.
|
|
109
|
-
|
|
110
|
-
Raises:
|
|
111
|
-
ValueError: If mcp_config is empty or None, or if any server configuration is invalid.
|
|
112
|
-
KeyError: If any server name already exists in the configuration.
|
|
113
|
-
"""
|
|
114
|
-
async def arun_a2a_stream(self, query: str, configurable: dict[str, Any] | None = None, **kwargs: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
115
|
-
'''Asynchronously streams the agent\'s response in a format compatible with A2A.
|
|
116
|
-
|
|
117
|
-
This method formats the ADK agent\'s streaming responses into a consistent format
|
|
118
|
-
that the A2A executor can understand and process.
|
|
119
|
-
|
|
120
|
-
Args:
|
|
121
|
-
query: The input query for the agent.
|
|
122
|
-
configurable: Optional dictionary for configuration, may include:
|
|
123
|
-
- thread_id: The A2A task ID (used as session_id).
|
|
124
|
-
**kwargs: Additional keyword arguments. Supports "user_id", "app_name".
|
|
125
|
-
|
|
126
|
-
Yields:
|
|
127
|
-
Dictionary with \'status\' and \'content\' fields that describe the agent\'s response state.
|
|
128
|
-
'''
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.agent.base_langgraph_agent import BaseLangGraphAgent as BaseLangGraphAgent
|
|
3
|
-
from aip_agents.tools.tool_config_injector import TOOL_CONFIGS_KEY as TOOL_CONFIGS_KEY
|
|
4
|
-
from aip_agents.types.a2a_events import A2AStreamEventType as A2AStreamEventType
|
|
5
|
-
from aip_agents.utils import add_references_chunks as add_references_chunks
|
|
6
|
-
from aip_agents.utils.langgraph import convert_langchain_messages_to_gllm_messages as convert_langchain_messages_to_gllm_messages, convert_lm_output_to_langchain_message as convert_lm_output_to_langchain_message
|
|
7
|
-
from aip_agents.utils.langgraph.tool_output_management import StoreOutputParams as StoreOutputParams, ToolOutputManager as ToolOutputManager, ToolReferenceError as ToolReferenceError, ToolReferenceResolver as ToolReferenceResolver
|
|
8
|
-
from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
|
|
9
|
-
from aip_agents.utils.token_usage_helper import TOTAL_USAGE_KEY as TOTAL_USAGE_KEY, USAGE_METADATA_KEY as USAGE_METADATA_KEY, add_usage_metadata as add_usage_metadata, extract_and_update_token_usage_from_ai_message as extract_and_update_token_usage_from_ai_message, extract_token_usage_from_tool_output as extract_token_usage_from_tool_output
|
|
10
|
-
from dataclasses import dataclass
|
|
11
|
-
from gllm_core.event import EventEmitter as EventEmitter
|
|
12
|
-
from gllm_core.schema import Chunk
|
|
13
|
-
from langchain_core.language_models import BaseChatModel
|
|
14
|
-
from langchain_core.messages import BaseMessage as BaseMessage, ToolMessage
|
|
15
|
-
from langchain_core.messages.ai import UsageMetadata as UsageMetadata
|
|
16
|
-
from langchain_core.tools import BaseTool as BaseTool
|
|
17
|
-
from langgraph.graph import StateGraph as StateGraph
|
|
18
|
-
from langgraph.graph.message import add_messages as add_messages
|
|
19
|
-
from langgraph.graph.state import CompiledStateGraph as CompiledStateGraph
|
|
20
|
-
from langgraph.managed import IsLastStep as IsLastStep, RemainingSteps as RemainingSteps
|
|
21
|
-
from langgraph.types import StreamWriter as StreamWriter
|
|
22
|
-
from typing import Any, Sequence
|
|
23
|
-
from typing_extensions import Annotated, TypedDict
|
|
24
|
-
|
|
25
|
-
logger: Incomplete
|
|
26
|
-
DEFAULT_INSTRUCTION: str
|
|
27
|
-
TOOL_RUN_STREAMING_METHOD: str
|
|
28
|
-
SAVE_OUTPUT_HISTORY: str
|
|
29
|
-
FORMAT_AGENT_REFERENCE: str
|
|
30
|
-
TOOL_OUTPUT_MANAGER_KEY: str
|
|
31
|
-
CALL_ID_KEY: str
|
|
32
|
-
|
|
33
|
-
@dataclass
|
|
34
|
-
class ToolCallResult:
|
|
35
|
-
"""Container for the results of a single tool call execution.
|
|
36
|
-
|
|
37
|
-
Holds all the data returned from a tool execution in a structured format.
|
|
38
|
-
|
|
39
|
-
Attributes:
|
|
40
|
-
messages: List of tool messages generated from the tool call.
|
|
41
|
-
artifacts: List of artifacts produced by the tool call.
|
|
42
|
-
metadata_delta: Dictionary of metadata updates from the tool call.
|
|
43
|
-
references: List of reference chunks from the tool call.
|
|
44
|
-
step_usage: Token usage metadata from the tool call.
|
|
45
|
-
"""
|
|
46
|
-
messages: list[ToolMessage]
|
|
47
|
-
artifacts: list[dict[str, Any]]
|
|
48
|
-
metadata_delta: dict[str, Any]
|
|
49
|
-
references: list[Chunk]
|
|
50
|
-
step_usage: UsageMetadata | None
|
|
51
|
-
|
|
52
|
-
@dataclass
|
|
53
|
-
class ToolStorageParams:
|
|
54
|
-
"""Parameters for automatic tool storage.
|
|
55
|
-
|
|
56
|
-
Reduces the number of arguments passed to _handle_automatic_tool_storage method.
|
|
57
|
-
|
|
58
|
-
Attributes:
|
|
59
|
-
tool: The tool instance that was executed.
|
|
60
|
-
tool_output: The output returned by the tool.
|
|
61
|
-
tool_call: The tool call information from the AI message.
|
|
62
|
-
tool_call_id: Unique identifier for this tool call.
|
|
63
|
-
resolved_args: The resolved arguments passed to the tool.
|
|
64
|
-
state: Current agent state containing tool output manager.
|
|
65
|
-
"""
|
|
66
|
-
tool: BaseTool
|
|
67
|
-
tool_output: Any
|
|
68
|
-
tool_call: dict[str, Any]
|
|
69
|
-
tool_call_id: str
|
|
70
|
-
resolved_args: dict[str, Any]
|
|
71
|
-
state: dict[str, Any]
|
|
72
|
-
|
|
73
|
-
class ReactAgentState(TypedDict):
|
|
74
|
-
"""State schema for the ReAct agent.
|
|
75
|
-
|
|
76
|
-
Includes messages, step tracking, optional event emission support, artifacts, references,
|
|
77
|
-
metadata, and tool output management for efficient tool result sharing and reference resolution.
|
|
78
|
-
"""
|
|
79
|
-
messages: Annotated[Sequence[BaseMessage], add_messages]
|
|
80
|
-
is_last_step: IsLastStep
|
|
81
|
-
remaining_steps: RemainingSteps
|
|
82
|
-
event_emitter: EventEmitter | None
|
|
83
|
-
artifacts: list[dict[str, Any]] | None
|
|
84
|
-
references: Annotated[list[Chunk], add_references_chunks]
|
|
85
|
-
metadata: dict[str, Any] | None
|
|
86
|
-
tool_output_manager: ToolOutputManager | None
|
|
87
|
-
total_usage: Annotated[UsageMetadata | None, add_usage_metadata]
|
|
88
|
-
|
|
89
|
-
class LangGraphReactAgent(BaseLangGraphAgent):
|
|
90
|
-
"""A ReAct agent template built on LangGraph.
|
|
91
|
-
|
|
92
|
-
This agent can use either:
|
|
93
|
-
- An LMInvoker (if self.lm_invoker is set by BaseAgent)
|
|
94
|
-
- A LangChain BaseChatModel (if self.model is set by BaseAgent)
|
|
95
|
-
|
|
96
|
-
The graph structure follows the standard ReAct pattern:
|
|
97
|
-
agent -> tools -> agent (loop) -> END
|
|
98
|
-
"""
|
|
99
|
-
tool_output_manager: Incomplete
|
|
100
|
-
def __init__(self, name: str, instruction: str = ..., model: BaseChatModel | str | Any | None = None, tools: Sequence[BaseTool] | None = None, agents: Sequence[Any] | None = None, description: str | None = None, thread_id_key: str = 'thread_id', event_emitter: EventEmitter | None = None, tool_output_manager: ToolOutputManager | None = None, **kwargs: Any) -> None:
|
|
101
|
-
"""Initialize the LangGraph ReAct Agent.
|
|
102
|
-
|
|
103
|
-
Args:
|
|
104
|
-
name: The name of the agent.
|
|
105
|
-
instruction: The system instruction for the agent.
|
|
106
|
-
model: The model to use (lm_invoker, LangChain model, string, etc.).
|
|
107
|
-
tools: Sequence of LangChain tools available to the agent.
|
|
108
|
-
agents: Optional sequence of sub-agents for delegation (coordinator mode).
|
|
109
|
-
description: Human-readable description of the agent.
|
|
110
|
-
thread_id_key: Key for thread ID in configuration.
|
|
111
|
-
event_emitter: Optional event emitter for streaming updates.
|
|
112
|
-
tool_output_manager: Optional ToolOutputManager instance for tool output management.
|
|
113
|
-
When provided, enables tool output storage, reference resolution, and sharing capabilities.
|
|
114
|
-
This enables multi-agent workflows where agents can access each other's tool outputs.
|
|
115
|
-
If None, tool output management is disabled for this agent.
|
|
116
|
-
**kwargs: Additional keyword arguments passed to BaseLangGraphAgent.
|
|
117
|
-
"""
|
|
118
|
-
def define_graph(self, graph_builder: StateGraph) -> CompiledStateGraph:
|
|
119
|
-
"""Define the ReAct agent graph structure.
|
|
120
|
-
|
|
121
|
-
Args:
|
|
122
|
-
graph_builder: The StateGraph builder to define the graph structure.
|
|
123
|
-
|
|
124
|
-
Returns:
|
|
125
|
-
Compiled LangGraph ready for execution.
|
|
126
|
-
"""
|
|
127
|
-
|
|
128
|
-
class LangGraphAgent(LangGraphReactAgent):
|
|
129
|
-
"""Alias for LangGraphReactAgent."""
|
|
130
|
-
class LangChainAgent(LangGraphReactAgent):
|
|
131
|
-
"""Alias for LangGraphReactAgent."""
|