aip-agents-binary 0.6.4__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.

Potentially problematic release.


This version of aip-agents-binary might be problematic. Click here for more details.

Files changed (612) 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 +3037 -0
  22. aip_agents/agent/base_langgraph_agent.pyi +233 -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 +767 -0
  52. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +50 -0
  53. aip_agents/agent/langgraph_react_agent.py +2856 -0
  54. aip_agents/agent/langgraph_react_agent.pyi +170 -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/hello_world_a2a_google_adk_client.py +49 -0
  75. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +9 -0
  76. aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
  77. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +9 -0
  78. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
  79. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +9 -0
  80. aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
  81. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +15 -0
  82. aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
  83. aip_agents/examples/hello_world_a2a_langchain_client.pyi +5 -0
  84. aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
  85. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +5 -0
  86. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
  87. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +5 -0
  88. aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
  89. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +5 -0
  90. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
  91. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +5 -0
  92. aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
  93. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +15 -0
  94. aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
  95. aip_agents/examples/hello_world_a2a_langchain_server.pyi +15 -0
  96. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
  97. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +15 -0
  98. aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
  99. aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
  100. aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
  101. aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
  102. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
  103. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +5 -0
  104. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
  105. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +5 -0
  106. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
  107. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +16 -0
  108. aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
  109. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +9 -0
  110. aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
  111. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +9 -0
  112. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
  113. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +2 -0
  114. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
  115. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +9 -0
  116. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
  117. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +5 -0
  118. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
  119. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +5 -0
  120. aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
  121. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +14 -0
  122. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
  123. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +15 -0
  124. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
  125. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +15 -0
  126. aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
  127. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +48 -0
  128. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
  129. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +48 -0
  130. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
  131. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +45 -0
  132. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
  133. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +5 -0
  134. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
  135. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +15 -0
  136. aip_agents/examples/hello_world_google_adk.py +41 -0
  137. aip_agents/examples/hello_world_google_adk.pyi +5 -0
  138. aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
  139. aip_agents/examples/hello_world_google_adk_mcp_http.pyi +5 -0
  140. aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
  141. aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +5 -0
  142. aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
  143. aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +5 -0
  144. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
  145. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +5 -0
  146. aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
  147. aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +5 -0
  148. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
  149. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +5 -0
  150. aip_agents/examples/hello_world_google_adk_stream.py +44 -0
  151. aip_agents/examples/hello_world_google_adk_stream.pyi +5 -0
  152. aip_agents/examples/hello_world_langchain.py +28 -0
  153. aip_agents/examples/hello_world_langchain.pyi +5 -0
  154. aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
  155. aip_agents/examples/hello_world_langchain_lm_invoker.pyi +2 -0
  156. aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
  157. aip_agents/examples/hello_world_langchain_mcp_http.pyi +5 -0
  158. aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
  159. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
  160. aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
  161. aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +5 -0
  162. aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
  163. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
  164. aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
  165. aip_agents/examples/hello_world_langchain_mcp_sse.pyi +5 -0
  166. aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
  167. aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +5 -0
  168. aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
  169. aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +5 -0
  170. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
  171. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +5 -0
  172. aip_agents/examples/hello_world_langchain_stream.py +36 -0
  173. aip_agents/examples/hello_world_langchain_stream.pyi +5 -0
  174. aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
  175. aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +5 -0
  176. aip_agents/examples/hello_world_langflow_agent.py +163 -0
  177. aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
  178. aip_agents/examples/hello_world_langgraph.py +39 -0
  179. aip_agents/examples/hello_world_langgraph.pyi +5 -0
  180. aip_agents/examples/hello_world_langgraph_gl_connector_twitter.py +44 -0
  181. aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +5 -0
  182. aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
  183. aip_agents/examples/hello_world_langgraph_mcp_http.pyi +5 -0
  184. aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
  185. aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +5 -0
  186. aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
  187. aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +5 -0
  188. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
  189. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +5 -0
  190. aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
  191. aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +5 -0
  192. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
  193. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +5 -0
  194. aip_agents/examples/hello_world_langgraph_stream.py +43 -0
  195. aip_agents/examples/hello_world_langgraph_stream.pyi +5 -0
  196. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
  197. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +5 -0
  198. aip_agents/examples/hello_world_model_switch_cli.py +210 -0
  199. aip_agents/examples/hello_world_model_switch_cli.pyi +30 -0
  200. aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
  201. aip_agents/examples/hello_world_multi_agent_adk.pyi +6 -0
  202. aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
  203. aip_agents/examples/hello_world_multi_agent_langchain.pyi +5 -0
  204. aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
  205. aip_agents/examples/hello_world_multi_agent_langgraph.pyi +5 -0
  206. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
  207. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +5 -0
  208. aip_agents/examples/hello_world_pii_logger.py +21 -0
  209. aip_agents/examples/hello_world_pii_logger.pyi +5 -0
  210. aip_agents/examples/hello_world_ptc.py +49 -0
  211. aip_agents/examples/hello_world_ptc.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 +55 -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 +228 -0
  310. aip_agents/mcp/client/connection_manager.pyi +51 -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 +612 -0
  320. aip_agents/mcp/client/persistent_session.pyi +122 -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 +263 -0
  324. aip_agents/mcp/client/transports.pyi +132 -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 +811 -0
  334. aip_agents/memory/adapters/base_adapter.pyi +176 -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/ptc/__init__.py +48 -0
  356. aip_agents/ptc/__init__.pyi +10 -0
  357. aip_agents/ptc/doc_gen.py +122 -0
  358. aip_agents/ptc/doc_gen.pyi +40 -0
  359. aip_agents/ptc/exceptions.py +39 -0
  360. aip_agents/ptc/exceptions.pyi +22 -0
  361. aip_agents/ptc/executor.py +143 -0
  362. aip_agents/ptc/executor.pyi +73 -0
  363. aip_agents/ptc/mcp/__init__.py +45 -0
  364. aip_agents/ptc/mcp/__init__.pyi +7 -0
  365. aip_agents/ptc/mcp/sandbox_bridge.py +668 -0
  366. aip_agents/ptc/mcp/sandbox_bridge.pyi +47 -0
  367. aip_agents/ptc/mcp/templates/__init__.py +1 -0
  368. aip_agents/ptc/mcp/templates/__init__.pyi +0 -0
  369. aip_agents/ptc/mcp/templates/mcp_client.py.template +239 -0
  370. aip_agents/ptc/naming.py +184 -0
  371. aip_agents/ptc/naming.pyi +76 -0
  372. aip_agents/ptc/payload.py +26 -0
  373. aip_agents/ptc/payload.pyi +15 -0
  374. aip_agents/ptc/prompt_builder.py +571 -0
  375. aip_agents/ptc/prompt_builder.pyi +55 -0
  376. aip_agents/ptc/ptc_helper.py +16 -0
  377. aip_agents/ptc/ptc_helper.pyi +1 -0
  378. aip_agents/ptc/sandbox_bridge.py +58 -0
  379. aip_agents/ptc/sandbox_bridge.pyi +25 -0
  380. aip_agents/ptc/template_utils.py +33 -0
  381. aip_agents/ptc/template_utils.pyi +13 -0
  382. aip_agents/ptc/templates/__init__.py +1 -0
  383. aip_agents/ptc/templates/__init__.pyi +0 -0
  384. aip_agents/ptc/templates/ptc_helper.py.template +134 -0
  385. aip_agents/sandbox/__init__.py +43 -0
  386. aip_agents/sandbox/__init__.pyi +5 -0
  387. aip_agents/sandbox/defaults.py +9 -0
  388. aip_agents/sandbox/defaults.pyi +2 -0
  389. aip_agents/sandbox/e2b_runtime.py +267 -0
  390. aip_agents/sandbox/e2b_runtime.pyi +51 -0
  391. aip_agents/sandbox/template_builder.py +131 -0
  392. aip_agents/sandbox/template_builder.pyi +36 -0
  393. aip_agents/sandbox/types.py +24 -0
  394. aip_agents/sandbox/types.pyi +14 -0
  395. aip_agents/sandbox/validation.py +50 -0
  396. aip_agents/sandbox/validation.pyi +20 -0
  397. aip_agents/schema/__init__.py +69 -0
  398. aip_agents/schema/__init__.pyi +9 -0
  399. aip_agents/schema/a2a.py +56 -0
  400. aip_agents/schema/a2a.pyi +40 -0
  401. aip_agents/schema/agent.py +111 -0
  402. aip_agents/schema/agent.pyi +65 -0
  403. aip_agents/schema/hitl.py +157 -0
  404. aip_agents/schema/hitl.pyi +89 -0
  405. aip_agents/schema/langgraph.py +37 -0
  406. aip_agents/schema/langgraph.pyi +28 -0
  407. aip_agents/schema/model_id.py +97 -0
  408. aip_agents/schema/model_id.pyi +54 -0
  409. aip_agents/schema/step_limit.py +108 -0
  410. aip_agents/schema/step_limit.pyi +63 -0
  411. aip_agents/schema/storage.py +40 -0
  412. aip_agents/schema/storage.pyi +21 -0
  413. aip_agents/sentry/__init__.py +11 -0
  414. aip_agents/sentry/__init__.pyi +3 -0
  415. aip_agents/sentry/sentry.py +151 -0
  416. aip_agents/sentry/sentry.pyi +48 -0
  417. aip_agents/storage/__init__.py +41 -0
  418. aip_agents/storage/__init__.pyi +8 -0
  419. aip_agents/storage/base.py +85 -0
  420. aip_agents/storage/base.pyi +58 -0
  421. aip_agents/storage/clients/__init__.py +12 -0
  422. aip_agents/storage/clients/__init__.pyi +3 -0
  423. aip_agents/storage/clients/minio_client.py +318 -0
  424. aip_agents/storage/clients/minio_client.pyi +137 -0
  425. aip_agents/storage/config.py +62 -0
  426. aip_agents/storage/config.pyi +29 -0
  427. aip_agents/storage/providers/__init__.py +15 -0
  428. aip_agents/storage/providers/__init__.pyi +5 -0
  429. aip_agents/storage/providers/base.py +106 -0
  430. aip_agents/storage/providers/base.pyi +88 -0
  431. aip_agents/storage/providers/memory.py +114 -0
  432. aip_agents/storage/providers/memory.pyi +79 -0
  433. aip_agents/storage/providers/object_storage.py +214 -0
  434. aip_agents/storage/providers/object_storage.pyi +98 -0
  435. aip_agents/tools/__init__.py +64 -0
  436. aip_agents/tools/__init__.pyi +11 -0
  437. aip_agents/tools/browser_use/__init__.py +82 -0
  438. aip_agents/tools/browser_use/__init__.pyi +14 -0
  439. aip_agents/tools/browser_use/action_parser.py +103 -0
  440. aip_agents/tools/browser_use/action_parser.pyi +18 -0
  441. aip_agents/tools/browser_use/browser_use_tool.py +1120 -0
  442. aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
  443. aip_agents/tools/browser_use/llm_config.py +120 -0
  444. aip_agents/tools/browser_use/llm_config.pyi +52 -0
  445. aip_agents/tools/browser_use/minio_storage.py +198 -0
  446. aip_agents/tools/browser_use/minio_storage.pyi +109 -0
  447. aip_agents/tools/browser_use/schemas.py +119 -0
  448. aip_agents/tools/browser_use/schemas.pyi +32 -0
  449. aip_agents/tools/browser_use/session.py +76 -0
  450. aip_agents/tools/browser_use/session.pyi +4 -0
  451. aip_agents/tools/browser_use/session_errors.py +132 -0
  452. aip_agents/tools/browser_use/session_errors.pyi +53 -0
  453. aip_agents/tools/browser_use/steel_session_recording.py +317 -0
  454. aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
  455. aip_agents/tools/browser_use/streaming.py +815 -0
  456. aip_agents/tools/browser_use/streaming.pyi +81 -0
  457. aip_agents/tools/browser_use/structured_data_parser.py +257 -0
  458. aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
  459. aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
  460. aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
  461. aip_agents/tools/browser_use/types.py +78 -0
  462. aip_agents/tools/browser_use/types.pyi +45 -0
  463. aip_agents/tools/code_sandbox/__init__.py +26 -0
  464. aip_agents/tools/code_sandbox/__init__.pyi +3 -0
  465. aip_agents/tools/code_sandbox/constant.py +13 -0
  466. aip_agents/tools/code_sandbox/constant.pyi +4 -0
  467. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +306 -0
  468. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +102 -0
  469. aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
  470. aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
  471. aip_agents/tools/constants.py +177 -0
  472. aip_agents/tools/constants.pyi +138 -0
  473. aip_agents/tools/date_range_tool.py +554 -0
  474. aip_agents/tools/date_range_tool.pyi +21 -0
  475. aip_agents/tools/document_loader/__init__.py +44 -0
  476. aip_agents/tools/document_loader/__init__.pyi +7 -0
  477. aip_agents/tools/document_loader/base_reader.py +302 -0
  478. aip_agents/tools/document_loader/base_reader.pyi +75 -0
  479. aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
  480. aip_agents/tools/document_loader/docx_reader_tool.pyi +10 -0
  481. aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
  482. aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
  483. aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
  484. aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
  485. aip_agents/tools/document_loader/pdf_splitter.py +169 -0
  486. aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
  487. aip_agents/tools/execute_ptc_code.py +308 -0
  488. aip_agents/tools/execute_ptc_code.pyi +90 -0
  489. aip_agents/tools/gl_connector/__init__.py +5 -0
  490. aip_agents/tools/gl_connector/__init__.pyi +3 -0
  491. aip_agents/tools/gl_connector/tool.py +383 -0
  492. aip_agents/tools/gl_connector/tool.pyi +74 -0
  493. aip_agents/tools/gl_connector_tools.py +119 -0
  494. aip_agents/tools/gl_connector_tools.pyi +39 -0
  495. aip_agents/tools/memory_search/__init__.py +29 -0
  496. aip_agents/tools/memory_search/__init__.pyi +5 -0
  497. aip_agents/tools/memory_search/base.py +200 -0
  498. aip_agents/tools/memory_search/base.pyi +69 -0
  499. aip_agents/tools/memory_search/mem0.py +365 -0
  500. aip_agents/tools/memory_search/mem0.pyi +29 -0
  501. aip_agents/tools/memory_search/schema.py +81 -0
  502. aip_agents/tools/memory_search/schema.pyi +25 -0
  503. aip_agents/tools/memory_search_tool.py +34 -0
  504. aip_agents/tools/memory_search_tool.pyi +3 -0
  505. aip_agents/tools/time_tool.py +117 -0
  506. aip_agents/tools/time_tool.pyi +16 -0
  507. aip_agents/tools/tool_config_injector.py +300 -0
  508. aip_agents/tools/tool_config_injector.pyi +26 -0
  509. aip_agents/tools/web_search/__init__.py +15 -0
  510. aip_agents/tools/web_search/__init__.pyi +3 -0
  511. aip_agents/tools/web_search/serper_tool.py +187 -0
  512. aip_agents/tools/web_search/serper_tool.pyi +19 -0
  513. aip_agents/types/__init__.py +70 -0
  514. aip_agents/types/__init__.pyi +36 -0
  515. aip_agents/types/a2a_events.py +13 -0
  516. aip_agents/types/a2a_events.pyi +3 -0
  517. aip_agents/utils/__init__.py +79 -0
  518. aip_agents/utils/__init__.pyi +11 -0
  519. aip_agents/utils/a2a_connector.py +1757 -0
  520. aip_agents/utils/a2a_connector.pyi +146 -0
  521. aip_agents/utils/artifact_helpers.py +502 -0
  522. aip_agents/utils/artifact_helpers.pyi +203 -0
  523. aip_agents/utils/constants.py +22 -0
  524. aip_agents/utils/constants.pyi +10 -0
  525. aip_agents/utils/datetime/__init__.py +34 -0
  526. aip_agents/utils/datetime/__init__.pyi +4 -0
  527. aip_agents/utils/datetime/normalization.py +231 -0
  528. aip_agents/utils/datetime/normalization.pyi +95 -0
  529. aip_agents/utils/datetime/timezone.py +206 -0
  530. aip_agents/utils/datetime/timezone.pyi +48 -0
  531. aip_agents/utils/env_loader.py +27 -0
  532. aip_agents/utils/env_loader.pyi +10 -0
  533. aip_agents/utils/event_handler_registry.py +58 -0
  534. aip_agents/utils/event_handler_registry.pyi +23 -0
  535. aip_agents/utils/file_prompt_utils.py +176 -0
  536. aip_agents/utils/file_prompt_utils.pyi +21 -0
  537. aip_agents/utils/final_response_builder.py +211 -0
  538. aip_agents/utils/final_response_builder.pyi +34 -0
  539. aip_agents/utils/formatter_llm_client.py +231 -0
  540. aip_agents/utils/formatter_llm_client.pyi +71 -0
  541. aip_agents/utils/langgraph/__init__.py +19 -0
  542. aip_agents/utils/langgraph/__init__.pyi +3 -0
  543. aip_agents/utils/langgraph/converter.py +128 -0
  544. aip_agents/utils/langgraph/converter.pyi +49 -0
  545. aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
  546. aip_agents/utils/langgraph/tool_managers/__init__.pyi +5 -0
  547. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
  548. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +35 -0
  549. aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
  550. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +48 -0
  551. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1096 -0
  552. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +56 -0
  553. aip_agents/utils/langgraph/tool_output_management.py +1047 -0
  554. aip_agents/utils/langgraph/tool_output_management.pyi +329 -0
  555. aip_agents/utils/logger.py +195 -0
  556. aip_agents/utils/logger.pyi +60 -0
  557. aip_agents/utils/metadata/__init__.py +27 -0
  558. aip_agents/utils/metadata/__init__.pyi +5 -0
  559. aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
  560. aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
  561. aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
  562. aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
  563. aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
  564. aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
  565. aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
  566. aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
  567. aip_agents/utils/metadata/activity_narrative/context.py +49 -0
  568. aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
  569. aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
  570. aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
  571. aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
  572. aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
  573. aip_agents/utils/metadata/schemas/__init__.py +16 -0
  574. aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
  575. aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
  576. aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
  577. aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
  578. aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
  579. aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
  580. aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
  581. aip_agents/utils/metadata_helper.py +358 -0
  582. aip_agents/utils/metadata_helper.pyi +117 -0
  583. aip_agents/utils/name_preprocessor/__init__.py +17 -0
  584. aip_agents/utils/name_preprocessor/__init__.pyi +6 -0
  585. aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
  586. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +52 -0
  587. aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
  588. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +38 -0
  589. aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
  590. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +41 -0
  591. aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
  592. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +34 -0
  593. aip_agents/utils/pii/__init__.py +25 -0
  594. aip_agents/utils/pii/__init__.pyi +5 -0
  595. aip_agents/utils/pii/pii_handler.py +397 -0
  596. aip_agents/utils/pii/pii_handler.pyi +96 -0
  597. aip_agents/utils/pii/pii_helper.py +207 -0
  598. aip_agents/utils/pii/pii_helper.pyi +78 -0
  599. aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
  600. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
  601. aip_agents/utils/reference_helper.py +273 -0
  602. aip_agents/utils/reference_helper.pyi +81 -0
  603. aip_agents/utils/sse_chunk_transformer.py +831 -0
  604. aip_agents/utils/sse_chunk_transformer.pyi +166 -0
  605. aip_agents/utils/step_limit_manager.py +265 -0
  606. aip_agents/utils/step_limit_manager.pyi +112 -0
  607. aip_agents/utils/token_usage_helper.py +156 -0
  608. aip_agents/utils/token_usage_helper.pyi +60 -0
  609. aip_agents_binary-0.6.4.dist-info/METADATA +673 -0
  610. aip_agents_binary-0.6.4.dist-info/RECORD +612 -0
  611. aip_agents_binary-0.6.4.dist-info/WHEEL +5 -0
  612. aip_agents_binary-0.6.4.dist-info/top_level.txt +1 -0
@@ -0,0 +1,673 @@
1
+ Metadata-Version: 2.4
2
+ Name: aip-agents-binary
3
+ Version: 0.6.4
4
+ Summary: A library for managing agents in Gen AI applications.
5
+ Author-email: Raymond Christopher <raymond.christopher@gdplabs.id>
6
+ Requires-Python: <3.13,>=3.11
7
+ Description-Content-Type: text/markdown
8
+ Requires-Dist: a2a-sdk<0.3.0,>=0.2.4
9
+ Requires-Dist: aiostream<0.7.0,>=0.6.0
10
+ Requires-Dist: authlib<2.0.0,>=1.6.4
11
+ Requires-Dist: bosa-connectors-binary<0.4.0,>=0.3.1
12
+ Requires-Dist: bosa-core-binary[logger,telemetry]<0.10.0,>=0.9.6
13
+ Requires-Dist: colorama<0.5.0,>=0.4.6
14
+ Requires-Dist: deprecated<2.0.0,>=1.2.18
15
+ Requires-Dist: fastapi<0.121.0,>=0.120.0
16
+ Requires-Dist: gllm-core-binary<0.4.0,>=0.3.18
17
+ Requires-Dist: gllm-inference-binary[anthropic,bedrock,google-genai,google-vertexai,openai]<0.6.0,>=0.5.90
18
+ Requires-Dist: gllm-tools-binary<0.2.0,>=0.1.5
19
+ Requires-Dist: google-adk<0.6.0,>=0.5.0
20
+ Requires-Dist: langchain<0.4.0,>=0.3.0
21
+ Requires-Dist: langchain-openai<0.4.0,>=0.3.17
22
+ Requires-Dist: langchain-mcp-adapters<0.1.0,>=0.0.10
23
+ Requires-Dist: langchain-experimental<0.4.0,>=0.3.4
24
+ Requires-Dist: langgraph<0.7.0,>=0.6.0
25
+ Requires-Dist: minio<8.0.0,>=7.2.20
26
+ Requires-Dist: pydantic<3.0.0,>=2.11.7
27
+ Requires-Dist: python-dateutil<3.0.0,>=2.9.0
28
+ Requires-Dist: python-dotenv<2.0.0,>=1.1.0
29
+ Requires-Dist: requests<3.0.0,>=2.32.4
30
+ Requires-Dist: uvicorn<0.35.0,>=0.34.3
31
+ Provides-Extra: memory
32
+ Requires-Dist: gllm-memory-binary[mem0ai]<0.2.0,>=0.1.1; extra == "memory"
33
+ Provides-Extra: privacy
34
+ Requires-Dist: gllm-privacy-binary<0.5.0,>=0.4.12; extra == "privacy"
35
+ Provides-Extra: guardrails
36
+ Requires-Dist: gllm-guardrail-binary<0.1.0,>=0.0.1; extra == "guardrails"
37
+ Provides-Extra: gl-connector
38
+ Requires-Dist: bosa-connectors-binary<0.4.0,>=0.3.1; extra == "gl-connector"
39
+ Provides-Extra: local
40
+ Requires-Dist: e2b<3.0.0,>=2.3.0; extra == "local"
41
+ Requires-Dist: browser-use==0.5.9; extra == "local"
42
+ Requires-Dist: steel-sdk>=0.7.0; extra == "local"
43
+ Requires-Dist: json-repair>=0.52.3; extra == "local"
44
+ Requires-Dist: PyPDF2<4.0.0,>=3.0.0; extra == "local"
45
+ Requires-Dist: unidecode<2.0.0,>=1.3.0; extra == "local"
46
+ Requires-Dist: gllm-docproc-binary[docx,pdf,xlsx]<0.8.0,>=0.7.21; extra == "local"
47
+ Requires-Dist: gllm-multimodal-binary==0.2.0.post1; extra == "local"
48
+ Requires-Dist: bosa-connectors-binary<0.4.0,>=0.3.1; extra == "local"
49
+ Provides-Extra: dev
50
+ Requires-Dist: coverage<8.0.0,>=7.4.4; extra == "dev"
51
+ Requires-Dist: mypy<2.0.0,>=1.15.0; extra == "dev"
52
+ Requires-Dist: nest-asyncio<2.0.0,>=1.6.0; extra == "dev"
53
+ Requires-Dist: pre-commit<4.0.0,>=3.7.0; extra == "dev"
54
+ Requires-Dist: pytest<9.0.0,>=8.1.1; extra == "dev"
55
+ Requires-Dist: pytest-asyncio<0.24.0,>=0.23.6; extra == "dev"
56
+ Requires-Dist: pytest-cov<6.0.0,>=5.0.0; extra == "dev"
57
+ Requires-Dist: pytest-xdist>=3.8.0; extra == "dev"
58
+ Requires-Dist: ruff<0.7.0,>=0.6.7; extra == "dev"
59
+ Requires-Dist: pillow<12.0.0,>=11.3.0; extra == "dev"
60
+
61
+ # AIP Agents
62
+
63
+ ## Description
64
+
65
+ The core agent library for **local execution** in GL AIP (GDP Labs AI Agents Package). `aip-agents` is part of the GL AIP ecosystem:
66
+
67
+ - **`aip-agents`** (this library) — The underlying agent library for local execution
68
+ - **[`ai-agent-platform`](https://github.com/GDP-ADMIN/ai-agent-platform)** — The platform that provides remote server/run capabilities (uses `aip-agents` internally)
69
+ - **[`glaip-sdk`](https://github.com/GDP-ADMIN/glaip-sdk/tree/main/python/glaip-sdk)** — The SDK that end users use to run agents either locally (directly via `aip-agents`) or on the remote server (via `ai-agent-platform`)
70
+
71
+ You can use `aip-agents` directly for local execution, or let `glaip-sdk` manage local vs remote mode for you. See the [GL AIP overview](../glaip-sdk/docs/overview.md) for the full architecture.
72
+
73
+ ## Installation
74
+
75
+ ### Prerequisites
76
+ - Python 3.11 - 3.12 - [Install here](https://www.python.org/downloads/)
77
+ - Pip (if using Pip) - [Install here](https://pip.pypa.io/en/stable/installation/)
78
+ - Poetry 1.8.1+ (if using Poetry) - [Install here](https://python-poetry.org/docs/#installation)
79
+ - Git (if using Git) - [Install here](https://git-scm.com/downloads)
80
+ - For git installation:
81
+ - Access to the [GDP Labs SDK repository](https://github.com/GDP-ADMIN/glaip-sdk)
82
+
83
+ ### 1. Installation from the GDP Labs registry
84
+ This package is published to the internal GDP Labs registry. Ensure your pip/Poetry config includes the registry:
85
+ `https://glsdk.gdplabs.id/gen-ai-internal/simple/`.
86
+
87
+ #### Using pip
88
+ ```bash
89
+ pip install aip-agents
90
+ ```
91
+
92
+ #### Using Poetry
93
+ ```bash
94
+ poetry add aip-agents
95
+ ```
96
+
97
+ ### 2. Development Installation (Git)
98
+ For development purposes, you can install directly from the Git repository:
99
+ ```bash
100
+ poetry add "git+ssh://git@github.com/GDP-ADMIN/glaip-sdk.git#subdirectory=python/aip-agents"
101
+ ```
102
+
103
+ ### 3. Recommended: install via glaip-sdk for local mode
104
+ If you want local + remote compatibility, install the SDK's local extra instead:
105
+ ```bash
106
+ pip install "glaip-sdk[local]"
107
+ ```
108
+
109
+ ### Optional Extras
110
+ ```bash
111
+ pip install "aip-agents[memory]"
112
+ pip install "aip-agents[privacy]"
113
+ ```
114
+
115
+ ## Managing Dependencies
116
+ 1. Go to the `aip-agents` module root, e.g. `cd python/aip-agents`.
117
+ 2. Run `poetry shell` to create a virtual environment.
118
+ 3. Run `poetry install` to install the `aip-agents` requirements (Poetry will generate a local lock file for you if needed; the repository ignores it).
119
+ 4. Run `poetry update` if you change any dependency versions in `pyproject.toml`.
120
+
121
+ ## Contributing
122
+ Please refer to this [Python Style Guide](https://docs.google.com/document/d/1uRggCrHnVfDPBnG641FyQBwUwLoFw0kTzNqRm92vUwM/edit?usp=sharing)
123
+ to get information about code style, documentation standard, and SCA that you need to use when contributing to this project
124
+
125
+ 1. Activate `pre-commit` hooks using `pre-commit install`
126
+ 2. Run `poetry shell` to create a virtual environment.
127
+ 3. Run `poetry install` to install the `aip-agents` requirements (this will also create a local lock file that stays local).
128
+ 4. Run `which python` to get the path to be referenced at Visual Studio Code interpreter path (`Ctrl`+`Shift`+`P` or `Cmd`+`Shift`+`P`)
129
+ 5. Try running the unit test to see if it's working:
130
+ ```bash
131
+ poetry run pytest -s tests/unit_tests/
132
+ ```
133
+
134
+ ## Hello World Examples
135
+
136
+ ### Prerequisites
137
+ - Python 3.11 - 3.12
138
+ - Install the package:
139
+
140
+ ```bash
141
+ pip install aip-agents
142
+ ```
143
+
144
+ - For OpenAI: Set your API key in the environment:
145
+ ```bash
146
+ export OPENAI_API_KEY=your-openai-key
147
+ ```
148
+ - For Google ADK: Set your API key in the environment:
149
+ ```bash
150
+ export GOOGLE_API_KEY=your-google-api-key
151
+ ```
152
+
153
+ ### Run the Hello World Examples
154
+
155
+ The example scripts are located in `aip_agents/examples` in the source repo. You can run them individually or use the `run_all_examples.py` script.
156
+
157
+ **1. Running Individual Examples:**
158
+
159
+ Navigate to the library's root directory (e.g., `python/aip-agents` if you cloned the repository).
160
+
161
+ **LangGraph (OpenAI):**
162
+ ```bash
163
+ python aip_agents/examples/hello_world_langgraph.py
164
+ ```
165
+
166
+ **LangGraph with GL Connectors (OpenAI):**
167
+ ```bash
168
+ python aip_agents/examples/hello_world_langgraph_gl_connector_twitter.py
169
+ ```
170
+
171
+ **LangGraph Streaming (OpenAI):**
172
+ ```bash
173
+ python aip_agents/examples/hello_world_langgraph_stream.py
174
+ ```
175
+
176
+ **LangGraph Multi-Agent Coordinator (OpenAI):**
177
+ ```bash
178
+ python aip_agents/examples/hello_world_a2a_multi_agent_coordinator_server.py
179
+ ```
180
+
181
+ **Google ADK:**
182
+ ```bash
183
+ python aip_agents/examples/hello_world_google_adk.py
184
+ ```
185
+
186
+ **Google ADK Streaming:**
187
+ ```bash
188
+ python aip_agents/examples/hello_world_google_adk_stream.py
189
+ ```
190
+
191
+ **LangChain (OpenAI):**
192
+ ```bash
193
+ python aip_agents/examples/hello_world_langchain.py
194
+ ```
195
+
196
+ **LangChain Streaming (OpenAI):**
197
+ ```bash
198
+ python aip_agents/examples/hello_world_langchain_stream.py
199
+ ```
200
+
201
+ **HITL (Human-in-the-Loop) Approval Demo:**
202
+ ```bash
203
+ python aip_agents/examples/hitl_demo.py
204
+ ```
205
+
206
+ **2. Running MCP Examples**
207
+
208
+ ### Prerequisites
209
+
210
+ Ensure you have set the environment variables for API keys:
211
+
212
+ ```bash
213
+ export OPENAI_API_KEY="your-openai-key"
214
+ export GOOGLE_API_KEY="your-google-api-key"
215
+ ```
216
+
217
+ For examples that use stateful MCP tools like browser automation, start the Playwright MCP server in a separate terminal:
218
+
219
+ ```bash
220
+ npx @playwright/mcp@latest --headless --port 8931
221
+ ```
222
+
223
+ **Note:** Use the `--headless` flag to run the server without a visible browser window, which is recommended if the browser is not installed yet to avoid failures. For using an actual (non-headless) browser, refer to the [Playwright MCP documentation](https://github.com/microsoft/playwright-mcp).
224
+
225
+ ### Local MCP Servers
226
+
227
+ For STDIO, SSE, and HTTP transports using local servers, open a terminal in the library root (`python/aip-agents`) and run:
228
+
229
+ - For STDIO:
230
+
231
+ ```bash
232
+ poetry run python aip_agents/examples/mcp_servers/mcp_server_stdio.py
233
+ ```
234
+
235
+ - For SSE:
236
+
237
+ ```bash
238
+ poetry run python aip_agents/examples/mcp_servers/mcp_server_sse.py
239
+ ```
240
+
241
+ - For HTTP:
242
+
243
+ ```bash
244
+ poetry run python aip_agents/examples/mcp_servers/mcp_server_http.py
245
+ ```
246
+
247
+ Note: Start the appropriate server before running the client examples for that transport.
248
+
249
+ ### Running Examples
250
+
251
+ All examples are run from the library root using `poetry run python aip_agents/examples/<file>.py`. Examples support OpenAI for LangGraph/LangChain and Google ADK where specified.
252
+
253
+ #### LangChain Examples
254
+
255
+ ##### STDIO Transport
256
+ - Non-Streaming:
257
+ ```bash
258
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_stdio.py
259
+ ```
260
+ - Streaming:
261
+ ```bash
262
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py
263
+ ```
264
+
265
+ ##### SSE Transport
266
+ - Non-Streaming:
267
+ ```bash
268
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_sse.py
269
+ ```
270
+ - Streaming:
271
+ ```bash
272
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_sse_stream.py
273
+ ```
274
+
275
+ ##### HTTP Transport
276
+ - Non-Streaming:
277
+ ```bash
278
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_http.py
279
+ ```
280
+ - Streaming:
281
+ ```bash
282
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_http_stream.py
283
+ ```
284
+
285
+ #### Google ADK Examples
286
+
287
+ ##### STDIO Transport
288
+ - Non-Streaming:
289
+ ```bash
290
+ poetry run python aip_agents/examples/hello_world_google_adk_mcp_stdio.py
291
+ ```
292
+ - Streaming:
293
+ ```bash
294
+ poetry run python aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py
295
+ ```
296
+
297
+ ##### SSE Transport
298
+ - Non-Streaming:
299
+ ```bash
300
+ poetry run python aip_agents/examples/hello_world_google_adk_mcp_sse.py
301
+ ```
302
+ - Streaming:
303
+ ```bash
304
+ poetry run python aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py
305
+ ```
306
+
307
+ ##### HTTP Transport
308
+ - Non-Streaming:
309
+ ```bash
310
+ poetry run python aip_agents/examples/hello_world_google_adk_mcp_http.py
311
+ ```
312
+ - Streaming:
313
+ ```bash
314
+ poetry run python aip_agents/examples/hello_world_google_adk_mcp_http_stream.py
315
+ ```
316
+
317
+ #### LangGraph Examples (OpenAI)
318
+
319
+ ##### STDIO Transport
320
+ - Non-Streaming:
321
+ ```bash
322
+ poetry run python aip_agents/examples/hello_world_langgraph_mcp_stdio.py
323
+ ```
324
+ - Streaming:
325
+ ```bash
326
+ poetry run python aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py
327
+ ```
328
+
329
+ ##### SSE Transport
330
+ - Non-Streaming:
331
+ ```bash
332
+ poetry run python aip_agents/examples/hello_world_langgraph_mcp_sse.py
333
+ ```
334
+ - Streaming:
335
+ ```bash
336
+ poetry run python aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py
337
+ ```
338
+
339
+ ##### HTTP Transport
340
+ - Non-Streaming:
341
+ ```bash
342
+ poetry run python aip_agents/examples/hello_world_langgraph_mcp_http.py
343
+ ```
344
+ - Streaming:
345
+ ```bash
346
+ poetry run python aip_agents/examples/hello_world_langgraph_mcp_http_stream.py
347
+ ```
348
+
349
+ ### Multi-Server Example
350
+
351
+ This LangChain example uses multiple MCP servers: Playwright (for browser actions) and a random name generator (SSE transport) with persistent sessions across multiple `arun` calls.
352
+
353
+ 1. Start the Playwright server:
354
+
355
+ ```bash
356
+ npx @playwright/mcp@latest --headless --port 8931
357
+ ```
358
+
359
+ 2. In another terminal, start the Name Generator SSE server:
360
+
361
+ ```bash
362
+ poetry run python aip_agents/examples/mcp_servers/mcp_name.py
363
+ ```
364
+
365
+ 3. Run the multi-server client example:
366
+
367
+ ```bash
368
+ poetry run python aip_agents/examples/hello_world_langchain_mcp_multi_server.py
369
+ ```
370
+ **3. Running Individual A2A Examples:**
371
+
372
+ * Navigate to the library's root directory (e.g., `libs/aip-agents` if you cloned the repository).
373
+ * Open a new terminal and navigate to the `aip_agents/examples` directory to run the A2A server.
374
+
375
+ **LangChain Server:**
376
+ ```bash
377
+ python hello_world_a2a_langchain_server.py
378
+ ```
379
+
380
+ * Open a new terminal and navigate to the `aip_agents/examples` directory to run the A2A client.
381
+
382
+ **LangChain Client:**
383
+ ```bash
384
+ python hello_world_a2a_langchain_client.py
385
+ ```
386
+
387
+ **LangChain Client Integrated with Agent Workflow:**
388
+ ```bash
389
+ python hello_world_a2a_langchain_client_agent.py
390
+ ```
391
+
392
+ **LangChain Client Streaming:**
393
+ ```bash
394
+ python hello_world_a2a_langchain_client_stream.py
395
+ ```
396
+
397
+
398
+ ## Human-in-the-Loop (HITL) Approval
399
+
400
+ AIP Agents supports Human-in-the-Loop approval for tool execution, allowing human operators to review and approve high-risk tool calls before they execute.
401
+
402
+ ### Features
403
+
404
+ - **Configurable Approval Policies**: Set approval requirements per tool with customizable timeouts and behaviors
405
+ - **Interactive CLI Prompts**: Clear, structured prompts showing tool details and context
406
+ - **Structured Logging**: All approval decisions are logged with full metadata
407
+ - **Timeout Handling**: Configurable behavior when approval requests time out
408
+ - **Non-blocking**: Tools without HITL configuration execute normally
409
+
410
+ ### Quick Start
411
+
412
+ Configure HITL for specific tools in your agent:
413
+
414
+ ```python
415
+ from aip_agents.agent import LangGraphReactAgent
416
+ from aip_agents.agent.hitl.config import ToolApprovalConfig
417
+
418
+ # Create agent with tools
419
+ agent = LangGraphReactAgent(
420
+ name="My Agent",
421
+ tools=[send_email_tool, search_tool],
422
+ )
423
+
424
+ # Configure HITL via tool_configs
425
+ agent.tool_configs = {
426
+ "tool_configs": {
427
+ "send_email": {"hitl": {"timeout_seconds": 300}}
428
+ }
429
+ }
430
+ ```
431
+
432
+ When the agent attempts to use the `send_email` tool, it will:
433
+
434
+ 1. Emit a pending approval event via `DeferredPromptHandler`
435
+ 2. Wait for `ApprovalManager.resolve_pending_request()` to be called
436
+ 3. Execute the tool only if approved
437
+ 4. Log the decision for audit purposes
438
+
439
+ ### Configuration Options
440
+
441
+ | Option | Type | Default | Description |
442
+ |--------|------|---------|-------------|
443
+ | `timeout_seconds` | int | 300 | Seconds to wait for operator input |
444
+
445
+ ### Logging
446
+
447
+ All HITL decisions are logged with structured data:
448
+
449
+ ```json
450
+ {
451
+ "event": "hitl_decision",
452
+ "tool": "send_email",
453
+ "decision": "approved",
454
+ "operator_input": "A",
455
+ "latency_ms": 2500,
456
+ "timestamp": "2025-09-25T10:15:00Z"
457
+ }
458
+ ```
459
+
460
+ ### Demo
461
+
462
+ Run the interactive demo to see HITL in action:
463
+
464
+ ```bash
465
+ python aip_agents/examples/hitl_demo.py
466
+ ```
467
+
468
+ ## Architectural Notes
469
+
470
+ ### Memory Features
471
+
472
+ The library supports Mem0 as a memory backend for long-term conversation recall. Key features:
473
+ - Automatic persistence of user-agent interactions via `memory_backend="mem0"`.
474
+ - Semantic search for relevant past conversations.
475
+ - New `built_in_mem0_search` tool for explicit recall by time period (e.g., "yesterday", "last week", "July 2025").
476
+ - Date range parsing for natural language time filters using `dateparser`.
477
+ - Conditional auto-augmentation (disabled by default to reduce noise; enable with `memory_auto_augment=True`).
478
+
479
+ #### Mem0 Integration Tests
480
+
481
+ Use the Mem0 integration tests to validate memory persistence, recall, and deletion:
482
+
483
+ ```bash
484
+ cd python/aip-agents && poetry run pytest tests/integration_tests/test_mem0_coordinator.py -q
485
+ ```
486
+
487
+ ## Deep Agents Middleware
488
+
489
+ The Deep Agents Middleware system provides composable components for enhancing agent capabilities with planning, context management, and custom lifecycle hooks.
490
+
491
+ ### Quick Start
492
+
493
+ Enable deep agent capabilities with a single parameter:
494
+
495
+ ```python
496
+ from aip_agents.agent.langgraph_react_agent import LangGraphReactAgent
497
+
498
+ # Enable planning + filesystem for complex multi-step tasks
499
+ agent = LangGraphReactAgent(
500
+ name="research_agent",
501
+ model="gpt-4",
502
+ planning=True, # Enables TodoListMiddleware for task decomposition
503
+ tools=[search_tool, calculator_tool],
504
+ )
505
+ ```
506
+
507
+ ### Understanding Planning vs Filesystem
508
+
509
+ **Important**: `planning` and `filesystem` are **completely independent** features:
510
+
511
+ - **`planning=True`**
512
+ - Adds `write_todos` tool for task decomposition
513
+ - Stores todos in **in-memory dictionary** (per thread_id)
514
+ - Does NOT use or require filesystem
515
+ - Perfect for breaking down complex tasks into steps
516
+ - Example: "Research quantum computing" → agent creates 5 subtasks
517
+
518
+ - **`filesystem=True`**
519
+ - Adds file operation tools: `ls`, `read_file`, `write_file`, `edit_file`, `grep`
520
+ - Stores data in **pluggable backend** (default: InMemoryBackend)
521
+ - Does NOT interact with planning/todos
522
+ - Perfect for offloading large tool results to prevent context overflow
523
+ - Example: Web search returns 50KB → agent writes to `/research/results.txt`
524
+
525
+ - **Both together** (`planning=True, filesystem=True`)
526
+ - Agent can plan tasks AND manage large data
527
+ - Todos stored separately in memory, files in backend
528
+ - Most powerful combination for complex research/analysis tasks
529
+
530
+ ### Planning Only
531
+
532
+ For task decomposition without filesystem:
533
+
534
+ ```python
535
+ agent = LangGraphReactAgent(
536
+ name="planner_agent",
537
+ model="gpt-4",
538
+ planning=True,
539
+ tools=[...],
540
+ )
541
+ ```
542
+
543
+ ### Filesystem Only
544
+
545
+ For context offloading without planning:
546
+
547
+ ```python
548
+ agent = LangGraphReactAgent(
549
+ name="data_processor",
550
+ model="gpt-4",
551
+ filesystem=True, # Enables FilesystemMiddleware
552
+ tools=[...],
553
+ )
554
+ ```
555
+
556
+ ### Custom Middleware
557
+
558
+ Create domain-specific middleware by implementing the `AgentMiddleware` protocol:
559
+
560
+ ```python
561
+ from aip_agents.middleware.base import AgentMiddleware, ModelRequest
562
+
563
+ class CustomMiddleware:
564
+ def __init__(self):
565
+ self.tools = [] # Add custom tools here
566
+ self.system_prompt_additions = "Custom instructions..."
567
+
568
+ def before_model(self, state: dict) -> dict:
569
+ # Hook executed before model invocation
570
+ return {}
571
+
572
+ def modify_model_request(self, request: ModelRequest, state: dict) -> ModelRequest:
573
+ # Modify the model request (add tools, adjust params, etc.)
574
+ return request
575
+
576
+ def after_model(self, state: dict) -> dict:
577
+ # Hook executed after model invocation
578
+ return {}
579
+
580
+ # COMPOSITION (not override): Custom middlewares EXTEND built-in middleware
581
+ agent = LangGraphReactAgent(
582
+ name="custom_agent",
583
+ model="gpt-4",
584
+ planning=True, # Adds TodoListMiddleware
585
+ filesystem=True, # Adds FilesystemMiddleware
586
+ middlewares=[CustomMiddleware()], # EXTENDS (doesn't replace) the above
587
+ tools=[...],
588
+ )
589
+ # Result: Agent has ALL THREE middleware active:
590
+ # 1. TodoListMiddleware (from planning=True)
591
+ # 2. FilesystemMiddleware (from filesystem=True)
592
+ # 3. CustomMiddleware (from middlewares parameter)
593
+ ```
594
+
595
+ **Key Points:**
596
+ - ✅ `middlewares` parameter **extends** (never replaces) auto-configured middleware
597
+ - ✅ `planning` and `filesystem` are **independent** - use either, both, or neither
598
+ - ✅ `planning=True` stores todos in **memory** (does NOT require filesystem)
599
+ - ✅ Execution order: built-in middleware (planning, filesystem) → custom middlewares
600
+ - ✅ All hooks from all middleware execute in sequence
601
+
602
+ **Common Combinations:**
603
+ ```python
604
+ # Planning only (no filesystem)
605
+ # → Todos stored in memory, no file operations available
606
+ agent = LangGraphReactAgent(planning=True)
607
+ # → [TodoListMiddleware]
608
+
609
+ # Filesystem only (no planning)
610
+ # → File operations available, no todo planning
611
+ agent = LangGraphReactAgent(filesystem=True)
612
+ # → [FilesystemMiddleware]
613
+
614
+ # Both planning and filesystem
615
+ # → Todos in memory + file operations (most powerful combination)
616
+ agent = LangGraphReactAgent(planning=True, filesystem=True)
617
+ # → [TodoListMiddleware, FilesystemMiddleware]
618
+
619
+ # Custom only (no auto-configuration)
620
+ agent = LangGraphReactAgent(middlewares=[CustomMiddleware()])
621
+ # → [CustomMiddleware]
622
+
623
+ # All together (composition)
624
+ agent = LangGraphReactAgent(
625
+ planning=True,
626
+ filesystem=True,
627
+ middlewares=[CustomMiddleware()]
628
+ )
629
+ # → [TodoListMiddleware, FilesystemMiddleware, CustomMiddleware]
630
+ ```
631
+
632
+ ### Advanced: Custom Storage Backend
633
+
634
+ Provide your own storage backend for filesystem operations:
635
+
636
+ ```python
637
+ from aip_agents.middleware.backends.protocol import BackendProtocol
638
+ from aip_agents.middleware.backends.memory import InMemoryBackend
639
+
640
+ # Use custom backend (e.g., PostgreSQL, S3, Redis)
641
+ custom_backend = MyCustomBackend()
642
+
643
+ agent = LangGraphReactAgent(
644
+ name="agent",
645
+ model="gpt-4",
646
+ filesystem=custom_backend, # Pass BackendProtocol instance
647
+ tools=[...],
648
+ )
649
+ ```
650
+
651
+ ### Benefits
652
+
653
+ - **Context Window Management**: Automatically offload large tool results to files
654
+ - **Task Decomposition**: Break down complex multi-step tasks into trackable todos
655
+ - **Incremental Development**: Add capabilities gradually (filesystem first, then planning)
656
+ - **Zero Breaking Changes**: Existing agents work unchanged (backward compatible)
657
+ - **Extensible**: Compose custom middleware with built-in components
658
+
659
+ For detailed documentation, see `docs/deep_agents_guide.md` (coming soon).
660
+
661
+ ### Agent Interface (`AgentInterface`)
662
+
663
+ The `aip_agents.agent.interface.AgentInterface` class defines a standardized contract for all agent implementations within the AIP Agents ecosystem. It ensures that different agent types (e.g., LangGraph-based, Google ADK-based) expose a consistent set of methods for core operations.
664
+
665
+ Key methods defined by `AgentInterface` typically include:
666
+ - `arun()`: For asynchronous execution of the agent that returns a final consolidated response.
667
+ - `arun_stream()`: For asynchronous execution that streams back partial responses or events from the agent.
668
+
669
+ By adhering to this interface, users can interact with various agents in a uniform way, making it easier to switch between or combine different agent technologies.
670
+
671
+ ### Inversion of Control (IoC) / Dependency Injection (DI)
672
+
673
+ The agent implementations (e.g., `LangGraphAgent`, `GoogleADKAgent`) utilize Dependency Injection. For instance, `LangGraphAgent` accepts an `agent_executor` (like one created by LangGraph's `create_react_agent`) in its constructor. Similarly, `GoogleADKAgent` accepts a native `adk_native_agent`. This allows the core execution logic to be provided externally, promoting flexibility and decoupling the agent wrapper from the specific instantiation details of its underlying engine.