aip-agents-binary 0.0.0b4__cp312-cp312-win_amd64.whl → 0.5.4__cp312-cp312-win_amd64.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.
Files changed (208) hide show
  1. aip_agents/__init__.pyi +19 -0
  2. aip_agents/a2a/__init__.pyi +1 -1
  3. aip_agents/a2a/server/base_executor.pyi +6 -6
  4. aip_agents/a2a/server/google_adk_executor.pyi +11 -11
  5. aip_agents/a2a/server/langflow_executor.pyi +43 -0
  6. aip_agents/a2a/server/langgraph_executor.pyi +10 -11
  7. aip_agents/a2a/types.pyi +54 -47
  8. aip_agents/agent/__init__.pyi +3 -1
  9. aip_agents/agent/base_agent.pyi +24 -8
  10. aip_agents/agent/base_langgraph_agent.pyi +67 -25
  11. aip_agents/agent/google_adk_agent.pyi +34 -21
  12. aip_agents/agent/google_adk_constants.pyi +3 -0
  13. aip_agents/agent/hitl/__init__.pyi +6 -0
  14. aip_agents/agent/hitl/config.pyi +15 -0
  15. aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
  16. aip_agents/agent/hitl/manager.pyi +199 -0
  17. aip_agents/agent/hitl/models.pyi +3 -0
  18. aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
  19. aip_agents/agent/hitl/prompt/base.pyi +24 -0
  20. aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
  21. aip_agents/agent/interface.pyi +5 -5
  22. aip_agents/agent/interfaces.pyi +44 -0
  23. aip_agents/agent/langflow_agent.pyi +133 -0
  24. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +49 -0
  25. aip_agents/agent/langgraph_react_agent.pyi +50 -57
  26. aip_agents/agent/system_instruction_context.pyi +13 -0
  27. aip_agents/clients/__init__.pyi +4 -0
  28. aip_agents/clients/langflow/__init__.pyi +4 -0
  29. aip_agents/clients/langflow/client.pyi +140 -0
  30. aip_agents/clients/langflow/types.pyi +7 -0
  31. aip_agents/constants.pyi +1 -0
  32. aip_agents/examples/compare_streaming_client.pyi +48 -0
  33. aip_agents/examples/compare_streaming_server.pyi +18 -0
  34. aip_agents/examples/demo_memory_recall.pyi +58 -0
  35. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +2 -2
  36. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +2 -2
  37. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +2 -2
  38. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +7 -2
  39. aip_agents/examples/hello_world_a2a_langchain_client.pyi +1 -1
  40. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +1 -1
  41. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +1 -1
  42. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +1 -1
  43. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +1 -1
  44. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +8 -3
  45. aip_agents/examples/hello_world_a2a_langchain_server.pyi +7 -2
  46. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +7 -2
  47. aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
  48. aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
  49. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +1 -1
  50. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +1 -1
  51. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +7 -2
  52. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +2 -2
  53. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +2 -2
  54. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +1 -1
  55. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +3 -3
  56. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +1 -1
  57. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +1 -1
  58. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +7 -2
  59. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +7 -2
  60. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +7 -2
  61. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +1 -1
  62. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +31 -6
  63. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +33 -5
  64. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +1 -1
  65. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +7 -2
  66. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
  67. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
  68. aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
  69. aip_agents/examples/hello_world_model_switch_cli.pyi +18 -3
  70. aip_agents/examples/hello_world_pii_logger.pyi +1 -1
  71. aip_agents/examples/hello_world_sentry.pyi +1 -1
  72. aip_agents/examples/hello_world_step_limits.pyi +17 -0
  73. aip_agents/examples/hello_world_stock_a2a_server.pyi +7 -2
  74. aip_agents/examples/hello_world_tool_output_client.pyi +1 -1
  75. aip_agents/examples/hello_world_tool_output_server.pyi +7 -2
  76. aip_agents/examples/hitl_demo.pyi +67 -0
  77. aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
  78. aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
  79. aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
  80. aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
  81. aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
  82. aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
  83. aip_agents/examples/tools/__init__.pyi +3 -1
  84. aip_agents/examples/tools/adk_weather_tool.pyi +1 -1
  85. aip_agents/examples/tools/data_visualization_tool.pyi +2 -0
  86. aip_agents/examples/tools/image_artifact_tool.pyi +2 -0
  87. aip_agents/examples/tools/langchain_arithmetic_tools.pyi +7 -0
  88. aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -1
  89. aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +2 -0
  90. aip_agents/examples/tools/langchain_weather_tool.pyi +1 -1
  91. aip_agents/examples/tools/langgraph_streaming_tool.pyi +1 -1
  92. aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
  93. aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
  94. aip_agents/examples/tools/random_chart_tool.pyi +20 -0
  95. aip_agents/examples/tools/stock_tools.pyi +18 -3
  96. aip_agents/mcp/client/__init__.pyi +4 -3
  97. aip_agents/mcp/client/base_mcp_client.pyi +148 -0
  98. aip_agents/mcp/client/connection_manager.pyi +48 -0
  99. aip_agents/mcp/client/google_adk/__init__.pyi +1 -1
  100. aip_agents/mcp/client/google_adk/client.pyi +50 -13
  101. aip_agents/mcp/client/langchain/__init__.pyi +1 -1
  102. aip_agents/mcp/client/langchain/client.pyi +47 -2
  103. aip_agents/mcp/client/persistent_session.pyi +113 -0
  104. aip_agents/mcp/client/session_pool.pyi +101 -0
  105. aip_agents/mcp/client/transports.pyi +123 -0
  106. aip_agents/mcp/utils/__init__.pyi +0 -0
  107. aip_agents/mcp/utils/config_validator.pyi +82 -0
  108. aip_agents/memory/adapters/__init__.pyi +4 -0
  109. aip_agents/memory/adapters/base_adapter.pyi +150 -0
  110. aip_agents/memory/adapters/mem0.pyi +22 -0
  111. aip_agents/memory/base.pyi +3 -3
  112. aip_agents/memory/constants.pyi +9 -0
  113. aip_agents/memory/factory.pyi +1 -1
  114. aip_agents/memory/guidance.pyi +3 -0
  115. aip_agents/middleware/__init__.pyi +5 -0
  116. aip_agents/middleware/base.pyi +71 -0
  117. aip_agents/middleware/manager.pyi +80 -0
  118. aip_agents/middleware/todolist.pyi +125 -0
  119. aip_agents/schema/__init__.pyi +9 -0
  120. aip_agents/schema/a2a.pyi +40 -0
  121. aip_agents/schema/agent.pyi +65 -0
  122. aip_agents/schema/hitl.pyi +89 -0
  123. aip_agents/schema/langgraph.pyi +28 -0
  124. aip_agents/schema/model_id.pyi +54 -0
  125. aip_agents/schema/step_limit.pyi +63 -0
  126. aip_agents/schema/storage.pyi +21 -0
  127. aip_agents/sentry/__init__.pyi +1 -1
  128. aip_agents/sentry/sentry.pyi +2 -2
  129. aip_agents/storage/base.pyi +1 -2
  130. aip_agents/storage/config.pyi +9 -46
  131. aip_agents/storage/providers/base.pyi +2 -3
  132. aip_agents/storage/providers/object_storage.pyi +1 -1
  133. aip_agents/tools/__init__.pyi +1 -1
  134. aip_agents/tools/bosa_tools.pyi +2 -2
  135. aip_agents/tools/constants.pyi +105 -100
  136. aip_agents/tools/memory_search/__init__.pyi +5 -0
  137. aip_agents/tools/memory_search/base.pyi +69 -0
  138. aip_agents/tools/memory_search/mem0.pyi +19 -0
  139. aip_agents/tools/memory_search/schema.pyi +15 -0
  140. aip_agents/tools/memory_search_tool.pyi +3 -0
  141. aip_agents/types/__init__.pyi +19 -3
  142. aip_agents/types/a2a_events.pyi +2 -73
  143. aip_agents/utils/__init__.pyi +7 -2
  144. aip_agents/utils/a2a_connector.pyi +14 -4
  145. aip_agents/utils/artifact_helpers.pyi +26 -2
  146. aip_agents/utils/constants.pyi +10 -0
  147. aip_agents/utils/datetime/__init__.pyi +4 -0
  148. aip_agents/utils/datetime/normalization.pyi +95 -0
  149. aip_agents/utils/datetime/timezone.pyi +48 -0
  150. aip_agents/utils/env_loader.pyi +2 -2
  151. aip_agents/utils/event_handler_registry.pyi +23 -0
  152. aip_agents/utils/final_response_builder.pyi +34 -0
  153. aip_agents/utils/formatter_llm_client.pyi +71 -0
  154. aip_agents/utils/langgraph/converter.pyi +1 -1
  155. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +2 -2
  156. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +2 -3
  157. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +14 -8
  158. aip_agents/utils/langgraph/tool_output_management.pyi +15 -2
  159. aip_agents/utils/logger.pyi +60 -0
  160. aip_agents/utils/metadata/__init__.pyi +5 -0
  161. aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
  162. aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
  163. aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
  164. aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
  165. aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
  166. aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
  167. aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
  168. aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
  169. aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
  170. aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
  171. aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
  172. aip_agents/utils/metadata_helper.pyi +50 -34
  173. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +1 -2
  174. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +1 -1
  175. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +4 -4
  176. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +1 -1
  177. aip_agents/utils/pii/__init__.pyi +5 -0
  178. aip_agents/utils/pii/pii_handler.pyi +86 -0
  179. aip_agents/utils/pii/pii_helper.pyi +69 -0
  180. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +62 -0
  181. aip_agents/utils/reference_helper.pyi +38 -6
  182. aip_agents/utils/sse_chunk_transformer.pyi +166 -0
  183. aip_agents/utils/step_limit_manager.pyi +112 -0
  184. aip_agents/utils/token_usage_helper.pyi +1 -1
  185. aip_agents.cp312-win_amd64.pyd +0 -0
  186. aip_agents.pyi +92 -34
  187. aip_agents_binary-0.5.4.dist-info/METADATA +649 -0
  188. aip_agents_binary-0.5.4.dist-info/RECORD +242 -0
  189. {aip_agents_binary-0.0.0b4.dist-info → aip_agents_binary-0.5.4.dist-info}/WHEEL +2 -1
  190. aip_agents_binary-0.5.4.dist-info/top_level.txt +1 -0
  191. aip_agents/agent/types.pyi +0 -109
  192. aip_agents/examples/hello_world_a2a_mem0_coordinator_client.pyi +0 -14
  193. aip_agents/examples/hello_world_a2a_mem0_coordinator_server.pyi +0 -10
  194. aip_agents/examples/hello_world_a2a_multi_agent_coordinator_client.pyi +0 -19
  195. aip_agents/examples/hello_world_a2a_multi_agent_coordinator_client_streaming.pyi +0 -9
  196. aip_agents/examples/hello_world_a2a_multi_agent_coordinator_server.pyi +0 -12
  197. aip_agents/examples/hello_world_langgraph_bosa.pyi +0 -5
  198. aip_agents/examples/hello_world_mem0_coordinator.pyi +0 -5
  199. aip_agents/examples/tools/pr_details_bosa_tool.pyi +0 -26
  200. aip_agents/memory/mem0_memory.pyi +0 -94
  201. aip_agents/tools/base.pyi +0 -44
  202. aip_agents/tools/base_bosa_tools.pyi +0 -12
  203. aip_agents/tools/bosa_connector.pyi +0 -30
  204. aip_agents/tools/bosa_tools_interface.pyi +0 -26
  205. aip_agents/utils/logger_manager.pyi +0 -151
  206. aip_agents.build/.gitignore +0 -1
  207. aip_agents_binary-0.0.0b4.dist-info/METADATA +0 -278
  208. aip_agents_binary-0.0.0b4.dist-info/RECORD +0 -166
@@ -0,0 +1,49 @@
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,81 +1,60 @@
1
1
  from _typeshed import Incomplete
2
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.middleware.base import AgentMiddleware as AgentMiddleware, ModelRequest as ModelRequest
6
+ from aip_agents.middleware.manager import MiddlewareManager as MiddlewareManager
7
+ from aip_agents.middleware.todolist import TodoList as TodoList, TodoListMiddleware as TodoListMiddleware
8
+ from aip_agents.schema.a2a import A2AStreamEventType as A2AStreamEventType
9
+ from aip_agents.schema.hitl import ApprovalDecision as ApprovalDecision, HitlMetadata as HitlMetadata
10
+ from aip_agents.schema.langgraph import ToolCallResult as ToolCallResult, ToolStorageParams as ToolStorageParams
11
+ from aip_agents.schema.step_limit import MaxStepsExceededError as MaxStepsExceededError, StepLimitConfig as StepLimitConfig
12
+ from aip_agents.tools.memory_search_tool import MEMORY_SEARCH_TOOL_NAME as MEMORY_SEARCH_TOOL_NAME
3
13
  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
14
  from aip_agents.utils import add_references_chunks as add_references_chunks
6
15
  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
16
  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
17
+ from aip_agents.utils.logger import get_logger as get_logger
18
+ from aip_agents.utils.metadata.activity_metadata_helper import create_tool_activity_info as create_tool_activity_info
19
+ from aip_agents.utils.metadata_helper import Kind as Kind, MetadataFieldKeys as MetadataFieldKeys, Status as Status
20
+ from aip_agents.utils.pii import ToolPIIHandler as ToolPIIHandler, add_pii_mappings as add_pii_mappings
21
+ from aip_agents.utils.reference_helper import extract_references_from_tool as extract_references_from_tool
22
+ from aip_agents.utils.step_limit_manager import StepLimitManager as StepLimitManager
9
23
  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 collections.abc import Callable as Callable
24
+ from collections.abc import Awaitable as Awaitable, Sequence
11
25
  from dataclasses import dataclass
12
- from gllm_core.event import EventEmitter as EventEmitter
13
- from gllm_core.schema import Chunk
26
+ from gllm_core.event import EventEmitter
27
+ from gllm_core.schema import Chunk as Chunk
14
28
  from langchain_core.language_models import BaseChatModel
15
- from langchain_core.messages import BaseMessage as BaseMessage, ToolMessage
16
- from langchain_core.messages.ai import UsageMetadata as UsageMetadata
17
- from langchain_core.tools import BaseTool as BaseTool
18
- from langgraph.graph import StateGraph as StateGraph
29
+ from langchain_core.messages import BaseMessage as BaseMessage
30
+ from langchain_core.messages.ai import UsageMetadata
31
+ from langchain_core.tools import BaseTool
32
+ from langgraph.graph import StateGraph
19
33
  from langgraph.graph.message import add_messages as add_messages
20
- from langgraph.graph.state import CompiledStateGraph as CompiledStateGraph
21
- from langgraph.managed import IsLastStep as IsLastStep, RemainingSteps as RemainingSteps
22
- from langgraph.types import StreamWriter as StreamWriter
23
- from typing import Any, Sequence
24
- from typing_extensions import Annotated, TypedDict
34
+ from langgraph.graph.state import CompiledStateGraph
35
+ from langgraph.managed import IsLastStep, RemainingSteps
36
+ from typing import Annotated, Any
37
+ from typing_extensions import TypedDict
25
38
 
26
39
  logger: Incomplete
27
40
  DEFAULT_INSTRUCTION: str
28
41
  TOOL_RUN_STREAMING_METHOD: str
29
- SAVE_OUTPUT_HISTORY: str
30
- FORMAT_AGENT_REFERENCE: str
31
42
  TOOL_OUTPUT_MANAGER_KEY: str
32
43
  CALL_ID_KEY: str
33
44
 
34
45
  @dataclass
35
- class ToolCallResult:
36
- """Container for the results of a single tool call execution.
37
-
38
- Holds all the data returned from a tool execution in a structured format.
39
-
40
- Attributes:
41
- messages: List of tool messages generated from the tool call.
42
- artifacts: List of artifacts produced by the tool call.
43
- metadata_delta: Dictionary of metadata updates from the tool call.
44
- references: List of reference chunks from the tool call.
45
- step_usage: Token usage metadata from the tool call.
46
- """
47
- messages: list[ToolMessage]
48
- artifacts: list[dict[str, Any]]
49
- metadata_delta: dict[str, Any]
50
- references: list[Chunk]
51
- step_usage: UsageMetadata | None
52
-
53
- @dataclass
54
- class ToolStorageParams:
55
- """Parameters for automatic tool storage.
56
-
57
- Reduces the number of arguments passed to _handle_automatic_tool_storage method.
58
-
59
- Attributes:
60
- tool: The tool instance that was executed.
61
- tool_output: The output returned by the tool.
62
- tool_call: The tool call information from the AI message.
63
- tool_call_id: Unique identifier for this tool call.
64
- resolved_args: The resolved arguments passed to the tool.
65
- state: Current agent state containing tool output manager.
66
- """
67
- tool: BaseTool
68
- tool_output: Any
69
- tool_call: dict[str, Any]
70
- tool_call_id: str
71
- resolved_args: dict[str, Any]
46
+ class ToolCallContext:
47
+ """Context information for executing a single tool call."""
48
+ config: dict[str, Any] | None
72
49
  state: dict[str, Any]
50
+ pending_artifacts: list[dict[str, Any]]
51
+ hitl_decision: ApprovalDecision | None = ...
73
52
 
74
53
  class ReactAgentState(TypedDict):
75
54
  """State schema for the ReAct agent.
76
55
 
77
56
  Includes messages, step tracking, optional event emission support, artifacts, references,
78
- metadata, and tool output management for efficient tool result sharing and reference resolution.
57
+ metadata, tool output management, and deep agents middleware state (todos, filesystem).
79
58
  """
80
59
  messages: Annotated[Sequence[BaseMessage], add_messages]
81
60
  is_last_step: IsLastStep
@@ -86,8 +65,15 @@ class ReactAgentState(TypedDict):
86
65
  metadata: dict[str, Any] | None
87
66
  tool_output_manager: ToolOutputManager | None
88
67
  total_usage: Annotated[UsageMetadata | None, add_usage_metadata]
89
-
90
- class LangGraphReactAgent(BaseLangGraphAgent):
68
+ pii_mapping: Annotated[dict[str, str] | None, add_pii_mappings]
69
+ thread_id: str
70
+ todos: TodoList | None
71
+ current_step: int
72
+ delegation_depth: int
73
+ delegation_chain: list[str]
74
+ step_limit_config: StepLimitConfig | None
75
+
76
+ class LangGraphReactAgent(LangGraphHitLMixin, BaseLangGraphAgent):
91
77
  """A ReAct agent template built on LangGraph.
92
78
 
93
79
  This agent can use either:
@@ -98,7 +84,8 @@ class LangGraphReactAgent(BaseLangGraphAgent):
98
84
  agent -> tools -> agent (loop) -> END
99
85
  """
100
86
  tool_output_manager: Incomplete
101
- 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:
87
+ step_limit_config: Incomplete
88
+ 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, step_limit_config: StepLimitConfig | None = None, **kwargs: Any) -> None:
102
89
  """Initialize the LangGraph ReAct Agent.
103
90
 
104
91
  Args:
@@ -114,6 +101,12 @@ class LangGraphReactAgent(BaseLangGraphAgent):
114
101
  When provided, enables tool output storage, reference resolution, and sharing capabilities.
115
102
  This enables multi-agent workflows where agents can access each other's tool outputs.
116
103
  If None, tool output management is disabled for this agent.
104
+ planning: Enable planning capabilities with TodoListMiddleware. Defaults to False.
105
+ middlewares: Optional sequence of custom middleware to COMPOSE (not override) with built-in middleware.
106
+ Execution order: [TodoListMiddleware (if planning=True),
107
+ ...custom middlewares in order provided]
108
+ All middleware hooks execute - this extends capabilities, never replaces them.
109
+ step_limit_config: Optional configuration for step limits and delegation depth.
117
110
  **kwargs: Additional keyword arguments passed to BaseLangGraphAgent.
118
111
  """
119
112
  def define_graph(self, graph_builder: StateGraph) -> CompiledStateGraph:
@@ -0,0 +1,13 @@
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
+ """
@@ -0,0 +1,4 @@
1
+ __all__ = ['langflow']
2
+
3
+ # Names in __all__ with no definition:
4
+ # langflow
@@ -0,0 +1,4 @@
1
+ from aip_agents.clients.langflow.client import LangflowApiClient as LangflowApiClient
2
+ from aip_agents.clients.langflow.types import LangflowEventType as LangflowEventType
3
+
4
+ __all__ = ['LangflowApiClient', 'LangflowEventType']
@@ -0,0 +1,140 @@
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
+ """
@@ -0,0 +1,7 @@
1
+ from enum import StrEnum
2
+
3
+ class LangflowEventType(StrEnum):
4
+ """Enum for Langflow event types as received from the API."""
5
+ ADD_MESSAGE: str
6
+ END: str
7
+ UNKNOWN: str
aip_agents/constants.pyi CHANGED
@@ -4,3 +4,4 @@ BASE_DIR: Incomplete
4
4
  DEFAULT_AGENT_TIMEOUT: int
5
5
  LAST_N_CHATS: int
6
6
  MAX_MEMORY_TOKENS: int
7
+ TEXT_PREVIEW_LENGTH: int
@@ -0,0 +1,48 @@
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."""
@@ -0,0 +1,18 @@
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
+ """
@@ -0,0 +1,58 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.agent import LangGraphAgent as LangGraphAgent
3
+ from datetime import datetime
4
+
5
+ class MemoryTestResult:
6
+ """Container for test scenario results."""
7
+ JUDGE_SUCCESS_THRESHOLD: float
8
+ MEMORY_DISPLAY_LIMIT: int
9
+ scenario_name: Incomplete
10
+ query: Incomplete
11
+ response: Incomplete
12
+ memory_fetched: Incomplete
13
+ error: Incomplete
14
+ success: Incomplete
15
+ judge_verdict: Incomplete
16
+ judge_score: Incomplete
17
+ def __init__(self, scenario_name: str, query: str, response: str = None, memory_fetched: str = None, error: str = None) -> None:
18
+ """Initialize a memory test result.
19
+
20
+ Args:
21
+ scenario_name: Name of the test scenario.
22
+ query: The input query for the scenario.
23
+ response: The agent's response (optional).
24
+ memory_fetched: The raw memory retrieved from the tool (optional).
25
+ error: Any error message (optional).
26
+ """
27
+ def set_success_from_judge(self, verdict: str, score: float | None):
28
+ '''Set success using judge verdict and confidence score.
29
+
30
+ Success criteria: (verdict == "grounded" or verdict == "general_knowledge") and
31
+ score >= JUDGE_SUCCESS_THRESHOLD.
32
+
33
+ Args:
34
+ verdict (str): The judge\'s verdict ("grounded", "hallucination", or "general_knowledge").
35
+ score (float | None): The confidence score (0.0 to 1.0).
36
+ '''
37
+
38
+ def print_test_summary(results: list[MemoryTestResult], start_time: datetime):
39
+ """Print a clean summary of all test results.
40
+
41
+ Args:
42
+ results (list[MemoryTestResult]): List of test results to summarize.
43
+ start_time (datetime): The start time of the tests.
44
+ """
45
+ async def evaluate_with_judge(judge_agent: LangGraphAgent, query: str, response: str, memory_fetched: str = None) -> tuple[str | None, float | None]:
46
+ '''Evaluate if the response is grounded in memory using the judge agent.
47
+
48
+ Args:
49
+ judge_agent (LangGraphAgent): The judge agent to use for evaluation.
50
+ query (str): The original user query.
51
+ response (str): The agent\'s response to evaluate.
52
+ memory_fetched (str, optional): The memory that was retrieved. Defaults to None.
53
+
54
+ Returns:
55
+ tuple[str | None, float | None]: Tuple of (verdict, score) where verdict is "grounded", "hallucination", or "general_knowledge", and score is a confidence score (0.0-1.0).
56
+ '''
57
+ async def run_all_scenarios() -> None:
58
+ """Run all memory recall test scenarios with a single reused agent and show clean summary."""
@@ -1,7 +1,7 @@
1
1
  from _typeshed import Incomplete
2
2
  from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
3
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
4
- from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
3
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
5
 
6
6
  logger: Incomplete
7
7
 
@@ -1,7 +1,7 @@
1
1
  from _typeshed import Incomplete
2
2
  from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
3
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
4
- from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
3
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
5
 
6
6
  logger: Incomplete
7
7
 
@@ -1,7 +1,7 @@
1
1
  from _typeshed import Incomplete
2
2
  from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
3
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
4
- from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
3
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
5
 
6
6
  logger: Incomplete
7
7
 
@@ -1,10 +1,15 @@
1
1
  from _typeshed import Incomplete
2
2
  from aip_agents.agent.google_adk_agent import GoogleADKAgent as GoogleADKAgent
3
3
  from aip_agents.examples.tools.adk_weather_tool import weather_tool as weather_tool
4
- from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
5
 
6
6
  logger: Incomplete
7
7
  SERVER_AGENT_NAME: str
8
8
 
9
9
  def main(host: str, port: int):
10
- """Runs the Google ADK Weather A2A server."""
10
+ """Runs the Google ADK Weather A2A server.
11
+
12
+ Args:
13
+ host (str): Host to bind the server to.
14
+ port (int): Port to bind the server to.
15
+ """
@@ -1,5 +1,5 @@
1
1
  from aip_agents.agent import LangChainAgent as LangChainAgent
2
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
3
 
4
4
  def main() -> None:
5
5
  """Main function demonstrating the General Assistant agent with A2A capabilities."""
@@ -1,5 +1,5 @@
1
1
  from aip_agents.agent import LangChainAgent as LangChainAgent
2
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
3
 
4
4
  def main() -> None:
5
5
  """Main function demonstrating the General Assistant agent with A2A capabilities."""
@@ -1,5 +1,5 @@
1
1
  from aip_agents.agent import LangChainAgent as LangChainAgent
2
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
3
 
4
4
  def main() -> None:
5
5
  """Main function demonstrating the General Assistant agent with A2A capabilities."""
@@ -1,5 +1,5 @@
1
1
  from aip_agents.agent import LangChainAgent as LangChainAgent
2
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
3
 
4
4
  async def main() -> None:
5
5
  """Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
@@ -1,5 +1,5 @@
1
1
  from aip_agents.agent import LangChainAgent as LangChainAgent
2
- from aip_agents.agent.types import A2AClientConfig as A2AClientConfig
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
3
 
4
4
  async def main() -> None:
5
5
  """Main function demonstrating streaming A2A client for the reference server."""
@@ -1,10 +1,15 @@
1
1
  from _typeshed import Incomplete
2
2
  from aip_agents.agent import LangChainAgent as LangChainAgent
3
- from aip_agents.examples.tools import google_serper_tool as google_serper_tool, time_tool as time_tool
4
- from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
3
+ from aip_agents.examples.tools import google_serper_tool as google_serper_tool, mock_retrieval_tool as mock_retrieval_tool, time_tool as time_tool
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
5
 
6
6
  logger: Incomplete
7
7
  SERVER_AGENT_NAME: str
8
8
 
9
9
  def main(host: str, port: int):
10
- """Runs the LangChain Weather A2A server."""
10
+ """Runs the LangChain Mock Retrieval and Google Search A2A server.
11
+
12
+ Args:
13
+ host (str): Host to bind the server to.
14
+ port (int): Port to bind the server to.
15
+ """
@@ -1,10 +1,15 @@
1
1
  from _typeshed import Incomplete
2
2
  from aip_agents.agent import LangChainAgent as LangChainAgent
3
3
  from aip_agents.examples.tools.langchain_weather_tool import weather_tool as weather_tool
4
- from aip_agents.utils.logger_manager import LoggerManager as LoggerManager
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
5
 
6
6
  logger: Incomplete
7
7
  SERVER_AGENT_NAME: str
8
8
 
9
9
  def main(host: str, port: int):
10
- """Runs the LangChain Weather A2A server."""
10
+ """Runs the LangChain Weather A2A server.
11
+
12
+ Args:
13
+ host (str): Host to bind the server to.
14
+ port (int): Port to bind the server to.
15
+ """