aip-agents-binary 0.5.25b1__py3-none-macosx_13_0_arm64.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 (566) hide show
  1. aip_agents/__init__.py +65 -0
  2. aip_agents/__init__.pyi +19 -0
  3. aip_agents/a2a/__init__.py +19 -0
  4. aip_agents/a2a/__init__.pyi +3 -0
  5. aip_agents/a2a/server/__init__.py +10 -0
  6. aip_agents/a2a/server/__init__.pyi +4 -0
  7. aip_agents/a2a/server/base_executor.py +1086 -0
  8. aip_agents/a2a/server/base_executor.pyi +73 -0
  9. aip_agents/a2a/server/google_adk_executor.py +198 -0
  10. aip_agents/a2a/server/google_adk_executor.pyi +51 -0
  11. aip_agents/a2a/server/langflow_executor.py +180 -0
  12. aip_agents/a2a/server/langflow_executor.pyi +43 -0
  13. aip_agents/a2a/server/langgraph_executor.py +270 -0
  14. aip_agents/a2a/server/langgraph_executor.pyi +47 -0
  15. aip_agents/a2a/types.py +232 -0
  16. aip_agents/a2a/types.pyi +132 -0
  17. aip_agents/agent/__init__.py +27 -0
  18. aip_agents/agent/__init__.pyi +9 -0
  19. aip_agents/agent/base_agent.py +970 -0
  20. aip_agents/agent/base_agent.pyi +221 -0
  21. aip_agents/agent/base_langgraph_agent.py +2948 -0
  22. aip_agents/agent/base_langgraph_agent.pyi +232 -0
  23. aip_agents/agent/google_adk_agent.py +926 -0
  24. aip_agents/agent/google_adk_agent.pyi +141 -0
  25. aip_agents/agent/google_adk_constants.py +6 -0
  26. aip_agents/agent/google_adk_constants.pyi +3 -0
  27. aip_agents/agent/hitl/__init__.py +24 -0
  28. aip_agents/agent/hitl/__init__.pyi +6 -0
  29. aip_agents/agent/hitl/config.py +28 -0
  30. aip_agents/agent/hitl/config.pyi +15 -0
  31. aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
  32. aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
  33. aip_agents/agent/hitl/manager.py +532 -0
  34. aip_agents/agent/hitl/manager.pyi +200 -0
  35. aip_agents/agent/hitl/models.py +18 -0
  36. aip_agents/agent/hitl/models.pyi +3 -0
  37. aip_agents/agent/hitl/prompt/__init__.py +9 -0
  38. aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
  39. aip_agents/agent/hitl/prompt/base.py +42 -0
  40. aip_agents/agent/hitl/prompt/base.pyi +24 -0
  41. aip_agents/agent/hitl/prompt/deferred.py +73 -0
  42. aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
  43. aip_agents/agent/hitl/registry.py +149 -0
  44. aip_agents/agent/hitl/registry.pyi +101 -0
  45. aip_agents/agent/interface.py +138 -0
  46. aip_agents/agent/interface.pyi +81 -0
  47. aip_agents/agent/interfaces.py +65 -0
  48. aip_agents/agent/interfaces.pyi +44 -0
  49. aip_agents/agent/langflow_agent.py +464 -0
  50. aip_agents/agent/langflow_agent.pyi +133 -0
  51. aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
  52. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +49 -0
  53. aip_agents/agent/langgraph_react_agent.py +2596 -0
  54. aip_agents/agent/langgraph_react_agent.pyi +131 -0
  55. aip_agents/agent/system_instruction_context.py +34 -0
  56. aip_agents/agent/system_instruction_context.pyi +13 -0
  57. aip_agents/clients/__init__.py +10 -0
  58. aip_agents/clients/__init__.pyi +4 -0
  59. aip_agents/clients/langflow/__init__.py +10 -0
  60. aip_agents/clients/langflow/__init__.pyi +4 -0
  61. aip_agents/clients/langflow/client.py +477 -0
  62. aip_agents/clients/langflow/client.pyi +140 -0
  63. aip_agents/clients/langflow/types.py +18 -0
  64. aip_agents/clients/langflow/types.pyi +7 -0
  65. aip_agents/constants.py +23 -0
  66. aip_agents/constants.pyi +7 -0
  67. aip_agents/credentials/manager.py +132 -0
  68. aip_agents/examples/__init__.py +5 -0
  69. aip_agents/examples/__init__.pyi +0 -0
  70. aip_agents/examples/compare_streaming_client.py +783 -0
  71. aip_agents/examples/compare_streaming_client.pyi +48 -0
  72. aip_agents/examples/compare_streaming_server.py +142 -0
  73. aip_agents/examples/compare_streaming_server.pyi +18 -0
  74. aip_agents/examples/demo_memory_recall.py +401 -0
  75. aip_agents/examples/demo_memory_recall.pyi +58 -0
  76. aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
  77. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +9 -0
  78. aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
  79. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +9 -0
  80. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
  81. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +9 -0
  82. aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
  83. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +15 -0
  84. aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
  85. aip_agents/examples/hello_world_a2a_langchain_client.pyi +5 -0
  86. aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
  87. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +5 -0
  88. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
  89. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +5 -0
  90. aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
  91. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +5 -0
  92. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
  93. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +5 -0
  94. aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
  95. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +15 -0
  96. aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
  97. aip_agents/examples/hello_world_a2a_langchain_server.pyi +15 -0
  98. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
  99. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +15 -0
  100. aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
  101. aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
  102. aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
  103. aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
  104. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
  105. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +5 -0
  106. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
  107. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +5 -0
  108. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
  109. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +16 -0
  110. aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
  111. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +9 -0
  112. aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
  113. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +9 -0
  114. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
  115. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +2 -0
  116. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
  117. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +9 -0
  118. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
  119. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +5 -0
  120. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
  121. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +5 -0
  122. aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
  123. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +14 -0
  124. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
  125. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +15 -0
  126. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
  127. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +15 -0
  128. aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
  129. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +48 -0
  130. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
  131. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +48 -0
  132. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
  133. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +45 -0
  134. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
  135. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +5 -0
  136. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
  137. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +15 -0
  138. aip_agents/examples/hello_world_google_adk.py +41 -0
  139. aip_agents/examples/hello_world_google_adk.pyi +5 -0
  140. aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
  141. aip_agents/examples/hello_world_google_adk_mcp_http.pyi +5 -0
  142. aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
  143. aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +5 -0
  144. aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
  145. aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +5 -0
  146. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
  147. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +5 -0
  148. aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
  149. aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +5 -0
  150. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
  151. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +5 -0
  152. aip_agents/examples/hello_world_google_adk_stream.py +44 -0
  153. aip_agents/examples/hello_world_google_adk_stream.pyi +5 -0
  154. aip_agents/examples/hello_world_langchain.py +28 -0
  155. aip_agents/examples/hello_world_langchain.pyi +5 -0
  156. aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
  157. aip_agents/examples/hello_world_langchain_lm_invoker.pyi +2 -0
  158. aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
  159. aip_agents/examples/hello_world_langchain_mcp_http.pyi +5 -0
  160. aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
  161. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
  162. aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
  163. aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +5 -0
  164. aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
  165. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
  166. aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
  167. aip_agents/examples/hello_world_langchain_mcp_sse.pyi +5 -0
  168. aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
  169. aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +5 -0
  170. aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
  171. aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +5 -0
  172. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
  173. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +5 -0
  174. aip_agents/examples/hello_world_langchain_stream.py +36 -0
  175. aip_agents/examples/hello_world_langchain_stream.pyi +5 -0
  176. aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
  177. aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +5 -0
  178. aip_agents/examples/hello_world_langflow_agent.py +163 -0
  179. aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
  180. aip_agents/examples/hello_world_langgraph.py +39 -0
  181. aip_agents/examples/hello_world_langgraph.pyi +5 -0
  182. aip_agents/examples/hello_world_langgraph_gl_connector_twitter.py +44 -0
  183. aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +5 -0
  184. aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
  185. aip_agents/examples/hello_world_langgraph_mcp_http.pyi +5 -0
  186. aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
  187. aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +5 -0
  188. aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
  189. aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +5 -0
  190. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
  191. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +5 -0
  192. aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
  193. aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +5 -0
  194. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
  195. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +5 -0
  196. aip_agents/examples/hello_world_langgraph_stream.py +43 -0
  197. aip_agents/examples/hello_world_langgraph_stream.pyi +5 -0
  198. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
  199. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +5 -0
  200. aip_agents/examples/hello_world_model_switch_cli.py +210 -0
  201. aip_agents/examples/hello_world_model_switch_cli.pyi +30 -0
  202. aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
  203. aip_agents/examples/hello_world_multi_agent_adk.pyi +6 -0
  204. aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
  205. aip_agents/examples/hello_world_multi_agent_langchain.pyi +5 -0
  206. aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
  207. aip_agents/examples/hello_world_multi_agent_langgraph.pyi +5 -0
  208. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
  209. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +5 -0
  210. aip_agents/examples/hello_world_pii_logger.py +21 -0
  211. aip_agents/examples/hello_world_pii_logger.pyi +5 -0
  212. aip_agents/examples/hello_world_sentry.py +133 -0
  213. aip_agents/examples/hello_world_sentry.pyi +21 -0
  214. aip_agents/examples/hello_world_step_limits.py +273 -0
  215. aip_agents/examples/hello_world_step_limits.pyi +17 -0
  216. aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
  217. aip_agents/examples/hello_world_stock_a2a_server.pyi +17 -0
  218. aip_agents/examples/hello_world_tool_output_client.py +46 -0
  219. aip_agents/examples/hello_world_tool_output_client.pyi +5 -0
  220. aip_agents/examples/hello_world_tool_output_server.py +114 -0
  221. aip_agents/examples/hello_world_tool_output_server.pyi +19 -0
  222. aip_agents/examples/hitl_demo.py +724 -0
  223. aip_agents/examples/hitl_demo.pyi +67 -0
  224. aip_agents/examples/mcp_configs/configs.py +63 -0
  225. aip_agents/examples/mcp_servers/common.py +76 -0
  226. aip_agents/examples/mcp_servers/mcp_name.py +29 -0
  227. aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
  228. aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
  229. aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
  230. aip_agents/examples/mcp_servers/mcp_time.py +10 -0
  231. aip_agents/examples/pii_demo_langgraph_client.py +69 -0
  232. aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
  233. aip_agents/examples/pii_demo_langgraph_server.py +126 -0
  234. aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
  235. aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
  236. aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
  237. aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
  238. aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
  239. aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
  240. aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
  241. aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
  242. aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
  243. aip_agents/examples/tools/__init__.py +27 -0
  244. aip_agents/examples/tools/__init__.pyi +9 -0
  245. aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
  246. aip_agents/examples/tools/adk_arithmetic_tools.pyi +24 -0
  247. aip_agents/examples/tools/adk_weather_tool.py +60 -0
  248. aip_agents/examples/tools/adk_weather_tool.pyi +18 -0
  249. aip_agents/examples/tools/data_generator_tool.py +103 -0
  250. aip_agents/examples/tools/data_generator_tool.pyi +15 -0
  251. aip_agents/examples/tools/data_visualization_tool.py +312 -0
  252. aip_agents/examples/tools/data_visualization_tool.pyi +19 -0
  253. aip_agents/examples/tools/image_artifact_tool.py +136 -0
  254. aip_agents/examples/tools/image_artifact_tool.pyi +26 -0
  255. aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
  256. aip_agents/examples/tools/langchain_arithmetic_tools.pyi +17 -0
  257. aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
  258. aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +20 -0
  259. aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
  260. aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +25 -0
  261. aip_agents/examples/tools/langchain_weather_tool.py +48 -0
  262. aip_agents/examples/tools/langchain_weather_tool.pyi +19 -0
  263. aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
  264. aip_agents/examples/tools/langgraph_streaming_tool.pyi +43 -0
  265. aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
  266. aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
  267. aip_agents/examples/tools/pii_demo_tools.py +189 -0
  268. aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
  269. aip_agents/examples/tools/random_chart_tool.py +142 -0
  270. aip_agents/examples/tools/random_chart_tool.pyi +20 -0
  271. aip_agents/examples/tools/serper_tool.py +202 -0
  272. aip_agents/examples/tools/serper_tool.pyi +16 -0
  273. aip_agents/examples/tools/stock_tools.py +82 -0
  274. aip_agents/examples/tools/stock_tools.pyi +36 -0
  275. aip_agents/examples/tools/table_generator_tool.py +167 -0
  276. aip_agents/examples/tools/table_generator_tool.pyi +22 -0
  277. aip_agents/examples/tools/time_tool.py +82 -0
  278. aip_agents/examples/tools/time_tool.pyi +15 -0
  279. aip_agents/examples/tools/weather_forecast_tool.py +38 -0
  280. aip_agents/examples/tools/weather_forecast_tool.pyi +14 -0
  281. aip_agents/executor/agent_executor.py +473 -0
  282. aip_agents/executor/base.py +48 -0
  283. aip_agents/guardrails/__init__.py +83 -0
  284. aip_agents/guardrails/__init__.pyi +6 -0
  285. aip_agents/guardrails/engines/__init__.py +69 -0
  286. aip_agents/guardrails/engines/__init__.pyi +4 -0
  287. aip_agents/guardrails/engines/base.py +90 -0
  288. aip_agents/guardrails/engines/base.pyi +61 -0
  289. aip_agents/guardrails/engines/nemo.py +101 -0
  290. aip_agents/guardrails/engines/nemo.pyi +46 -0
  291. aip_agents/guardrails/engines/phrase_matcher.py +113 -0
  292. aip_agents/guardrails/engines/phrase_matcher.pyi +48 -0
  293. aip_agents/guardrails/exceptions.py +39 -0
  294. aip_agents/guardrails/exceptions.pyi +23 -0
  295. aip_agents/guardrails/manager.py +163 -0
  296. aip_agents/guardrails/manager.pyi +42 -0
  297. aip_agents/guardrails/middleware.py +199 -0
  298. aip_agents/guardrails/middleware.pyi +87 -0
  299. aip_agents/guardrails/schemas.py +63 -0
  300. aip_agents/guardrails/schemas.pyi +43 -0
  301. aip_agents/guardrails/utils.py +45 -0
  302. aip_agents/guardrails/utils.pyi +19 -0
  303. aip_agents/mcp/__init__.py +1 -0
  304. aip_agents/mcp/__init__.pyi +0 -0
  305. aip_agents/mcp/client/__init__.py +14 -0
  306. aip_agents/mcp/client/__init__.pyi +5 -0
  307. aip_agents/mcp/client/base_mcp_client.py +369 -0
  308. aip_agents/mcp/client/base_mcp_client.pyi +148 -0
  309. aip_agents/mcp/client/connection_manager.py +193 -0
  310. aip_agents/mcp/client/connection_manager.pyi +48 -0
  311. aip_agents/mcp/client/google_adk/__init__.py +11 -0
  312. aip_agents/mcp/client/google_adk/__init__.pyi +3 -0
  313. aip_agents/mcp/client/google_adk/client.py +381 -0
  314. aip_agents/mcp/client/google_adk/client.pyi +75 -0
  315. aip_agents/mcp/client/langchain/__init__.py +11 -0
  316. aip_agents/mcp/client/langchain/__init__.pyi +3 -0
  317. aip_agents/mcp/client/langchain/client.py +265 -0
  318. aip_agents/mcp/client/langchain/client.pyi +48 -0
  319. aip_agents/mcp/client/persistent_session.py +362 -0
  320. aip_agents/mcp/client/persistent_session.pyi +113 -0
  321. aip_agents/mcp/client/session_pool.py +351 -0
  322. aip_agents/mcp/client/session_pool.pyi +101 -0
  323. aip_agents/mcp/client/transports.py +228 -0
  324. aip_agents/mcp/client/transports.pyi +123 -0
  325. aip_agents/mcp/utils/__init__.py +7 -0
  326. aip_agents/mcp/utils/__init__.pyi +0 -0
  327. aip_agents/mcp/utils/config_validator.py +139 -0
  328. aip_agents/mcp/utils/config_validator.pyi +82 -0
  329. aip_agents/memory/__init__.py +14 -0
  330. aip_agents/memory/__init__.pyi +5 -0
  331. aip_agents/memory/adapters/__init__.py +10 -0
  332. aip_agents/memory/adapters/__init__.pyi +4 -0
  333. aip_agents/memory/adapters/base_adapter.py +717 -0
  334. aip_agents/memory/adapters/base_adapter.pyi +150 -0
  335. aip_agents/memory/adapters/mem0.py +84 -0
  336. aip_agents/memory/adapters/mem0.pyi +22 -0
  337. aip_agents/memory/base.py +84 -0
  338. aip_agents/memory/base.pyi +60 -0
  339. aip_agents/memory/constants.py +49 -0
  340. aip_agents/memory/constants.pyi +25 -0
  341. aip_agents/memory/factory.py +86 -0
  342. aip_agents/memory/factory.pyi +24 -0
  343. aip_agents/memory/guidance.py +20 -0
  344. aip_agents/memory/guidance.pyi +3 -0
  345. aip_agents/memory/simple_memory.py +47 -0
  346. aip_agents/memory/simple_memory.pyi +23 -0
  347. aip_agents/middleware/__init__.py +17 -0
  348. aip_agents/middleware/__init__.pyi +5 -0
  349. aip_agents/middleware/base.py +96 -0
  350. aip_agents/middleware/base.pyi +75 -0
  351. aip_agents/middleware/manager.py +150 -0
  352. aip_agents/middleware/manager.pyi +84 -0
  353. aip_agents/middleware/todolist.py +274 -0
  354. aip_agents/middleware/todolist.pyi +125 -0
  355. aip_agents/schema/__init__.py +69 -0
  356. aip_agents/schema/__init__.pyi +9 -0
  357. aip_agents/schema/a2a.py +56 -0
  358. aip_agents/schema/a2a.pyi +40 -0
  359. aip_agents/schema/agent.py +111 -0
  360. aip_agents/schema/agent.pyi +65 -0
  361. aip_agents/schema/hitl.py +157 -0
  362. aip_agents/schema/hitl.pyi +89 -0
  363. aip_agents/schema/langgraph.py +37 -0
  364. aip_agents/schema/langgraph.pyi +28 -0
  365. aip_agents/schema/model_id.py +97 -0
  366. aip_agents/schema/model_id.pyi +54 -0
  367. aip_agents/schema/step_limit.py +108 -0
  368. aip_agents/schema/step_limit.pyi +63 -0
  369. aip_agents/schema/storage.py +40 -0
  370. aip_agents/schema/storage.pyi +21 -0
  371. aip_agents/sentry/__init__.py +11 -0
  372. aip_agents/sentry/__init__.pyi +3 -0
  373. aip_agents/sentry/sentry.py +151 -0
  374. aip_agents/sentry/sentry.pyi +48 -0
  375. aip_agents/storage/__init__.py +41 -0
  376. aip_agents/storage/__init__.pyi +8 -0
  377. aip_agents/storage/base.py +85 -0
  378. aip_agents/storage/base.pyi +58 -0
  379. aip_agents/storage/clients/__init__.py +12 -0
  380. aip_agents/storage/clients/__init__.pyi +3 -0
  381. aip_agents/storage/clients/minio_client.py +318 -0
  382. aip_agents/storage/clients/minio_client.pyi +137 -0
  383. aip_agents/storage/config.py +62 -0
  384. aip_agents/storage/config.pyi +29 -0
  385. aip_agents/storage/providers/__init__.py +15 -0
  386. aip_agents/storage/providers/__init__.pyi +5 -0
  387. aip_agents/storage/providers/base.py +106 -0
  388. aip_agents/storage/providers/base.pyi +88 -0
  389. aip_agents/storage/providers/memory.py +114 -0
  390. aip_agents/storage/providers/memory.pyi +79 -0
  391. aip_agents/storage/providers/object_storage.py +214 -0
  392. aip_agents/storage/providers/object_storage.pyi +98 -0
  393. aip_agents/tools/__init__.py +53 -0
  394. aip_agents/tools/__init__.pyi +9 -0
  395. aip_agents/tools/browser_use/__init__.py +82 -0
  396. aip_agents/tools/browser_use/__init__.pyi +14 -0
  397. aip_agents/tools/browser_use/action_parser.py +103 -0
  398. aip_agents/tools/browser_use/action_parser.pyi +18 -0
  399. aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
  400. aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
  401. aip_agents/tools/browser_use/llm_config.py +120 -0
  402. aip_agents/tools/browser_use/llm_config.pyi +52 -0
  403. aip_agents/tools/browser_use/minio_storage.py +198 -0
  404. aip_agents/tools/browser_use/minio_storage.pyi +109 -0
  405. aip_agents/tools/browser_use/schemas.py +119 -0
  406. aip_agents/tools/browser_use/schemas.pyi +32 -0
  407. aip_agents/tools/browser_use/session.py +76 -0
  408. aip_agents/tools/browser_use/session.pyi +4 -0
  409. aip_agents/tools/browser_use/session_errors.py +132 -0
  410. aip_agents/tools/browser_use/session_errors.pyi +53 -0
  411. aip_agents/tools/browser_use/steel_session_recording.py +317 -0
  412. aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
  413. aip_agents/tools/browser_use/streaming.py +813 -0
  414. aip_agents/tools/browser_use/streaming.pyi +81 -0
  415. aip_agents/tools/browser_use/structured_data_parser.py +257 -0
  416. aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
  417. aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
  418. aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
  419. aip_agents/tools/browser_use/types.py +78 -0
  420. aip_agents/tools/browser_use/types.pyi +45 -0
  421. aip_agents/tools/code_sandbox/__init__.py +26 -0
  422. aip_agents/tools/code_sandbox/__init__.pyi +3 -0
  423. aip_agents/tools/code_sandbox/constant.py +13 -0
  424. aip_agents/tools/code_sandbox/constant.pyi +4 -0
  425. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +306 -0
  426. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +102 -0
  427. aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
  428. aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
  429. aip_agents/tools/constants.py +177 -0
  430. aip_agents/tools/constants.pyi +138 -0
  431. aip_agents/tools/document_loader/__init__.py +44 -0
  432. aip_agents/tools/document_loader/__init__.pyi +7 -0
  433. aip_agents/tools/document_loader/base_reader.py +302 -0
  434. aip_agents/tools/document_loader/base_reader.pyi +75 -0
  435. aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
  436. aip_agents/tools/document_loader/docx_reader_tool.pyi +10 -0
  437. aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
  438. aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
  439. aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
  440. aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
  441. aip_agents/tools/document_loader/pdf_splitter.py +169 -0
  442. aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
  443. aip_agents/tools/gl_connector/__init__.py +5 -0
  444. aip_agents/tools/gl_connector/__init__.pyi +3 -0
  445. aip_agents/tools/gl_connector/tool.py +383 -0
  446. aip_agents/tools/gl_connector/tool.pyi +74 -0
  447. aip_agents/tools/gl_connector_tools.py +119 -0
  448. aip_agents/tools/gl_connector_tools.pyi +39 -0
  449. aip_agents/tools/memory_search/__init__.py +22 -0
  450. aip_agents/tools/memory_search/__init__.pyi +5 -0
  451. aip_agents/tools/memory_search/base.py +200 -0
  452. aip_agents/tools/memory_search/base.pyi +69 -0
  453. aip_agents/tools/memory_search/mem0.py +258 -0
  454. aip_agents/tools/memory_search/mem0.pyi +19 -0
  455. aip_agents/tools/memory_search/schema.py +48 -0
  456. aip_agents/tools/memory_search/schema.pyi +15 -0
  457. aip_agents/tools/memory_search_tool.py +26 -0
  458. aip_agents/tools/memory_search_tool.pyi +3 -0
  459. aip_agents/tools/time_tool.py +117 -0
  460. aip_agents/tools/time_tool.pyi +16 -0
  461. aip_agents/tools/tool_config_injector.py +300 -0
  462. aip_agents/tools/tool_config_injector.pyi +26 -0
  463. aip_agents/tools/web_search/__init__.py +15 -0
  464. aip_agents/tools/web_search/__init__.pyi +3 -0
  465. aip_agents/tools/web_search/serper_tool.py +187 -0
  466. aip_agents/tools/web_search/serper_tool.pyi +19 -0
  467. aip_agents/types/__init__.py +70 -0
  468. aip_agents/types/__init__.pyi +36 -0
  469. aip_agents/types/a2a_events.py +13 -0
  470. aip_agents/types/a2a_events.pyi +3 -0
  471. aip_agents/utils/__init__.py +79 -0
  472. aip_agents/utils/__init__.pyi +11 -0
  473. aip_agents/utils/a2a_connector.py +1757 -0
  474. aip_agents/utils/a2a_connector.pyi +146 -0
  475. aip_agents/utils/artifact_helpers.py +502 -0
  476. aip_agents/utils/artifact_helpers.pyi +203 -0
  477. aip_agents/utils/constants.py +22 -0
  478. aip_agents/utils/constants.pyi +10 -0
  479. aip_agents/utils/datetime/__init__.py +34 -0
  480. aip_agents/utils/datetime/__init__.pyi +4 -0
  481. aip_agents/utils/datetime/normalization.py +231 -0
  482. aip_agents/utils/datetime/normalization.pyi +95 -0
  483. aip_agents/utils/datetime/timezone.py +206 -0
  484. aip_agents/utils/datetime/timezone.pyi +48 -0
  485. aip_agents/utils/env_loader.py +27 -0
  486. aip_agents/utils/env_loader.pyi +10 -0
  487. aip_agents/utils/event_handler_registry.py +58 -0
  488. aip_agents/utils/event_handler_registry.pyi +23 -0
  489. aip_agents/utils/file_prompt_utils.py +176 -0
  490. aip_agents/utils/file_prompt_utils.pyi +21 -0
  491. aip_agents/utils/final_response_builder.py +211 -0
  492. aip_agents/utils/final_response_builder.pyi +34 -0
  493. aip_agents/utils/formatter_llm_client.py +231 -0
  494. aip_agents/utils/formatter_llm_client.pyi +71 -0
  495. aip_agents/utils/langgraph/__init__.py +19 -0
  496. aip_agents/utils/langgraph/__init__.pyi +3 -0
  497. aip_agents/utils/langgraph/converter.py +128 -0
  498. aip_agents/utils/langgraph/converter.pyi +49 -0
  499. aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
  500. aip_agents/utils/langgraph/tool_managers/__init__.pyi +5 -0
  501. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
  502. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +35 -0
  503. aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
  504. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +48 -0
  505. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
  506. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +56 -0
  507. aip_agents/utils/langgraph/tool_output_management.py +967 -0
  508. aip_agents/utils/langgraph/tool_output_management.pyi +292 -0
  509. aip_agents/utils/logger.py +195 -0
  510. aip_agents/utils/logger.pyi +60 -0
  511. aip_agents/utils/metadata/__init__.py +27 -0
  512. aip_agents/utils/metadata/__init__.pyi +5 -0
  513. aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
  514. aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
  515. aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
  516. aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
  517. aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
  518. aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
  519. aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
  520. aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
  521. aip_agents/utils/metadata/activity_narrative/context.py +49 -0
  522. aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
  523. aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
  524. aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
  525. aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
  526. aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
  527. aip_agents/utils/metadata/schemas/__init__.py +16 -0
  528. aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
  529. aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
  530. aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
  531. aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
  532. aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
  533. aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
  534. aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
  535. aip_agents/utils/metadata_helper.py +358 -0
  536. aip_agents/utils/metadata_helper.pyi +117 -0
  537. aip_agents/utils/name_preprocessor/__init__.py +17 -0
  538. aip_agents/utils/name_preprocessor/__init__.pyi +6 -0
  539. aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
  540. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +52 -0
  541. aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
  542. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +38 -0
  543. aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
  544. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +41 -0
  545. aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
  546. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +34 -0
  547. aip_agents/utils/pii/__init__.py +25 -0
  548. aip_agents/utils/pii/__init__.pyi +5 -0
  549. aip_agents/utils/pii/pii_handler.py +397 -0
  550. aip_agents/utils/pii/pii_handler.pyi +96 -0
  551. aip_agents/utils/pii/pii_helper.py +207 -0
  552. aip_agents/utils/pii/pii_helper.pyi +78 -0
  553. aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
  554. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
  555. aip_agents/utils/reference_helper.py +273 -0
  556. aip_agents/utils/reference_helper.pyi +81 -0
  557. aip_agents/utils/sse_chunk_transformer.py +831 -0
  558. aip_agents/utils/sse_chunk_transformer.pyi +166 -0
  559. aip_agents/utils/step_limit_manager.py +265 -0
  560. aip_agents/utils/step_limit_manager.pyi +112 -0
  561. aip_agents/utils/token_usage_helper.py +156 -0
  562. aip_agents/utils/token_usage_helper.pyi +60 -0
  563. aip_agents_binary-0.5.25b1.dist-info/METADATA +681 -0
  564. aip_agents_binary-0.5.25b1.dist-info/RECORD +566 -0
  565. aip_agents_binary-0.5.25b1.dist-info/WHEEL +5 -0
  566. aip_agents_binary-0.5.25b1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,79 @@
1
+ """Example A2A server for a LangChainAgent Weather Service.
2
+
3
+ This server instantiates a LangChainAgent with weather lookup capabilities and serves it
4
+ via the A2A protocol using the to_a2a convenience method.
5
+
6
+ To run this server:
7
+ python examples/hello_world_a2a_langchain_server.py
8
+
9
+ It will listen on http://localhost:8001 by default.
10
+
11
+ Authors:
12
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
13
+ """
14
+
15
+ import click
16
+ import uvicorn
17
+ from a2a.types import AgentCapabilities, AgentCard, AgentSkill
18
+ from langchain_openai import ChatOpenAI
19
+
20
+ from aip_agents.agent import LangChainAgent
21
+ from aip_agents.examples.tools.langchain_weather_tool import weather_tool
22
+ from aip_agents.utils.logger import get_logger
23
+
24
+ logger = get_logger(__name__)
25
+
26
+
27
+ SERVER_AGENT_NAME = "Weather Agent LangChain"
28
+
29
+
30
+ @click.command()
31
+ @click.option("--host", "host", default="localhost", help="Host to bind the server to.")
32
+ @click.option("--port", "port", default=8001, help="Port to bind the server to.")
33
+ def main(host: str, port: int):
34
+ """Runs the LangChain Weather A2A server.
35
+
36
+ Args:
37
+ host (str): Host to bind the server to.
38
+ port (int): Port to bind the server to.
39
+ """
40
+ logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
41
+
42
+ agent_card = AgentCard(
43
+ name=SERVER_AGENT_NAME,
44
+ description="A weather agent that provides weather information for cities",
45
+ url=f"http://{host}:{port}",
46
+ version="1.0.0",
47
+ defaultInputModes=["text"],
48
+ defaultOutputModes=["text"],
49
+ capabilities=AgentCapabilities(streaming=True),
50
+ skills=[
51
+ AgentSkill(
52
+ id="weather",
53
+ name="Weather Lookup",
54
+ description="Provides current weather information for cities.",
55
+ examples=["What's the weather in Tokyo?", "Get weather for London"],
56
+ tags=["weather"],
57
+ )
58
+ ],
59
+ tags=["weather"],
60
+ )
61
+
62
+ langchain_agent = LangChainAgent(
63
+ name=SERVER_AGENT_NAME,
64
+ instruction="""You are a weather agent that provides weather information for cities.
65
+ Always use the weather_tool for looking up weather data. Format your responses clearly and professionally.""",
66
+ model=ChatOpenAI(model="gpt-4.1", temperature=0),
67
+ tools=[weather_tool],
68
+ )
69
+
70
+ app = langchain_agent.to_a2a(
71
+ agent_card=agent_card,
72
+ )
73
+
74
+ uvicorn.run(app, host=host, port=port)
75
+ logger.info("A2A application configured. Starting Uvicorn server...")
76
+
77
+
78
+ if __name__ == "__main__":
79
+ main()
@@ -0,0 +1,15 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.agent import LangChainAgent as LangChainAgent
3
+ from aip_agents.examples.tools.langchain_weather_tool import weather_tool as weather_tool
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
+
6
+ logger: Incomplete
7
+ SERVER_AGENT_NAME: str
8
+
9
+ def main(host: str, port: int):
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
+ """
@@ -0,0 +1,78 @@
1
+ """Example A2A server for a LangChainAgent Weather Service.
2
+
3
+ This server instantiates a LangChainAgent with weather lookup capabilities and serves it
4
+ via the A2A protocol using the to_a2a convenience method.
5
+
6
+ To run this server:
7
+ python examples/a2a/langchain_server_example.py
8
+
9
+ It will listen on http://localhost:8001 by default.
10
+
11
+ Authors:
12
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
13
+ """
14
+
15
+ import click
16
+ import uvicorn
17
+ from a2a.types import AgentCapabilities, AgentCard, AgentSkill
18
+
19
+ from aip_agents.agent import LangChainAgent
20
+ from aip_agents.examples.tools.langchain_weather_tool import weather_tool
21
+ from aip_agents.utils.logger import get_logger
22
+
23
+ logger = get_logger(__name__)
24
+
25
+
26
+ SERVER_AGENT_NAME = "WeatherAgentLangChain"
27
+
28
+
29
+ @click.command()
30
+ @click.option("--host", "host", default="localhost", help="Host to bind the server to.")
31
+ @click.option("--port", "port", default=8001, help="Port to bind the server to.")
32
+ def main(host: str, port: int):
33
+ """Runs the LangChain Weather A2A server.
34
+
35
+ Args:
36
+ host (str): Host to bind the server to.
37
+ port (int): Port to bind the server to.
38
+ """
39
+ logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
40
+
41
+ agent_card = AgentCard(
42
+ name=SERVER_AGENT_NAME,
43
+ description="A weather agent that provides weather information for cities",
44
+ url=f"http://{host}:{port}",
45
+ version="1.0.0",
46
+ defaultInputModes=["text"],
47
+ defaultOutputModes=["text"],
48
+ capabilities=AgentCapabilities(streaming=True),
49
+ skills=[
50
+ AgentSkill(
51
+ id="weather",
52
+ name="Weather Lookup",
53
+ description="Provides current weather information for cities.",
54
+ examples=["What's the weather in Tokyo?", "Get weather for London"],
55
+ tags=["weather"],
56
+ )
57
+ ],
58
+ tags=["weather"],
59
+ )
60
+
61
+ langchain_agent = LangChainAgent(
62
+ name=SERVER_AGENT_NAME,
63
+ instruction="""You are a weather agent that provides weather information for cities.
64
+ Always use the weather_tool for looking up weather data. Format your responses clearly and professionally.""",
65
+ model="openai/gpt-4o",
66
+ tools=[weather_tool],
67
+ )
68
+
69
+ app = langchain_agent.to_a2a(
70
+ agent_card=agent_card,
71
+ )
72
+
73
+ uvicorn.run(app, host=host, port=port)
74
+ logger.info("A2A application configured. Starting Uvicorn server...")
75
+
76
+
77
+ if __name__ == "__main__":
78
+ main()
@@ -0,0 +1,15 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.agent import LangChainAgent as LangChainAgent
3
+ from aip_agents.examples.tools.langchain_weather_tool import weather_tool as weather_tool
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
+
6
+ logger: Incomplete
7
+ SERVER_AGENT_NAME: str
8
+
9
+ def main(host: str, port: int):
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
+ """
@@ -0,0 +1,83 @@
1
+ """Example of a LangflowAgent client that can interact with A2A servers via streaming.
2
+
3
+ This example demonstrates:
4
+ 1. Configuring A2A settings for a client agent.
5
+ 2. Discovering and communicating with Langflow agents via A2A.
6
+ 3. Using streaming A2A communication for real-time responses.
7
+ 4. Handling streaming responses and providing relevant interactions.
8
+
9
+ Authors:
10
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
11
+ """
12
+
13
+ import asyncio
14
+
15
+ from dotenv import load_dotenv
16
+
17
+ from aip_agents.agent.langflow_agent import LangflowAgent
18
+ from aip_agents.schema.agent import A2AClientConfig
19
+ from aip_agents.utils.logger import get_logger
20
+
21
+ logger = get_logger(__name__)
22
+ load_dotenv()
23
+
24
+
25
+ async def main():
26
+ """Main function demonstrating the Langflow client with streaming A2A capabilities."""
27
+ # Create the LangflowAgent client
28
+ client_agent = LangflowAgent(
29
+ name="LangflowA2AClient",
30
+ flow_id="dummy-flow-id", # Not used for client operations
31
+ description="Client agent for A2A streaming testing",
32
+ )
33
+
34
+ # Discover agents
35
+ client_a2a_config = A2AClientConfig(
36
+ discovery_urls=["http://localhost:8787"],
37
+ )
38
+
39
+ print("🔍 Discovering A2A agents...")
40
+ agent_cards = client_agent.discover_agents(client_a2a_config)
41
+
42
+ if not agent_cards:
43
+ logger.error("❌ No agents discovered!")
44
+ print("💡 Make sure the A2A server is running:")
45
+ print(" python aip_agents/examples/hello_world_a2a_langflow_server.py")
46
+ return
47
+
48
+ print(f"✅ Discovered {len(agent_cards)} agent(s):")
49
+ for i, agent_card in enumerate(agent_cards, 1):
50
+ print(f" {i}. {agent_card.name} - {agent_card.description}")
51
+
52
+ # Use streaming A2A communication
53
+ query = "Tell me a short story about a robot learning to paint"
54
+ print(f"\n📡 Streaming Query: {query}")
55
+ print("🎯 Response (streaming):")
56
+ print("-" * 50)
57
+
58
+ try:
59
+ chunk_count = 0
60
+
61
+ async for chunk in client_agent.astream_to_agent(agent_card=agent_cards[0], message=query):
62
+ chunk_count += 1
63
+ content = chunk.get("content", "")
64
+ status = chunk.get("status", "unknown")
65
+ is_final = chunk.get("final", False)
66
+
67
+ if content:
68
+ if status == "success":
69
+ print(content)
70
+ else:
71
+ print(f"\n[{status}] {content}")
72
+
73
+ # Log completion but don't break - let stream finish naturally
74
+ if is_final:
75
+ print(f"\n\n✅ Stream completed! ({chunk_count} chunks received)")
76
+
77
+ except Exception as e:
78
+ logger.error(f"❌ Streaming error: {e}")
79
+ print(f"Error during A2A streaming: {e}")
80
+
81
+
82
+ if __name__ == "__main__":
83
+ asyncio.run(main())
@@ -0,0 +1,9 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.agent.langflow_agent import LangflowAgent as LangflowAgent
3
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
+
6
+ logger: Incomplete
7
+
8
+ async def main() -> None:
9
+ """Main function demonstrating the Langflow client with streaming A2A capabilities."""
@@ -0,0 +1,82 @@
1
+ """Example A2A server for a LangflowAgent.
2
+
3
+ This server instantiates a LangflowAgent and serves it via the A2A protocol
4
+ using the proper A2A server setup.
5
+
6
+ To run this server:
7
+ python examples/hello_world_a2a_langflow_server.py
8
+
9
+ It will listen on http://localhost:8787 by default.
10
+
11
+ Authors:
12
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
13
+ """
14
+
15
+ import click
16
+ import uvicorn
17
+ from a2a.types import AgentCapabilities, AgentCard, AgentSkill
18
+ from dotenv import load_dotenv
19
+
20
+ from aip_agents.agent.langflow_agent import LangflowAgent
21
+ from aip_agents.utils.logger import get_logger
22
+
23
+ logger = get_logger(__name__)
24
+
25
+ SERVER_AGENT_NAME = "LangflowA2AServer"
26
+ load_dotenv()
27
+
28
+
29
+ @click.command()
30
+ @click.option("--host", "host", default="localhost", help="Host to bind the server to.")
31
+ @click.option("--port", "port", default=8787, help="Port to bind the server to.")
32
+ def main(host: str, port: int):
33
+ """Runs the Langflow A2A server.
34
+
35
+ Args:
36
+ host (str): Host to bind the server to.
37
+ port (int): Port to bind the server to.
38
+ """
39
+ logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
40
+
41
+ agent_card = AgentCard(
42
+ name=SERVER_AGENT_NAME,
43
+ description="A Langflow agent that provides AI assistance through A2A protocol",
44
+ url=f"http://{host}:{port}",
45
+ version="1.0.0",
46
+ author="AIP Agents SDK",
47
+ defaultInputModes=["text"],
48
+ defaultOutputModes=["text"],
49
+ capabilities=AgentCapabilities(streaming=True),
50
+ skills=[
51
+ AgentSkill(
52
+ id="general_assistance",
53
+ name="General Assistance",
54
+ description="Provides general AI assistance through Langflow",
55
+ examples=[
56
+ "Answer questions about any topic",
57
+ "Help with writing and editing",
58
+ "Provide explanations and analysis",
59
+ "Creative content generation",
60
+ ],
61
+ tags=["ai", "assistant", "langflow", "chat"],
62
+ )
63
+ ],
64
+ tags=["langflow", "ai", "assistant"],
65
+ )
66
+
67
+ # Create the Langflow agent
68
+ langflow_agent = LangflowAgent(
69
+ name=SERVER_AGENT_NAME,
70
+ flow_id="6dd45ac0-5c05-44c1-9825-66c6c6e516f7",
71
+ description="A Langflow agent that provides AI assistance through A2A protocol",
72
+ base_url="https://langflow.obrol.id",
73
+ )
74
+
75
+ app = langflow_agent.to_a2a(agent_card=agent_card)
76
+
77
+ logger.info("A2A application configured. Starting Uvicorn server...")
78
+ uvicorn.run(app, host=host, port=port)
79
+
80
+
81
+ if __name__ == "__main__":
82
+ main()
@@ -0,0 +1,14 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.agent.langflow_agent import LangflowAgent as LangflowAgent
3
+ from aip_agents.utils.logger import get_logger as get_logger
4
+
5
+ logger: Incomplete
6
+ SERVER_AGENT_NAME: str
7
+
8
+ def main(host: str, port: int):
9
+ """Runs the Langflow A2A server.
10
+
11
+ Args:
12
+ host (str): Host to bind the server to.
13
+ port (int): Port to bind the server to.
14
+ """
@@ -0,0 +1,73 @@
1
+ """Example of a General Assistant LangGraphAgent that can delegate tasks to specialized agents.
2
+
3
+ This example demonstrates:
4
+ 1. Configuring A2A settings for a client agent.
5
+ 2. Creating a general assistant agent that can help with various queries.
6
+ 3. Delegating specific tasks to specialized agents via A2A.
7
+ 4. Handling artifacts in the response.
8
+
9
+ Authors:
10
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
11
+ """
12
+
13
+ import asyncio
14
+ import base64
15
+
16
+ from langchain_openai import ChatOpenAI
17
+
18
+ from aip_agents.agent import LangGraphAgent
19
+ from aip_agents.schema.agent import A2AClientConfig
20
+
21
+
22
+ async def main():
23
+ """Main function demonstrating the General Assistant agent with A2A capabilities."""
24
+ llm = ChatOpenAI(model="gpt-4.1", streaming=True)
25
+ assistant_agent = LangGraphAgent(
26
+ name="AssistantAgent",
27
+ instruction="""You are a helpful assistant that can help with various tasks
28
+ by delegating to specialized agents.""",
29
+ model=llm,
30
+ tools=[],
31
+ )
32
+
33
+ # Discover agents
34
+ client_a2a_config = A2AClientConfig(
35
+ discovery_urls=["http://localhost:8999"],
36
+ )
37
+ agent_cards = assistant_agent.discover_agents(client_a2a_config)
38
+
39
+ # Test query
40
+ query = "Generate a data table with 5 rows and 3 columns showing Name, Age, and City and Create a simple image."
41
+ result = assistant_agent.send_to_agent(agent_card=agent_cards[0], message=query)
42
+ print(f"Result: {result}")
43
+
44
+ # Handle artifacts from result
45
+ artifacts = result.get("artifacts", [])
46
+ if artifacts:
47
+ print(f"\n--- {len(artifacts)} Artifacts Received ---")
48
+ for artifact in artifacts:
49
+ name = artifact.get("name", "unknown")
50
+ mime_type = artifact.get("mime_type", "unknown")
51
+ file_data = artifact.get("file_data")
52
+
53
+ print(f"Name: {name}")
54
+ print(f"Type: {mime_type}")
55
+
56
+ if file_data:
57
+ try:
58
+ if mime_type == "text/csv":
59
+ decoded_content = base64.b64decode(file_data).decode("utf-8")
60
+ print(f"CSV Preview (first 200 chars): {decoded_content[:200]}...")
61
+ elif mime_type.startswith("image/"):
62
+ file_size = len(base64.b64decode(file_data))
63
+ print(f"Image size: {file_size} bytes")
64
+ else:
65
+ print("File data available (base64 encoded)")
66
+ except Exception as e:
67
+ print(f"Could not decode file data: {e}")
68
+ print("---")
69
+ print("--- End Artifacts ---\n")
70
+
71
+
72
+ if __name__ == "__main__":
73
+ asyncio.run(main())
@@ -0,0 +1,5 @@
1
+ from aip_agents.agent import LangGraphAgent as LangGraphAgent
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
+
4
+ async def main() -> None:
5
+ """Main function demonstrating the General Assistant agent with A2A capabilities."""
@@ -0,0 +1,76 @@
1
+ """Example of a General Assistant LangGraphAgent that can delegate tasks to specialized agents.
2
+
3
+ This example demonstrates:
4
+ 1. Configuring A2A settings for a client agent.
5
+ 2. Creating a general assistant agent that can help with various queries.
6
+ 3. Delegating specific tasks to specialized agents via A2A with streaming.
7
+ 4. Handling streaming responses and providing relevant advice.
8
+
9
+ Authors:
10
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
11
+ Putu Ravindra Wiguna (putu.r.wiguna@gdplabs.id)
12
+ """
13
+
14
+ import asyncio
15
+ import base64
16
+
17
+ from langchain_openai import ChatOpenAI
18
+
19
+ from aip_agents.agent import LangGraphAgent
20
+ from aip_agents.schema.agent import A2AClientConfig
21
+
22
+
23
+ async def main():
24
+ """Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
25
+ llm = ChatOpenAI(model="gpt-4.1", streaming=True)
26
+ assistant_agent = LangGraphAgent(
27
+ name="AssistantAgent",
28
+ instruction="""You are a helpful assistant that can help with various tasks
29
+ by delegating to specialized agents.""",
30
+ model=llm,
31
+ tools=[],
32
+ )
33
+
34
+ # Discover agents
35
+ client_a2a_config = A2AClientConfig(
36
+ discovery_urls=["http://localhost:8999"],
37
+ )
38
+ agent_cards = assistant_agent.discover_agents(client_a2a_config)
39
+
40
+ # Test query
41
+ query = "Generate me just 1 single image and a table data of 10 rows"
42
+
43
+ async for chunk in assistant_agent.astream_to_agent(agent_card=agent_cards[0], message=query):
44
+ content = chunk.get("content", "")
45
+ if content:
46
+ print(content)
47
+
48
+ # Handle artifacts
49
+ if chunk.get("status") == "success" and chunk.get("artifacts"):
50
+ for artifact in chunk.get("artifacts", []):
51
+ artifact_name = artifact.get("name", "unknown")
52
+ mime_type = artifact.get("mime_type", "unknown")
53
+ file_data = artifact.get("file_data")
54
+
55
+ print("\n--- Artifact Received ---")
56
+ print(f"Name: {artifact_name}")
57
+ print(f"Type: {mime_type}")
58
+
59
+ if file_data:
60
+ try:
61
+ if mime_type == "text/csv":
62
+ decoded_content = base64.b64decode(file_data).decode("utf-8")
63
+ print(f"CSV Preview (first 200 chars): {decoded_content[:200]}...")
64
+ elif mime_type.startswith("image/"):
65
+ file_size = len(base64.b64decode(file_data))
66
+ print(f"Image size: {file_size} bytes")
67
+ else:
68
+ print("File data available (base64 encoded)")
69
+ except Exception as e:
70
+ print(f"Could not decode file data: {e}")
71
+
72
+ print("--- End Artifact ---\n")
73
+
74
+
75
+ if __name__ == "__main__":
76
+ asyncio.run(main())
@@ -0,0 +1,5 @@
1
+ from aip_agents.agent import LangGraphAgent as LangGraphAgent
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig
3
+
4
+ async def main() -> None:
5
+ """Main function demonstrating the General Assistant agent with streaming A2A capabilities."""
@@ -0,0 +1,92 @@
1
+ """Example A2A server for a LangGraphAgent Weather Service.
2
+
3
+ This server instantiates a LangGraphAgent with weather lookup capabilities and serves it
4
+ via the A2A protocol using the proper A2A server setup with LangGraphA2AExecutor.
5
+
6
+ To run this server:
7
+ python examples/hello_world_a2a_langgraph_server.py
8
+
9
+ It will listen on http://localhost:8001 by default.
10
+
11
+ Authors:
12
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
13
+ """
14
+
15
+ import click
16
+ import uvicorn
17
+ from a2a.types import AgentCapabilities, AgentCard, AgentSkill
18
+
19
+ from aip_agents.agent import LangGraphAgent
20
+ from aip_agents.examples.tools.image_artifact_tool import ImageArtifactTool
21
+ from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool
22
+ from aip_agents.utils.logger import get_logger
23
+
24
+ logger = get_logger(__name__)
25
+
26
+ SERVER_AGENT_NAME = "ArtifactAgent"
27
+
28
+
29
+ @click.command()
30
+ @click.option("--host", "host", default="localhost", help="Host to bind the server to.")
31
+ @click.option("--port", "port", default=8999, help="Port to bind the server to.")
32
+ def main(host: str, port: int):
33
+ """Runs the LangGraph Artifact Generation A2A server.
34
+
35
+ Args:
36
+ host (str): Host to bind the server to.
37
+ port (int): Port to bind the server to.
38
+ """
39
+ logger.info(f"Starting {SERVER_AGENT_NAME} on http://{host}:{port}")
40
+
41
+ agent_card = AgentCard(
42
+ name=SERVER_AGENT_NAME,
43
+ description="An agent that can generate data tables and images as downloadable artifacts.",
44
+ url=f"http://{host}:{port}",
45
+ version="1.0.0",
46
+ defaultInputModes=["text"],
47
+ defaultOutputModes=["text"],
48
+ capabilities=AgentCapabilities(streaming=True),
49
+ skills=[
50
+ AgentSkill(
51
+ id="table_generation",
52
+ name="Table Generation",
53
+ description="Generates data tables and provides them as downloadable CSV files.",
54
+ examples=["Generate a data table with 5 rows and 3 columns", "Create a table with customer data"],
55
+ tags=["table", "data", "csv"],
56
+ ),
57
+ AgentSkill(
58
+ id="image_generation",
59
+ name="Image Generation",
60
+ description="Creates simple images and provides them as downloadable PNG files.",
61
+ examples=["Create an image", "Generate a simple graphic"],
62
+ tags=["image", "graphics", "png"],
63
+ ),
64
+ ],
65
+ tags=["artifacts", "files", "generation"],
66
+ )
67
+
68
+ table_tool = TableGeneratorTool()
69
+ image_tool = ImageArtifactTool()
70
+ tools = [table_tool, image_tool]
71
+
72
+ langgraph_agent = LangGraphAgent(
73
+ name=SERVER_AGENT_NAME,
74
+ instruction=(
75
+ "You are a helpful assistant that can generate data tables and images. "
76
+ "When users ask for data tables, use the table_generator tool to create both a preview "
77
+ "and a downloadable CSV file. When users ask for images, use the image_generator tool "
78
+ "to create visual content. Always provide clear descriptions of what you're generating."
79
+ "Format your responses clearly and professionally."
80
+ ),
81
+ model="openai/gpt-4.1",
82
+ tools=tools,
83
+ )
84
+
85
+ app = langgraph_agent.to_a2a(agent_card=agent_card)
86
+
87
+ logger.info("A2A application configured. Starting Uvicorn server...")
88
+ uvicorn.run(app, host=host, port=port)
89
+
90
+
91
+ if __name__ == "__main__":
92
+ main()
@@ -0,0 +1,16 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.agent import LangGraphAgent as LangGraphAgent
3
+ from aip_agents.examples.tools.image_artifact_tool import ImageArtifactTool as ImageArtifactTool
4
+ from aip_agents.examples.tools.table_generator_tool import TableGeneratorTool as TableGeneratorTool
5
+ from aip_agents.utils.logger import get_logger as get_logger
6
+
7
+ logger: Incomplete
8
+ SERVER_AGENT_NAME: str
9
+
10
+ def main(host: str, port: int):
11
+ """Runs the LangGraph Artifact Generation A2A server.
12
+
13
+ Args:
14
+ host (str): Host to bind the server to.
15
+ port (int): Port to bind the server to.
16
+ """