aip-agents-binary 0.0.0b2__py3-none-any.whl → 0.5.12__py3-none-any.whl

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