aip-agents-binary 0.6.3__py3-none-any.whl → 0.6.5__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/agent/__init__.py +44 -4
- aip_agents/agent/base_langgraph_agent.py +26 -6
- aip_agents/agent/langgraph_memory_enhancer_agent.py +368 -34
- aip_agents/agent/langgraph_react_agent.py +30 -6
- aip_agents/mcp/client/__init__.py +38 -2
- aip_agents/mcp/client/transports.py +5 -1
- aip_agents/memory/adapters/base_adapter.py +94 -0
- aip_agents/sentry/sentry.py +29 -8
- aip_agents/tools/memory_search/__init__.py +8 -1
- aip_agents/tools/memory_search/mem0.py +108 -1
- aip_agents/tools/memory_search/schema.py +33 -0
- aip_agents/tools/memory_search_tool.py +8 -0
- {aip_agents_binary-0.6.3.dist-info → aip_agents_binary-0.6.5.dist-info}/METADATA +4 -16
- aip_agents_binary-0.6.5.dist-info/RECORD +314 -0
- aip_agents/__init__.pyi +0 -19
- aip_agents/a2a/__init__.pyi +0 -3
- aip_agents/a2a/server/__init__.pyi +0 -4
- aip_agents/a2a/server/base_executor.pyi +0 -73
- aip_agents/a2a/server/google_adk_executor.pyi +0 -51
- aip_agents/a2a/server/langflow_executor.pyi +0 -43
- aip_agents/a2a/server/langgraph_executor.pyi +0 -47
- aip_agents/a2a/types.pyi +0 -132
- aip_agents/agent/__init__.pyi +0 -9
- aip_agents/agent/base_agent.pyi +0 -221
- aip_agents/agent/base_langgraph_agent.pyi +0 -233
- aip_agents/agent/google_adk_agent.pyi +0 -141
- aip_agents/agent/google_adk_constants.pyi +0 -3
- aip_agents/agent/hitl/__init__.pyi +0 -6
- aip_agents/agent/hitl/config.pyi +0 -15
- aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +0 -42
- aip_agents/agent/hitl/manager.pyi +0 -200
- aip_agents/agent/hitl/models.pyi +0 -3
- aip_agents/agent/hitl/prompt/__init__.pyi +0 -4
- aip_agents/agent/hitl/prompt/base.pyi +0 -24
- aip_agents/agent/hitl/prompt/deferred.pyi +0 -30
- aip_agents/agent/hitl/registry.pyi +0 -101
- aip_agents/agent/interface.pyi +0 -81
- aip_agents/agent/interfaces.pyi +0 -44
- aip_agents/agent/langflow_agent.pyi +0 -133
- aip_agents/agent/langgraph_memory_enhancer_agent.pyi +0 -49
- aip_agents/agent/langgraph_react_agent.pyi +0 -170
- aip_agents/agent/system_instruction_context.pyi +0 -13
- aip_agents/clients/__init__.pyi +0 -4
- aip_agents/clients/langflow/__init__.pyi +0 -4
- aip_agents/clients/langflow/client.pyi +0 -140
- aip_agents/clients/langflow/types.pyi +0 -7
- aip_agents/constants.pyi +0 -7
- aip_agents/examples/__init__.pyi +0 -0
- aip_agents/examples/compare_streaming_client.pyi +0 -48
- aip_agents/examples/compare_streaming_server.pyi +0 -18
- aip_agents/examples/demo_memory_recall.py +0 -401
- aip_agents/examples/demo_memory_recall.pyi +0 -58
- 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 -15
- 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 -15
- aip_agents/examples/hello_world_a2a_langchain_server.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langflow_client.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langflow_server.pyi +0 -14
- 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 -16
- 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 -14
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +0 -15
- aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +0 -48
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +0 -48
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +0 -45
- 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 -15
- 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_interactive.pyi +0 -16
- aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +0 -18
- 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_langflow_agent.pyi +0 -35
- aip_agents/examples/hello_world_langgraph.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_gl_connector_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 -30
- 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_ptc.pyi +0 -5
- aip_agents/examples/hello_world_sentry.pyi +0 -21
- aip_agents/examples/hello_world_step_limits.pyi +0 -17
- aip_agents/examples/hello_world_stock_a2a_server.pyi +0 -17
- aip_agents/examples/hello_world_tool_output_client.pyi +0 -5
- aip_agents/examples/hello_world_tool_output_server.pyi +0 -19
- aip_agents/examples/hitl_demo.pyi +0 -67
- aip_agents/examples/pii_demo_langgraph_client.pyi +0 -5
- aip_agents/examples/pii_demo_langgraph_server.pyi +0 -20
- aip_agents/examples/pii_demo_multi_agent_client.pyi +0 -5
- aip_agents/examples/pii_demo_multi_agent_server.pyi +0 -40
- aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +0 -5
- aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +0 -19
- aip_agents/examples/tools/__init__.pyi +0 -9
- aip_agents/examples/tools/adk_arithmetic_tools.pyi +0 -24
- 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 -19
- aip_agents/examples/tools/image_artifact_tool.pyi +0 -26
- aip_agents/examples/tools/langchain_arithmetic_tools.pyi +0 -17
- aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -20
- aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +0 -25
- aip_agents/examples/tools/langchain_weather_tool.pyi +0 -19
- aip_agents/examples/tools/langgraph_streaming_tool.pyi +0 -43
- aip_agents/examples/tools/mock_retrieval_tool.pyi +0 -13
- aip_agents/examples/tools/pii_demo_tools.pyi +0 -54
- aip_agents/examples/tools/random_chart_tool.pyi +0 -20
- aip_agents/examples/tools/serper_tool.pyi +0 -16
- aip_agents/examples/tools/stock_tools.pyi +0 -36
- 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/guardrails/__init__.pyi +0 -6
- aip_agents/guardrails/engines/__init__.pyi +0 -4
- aip_agents/guardrails/engines/base.pyi +0 -61
- aip_agents/guardrails/engines/nemo.pyi +0 -46
- aip_agents/guardrails/engines/phrase_matcher.pyi +0 -48
- aip_agents/guardrails/exceptions.pyi +0 -23
- aip_agents/guardrails/manager.pyi +0 -42
- aip_agents/guardrails/middleware.pyi +0 -87
- aip_agents/guardrails/schemas.pyi +0 -43
- aip_agents/guardrails/utils.pyi +0 -19
- aip_agents/mcp/__init__.pyi +0 -0
- aip_agents/mcp/client/__init__.pyi +0 -5
- aip_agents/mcp/client/base_mcp_client.pyi +0 -148
- aip_agents/mcp/client/connection_manager.pyi +0 -51
- aip_agents/mcp/client/google_adk/__init__.pyi +0 -3
- aip_agents/mcp/client/google_adk/client.pyi +0 -75
- aip_agents/mcp/client/langchain/__init__.pyi +0 -3
- aip_agents/mcp/client/langchain/client.pyi +0 -48
- aip_agents/mcp/client/persistent_session.pyi +0 -122
- aip_agents/mcp/client/session_pool.pyi +0 -101
- aip_agents/mcp/client/transports.pyi +0 -132
- aip_agents/mcp/utils/__init__.pyi +0 -0
- aip_agents/mcp/utils/config_validator.pyi +0 -82
- aip_agents/memory/__init__.pyi +0 -5
- aip_agents/memory/adapters/__init__.pyi +0 -4
- aip_agents/memory/adapters/base_adapter.pyi +0 -150
- aip_agents/memory/adapters/mem0.pyi +0 -22
- aip_agents/memory/base.pyi +0 -60
- aip_agents/memory/constants.pyi +0 -25
- aip_agents/memory/factory.pyi +0 -24
- aip_agents/memory/guidance.pyi +0 -3
- aip_agents/memory/simple_memory.pyi +0 -23
- aip_agents/middleware/__init__.pyi +0 -5
- aip_agents/middleware/base.pyi +0 -75
- aip_agents/middleware/manager.pyi +0 -84
- aip_agents/middleware/todolist.pyi +0 -125
- aip_agents/ptc/__init__.pyi +0 -10
- aip_agents/ptc/doc_gen.pyi +0 -40
- aip_agents/ptc/exceptions.pyi +0 -22
- aip_agents/ptc/executor.pyi +0 -73
- aip_agents/ptc/mcp/__init__.pyi +0 -7
- aip_agents/ptc/mcp/sandbox_bridge.pyi +0 -47
- aip_agents/ptc/mcp/templates/__init__.pyi +0 -0
- aip_agents/ptc/naming.pyi +0 -76
- aip_agents/ptc/payload.pyi +0 -15
- aip_agents/ptc/prompt_builder.pyi +0 -55
- aip_agents/ptc/ptc_helper.pyi +0 -1
- aip_agents/ptc/sandbox_bridge.pyi +0 -25
- aip_agents/ptc/template_utils.pyi +0 -13
- aip_agents/ptc/templates/__init__.pyi +0 -0
- aip_agents/sandbox/__init__.pyi +0 -5
- aip_agents/sandbox/defaults.pyi +0 -2
- aip_agents/sandbox/e2b_runtime.pyi +0 -51
- aip_agents/sandbox/template_builder.pyi +0 -36
- aip_agents/sandbox/types.pyi +0 -14
- aip_agents/sandbox/validation.pyi +0 -20
- aip_agents/schema/__init__.pyi +0 -9
- aip_agents/schema/a2a.pyi +0 -40
- aip_agents/schema/agent.pyi +0 -65
- aip_agents/schema/hitl.pyi +0 -89
- aip_agents/schema/langgraph.pyi +0 -28
- aip_agents/schema/model_id.pyi +0 -54
- aip_agents/schema/step_limit.pyi +0 -63
- aip_agents/schema/storage.pyi +0 -21
- aip_agents/sentry/__init__.pyi +0 -3
- aip_agents/sentry/sentry.pyi +0 -48
- aip_agents/storage/__init__.pyi +0 -8
- aip_agents/storage/base.pyi +0 -58
- aip_agents/storage/clients/__init__.pyi +0 -3
- aip_agents/storage/clients/minio_client.pyi +0 -137
- aip_agents/storage/config.pyi +0 -29
- aip_agents/storage/providers/__init__.pyi +0 -5
- aip_agents/storage/providers/base.pyi +0 -88
- aip_agents/storage/providers/memory.pyi +0 -79
- aip_agents/storage/providers/object_storage.pyi +0 -98
- aip_agents/tools/__init__.pyi +0 -11
- aip_agents/tools/browser_use/__init__.pyi +0 -14
- aip_agents/tools/browser_use/action_parser.pyi +0 -18
- aip_agents/tools/browser_use/browser_use_tool.pyi +0 -50
- aip_agents/tools/browser_use/llm_config.pyi +0 -52
- aip_agents/tools/browser_use/minio_storage.pyi +0 -109
- aip_agents/tools/browser_use/schemas.pyi +0 -32
- aip_agents/tools/browser_use/session.pyi +0 -4
- aip_agents/tools/browser_use/session_errors.pyi +0 -53
- aip_agents/tools/browser_use/steel_session_recording.pyi +0 -63
- aip_agents/tools/browser_use/streaming.pyi +0 -81
- aip_agents/tools/browser_use/structured_data_parser.pyi +0 -86
- aip_agents/tools/browser_use/structured_data_recovery.pyi +0 -43
- aip_agents/tools/browser_use/types.pyi +0 -45
- aip_agents/tools/code_sandbox/__init__.pyi +0 -3
- aip_agents/tools/code_sandbox/constant.pyi +0 -4
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +0 -102
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +0 -29
- aip_agents/tools/constants.pyi +0 -138
- aip_agents/tools/date_range_tool.pyi +0 -21
- aip_agents/tools/document_loader/__init__.pyi +0 -7
- aip_agents/tools/document_loader/base_reader.pyi +0 -75
- aip_agents/tools/document_loader/docx_reader_tool.pyi +0 -10
- aip_agents/tools/document_loader/excel_reader_tool.pyi +0 -26
- aip_agents/tools/document_loader/pdf_reader_tool.pyi +0 -11
- aip_agents/tools/document_loader/pdf_splitter.pyi +0 -18
- aip_agents/tools/execute_ptc_code.pyi +0 -90
- aip_agents/tools/gl_connector/__init__.pyi +0 -3
- aip_agents/tools/gl_connector/tool.pyi +0 -74
- aip_agents/tools/gl_connector_tools.pyi +0 -39
- aip_agents/tools/memory_search/__init__.pyi +0 -5
- aip_agents/tools/memory_search/base.pyi +0 -69
- aip_agents/tools/memory_search/mem0.pyi +0 -19
- aip_agents/tools/memory_search/schema.pyi +0 -15
- aip_agents/tools/memory_search_tool.pyi +0 -3
- aip_agents/tools/time_tool.pyi +0 -16
- aip_agents/tools/tool_config_injector.pyi +0 -26
- aip_agents/tools/web_search/__init__.pyi +0 -3
- aip_agents/tools/web_search/serper_tool.pyi +0 -19
- aip_agents/types/__init__.pyi +0 -36
- aip_agents/types/a2a_events.pyi +0 -3
- aip_agents/utils/__init__.pyi +0 -11
- aip_agents/utils/a2a_connector.pyi +0 -146
- aip_agents/utils/artifact_helpers.pyi +0 -203
- aip_agents/utils/constants.pyi +0 -10
- aip_agents/utils/datetime/__init__.pyi +0 -4
- aip_agents/utils/datetime/normalization.pyi +0 -95
- aip_agents/utils/datetime/timezone.pyi +0 -48
- aip_agents/utils/env_loader.pyi +0 -10
- aip_agents/utils/event_handler_registry.pyi +0 -23
- aip_agents/utils/file_prompt_utils.pyi +0 -21
- aip_agents/utils/final_response_builder.pyi +0 -34
- aip_agents/utils/formatter_llm_client.pyi +0 -71
- 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/base_tool_manager.pyi +0 -48
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +0 -56
- aip_agents/utils/langgraph/tool_output_management.pyi +0 -329
- aip_agents/utils/logger.pyi +0 -60
- aip_agents/utils/metadata/__init__.pyi +0 -5
- aip_agents/utils/metadata/activity_metadata_helper.pyi +0 -25
- aip_agents/utils/metadata/activity_narrative/__init__.pyi +0 -7
- aip_agents/utils/metadata/activity_narrative/builder.pyi +0 -35
- aip_agents/utils/metadata/activity_narrative/constants.pyi +0 -10
- aip_agents/utils/metadata/activity_narrative/context.pyi +0 -32
- aip_agents/utils/metadata/activity_narrative/formatters.pyi +0 -48
- aip_agents/utils/metadata/activity_narrative/utils.pyi +0 -12
- aip_agents/utils/metadata/schemas/__init__.pyi +0 -4
- aip_agents/utils/metadata/schemas/activity_schema.pyi +0 -18
- aip_agents/utils/metadata/schemas/thinking_schema.pyi +0 -20
- aip_agents/utils/metadata/thinking_metadata_helper.pyi +0 -4
- aip_agents/utils/metadata_helper.pyi +0 -117
- aip_agents/utils/name_preprocessor/__init__.pyi +0 -6
- aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +0 -52
- aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +0 -38
- aip_agents/utils/name_preprocessor/name_preprocessor.pyi +0 -41
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +0 -34
- aip_agents/utils/pii/__init__.pyi +0 -5
- aip_agents/utils/pii/pii_handler.pyi +0 -96
- aip_agents/utils/pii/pii_helper.pyi +0 -78
- aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +0 -73
- aip_agents/utils/reference_helper.pyi +0 -81
- aip_agents/utils/sse_chunk_transformer.pyi +0 -166
- aip_agents/utils/step_limit_manager.pyi +0 -112
- aip_agents/utils/token_usage_helper.pyi +0 -60
- aip_agents_binary-0.6.3.dist-info/RECORD +0 -614
- {aip_agents_binary-0.6.3.dist-info → aip_agents_binary-0.6.5.dist-info}/WHEEL +0 -0
- {aip_agents_binary-0.6.3.dist-info → aip_agents_binary-0.6.5.dist-info}/top_level.txt +0 -0
aip_agents/agent/interfaces.pyi
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from collections.abc import AsyncIterator
|
|
2
|
-
from typing import Any, Protocol
|
|
3
|
-
|
|
4
|
-
class LangGraphAgentProtocol(Protocol):
|
|
5
|
-
"""Minimal interface required by LangGraphA2AExecutor."""
|
|
6
|
-
name: str
|
|
7
|
-
async def arun_a2a_stream(self, query: str, **kwargs: Any) -> AsyncIterator[dict[str, Any]]:
|
|
8
|
-
"""Stream A2A-compatible chunks for the given query.
|
|
9
|
-
|
|
10
|
-
Args:
|
|
11
|
-
query (str): The query to execute and stream.
|
|
12
|
-
**kwargs (Any): Additional keyword arguments for execution.
|
|
13
|
-
|
|
14
|
-
Yields:
|
|
15
|
-
dict[str, Any]: A2A-compatible streaming chunks.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
class LangflowAgentProtocol(Protocol):
|
|
19
|
-
"""Minimal interface required by LangflowA2AExecutor."""
|
|
20
|
-
name: str
|
|
21
|
-
async def arun_a2a_stream(self, query: str, **kwargs: Any) -> AsyncIterator[dict[str, Any]]:
|
|
22
|
-
"""Stream A2A-compatible chunks for the given query.
|
|
23
|
-
|
|
24
|
-
Args:
|
|
25
|
-
query (str): The query to execute and stream.
|
|
26
|
-
**kwargs (Any): Additional keyword arguments for execution.
|
|
27
|
-
|
|
28
|
-
Yields:
|
|
29
|
-
dict[str, Any]: A2A-compatible streaming chunks.
|
|
30
|
-
"""
|
|
31
|
-
|
|
32
|
-
class GoogleADKAgentProtocol(Protocol):
|
|
33
|
-
"""Minimal interface required by GoogleADKExecutor."""
|
|
34
|
-
name: str
|
|
35
|
-
async def arun_a2a_stream(self, query: str, **kwargs: Any) -> AsyncIterator[dict[str, Any]]:
|
|
36
|
-
"""Stream A2A-compatible chunks for the given query.
|
|
37
|
-
|
|
38
|
-
Args:
|
|
39
|
-
query (str): The query to execute and stream.
|
|
40
|
-
**kwargs (Any): Additional keyword arguments for execution.
|
|
41
|
-
|
|
42
|
-
Yields:
|
|
43
|
-
dict[str, Any]: A2A-compatible streaming chunks.
|
|
44
|
-
"""
|
|
@@ -1,133 +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.clients.langflow import LangflowApiClient as LangflowApiClient
|
|
5
|
-
from aip_agents.clients.langflow.types import LangflowEventType as LangflowEventType
|
|
6
|
-
from aip_agents.schema.agent import LangflowAgentConfig as LangflowAgentConfig
|
|
7
|
-
from aip_agents.types import A2AEvent as A2AEvent, A2AStreamEventType as A2AStreamEventType
|
|
8
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
9
|
-
from aip_agents.utils.sse_chunk_transformer import SSEChunkTransformer as SSEChunkTransformer
|
|
10
|
-
from collections.abc import AsyncGenerator
|
|
11
|
-
from typing import Any
|
|
12
|
-
|
|
13
|
-
logger: Incomplete
|
|
14
|
-
|
|
15
|
-
class LangflowAgent(BaseAgent):
|
|
16
|
-
"""Langflow agent implementation for executing Langflow flows.
|
|
17
|
-
|
|
18
|
-
This agent integrates with Langflow APIs to execute flows while providing
|
|
19
|
-
full compatibility with the SDK's agent framework, including:
|
|
20
|
-
- Synchronous and asynchronous execution
|
|
21
|
-
- Regular and A2A streaming support
|
|
22
|
-
- Session management for conversation continuity
|
|
23
|
-
- Error handling and retry logic
|
|
24
|
-
- Credential management through BaseAgent
|
|
25
|
-
|
|
26
|
-
The agent builds on BaseAgent to gain shared A2A utilities while focusing on
|
|
27
|
-
Langflow-specific execution logic.
|
|
28
|
-
"""
|
|
29
|
-
langflow_config: Incomplete
|
|
30
|
-
flow_id: Incomplete
|
|
31
|
-
api_client: Incomplete
|
|
32
|
-
def __init__(self, name: str, flow_id: str, description: str | None = None, base_url: str | None = None, api_key: str | None = None, config: LangflowAgentConfig | dict[str, Any] | None = None, **kwargs: Any) -> None:
|
|
33
|
-
"""Initialize the LangflowAgent.
|
|
34
|
-
|
|
35
|
-
Args:
|
|
36
|
-
name: The name of the agent.
|
|
37
|
-
flow_id: The unique identifier of the Langflow flow to execute.
|
|
38
|
-
description: Human-readable description.
|
|
39
|
-
base_url: The base URL of the Langflow API server.
|
|
40
|
-
api_key: The API key for Langflow authentication.
|
|
41
|
-
config: Langflow-specific configuration or dict.
|
|
42
|
-
**kwargs: Additional keyword arguments passed to BaseAgent.
|
|
43
|
-
"""
|
|
44
|
-
def run(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
45
|
-
"""Synchronously run the Langflow agent.
|
|
46
|
-
|
|
47
|
-
Args:
|
|
48
|
-
query: The input query for the agent.
|
|
49
|
-
**kwargs: Additional keyword arguments.
|
|
50
|
-
|
|
51
|
-
Returns:
|
|
52
|
-
Dictionary containing the agent's response.
|
|
53
|
-
"""
|
|
54
|
-
async def arun(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
55
|
-
"""Asynchronously run the Langflow agent.
|
|
56
|
-
|
|
57
|
-
Args:
|
|
58
|
-
query: The input query for the agent.
|
|
59
|
-
**kwargs: Additional keyword arguments.
|
|
60
|
-
|
|
61
|
-
Returns:
|
|
62
|
-
Dictionary containing the agent's response and metadata.
|
|
63
|
-
"""
|
|
64
|
-
async def arun_stream(self, query: str, **kwargs: Any) -> AsyncGenerator[str | dict[str, Any], None]:
|
|
65
|
-
"""Asynchronously stream the Langflow agent's response.
|
|
66
|
-
|
|
67
|
-
Args:
|
|
68
|
-
query: The input query for the agent.
|
|
69
|
-
**kwargs: Additional keyword arguments.
|
|
70
|
-
|
|
71
|
-
Yields:
|
|
72
|
-
Chunks of output (strings or dicts) from the streaming response.
|
|
73
|
-
"""
|
|
74
|
-
async def arun_a2a_stream(self, query: str, **kwargs: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
75
|
-
"""Asynchronously stream the agent's response in A2A format.
|
|
76
|
-
|
|
77
|
-
This method converts Langflow streaming events into A2A-compatible events
|
|
78
|
-
following the patterns established by BaseLangGraphAgent.
|
|
79
|
-
|
|
80
|
-
Args:
|
|
81
|
-
query: The input query for the agent.
|
|
82
|
-
**kwargs: Additional keyword arguments.
|
|
83
|
-
|
|
84
|
-
Yields:
|
|
85
|
-
A2A-compatible event dictionaries with semantic event types.
|
|
86
|
-
"""
|
|
87
|
-
async def arun_sse_stream(self, query: str, task_id: str | None = None, context_id: str | None = None, **kwargs: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
88
|
-
'''Stream agent response as SSE-compatible chunks.
|
|
89
|
-
|
|
90
|
-
This method wraps arun_a2a_stream and transforms output to the normalized
|
|
91
|
-
dict format matching A2AConnector.astream_to_agent output, enabling direct
|
|
92
|
-
streaming without A2A server overhead.
|
|
93
|
-
|
|
94
|
-
Args:
|
|
95
|
-
query: The input query for the agent.
|
|
96
|
-
task_id: Optional task identifier for the stream.
|
|
97
|
-
context_id: Optional context identifier for the stream.
|
|
98
|
-
**kwargs: Additional arguments passed to arun_a2a_stream.
|
|
99
|
-
|
|
100
|
-
Yields:
|
|
101
|
-
SSEChunk dicts with normalized structure:
|
|
102
|
-
- status: "success" | "error"
|
|
103
|
-
- task_state: "working" | "completed" | "failed" | "canceled"
|
|
104
|
-
- content: Text content or None
|
|
105
|
-
- event_type: Always string (never enum)
|
|
106
|
-
- final: True for terminal events
|
|
107
|
-
- metadata: Normalized metadata dict
|
|
108
|
-
- artifacts: Only present when non-empty
|
|
109
|
-
'''
|
|
110
|
-
def register_a2a_agents(self, agents: list[AgentCard]) -> None:
|
|
111
|
-
"""Register A2A agents (not supported for Langflow agents).
|
|
112
|
-
|
|
113
|
-
Args:
|
|
114
|
-
agents: List of AgentCard instances.
|
|
115
|
-
|
|
116
|
-
Raises:
|
|
117
|
-
NotImplementedError: Langflow agents don't support A2A agent registration.
|
|
118
|
-
"""
|
|
119
|
-
def add_mcp_server(self, mcp_config: dict[str, dict[str, Any]]) -> None:
|
|
120
|
-
"""Add MCP server configuration (not supported for Langflow agents).
|
|
121
|
-
|
|
122
|
-
Args:
|
|
123
|
-
mcp_config: MCP server configuration.
|
|
124
|
-
|
|
125
|
-
Raises:
|
|
126
|
-
NotImplementedError: Langflow agents don't support MCP servers.
|
|
127
|
-
"""
|
|
128
|
-
async def health_check(self) -> bool:
|
|
129
|
-
"""Check if the Langflow API is accessible.
|
|
130
|
-
|
|
131
|
-
Returns:
|
|
132
|
-
True if the API is accessible, False otherwise.
|
|
133
|
-
"""
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.agent.langgraph_react_agent import LangGraphReactAgent as LangGraphReactAgent
|
|
3
|
-
from aip_agents.agent.system_instruction_context import get_current_date_context as get_current_date_context
|
|
4
|
-
from aip_agents.memory.guidance import MEM0_MEMORY_RECALL_GUIDANCE as MEM0_MEMORY_RECALL_GUIDANCE
|
|
5
|
-
from aip_agents.tools.memory_search_tool import LongTermMemorySearchTool as LongTermMemorySearchTool, MEMORY_SEARCH_TOOL_NAME as MEMORY_SEARCH_TOOL_NAME, Mem0SearchTool as Mem0SearchTool
|
|
6
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
7
|
-
from langgraph.graph import StateGraph
|
|
8
|
-
from langgraph.graph.state import CompiledStateGraph
|
|
9
|
-
|
|
10
|
-
logger: Incomplete
|
|
11
|
-
|
|
12
|
-
class LangGraphMemoryEnhancerAgent(LangGraphReactAgent):
|
|
13
|
-
"""Simplified mini-agent for automatic memory retrieval and query enhancement.
|
|
14
|
-
|
|
15
|
-
This agent has a simple 2-node LangGraph (agent + tools) and uses existing memory
|
|
16
|
-
infrastructure to enhance user queries with relevant context. It acts as a
|
|
17
|
-
preprocessing layer that automatically attempts memory retrieval for every query.
|
|
18
|
-
|
|
19
|
-
Key features:
|
|
20
|
-
- Uses runtime `memory_user_id` provided via call arguments (no static storage)
|
|
21
|
-
- Uses simplified instruction reusing existing guidance
|
|
22
|
-
- Standard 2-node LangGraph pattern (agent -> tools -> agent)
|
|
23
|
-
- Automatically enhances queries with memory context when available
|
|
24
|
-
- Returns original query unchanged if no relevant memories found
|
|
25
|
-
"""
|
|
26
|
-
def __init__(self, memory, **kwargs) -> None:
|
|
27
|
-
"""Initialize the LangGraphMemoryEnhancerAgent with memory backend and configuration.
|
|
28
|
-
|
|
29
|
-
Args:
|
|
30
|
-
memory: Memory backend instance (Mem0Memory or compatible)
|
|
31
|
-
**kwargs: Additional arguments passed to BaseLangGraphAgent, including:
|
|
32
|
-
- memory_agent_id: Fallback user ID for memory operations
|
|
33
|
-
- model: LLM model to use for memory decisions
|
|
34
|
-
- Other BaseLangGraphAgent parameters
|
|
35
|
-
"""
|
|
36
|
-
def define_graph(self, graph_builder: StateGraph) -> CompiledStateGraph:
|
|
37
|
-
"""Define the 3-node memory recall LangGraph for this agent.
|
|
38
|
-
|
|
39
|
-
This creates a streamlined ReAct-inspired structure that reuses
|
|
40
|
-
`LangGraphReactAgent` helpers for robust LM invocation, token usage tracking,
|
|
41
|
-
error handling, and tool execution.
|
|
42
|
-
|
|
43
|
-
Args:
|
|
44
|
-
graph_builder: LangGraph `StateGraph` builder instance used to register nodes and
|
|
45
|
-
edges for compilation.
|
|
46
|
-
|
|
47
|
-
Returns:
|
|
48
|
-
CompiledStateGraph: The compiled memory recall graph ready for execution.
|
|
49
|
-
"""
|
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.agent.base_langgraph_agent import BaseLangGraphAgent as BaseLangGraphAgent
|
|
3
|
-
from aip_agents.agent.hitl.langgraph_hitl_mixin import LangGraphHitLMixin as LangGraphHitLMixin
|
|
4
|
-
from aip_agents.agent.hitl.manager import TOOL_EXECUTION_BLOCKING_DECISIONS as TOOL_EXECUTION_BLOCKING_DECISIONS
|
|
5
|
-
from aip_agents.guardrails.manager import GuardrailManager as GuardrailManager
|
|
6
|
-
from aip_agents.middleware.base import AgentMiddleware as AgentMiddleware, ModelRequest as ModelRequest
|
|
7
|
-
from aip_agents.middleware.manager import MiddlewareManager as MiddlewareManager
|
|
8
|
-
from aip_agents.middleware.todolist import TodoList as TodoList, TodoListMiddleware as TodoListMiddleware
|
|
9
|
-
from aip_agents.ptc import PTCSandboxConfig as PTCSandboxConfig
|
|
10
|
-
from aip_agents.schema.a2a import A2AStreamEventType as A2AStreamEventType
|
|
11
|
-
from aip_agents.schema.hitl import ApprovalDecision as ApprovalDecision, HitlMetadata as HitlMetadata
|
|
12
|
-
from aip_agents.schema.langgraph import ToolCallResult as ToolCallResult, ToolStorageParams as ToolStorageParams
|
|
13
|
-
from aip_agents.schema.step_limit import MaxStepsExceededError as MaxStepsExceededError, StepLimitConfig as StepLimitConfig
|
|
14
|
-
from aip_agents.tools.memory_search_tool import MEMORY_SEARCH_TOOL_NAME as MEMORY_SEARCH_TOOL_NAME
|
|
15
|
-
from aip_agents.tools.tool_config_injector import TOOL_CONFIGS_KEY as TOOL_CONFIGS_KEY
|
|
16
|
-
from aip_agents.utils import add_references_chunks as add_references_chunks
|
|
17
|
-
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
|
|
18
|
-
from aip_agents.utils.langgraph.tool_output_management import StoreOutputParams as StoreOutputParams, ToolOutputManager as ToolOutputManager, ToolReferenceError as ToolReferenceError, ToolReferenceResolver as ToolReferenceResolver
|
|
19
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
20
|
-
from aip_agents.utils.metadata.activity_metadata_helper import create_tool_activity_info as create_tool_activity_info
|
|
21
|
-
from aip_agents.utils.metadata_helper import Kind as Kind, MetadataFieldKeys as MetadataFieldKeys, Status as Status
|
|
22
|
-
from aip_agents.utils.pii import ToolPIIHandler as ToolPIIHandler, add_pii_mappings as add_pii_mappings, normalize_enable_pii as normalize_enable_pii
|
|
23
|
-
from aip_agents.utils.reference_helper import extract_references_from_tool as extract_references_from_tool
|
|
24
|
-
from aip_agents.utils.step_limit_manager import StepLimitManager as StepLimitManager
|
|
25
|
-
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
|
|
26
|
-
from collections.abc import Awaitable as Awaitable, Sequence
|
|
27
|
-
from dataclasses import dataclass
|
|
28
|
-
from gllm_core.event import EventEmitter
|
|
29
|
-
from gllm_core.schema import Chunk as Chunk
|
|
30
|
-
from langchain_core.language_models import BaseChatModel
|
|
31
|
-
from langchain_core.messages import BaseMessage as BaseMessage
|
|
32
|
-
from langchain_core.messages.ai import UsageMetadata
|
|
33
|
-
from langchain_core.tools import BaseTool
|
|
34
|
-
from langgraph.graph import StateGraph
|
|
35
|
-
from langgraph.graph.message import add_messages as add_messages
|
|
36
|
-
from langgraph.graph.state import CompiledStateGraph
|
|
37
|
-
from langgraph.managed import IsLastStep, RemainingSteps
|
|
38
|
-
from typing import Annotated, Any
|
|
39
|
-
from typing_extensions import TypedDict
|
|
40
|
-
|
|
41
|
-
logger: Incomplete
|
|
42
|
-
DEFAULT_INSTRUCTION: str
|
|
43
|
-
TOOL_RUN_STREAMING_METHOD: str
|
|
44
|
-
TOOL_OUTPUT_MANAGER_KEY: str
|
|
45
|
-
CALL_ID_KEY: str
|
|
46
|
-
|
|
47
|
-
@dataclass
|
|
48
|
-
class ToolCallContext:
|
|
49
|
-
"""Context information for executing a single tool call."""
|
|
50
|
-
config: dict[str, Any] | None
|
|
51
|
-
state: dict[str, Any]
|
|
52
|
-
pending_artifacts: list[dict[str, Any]]
|
|
53
|
-
hitl_decision: ApprovalDecision | None = ...
|
|
54
|
-
|
|
55
|
-
class ReactAgentState(TypedDict):
|
|
56
|
-
"""State schema for the ReAct agent.
|
|
57
|
-
|
|
58
|
-
Includes messages, step tracking, optional event emission support, artifacts, references,
|
|
59
|
-
metadata, tool output management, and deep agents middleware state (todos, filesystem).
|
|
60
|
-
"""
|
|
61
|
-
messages: Annotated[Sequence[BaseMessage], add_messages]
|
|
62
|
-
is_last_step: IsLastStep
|
|
63
|
-
remaining_steps: RemainingSteps
|
|
64
|
-
event_emitter: EventEmitter | None
|
|
65
|
-
artifacts: list[dict[str, Any]] | None
|
|
66
|
-
references: Annotated[list[Chunk], add_references_chunks]
|
|
67
|
-
metadata: dict[str, Any] | None
|
|
68
|
-
tool_output_manager: ToolOutputManager | None
|
|
69
|
-
total_usage: Annotated[UsageMetadata | None, add_usage_metadata]
|
|
70
|
-
pii_mapping: Annotated[dict[str, str] | None, add_pii_mappings]
|
|
71
|
-
thread_id: str
|
|
72
|
-
todos: TodoList | None
|
|
73
|
-
current_step: int
|
|
74
|
-
delegation_depth: int
|
|
75
|
-
delegation_chain: list[str]
|
|
76
|
-
step_limit_config: StepLimitConfig | None
|
|
77
|
-
|
|
78
|
-
class LangGraphReactAgent(LangGraphHitLMixin, BaseLangGraphAgent):
|
|
79
|
-
"""A ReAct agent template built on LangGraph.
|
|
80
|
-
|
|
81
|
-
This agent can use either:
|
|
82
|
-
- An LMInvoker (if self.lm_invoker is set by BaseAgent)
|
|
83
|
-
- A LangChain BaseChatModel (if self.model is set by BaseAgent)
|
|
84
|
-
|
|
85
|
-
The graph structure follows the standard ReAct pattern:
|
|
86
|
-
agent -> tools -> agent (loop) -> END
|
|
87
|
-
"""
|
|
88
|
-
tool_output_manager: Incomplete
|
|
89
|
-
step_limit_config: Incomplete
|
|
90
|
-
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, planning: bool = False, middlewares: Sequence[AgentMiddleware] | None = None, guardrail: GuardrailManager | None = None, step_limit_config: StepLimitConfig | None = None, ptc_config: PTCSandboxConfig | None = None, **kwargs: Any) -> None:
|
|
91
|
-
"""Initialize the LangGraph ReAct Agent.
|
|
92
|
-
|
|
93
|
-
Args:
|
|
94
|
-
name: The name of the agent.
|
|
95
|
-
instruction: The system instruction for the agent.
|
|
96
|
-
model: The model to use (lm_invoker, LangChain model, string, etc.).
|
|
97
|
-
tools: Sequence of LangChain tools available to the agent.
|
|
98
|
-
agents: Optional sequence of sub-agents for delegation (coordinator mode).
|
|
99
|
-
description: Human-readable description of the agent.
|
|
100
|
-
thread_id_key: Key for thread ID in configuration.
|
|
101
|
-
event_emitter: Optional event emitter for streaming updates.
|
|
102
|
-
tool_output_manager: Optional ToolOutputManager instance for tool output management.
|
|
103
|
-
When provided, enables tool output storage, reference resolution, and sharing capabilities.
|
|
104
|
-
This enables multi-agent workflows where agents can access each other's tool outputs.
|
|
105
|
-
If None, tool output management is disabled for this agent.
|
|
106
|
-
planning: Enable planning capabilities with TodoListMiddleware. Defaults to False.
|
|
107
|
-
middlewares: Optional sequence of custom middleware to COMPOSE (not override) with built-in middleware.
|
|
108
|
-
Execution order: [TodoListMiddleware (if planning=True),
|
|
109
|
-
GuardrailMiddleware (if guardrail provided),
|
|
110
|
-
...custom middlewares in order provided]
|
|
111
|
-
All middleware hooks execute - this extends capabilities, never replaces them.
|
|
112
|
-
guardrail: Optional GuardrailManager for content filtering and safety checks.
|
|
113
|
-
When provided, automatically wraps in GuardrailMiddleware for transparent
|
|
114
|
-
input/output filtering during agent execution.
|
|
115
|
-
enable_pii: Optional toggle to enable PII handling for tool inputs and outputs.
|
|
116
|
-
step_limit_config: Optional configuration for step limits and delegation depth.
|
|
117
|
-
ptc_config: Optional configuration for PTC sandbox execution. See PTCSandboxConfig
|
|
118
|
-
for available options including enabled flag, sandbox timeout, and template settings.
|
|
119
|
-
PTC is enabled when ptc_config is not None and ptc_config.enabled is True.
|
|
120
|
-
When enabled, prompt guidance is automatically injected into the agent's instruction.
|
|
121
|
-
PTC runs in a sandbox only; there is no in-process trusted PTC path.
|
|
122
|
-
**kwargs: Additional keyword arguments passed to BaseLangGraphAgent.
|
|
123
|
-
"""
|
|
124
|
-
def define_graph(self, graph_builder: StateGraph) -> CompiledStateGraph:
|
|
125
|
-
"""Define the ReAct agent graph structure.
|
|
126
|
-
|
|
127
|
-
Args:
|
|
128
|
-
graph_builder: The StateGraph builder to define the graph structure.
|
|
129
|
-
|
|
130
|
-
Returns:
|
|
131
|
-
Compiled LangGraph ready for execution.
|
|
132
|
-
"""
|
|
133
|
-
def add_mcp_server(self, mcp_config: dict[str, dict[str, Any]]) -> None:
|
|
134
|
-
"""Add MCP servers and refresh PTC tool state if needed."""
|
|
135
|
-
def enable_ptc(self, config: PTCSandboxConfig | None = None) -> None:
|
|
136
|
-
'''Enable Programmatic Tool Calling (PTC) for this agent.
|
|
137
|
-
|
|
138
|
-
PTC allows the LLM to execute Python code that calls MCP tools
|
|
139
|
-
programmatically inside a sandboxed environment. This is useful for
|
|
140
|
-
chaining multiple tool calls with local data processing.
|
|
141
|
-
|
|
142
|
-
The execute_ptc_code tool is automatically added to the agent\'s tools
|
|
143
|
-
after MCP servers are configured. If no MCP servers are configured,
|
|
144
|
-
the tool sync is deferred until servers are added.
|
|
145
|
-
|
|
146
|
-
Args:
|
|
147
|
-
config: Optional configuration for PTC sandbox execution.
|
|
148
|
-
See PTCSandboxConfig for options like enabled flag and sandbox_timeout.
|
|
149
|
-
If None is passed, a default config with enabled=True will be created.
|
|
150
|
-
|
|
151
|
-
Example:
|
|
152
|
-
agent.enable_ptc(PTCSandboxConfig(enabled=True))
|
|
153
|
-
agent.add_mcp_server({"yfinance": {...}})
|
|
154
|
-
# execute_ptc_code tool is now available
|
|
155
|
-
|
|
156
|
-
Note:
|
|
157
|
-
PTC can also be enabled via the constructor by passing
|
|
158
|
-
ptc_config=PTCSandboxConfig(enabled=True, ...).
|
|
159
|
-
'''
|
|
160
|
-
async def cleanup(self) -> None:
|
|
161
|
-
"""Cleanup agent resources including PTC sandbox.
|
|
162
|
-
|
|
163
|
-
Extends base cleanup to also cleanup the PTC sandbox runtime if
|
|
164
|
-
execute_ptc_code tool was created.
|
|
165
|
-
"""
|
|
166
|
-
|
|
167
|
-
class LangGraphAgent(LangGraphReactAgent):
|
|
168
|
-
"""Alias for LangGraphReactAgent."""
|
|
169
|
-
class LangChainAgent(LangGraphReactAgent):
|
|
170
|
-
"""Alias for LangGraphReactAgent."""
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from aip_agents.utils.constants import DefaultTimezone as DefaultTimezone
|
|
2
|
-
|
|
3
|
-
__all__ = ['get_current_date_context', 'DefaultTimezone']
|
|
4
|
-
|
|
5
|
-
def get_current_date_context(timezone: str = ...) -> str:
|
|
6
|
-
"""Generate current date context for system prompts.
|
|
7
|
-
|
|
8
|
-
Args:
|
|
9
|
-
timezone: IANA timezone name for date formatting.
|
|
10
|
-
|
|
11
|
-
Returns:
|
|
12
|
-
Formatted date context string for inclusion in system prompts.
|
|
13
|
-
"""
|
aip_agents/clients/__init__.pyi
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.clients.langflow.types import LangflowEventType as LangflowEventType
|
|
3
|
-
from aip_agents.schema.agent import HttpxClientOptions as HttpxClientOptions
|
|
4
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
5
|
-
from collections.abc import AsyncGenerator
|
|
6
|
-
from typing import Any
|
|
7
|
-
|
|
8
|
-
logger: Incomplete
|
|
9
|
-
DEFAULT_LANGFLOW_BASE_URL: Incomplete
|
|
10
|
-
MAX_PAGE_SIZE: int
|
|
11
|
-
|
|
12
|
-
class LangflowApiClient:
|
|
13
|
-
"""HTTP client for Langflow API with streaming and non-streaming support.
|
|
14
|
-
|
|
15
|
-
This client handles all communication with Langflow APIs, including:
|
|
16
|
-
- Non-streaming execution
|
|
17
|
-
- Server-Sent Events (SSE) streaming
|
|
18
|
-
- Session management for conversation continuity
|
|
19
|
-
- Error handling and retries
|
|
20
|
-
- Credential management
|
|
21
|
-
"""
|
|
22
|
-
flow_id: Incomplete
|
|
23
|
-
base_url: Incomplete
|
|
24
|
-
api_key: Incomplete
|
|
25
|
-
sessions: dict[str, str]
|
|
26
|
-
client_kwargs: Incomplete
|
|
27
|
-
def __init__(self, flow_id: str | None = None, base_url: str | None = None, api_key: str | None = None, httpx_client_options: HttpxClientOptions = None) -> None:
|
|
28
|
-
"""Initialize the Langflow API client.
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
flow_id: The unique identifier of the Langflow flow to execute.
|
|
32
|
-
base_url: The base URL of the Langflow API server.
|
|
33
|
-
api_key: The API key for Langflow authentication.
|
|
34
|
-
httpx_client_options: HTTP client configuration options for httpx, including timeout.
|
|
35
|
-
"""
|
|
36
|
-
def get_or_create_session(self, thread_id: str | None = None) -> str:
|
|
37
|
-
"""Get existing session ID or create a new one.
|
|
38
|
-
|
|
39
|
-
Args:
|
|
40
|
-
thread_id: Optional thread ID for session mapping.
|
|
41
|
-
|
|
42
|
-
Returns:
|
|
43
|
-
Session ID for the conversation.
|
|
44
|
-
"""
|
|
45
|
-
async def call_flow(self, input_value: str, session_id: str | None = None, flow_id: str | None = None, **_: Any) -> dict[str, Any]:
|
|
46
|
-
"""Execute Langflow flow without streaming.
|
|
47
|
-
|
|
48
|
-
Args:
|
|
49
|
-
input_value: The user input to send to the flow.
|
|
50
|
-
session_id: Optional session ID for conversation continuity.
|
|
51
|
-
flow_id: Optional flow ID to execute. If None, uses the instance flow_id.
|
|
52
|
-
**_: Additional keyword arguments.
|
|
53
|
-
|
|
54
|
-
Returns:
|
|
55
|
-
The response from the flow execution.
|
|
56
|
-
|
|
57
|
-
Raises:
|
|
58
|
-
httpx.HTTPError: If the HTTP request fails.
|
|
59
|
-
ValueError: If the response cannot be parsed.
|
|
60
|
-
"""
|
|
61
|
-
async def stream_flow(self, input_value: str, session_id: str | None = None, flow_id: str | None = None, **_: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
62
|
-
"""Execute Langflow flow with streaming.
|
|
63
|
-
|
|
64
|
-
Args:
|
|
65
|
-
input_value: The user input to send to the flow.
|
|
66
|
-
session_id: Optional session ID for conversation continuity.
|
|
67
|
-
flow_id: Optional flow ID to execute. If None, uses the instance flow_id.
|
|
68
|
-
**_: Additional keyword arguments.
|
|
69
|
-
|
|
70
|
-
Yields:
|
|
71
|
-
Parsed streaming events from the Langflow API.
|
|
72
|
-
|
|
73
|
-
Raises:
|
|
74
|
-
httpx.HTTPError: If the HTTP request fails.
|
|
75
|
-
ValueError: If streaming events cannot be parsed.
|
|
76
|
-
"""
|
|
77
|
-
def parse_stream_event(self, event_data: dict[str, Any]) -> dict[str, Any] | None:
|
|
78
|
-
"""Parse a single streaming event from Langflow.
|
|
79
|
-
|
|
80
|
-
Args:
|
|
81
|
-
event_data: Raw event data from Langflow streaming response.
|
|
82
|
-
|
|
83
|
-
Returns:
|
|
84
|
-
Parsed event dictionary or None if event should be skipped.
|
|
85
|
-
"""
|
|
86
|
-
def clear_session(self, thread_id: str) -> None:
|
|
87
|
-
"""Clear session for a specific thread.
|
|
88
|
-
|
|
89
|
-
Args:
|
|
90
|
-
thread_id: Thread ID to clear session for.
|
|
91
|
-
"""
|
|
92
|
-
def clear_all_sessions(self) -> None:
|
|
93
|
-
"""Clear all stored sessions."""
|
|
94
|
-
async def get_flows(self, project_id: str | None = None, remove_example_flows: bool = False, components_only: bool = False, header_flows: bool = False, get_all: bool = True, page: int = 1, size: int = 50) -> list[dict[str, Any]]:
|
|
95
|
-
"""Retrieve flows from Langflow API with full control over parameters.
|
|
96
|
-
|
|
97
|
-
Based on the official API docs: https://docs.langflow.org/api-flows
|
|
98
|
-
Uses the exact parameter format from the documentation.
|
|
99
|
-
|
|
100
|
-
Args:
|
|
101
|
-
project_id: Optional project ID to filter flows.
|
|
102
|
-
remove_example_flows: Whether to exclude example flows. Defaults to False.
|
|
103
|
-
components_only: Whether to return only components. Defaults to False.
|
|
104
|
-
header_flows: Whether to return only flow headers. Defaults to False.
|
|
105
|
-
get_all: Whether to return all flows (ignores pagination). Defaults to True.
|
|
106
|
-
page: Page number for pagination (ignored if get_all=True). Defaults to 1.
|
|
107
|
-
size: Number of flows per page (ignored if get_all=True). Defaults to 50.
|
|
108
|
-
|
|
109
|
-
Returns:
|
|
110
|
-
List of flows or flow headers from the Langflow API.
|
|
111
|
-
|
|
112
|
-
Raises:
|
|
113
|
-
httpx.HTTPError: If the HTTP request fails.
|
|
114
|
-
ValueError: If the response cannot be parsed or invalid parameters provided.
|
|
115
|
-
"""
|
|
116
|
-
async def get_all_flows(self, project_id: str | None = None, remove_example_flows: bool = False, components_only: bool = False, header_flows: bool = False) -> list[dict[str, Any]]:
|
|
117
|
-
"""Convenience method to get ALL flows using the backend's get_all=true feature.
|
|
118
|
-
|
|
119
|
-
This method is a simple wrapper around get_flows() with get_all=True,
|
|
120
|
-
which uses the Langflow backend's ability to return all flows in one request.
|
|
121
|
-
|
|
122
|
-
Args:
|
|
123
|
-
project_id: Optional project ID to filter flows.
|
|
124
|
-
remove_example_flows: Whether to exclude example flows. Defaults to False.
|
|
125
|
-
components_only: Whether to return only components. Defaults to False.
|
|
126
|
-
header_flows: Whether to return only flow headers. Defaults to False.
|
|
127
|
-
|
|
128
|
-
Returns:
|
|
129
|
-
List of all flows from the Langflow API.
|
|
130
|
-
|
|
131
|
-
Raises:
|
|
132
|
-
httpx.HTTPError: If the HTTP request fails.
|
|
133
|
-
ValueError: If the response cannot be parsed.
|
|
134
|
-
"""
|
|
135
|
-
async def health_check(self) -> bool:
|
|
136
|
-
"""Check if the Langflow API is accessible.
|
|
137
|
-
|
|
138
|
-
Returns:
|
|
139
|
-
True if the API is accessible, False otherwise.
|
|
140
|
-
"""
|
aip_agents/constants.pyi
DELETED
aip_agents/examples/__init__.pyi
DELETED
|
File without changes
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
3
|
-
from aip_agents.examples.tools.mock_retrieval_tool import MockRetrievalTool as MockRetrievalTool
|
|
4
|
-
from aip_agents.examples.tools.pii_demo_tools import get_customer_info as get_customer_info, get_employee_data as get_employee_data, get_user_profile as get_user_profile
|
|
5
|
-
from aip_agents.examples.tools.random_chart_tool import RandomChartTool as RandomChartTool
|
|
6
|
-
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool as TableGeneratorTool
|
|
7
|
-
from aip_agents.schema.a2a import A2AStreamEventType as A2AStreamEventType
|
|
8
|
-
from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
|
|
9
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
10
|
-
from typing import Any
|
|
11
|
-
|
|
12
|
-
logger: Incomplete
|
|
13
|
-
SERVER_URL: str
|
|
14
|
-
|
|
15
|
-
def create_local_agent(enable_token_streaming: bool = False) -> LangGraphAgent:
|
|
16
|
-
"""Create a local agent with the same tools as the server.
|
|
17
|
-
|
|
18
|
-
Args:
|
|
19
|
-
enable_token_streaming: Whether to enable token streaming for content_chunk events.
|
|
20
|
-
"""
|
|
21
|
-
def format_chunk_summary(chunk: dict[str, Any], index: int) -> str:
|
|
22
|
-
"""Format a chunk for display."""
|
|
23
|
-
async def run_direct_streaming(agent: LangGraphAgent, query: str, pii_mapping: dict[str, str] | None = None) -> list[dict[str, Any]]:
|
|
24
|
-
"""Run arun_sse_stream and collect all chunks."""
|
|
25
|
-
async def run_connector_streaming(agent: LangGraphAgent, query: str, pii_mapping: dict[str, str] | None = None) -> list[dict[str, Any]]:
|
|
26
|
-
"""Run astream_to_agent via A2A connector and collect all chunks."""
|
|
27
|
-
def get_chunk_keys(chunks: list[dict[str, Any]]) -> set[str]:
|
|
28
|
-
"""Get all unique keys across all chunks."""
|
|
29
|
-
def get_field_types(chunks: list[dict[str, Any]], field: str) -> set[str]:
|
|
30
|
-
"""Get all types seen for a field across chunks.
|
|
31
|
-
|
|
32
|
-
Note: StrEnum values are reported as 'str' since they ARE strings
|
|
33
|
-
and serialize identically over HTTP/SSE.
|
|
34
|
-
"""
|
|
35
|
-
def group_chunks_by_event_type(chunks: list[dict[str, Any]]) -> dict[str, list[dict[str, Any]]]:
|
|
36
|
-
"""Group chunks by their event_type."""
|
|
37
|
-
def compare_chunk_structure(chunk1: dict[str, Any], chunk2: dict[str, Any]) -> dict[str, Any]:
|
|
38
|
-
"""Compare structure of two chunks and return differences."""
|
|
39
|
-
def compare_event_type_groups(direct_groups: dict[str, list[dict[str, Any]]], connector_groups: dict[str, list[dict[str, Any]]]) -> dict[str, Any]:
|
|
40
|
-
"""Compare chunks grouped by event type - RAW comparison without filtering."""
|
|
41
|
-
def compare_chunks(direct_chunks: list[dict[str, Any]], connector_chunks: list[dict[str, Any]]) -> dict[str, Any]:
|
|
42
|
-
"""Compare the two chunk lists and produce a comprehensive structural summary."""
|
|
43
|
-
def print_event_type_comparison(event_comparison: dict[str, Any]) -> None:
|
|
44
|
-
"""Print per-event-type comparison details with exact key/value examples."""
|
|
45
|
-
def print_structure_comparison(comparison: dict[str, Any]) -> None:
|
|
46
|
-
"""Print detailed structure comparison."""
|
|
47
|
-
async def main() -> None:
|
|
48
|
-
"""Main comparison workflow."""
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.agent import LangGraphAgent as LangGraphAgent
|
|
3
|
-
from aip_agents.examples.tools.mock_retrieval_tool import MockRetrievalTool as MockRetrievalTool
|
|
4
|
-
from aip_agents.examples.tools.pii_demo_tools import get_customer_info as get_customer_info, get_employee_data as get_employee_data, get_user_profile as get_user_profile
|
|
5
|
-
from aip_agents.examples.tools.random_chart_tool import RandomChartTool as RandomChartTool
|
|
6
|
-
from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool as TableGeneratorTool
|
|
7
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
8
|
-
|
|
9
|
-
logger: Incomplete
|
|
10
|
-
SERVER_AGENT_NAME: str
|
|
11
|
-
|
|
12
|
-
def main(host: str, port: int):
|
|
13
|
-
"""Runs the streaming comparison A2A server.
|
|
14
|
-
|
|
15
|
-
Args:
|
|
16
|
-
host: Host to bind the server to.
|
|
17
|
-
port: Port to bind the server to.
|
|
18
|
-
"""
|