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,292 @@
1
+ from _typeshed import Incomplete
2
+ from aip_agents.storage.providers.base import BaseStorageProvider as BaseStorageProvider, StorageError as StorageError
3
+ from aip_agents.storage.providers.memory import InMemoryStorageProvider as InMemoryStorageProvider
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
+ from dataclasses import dataclass
6
+ from datetime import datetime, timedelta
7
+ from typing import Any
8
+
9
+ logger: Incomplete
10
+ STRING_TRUNCATION_LENGTH: int
11
+ MAX_TOOL_ARGS_DISPLAY: int
12
+ DATA_PREVIEW_TRUNCATION_LENGTH: int
13
+ TOOL_OUTPUT_REFERENCE_PREFIX: str
14
+
15
+ class ToolReferenceError(Exception):
16
+ """Specialized exception for tool output reference resolution errors.
17
+
18
+ This exception is raised when there are issues with resolving tool output references,
19
+ such as invalid reference syntax, missing outputs, or security violations.
20
+
21
+ Attributes:
22
+ reference: The original reference string that caused the error.
23
+ call_id: The call ID that was attempted to be resolved, if applicable.
24
+ details: Additional error details for debugging.
25
+ """
26
+ reference: Incomplete
27
+ call_id: Incomplete
28
+ details: Incomplete
29
+ def __init__(self, message: str, reference: str | None = None, call_id: str | None = None, details: dict[str, Any] | None = None) -> None:
30
+ """Initialize a ToolReferenceError.
31
+
32
+ Args:
33
+ message: Human-readable error message describing what went wrong.
34
+ reference: The original reference string that caused the error, if applicable.
35
+ call_id: The call ID that was attempted to be resolved, if applicable.
36
+ details: Additional error details for debugging, if applicable.
37
+ """
38
+
39
+ @dataclass
40
+ class ToolOutputConfig:
41
+ """Configuration for tool output management system.
42
+
43
+ This class defines the operational parameters for the tool output management
44
+ system, including storage limits, cleanup intervals, and lifecycle policies.
45
+
46
+ Attributes:
47
+ max_stored_outputs: Maximum number of tool outputs to store simultaneously.
48
+ When this limit is reached, oldest outputs are evicted. Defaults to 100.
49
+ max_age_minutes: Maximum age in minutes for stored outputs before they
50
+ become eligible for cleanup. Defaults to 60 minutes.
51
+ cleanup_interval: Number of tool calls between automatic cleanup operations.
52
+ Set to 0 to disable automatic cleanup. Defaults to 20.
53
+ storage_provider: Optional storage provider for persistent storage.
54
+ If None, uses in-memory storage (backward compatible). Defaults to None.
55
+ """
56
+ max_stored_outputs: int = ...
57
+ max_age_minutes: int = ...
58
+ cleanup_interval: int = ...
59
+ storage_provider: BaseStorageProvider | None = ...
60
+
61
+ @dataclass
62
+ class ToolOutput:
63
+ """Container for tool outputs with optional data payload.
64
+
65
+ This class represents tool output metadata and optionally the actual data.
66
+ When used as metadata only, the data field is None and must be retrieved
67
+ from storage. When loaded with data, it contains the complete output.
68
+
69
+ Attributes:
70
+ call_id: Unique identifier for this tool call, used for reference resolution.
71
+ tool_name: Name of the tool that produced this output.
72
+ timestamp: When this output was created and stored.
73
+ size_bytes: Approximate size of the stored data in bytes for memory management.
74
+ tool_args: Input arguments that were passed to the tool for this call.
75
+ data: Optional actual output data. None when used as metadata only.
76
+ data_description: Optional human-readable description of the data content,
77
+ typically provided by the tool itself.
78
+ tags: Optional list of tags for categorization and filtering.
79
+ agent_name: Name of the agent that created this output, for multi-agent context.
80
+ """
81
+ call_id: str
82
+ tool_name: str
83
+ timestamp: datetime
84
+ size_bytes: int
85
+ tool_args: dict[str, Any]
86
+ data: Any | None = ...
87
+ data_description: str | None = ...
88
+ tags: list[str] | None = ...
89
+ agent_name: str | None = ...
90
+ @property
91
+ def is_metadata_only(self) -> bool:
92
+ """Check if this instance contains only metadata without data."""
93
+ def is_expired(self, max_age: timedelta) -> bool:
94
+ """Check if this output has expired based on the given maximum age.
95
+
96
+ Args:
97
+ max_age (timedelta): The maximum age allowed before expiration.
98
+
99
+ Returns:
100
+ bool: True if the output has expired, False otherwise.
101
+ """
102
+ def get_data_preview(self, max_length: int = 200, storage_provider: BaseStorageProvider | None = None, thread_id: str | None = None) -> str | None:
103
+ """Get a truncated string representation of the stored data.
104
+
105
+ Args:
106
+ max_length: Maximum length of the preview string.
107
+ storage_provider: Required only if data is not loaded.
108
+ thread_id: Thread ID required for proper storage key generation.
109
+
110
+ Returns:
111
+ A string representation of the data, truncated if necessary. None if data is not found.
112
+ """
113
+ def with_data(self, data: Any) -> ToolOutput:
114
+ """Create a new instance with data populated.
115
+
116
+ Returns a new ToolOutput instance with the same metadata but with
117
+ data field populated. Useful for converting metadata-only instances
118
+ to complete instances.
119
+
120
+ Args:
121
+ data (Any): The actual output data to populate.
122
+
123
+ Returns:
124
+ ToolOutput: A new instance with data populated.
125
+ """
126
+
127
+ @dataclass
128
+ class StoreOutputParams:
129
+ """Parameters for storing tool outputs.
130
+
131
+ Reduces the number of arguments passed to store_output method.
132
+
133
+ Attributes:
134
+ call_id: Unique identifier for this tool call.
135
+ tool_name: Name of the tool that produced the output.
136
+ data: The actual output data to store.
137
+ tool_args: Input arguments used for the tool call.
138
+ thread_id: Thread/conversation ID to organize outputs by conversation.
139
+ description: Optional human-readable description of the output.
140
+ tags: Optional list of tags for categorization.
141
+ agent_name: Name of the agent that created this output.
142
+ """
143
+ call_id: str
144
+ tool_name: str
145
+ data: Any
146
+ tool_args: dict[str, Any]
147
+ thread_id: str
148
+ description: str | None = ...
149
+ tags: list[str] | None = ...
150
+ agent_name: str | None = ...
151
+
152
+ class ToolOutputManager:
153
+ """Production-ready tool output manager with comprehensive lifecycle management.
154
+
155
+ This class provides centralized management of tool outputs including storage,
156
+ retrieval, lifecycle management, and LLM-friendly summarization. It handles
157
+ memory management through configurable cleanup policies and provides secure
158
+ access to stored outputs.
159
+
160
+ Key Features:
161
+ - Automatic and manual storage of tool outputs with metadata
162
+ - Configurable lifecycle management with age and size-based eviction
163
+ - LLM-friendly summary generation with data previews and context
164
+ - Memory management with size tracking and cleanup
165
+ - Thread-safe operations with proper error handling and locking
166
+ - Concurrent access support for multi-agent and parallel processing scenarios
167
+
168
+ Attributes:
169
+ config: Configuration object defining operational parameters.
170
+ """
171
+ config: Incomplete
172
+ def __init__(self, config: ToolOutputConfig) -> None:
173
+ """Initialize the ToolOutputManager with the given configuration.
174
+
175
+ Args:
176
+ config: Configuration object defining storage limits and cleanup policies.
177
+ """
178
+ def store_output(self, params: StoreOutputParams) -> None:
179
+ """Store a tool output with automatic cleanup and size management.
180
+
181
+ This method stores a tool output along with its metadata, automatically
182
+ handling size limits, cleanup, and memory management. If the same call_id
183
+ is used multiple times within the same thread, the previous output will be overwritten.
184
+
185
+ Thread-safe: This method uses internal locking to ensure safe concurrent access.
186
+
187
+ Args:
188
+ params: StoreOutputParams containing all necessary parameters including thread_id.
189
+
190
+ Raises:
191
+ Exception: If storage operation fails for any reason.
192
+ """
193
+ def get_output(self, call_id: str, thread_id: str) -> ToolOutput | None:
194
+ """Retrieve a stored tool output by its call ID and thread ID.
195
+
196
+ Thread-safe: This method uses internal locking to ensure safe concurrent access.
197
+
198
+ Args:
199
+ call_id: The unique identifier for the tool call.
200
+ thread_id: The thread/conversation ID to search in.
201
+
202
+ Returns:
203
+ The ToolOutput object with data if found, None otherwise.
204
+ """
205
+ def has_outputs(self, thread_id: str | None = None) -> bool:
206
+ """Check if any outputs are currently stored.
207
+
208
+ Thread-safe: This method uses internal locking to ensure safe concurrent access.
209
+
210
+ Args:
211
+ thread_id: Optional thread ID to check for outputs in a specific thread.
212
+ If None, checks across all threads.
213
+
214
+ Returns:
215
+ True if there are stored outputs, False otherwise.
216
+ """
217
+ def generate_summary(self, thread_id: str, max_entries: int = 10) -> str:
218
+ """Generate an LLM-friendly structured summary as JSON.
219
+
220
+ This method creates a comprehensive, structured summary of stored outputs that
221
+ can be easily parsed by LLMs and other systems. The JSON format provides rich
222
+ metadata and context about each tool output.
223
+
224
+ Thread-safe: This method uses internal locking to ensure safe concurrent access.
225
+
226
+ Args:
227
+ thread_id: Thread ID to generate summary for.
228
+ max_entries: Maximum number of entries to include in the summary.
229
+ Defaults to 10.
230
+
231
+ Returns:
232
+ A JSON string containing structured data about tool outputs. Always returns
233
+ valid JSON, even when no outputs are stored (empty entries list).
234
+ """
235
+ def clear_all(self) -> None:
236
+ """Clear all stored outputs from both metadata and storage.
237
+
238
+ Warning:
239
+ This operation is irreversible and will remove all stored tool outputs.
240
+ """
241
+ def get_storage_stats(self) -> dict[str, Any]:
242
+ """Get storage statistics for monitoring and debugging.
243
+
244
+ Returns:
245
+ Dictionary containing storage statistics.
246
+ """
247
+
248
+ class ToolReferenceResolver:
249
+ """Secure and efficient tool output reference resolution system.
250
+
251
+ This class handles the resolution of tool output references in a secure manner,
252
+ preventing injection attacks while providing simple and reliable access to
253
+ stored tool outputs. It uses a whitelist approach with regex validation to
254
+ ensure only safe references are processed.
255
+
256
+ Security Features:
257
+ - Strict regex pattern matching for reference syntax
258
+ - Whitelist-based validation to prevent injection attacks
259
+ - Fail-fast error handling with detailed error messages
260
+ - Input sanitization and validation at multiple levels
261
+
262
+ Supported Reference Syntax:
263
+ - $tool_output.<call_id> - Direct reference to a tool output by call ID
264
+
265
+ Attributes:
266
+ config: Configuration object for operational parameters.
267
+ """
268
+ config: Incomplete
269
+ def __init__(self, config: ToolOutputConfig) -> None:
270
+ """Initialize the ToolReferenceResolver with security configuration.
271
+
272
+ Args:
273
+ config: Configuration object defining operational parameters.
274
+ """
275
+ def resolve_references(self, args: dict[str, Any], manager: ToolOutputManager, thread_id: str | None = None) -> dict[str, Any]:
276
+ """Resolve all tool output references in the given arguments dictionary.
277
+
278
+ This method recursively processes a dictionary of tool arguments, finding
279
+ and resolving any tool output references. It supports nested dictionaries
280
+ and lists, providing comprehensive reference resolution.
281
+
282
+ Args:
283
+ args: Dictionary of tool arguments that may contain references.
284
+ manager: ToolOutputManager instance to resolve references against.
285
+ thread_id: Optional thread ID for context-aware resolution.
286
+
287
+ Returns:
288
+ New dictionary with all references resolved to their actual values.
289
+
290
+ Raises:
291
+ ToolReferenceError: If any reference is invalid or cannot be resolved.
292
+ """
@@ -0,0 +1,195 @@
1
+ """Defines a logger for logging.
2
+
3
+ Example of displayed logs using simple format:
4
+ [2025-11-27T15:50:03+0700.643 uvicorn.error INFO] Application startup complete.
5
+
6
+ Example of displayed logs using JSON format:
7
+ {"timestamp": "2025-11-27T15:51:00+0700", "name": "uvicorn.error", "level": "INFO", "message": "Application startup complete."}
8
+
9
+ Authors:
10
+ Reinhart Linanda (reinhart.linanda@gdplabs.id)
11
+
12
+ References:
13
+ [1] https://github.com/GDP-ADMIN/gsdp
14
+ [2] https://docs.google.com/document/d/1RnXbiAGc6vCFt03YPMM8UleRy0h_pRjzqobdb_u8ty0/edit?tab=t.0
15
+ (Proposal for Standardized Log Format)
16
+ [3] https://github.com/GDP-ADMIN/glchat/blob/main/applications/glchat-be/glchat_be/utils/logger.py
17
+ """
18
+
19
+ import logging
20
+ import os
21
+ import threading
22
+ import warnings
23
+
24
+ from dotenv import load_dotenv
25
+ from gllm_core.utils.logger_manager import LoggerManager
26
+
27
+ load_dotenv()
28
+
29
+ LOGGER_NAME = "AIPAgentsLogger"
30
+
31
+ LOG_LEVEL = os.getenv("LOG_LEVEL", logging.INFO)
32
+ if isinstance(LOG_LEVEL, str):
33
+ try:
34
+ LOG_LEVEL = getattr(logging, LOG_LEVEL.upper())
35
+ except AttributeError:
36
+ LOG_LEVEL = logging.INFO
37
+
38
+
39
+ class _GoogleAdkLogFilter(logging.Filter):
40
+ """Suppress noisy Google ADK model registry logs.
41
+
42
+ Google ADK emits a burst of INFO logs when registering Gemini model patterns.
43
+ They are redundant (class is unchanged) and clutter our startup output, so we
44
+ drop them at the logging infrastructure level instead of touching ADK internals.
45
+ """
46
+
47
+ SUPPRESSED_PREFIX = "Updating LLM class for"
48
+
49
+ def filter(self, record: logging.LogRecord) -> bool:
50
+ """Return False when the log should be discarded.
51
+
52
+ Args:
53
+ record (logging.LogRecord): The log record to filter.
54
+
55
+ Returns:
56
+ bool: True if the log should be processed, False if it should be discarded.
57
+ """
58
+ if not record.name.startswith("google.adk"):
59
+ return True
60
+
61
+ try:
62
+ message = record.getMessage()
63
+ except Exception: # pragma: no cover - defensive fallback
64
+ message = str(record.msg)
65
+
66
+ if isinstance(message, str) and message.startswith(self.SUPPRESSED_PREFIX):
67
+ return False
68
+
69
+ return True
70
+
71
+
72
+ LOG_FILTERS = [_GoogleAdkLogFilter()]
73
+
74
+ logger_manager = LoggerManager()
75
+ root_logger = logger_manager.get_logger()
76
+
77
+ _LOGGER_LOCK = threading.Lock()
78
+
79
+ _LOG_FILTERS_CONFIGURED = False
80
+
81
+
82
+ def _configure_log_filters() -> None:
83
+ """Configure log filters to be applied to all handlers."""
84
+ global _LOG_FILTERS_CONFIGURED
85
+
86
+ with _LOGGER_LOCK:
87
+ if _LOG_FILTERS_CONFIGURED:
88
+ return
89
+
90
+ for log_filter in LOG_FILTERS:
91
+ root_logger.addFilter(log_filter)
92
+ for handler in root_logger.handlers:
93
+ handler.addFilter(log_filter)
94
+
95
+ _LOG_FILTERS_CONFIGURED = True
96
+
97
+
98
+ _configure_log_filters()
99
+
100
+
101
+ def get_logger(name: str = LOGGER_NAME, level: int = LOG_LEVEL) -> logging.Logger:
102
+ """Get a logger instance.
103
+
104
+ Args:
105
+ name (str): The name of the logger. Defaults to AIPAgentsLogger.
106
+ level (int): The level of the logger. Defaults to INFO.
107
+
108
+ Returns:
109
+ logging.Logger: The logger instance.
110
+ """
111
+ with _LOGGER_LOCK:
112
+ if not name:
113
+ name = LOGGER_NAME
114
+ if logging._levelToName.get(level) is None:
115
+ level = LOG_LEVEL
116
+
117
+ logger = logger_manager.get_logger(name)
118
+ logger.setLevel(level)
119
+ logger.propagate = False
120
+
121
+ if not logger.hasHandlers():
122
+ logger.handlers = root_logger.handlers
123
+
124
+ return logger
125
+
126
+
127
+ logger = get_logger()
128
+
129
+ THIRD_PARTY_LOGGER_NAMES = [
130
+ "uvicorn",
131
+ "uvicorn.access",
132
+ "uvicorn.error",
133
+ "apscheduler",
134
+ "apscheduler.scheduler",
135
+ "apscheduler.executors.default",
136
+ "apscheduler.jobstores.default",
137
+ ]
138
+
139
+ _THIRD_PARTY_LOGGERS_CONFIGURED = False
140
+
141
+
142
+ def _configure_third_party_loggers() -> None:
143
+ """Configure third-party loggers to use the same handlers and settings."""
144
+ global _THIRD_PARTY_LOGGERS_CONFIGURED
145
+
146
+ with _LOGGER_LOCK:
147
+ if _THIRD_PARTY_LOGGERS_CONFIGURED:
148
+ return
149
+
150
+ for name in THIRD_PARTY_LOGGER_NAMES:
151
+ third_party_logger = logging.getLogger(name)
152
+ third_party_logger.handlers = logger.handlers
153
+ third_party_logger.setLevel(logger.level)
154
+ third_party_logger.propagate = logger.propagate
155
+
156
+ _THIRD_PARTY_LOGGERS_CONFIGURED = True
157
+
158
+
159
+ _configure_third_party_loggers()
160
+
161
+
162
+ class LoggerManager:
163
+ """A singleton class to manage logging configuration.
164
+
165
+ This class is deprecated and will be removed in a future version.
166
+ Use get_logger() function directly instead.
167
+ """
168
+
169
+ _instance = None
170
+ _lock = threading.Lock()
171
+
172
+ def __new__(cls):
173
+ """Initialize the singleton instance."""
174
+ warnings.warn(
175
+ "LoggerManager is deprecated and will be removed in a future version. "
176
+ "Use get_logger() function directly instead.",
177
+ DeprecationWarning,
178
+ stacklevel=2,
179
+ )
180
+ with cls._lock:
181
+ if cls._instance is None:
182
+ cls._instance = super().__new__(cls)
183
+ return cls._instance
184
+
185
+ def get_logger(self, name: str = LOGGER_NAME, level: int = LOG_LEVEL) -> logging.Logger:
186
+ """Get a logger instance.
187
+
188
+ Args:
189
+ name (str): The name of the logger. Defaults to AIPAgentsLogger.
190
+ level (int): The level of the logger. Defaults to INFO.
191
+
192
+ Returns:
193
+ logging.Logger: The logger instance.
194
+ """
195
+ return get_logger(name, level)
@@ -0,0 +1,60 @@
1
+ import logging
2
+ from _typeshed import Incomplete
3
+
4
+ LOGGER_NAME: str
5
+ LOG_LEVEL: Incomplete
6
+
7
+ class _GoogleAdkLogFilter(logging.Filter):
8
+ """Suppress noisy Google ADK model registry logs.
9
+
10
+ Google ADK emits a burst of INFO logs when registering Gemini model patterns.
11
+ They are redundant (class is unchanged) and clutter our startup output, so we
12
+ drop them at the logging infrastructure level instead of touching ADK internals.
13
+ """
14
+ SUPPRESSED_PREFIX: str
15
+ def filter(self, record: logging.LogRecord) -> bool:
16
+ """Return False when the log should be discarded.
17
+
18
+ Args:
19
+ record (logging.LogRecord): The log record to filter.
20
+
21
+ Returns:
22
+ bool: True if the log should be processed, False if it should be discarded.
23
+ """
24
+
25
+ LOG_FILTERS: Incomplete
26
+ logger_manager: Incomplete
27
+ root_logger: Incomplete
28
+
29
+ def get_logger(name: str = ..., level: int = ...) -> logging.Logger:
30
+ """Get a logger instance.
31
+
32
+ Args:
33
+ name (str): The name of the logger. Defaults to AIPAgentsLogger.
34
+ level (int): The level of the logger. Defaults to INFO.
35
+
36
+ Returns:
37
+ logging.Logger: The logger instance.
38
+ """
39
+
40
+ logger: Incomplete
41
+ THIRD_PARTY_LOGGER_NAMES: Incomplete
42
+
43
+ class LoggerManager:
44
+ """A singleton class to manage logging configuration.
45
+
46
+ This class is deprecated and will be removed in a future version.
47
+ Use get_logger() function directly instead.
48
+ """
49
+ def __new__(cls):
50
+ """Initialize the singleton instance."""
51
+ def get_logger(self, name: str = ..., level: int = ...) -> logging.Logger:
52
+ """Get a logger instance.
53
+
54
+ Args:
55
+ name (str): The name of the logger. Defaults to AIPAgentsLogger.
56
+ level (int): The level of the logger. Defaults to INFO.
57
+
58
+ Returns:
59
+ logging.Logger: The logger instance.
60
+ """
@@ -0,0 +1,27 @@
1
+ """Metadata utilities module.
2
+
3
+ This module contains utilities for creating and handling metadata for A2A communication.
4
+
5
+ Authors:
6
+ Fachriza Adhiatma (fachriza.d.adhiatma@gdplabs.id)
7
+ """
8
+
9
+ from aip_agents.utils.metadata.activity_metadata_helper import (
10
+ DEFAULT_ACTIVITY_INFO,
11
+ _format_tool_or_subagent_name,
12
+ create_tool_activity_info,
13
+ )
14
+ from aip_agents.utils.metadata.schemas import Activity, ActivityDataType, Thinking
15
+ from aip_agents.utils.metadata.thinking_metadata_helper import (
16
+ FINAL_THINKING_INFO,
17
+ )
18
+
19
+ __all__ = [
20
+ "Activity",
21
+ "ActivityDataType",
22
+ "Thinking",
23
+ "create_tool_activity_info",
24
+ "DEFAULT_ACTIVITY_INFO",
25
+ "_format_tool_or_subagent_name",
26
+ "FINAL_THINKING_INFO",
27
+ ]
@@ -0,0 +1,5 @@
1
+ from aip_agents.utils.metadata.activity_metadata_helper import DEFAULT_ACTIVITY_INFO as DEFAULT_ACTIVITY_INFO, _format_tool_or_subagent_name as _format_tool_or_subagent_name, create_tool_activity_info as create_tool_activity_info
2
+ from aip_agents.utils.metadata.schemas import Activity as Activity, ActivityDataType as ActivityDataType, Thinking as Thinking
3
+ from aip_agents.utils.metadata.thinking_metadata_helper import FINAL_THINKING_INFO as FINAL_THINKING_INFO
4
+
5
+ __all__ = ['Activity', 'ActivityDataType', 'Thinking', 'create_tool_activity_info', 'DEFAULT_ACTIVITY_INFO', '_format_tool_or_subagent_name', 'FINAL_THINKING_INFO']