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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) 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 +1 -1
  5. aip_agents/a2a/server/__init__.py +10 -0
  6. aip_agents/a2a/server/base_executor.py +1086 -0
  7. aip_agents/a2a/server/base_executor.pyi +16 -6
  8. aip_agents/a2a/server/google_adk_executor.py +198 -0
  9. aip_agents/a2a/server/google_adk_executor.pyi +11 -11
  10. aip_agents/a2a/server/langflow_executor.py +180 -0
  11. aip_agents/a2a/server/langflow_executor.pyi +43 -0
  12. aip_agents/a2a/server/langgraph_executor.py +267 -0
  13. aip_agents/a2a/server/langgraph_executor.pyi +11 -12
  14. aip_agents/a2a/types.py +232 -0
  15. aip_agents/a2a/types.pyi +54 -47
  16. aip_agents/agent/__init__.py +27 -0
  17. aip_agents/agent/__init__.pyi +3 -1
  18. aip_agents/agent/base_agent.py +970 -0
  19. aip_agents/agent/base_agent.pyi +24 -8
  20. aip_agents/agent/base_langgraph_agent.py +2942 -0
  21. aip_agents/agent/base_langgraph_agent.pyi +93 -25
  22. aip_agents/agent/google_adk_agent.py +926 -0
  23. aip_agents/agent/google_adk_agent.pyi +34 -21
  24. aip_agents/agent/google_adk_constants.py +6 -0
  25. aip_agents/agent/google_adk_constants.pyi +3 -0
  26. aip_agents/agent/hitl/__init__.py +24 -0
  27. aip_agents/agent/hitl/__init__.pyi +6 -0
  28. aip_agents/agent/hitl/config.py +28 -0
  29. aip_agents/agent/hitl/config.pyi +15 -0
  30. aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
  31. aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
  32. aip_agents/agent/hitl/manager.py +522 -0
  33. aip_agents/agent/hitl/manager.pyi +199 -0
  34. aip_agents/agent/hitl/models.py +18 -0
  35. aip_agents/agent/hitl/models.pyi +3 -0
  36. aip_agents/agent/hitl/prompt/__init__.py +9 -0
  37. aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
  38. aip_agents/agent/hitl/prompt/base.py +42 -0
  39. aip_agents/agent/hitl/prompt/base.pyi +24 -0
  40. aip_agents/agent/hitl/prompt/deferred.py +73 -0
  41. aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
  42. aip_agents/agent/interface.py +138 -0
  43. aip_agents/agent/interface.pyi +5 -5
  44. aip_agents/agent/interfaces.py +65 -0
  45. aip_agents/agent/interfaces.pyi +44 -0
  46. aip_agents/agent/langflow_agent.py +464 -0
  47. aip_agents/agent/langflow_agent.pyi +133 -0
  48. aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
  49. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +49 -0
  50. aip_agents/agent/langgraph_react_agent.py +2514 -0
  51. aip_agents/agent/langgraph_react_agent.pyi +51 -56
  52. aip_agents/agent/system_instruction_context.py +34 -0
  53. aip_agents/agent/system_instruction_context.pyi +13 -0
  54. aip_agents/clients/__init__.py +10 -0
  55. aip_agents/clients/__init__.pyi +4 -0
  56. aip_agents/clients/langflow/__init__.py +10 -0
  57. aip_agents/clients/langflow/__init__.pyi +4 -0
  58. aip_agents/clients/langflow/client.py +477 -0
  59. aip_agents/clients/langflow/client.pyi +140 -0
  60. aip_agents/clients/langflow/types.py +18 -0
  61. aip_agents/clients/langflow/types.pyi +7 -0
  62. aip_agents/constants.py +23 -0
  63. aip_agents/constants.pyi +1 -0
  64. aip_agents/credentials/manager.py +132 -0
  65. aip_agents/examples/__init__.py +5 -0
  66. aip_agents/examples/compare_streaming_client.py +783 -0
  67. aip_agents/examples/compare_streaming_client.pyi +48 -0
  68. aip_agents/examples/compare_streaming_server.py +142 -0
  69. aip_agents/examples/compare_streaming_server.pyi +18 -0
  70. aip_agents/examples/demo_memory_recall.py +401 -0
  71. aip_agents/examples/demo_memory_recall.pyi +58 -0
  72. aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
  73. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +2 -2
  74. aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
  75. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +2 -2
  76. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
  77. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +2 -2
  78. aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
  79. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +7 -2
  80. aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
  81. aip_agents/examples/hello_world_a2a_langchain_client.pyi +1 -1
  82. aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
  83. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +1 -1
  84. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
  85. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +1 -1
  86. aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
  87. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +1 -1
  88. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
  89. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +1 -1
  90. aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
  91. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +8 -3
  92. aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
  93. aip_agents/examples/hello_world_a2a_langchain_server.pyi +7 -2
  94. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
  95. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +7 -2
  96. aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
  97. aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
  98. aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
  99. aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
  100. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
  101. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +1 -1
  102. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
  103. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +1 -1
  104. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
  105. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +7 -2
  106. aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
  107. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +2 -2
  108. aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
  109. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +2 -2
  110. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
  111. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +1 -1
  112. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
  113. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +3 -3
  114. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
  115. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +1 -1
  116. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
  117. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +1 -1
  118. aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
  119. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +7 -2
  120. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
  121. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +7 -2
  122. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
  123. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +7 -2
  124. aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
  125. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +1 -1
  126. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
  127. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +31 -6
  128. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
  129. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +33 -5
  130. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
  131. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +1 -1
  132. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
  133. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +7 -2
  134. aip_agents/examples/hello_world_google_adk.py +41 -0
  135. aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
  136. aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
  137. aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
  138. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
  139. aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
  140. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
  141. aip_agents/examples/hello_world_google_adk_stream.py +44 -0
  142. aip_agents/examples/hello_world_langchain.py +28 -0
  143. aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
  144. aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
  145. aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
  146. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
  147. aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
  148. aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
  149. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
  150. aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
  151. aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
  152. aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
  153. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
  154. aip_agents/examples/hello_world_langchain_stream.py +36 -0
  155. aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
  156. aip_agents/examples/hello_world_langflow_agent.py +163 -0
  157. aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
  158. aip_agents/examples/hello_world_langgraph.py +39 -0
  159. aip_agents/examples/hello_world_langgraph_bosa_twitter.py +41 -0
  160. aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
  161. aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
  162. aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
  163. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
  164. aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
  165. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
  166. aip_agents/examples/hello_world_langgraph_stream.py +43 -0
  167. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
  168. aip_agents/examples/hello_world_model_switch_cli.py +210 -0
  169. aip_agents/examples/hello_world_model_switch_cli.pyi +18 -3
  170. aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
  171. aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
  172. aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
  173. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
  174. aip_agents/examples/hello_world_pii_logger.py +21 -0
  175. aip_agents/examples/hello_world_pii_logger.pyi +1 -1
  176. aip_agents/examples/hello_world_sentry.py +133 -0
  177. aip_agents/examples/hello_world_sentry.pyi +1 -1
  178. aip_agents/examples/hello_world_step_limits.py +273 -0
  179. aip_agents/examples/hello_world_step_limits.pyi +17 -0
  180. aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
  181. aip_agents/examples/hello_world_stock_a2a_server.pyi +7 -2
  182. aip_agents/examples/hello_world_tool_output_client.py +46 -0
  183. aip_agents/examples/hello_world_tool_output_client.pyi +1 -1
  184. aip_agents/examples/hello_world_tool_output_server.py +114 -0
  185. aip_agents/examples/hello_world_tool_output_server.pyi +7 -2
  186. aip_agents/examples/hitl_demo.py +724 -0
  187. aip_agents/examples/hitl_demo.pyi +67 -0
  188. aip_agents/examples/mcp_configs/configs.py +63 -0
  189. aip_agents/examples/mcp_servers/common.py +76 -0
  190. aip_agents/examples/mcp_servers/mcp_name.py +29 -0
  191. aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
  192. aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
  193. aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
  194. aip_agents/examples/mcp_servers/mcp_time.py +10 -0
  195. aip_agents/examples/pii_demo_langgraph_client.py +69 -0
  196. aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
  197. aip_agents/examples/pii_demo_langgraph_server.py +126 -0
  198. aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
  199. aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
  200. aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
  201. aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
  202. aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
  203. aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
  204. aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
  205. aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
  206. aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
  207. aip_agents/examples/tools/__init__.py +27 -0
  208. aip_agents/examples/tools/__init__.pyi +3 -1
  209. aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
  210. aip_agents/examples/tools/adk_weather_tool.py +60 -0
  211. aip_agents/examples/tools/adk_weather_tool.pyi +1 -1
  212. aip_agents/examples/tools/data_generator_tool.py +103 -0
  213. aip_agents/examples/tools/data_visualization_tool.py +312 -0
  214. aip_agents/examples/tools/data_visualization_tool.pyi +2 -0
  215. aip_agents/examples/tools/image_artifact_tool.py +136 -0
  216. aip_agents/examples/tools/image_artifact_tool.pyi +2 -0
  217. aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
  218. aip_agents/examples/tools/langchain_arithmetic_tools.pyi +7 -0
  219. aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
  220. aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -1
  221. aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
  222. aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +2 -0
  223. aip_agents/examples/tools/langchain_weather_tool.py +48 -0
  224. aip_agents/examples/tools/langchain_weather_tool.pyi +1 -1
  225. aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
  226. aip_agents/examples/tools/langgraph_streaming_tool.pyi +1 -1
  227. aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
  228. aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
  229. aip_agents/examples/tools/pii_demo_tools.py +189 -0
  230. aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
  231. aip_agents/examples/tools/random_chart_tool.py +142 -0
  232. aip_agents/examples/tools/random_chart_tool.pyi +20 -0
  233. aip_agents/examples/tools/serper_tool.py +202 -0
  234. aip_agents/examples/tools/stock_tools.py +82 -0
  235. aip_agents/examples/tools/stock_tools.pyi +18 -3
  236. aip_agents/examples/tools/table_generator_tool.py +167 -0
  237. aip_agents/examples/tools/time_tool.py +82 -0
  238. aip_agents/examples/tools/weather_forecast_tool.py +38 -0
  239. aip_agents/executor/agent_executor.py +473 -0
  240. aip_agents/executor/base.py +48 -0
  241. aip_agents/mcp/__init__.py +1 -0
  242. aip_agents/mcp/client/__init__.py +14 -0
  243. aip_agents/mcp/client/__init__.pyi +4 -3
  244. aip_agents/mcp/client/base_mcp_client.py +369 -0
  245. aip_agents/mcp/client/base_mcp_client.pyi +148 -0
  246. aip_agents/mcp/client/connection_manager.py +193 -0
  247. aip_agents/mcp/client/connection_manager.pyi +48 -0
  248. aip_agents/mcp/client/google_adk/__init__.py +11 -0
  249. aip_agents/mcp/client/google_adk/__init__.pyi +1 -1
  250. aip_agents/mcp/client/google_adk/client.py +381 -0
  251. aip_agents/mcp/client/google_adk/client.pyi +50 -13
  252. aip_agents/mcp/client/langchain/__init__.py +11 -0
  253. aip_agents/mcp/client/langchain/__init__.pyi +1 -1
  254. aip_agents/mcp/client/langchain/client.py +265 -0
  255. aip_agents/mcp/client/langchain/client.pyi +47 -2
  256. aip_agents/mcp/client/persistent_session.py +359 -0
  257. aip_agents/mcp/client/persistent_session.pyi +113 -0
  258. aip_agents/mcp/client/session_pool.py +351 -0
  259. aip_agents/mcp/client/session_pool.pyi +101 -0
  260. aip_agents/mcp/client/transports.py +215 -0
  261. aip_agents/mcp/client/transports.pyi +123 -0
  262. aip_agents/mcp/utils/__init__.py +7 -0
  263. aip_agents/mcp/utils/__init__.pyi +0 -0
  264. aip_agents/mcp/utils/config_validator.py +139 -0
  265. aip_agents/mcp/utils/config_validator.pyi +82 -0
  266. aip_agents/memory/__init__.py +14 -0
  267. aip_agents/memory/__init__.pyi +5 -0
  268. aip_agents/memory/adapters/__init__.py +10 -0
  269. aip_agents/memory/adapters/__init__.pyi +4 -0
  270. aip_agents/memory/adapters/base_adapter.py +717 -0
  271. aip_agents/memory/adapters/base_adapter.pyi +150 -0
  272. aip_agents/memory/adapters/mem0.py +84 -0
  273. aip_agents/memory/adapters/mem0.pyi +22 -0
  274. aip_agents/memory/base.py +84 -0
  275. aip_agents/memory/base.pyi +15 -4
  276. aip_agents/memory/constants.py +49 -0
  277. aip_agents/memory/constants.pyi +25 -0
  278. aip_agents/memory/factory.py +86 -0
  279. aip_agents/memory/factory.pyi +24 -0
  280. aip_agents/memory/guidance.py +20 -0
  281. aip_agents/memory/guidance.pyi +3 -0
  282. aip_agents/memory/simple_memory.py +47 -0
  283. aip_agents/memory/simple_memory.pyi +6 -5
  284. aip_agents/middleware/__init__.py +17 -0
  285. aip_agents/middleware/__init__.pyi +5 -0
  286. aip_agents/middleware/base.py +88 -0
  287. aip_agents/middleware/base.pyi +71 -0
  288. aip_agents/middleware/manager.py +128 -0
  289. aip_agents/middleware/manager.pyi +80 -0
  290. aip_agents/middleware/todolist.py +274 -0
  291. aip_agents/middleware/todolist.pyi +125 -0
  292. aip_agents/schema/__init__.py +69 -0
  293. aip_agents/schema/__init__.pyi +9 -0
  294. aip_agents/schema/a2a.py +56 -0
  295. aip_agents/schema/a2a.pyi +40 -0
  296. aip_agents/schema/agent.py +111 -0
  297. aip_agents/schema/agent.pyi +65 -0
  298. aip_agents/schema/hitl.py +157 -0
  299. aip_agents/schema/hitl.pyi +89 -0
  300. aip_agents/schema/langgraph.py +37 -0
  301. aip_agents/schema/langgraph.pyi +28 -0
  302. aip_agents/schema/model_id.py +97 -0
  303. aip_agents/schema/model_id.pyi +54 -0
  304. aip_agents/schema/step_limit.py +108 -0
  305. aip_agents/schema/step_limit.pyi +63 -0
  306. aip_agents/schema/storage.py +40 -0
  307. aip_agents/schema/storage.pyi +21 -0
  308. aip_agents/sentry/__init__.py +11 -0
  309. aip_agents/sentry/__init__.pyi +1 -1
  310. aip_agents/sentry/sentry.py +151 -0
  311. aip_agents/sentry/sentry.pyi +2 -2
  312. aip_agents/storage/__init__.py +41 -0
  313. aip_agents/storage/base.py +85 -0
  314. aip_agents/storage/base.pyi +1 -2
  315. aip_agents/storage/clients/__init__.py +12 -0
  316. aip_agents/storage/clients/minio_client.py +318 -0
  317. aip_agents/storage/config.py +62 -0
  318. aip_agents/storage/config.pyi +9 -46
  319. aip_agents/storage/providers/__init__.py +15 -0
  320. aip_agents/storage/providers/base.py +106 -0
  321. aip_agents/storage/providers/base.pyi +2 -3
  322. aip_agents/storage/providers/memory.py +114 -0
  323. aip_agents/storage/providers/object_storage.py +214 -0
  324. aip_agents/storage/providers/object_storage.pyi +1 -1
  325. aip_agents/tools/__init__.py +6 -0
  326. aip_agents/tools/__init__.pyi +3 -2
  327. aip_agents/tools/bosa_tools.py +105 -0
  328. aip_agents/tools/bosa_tools.pyi +2 -2
  329. aip_agents/tools/browser_use/__init__.py +82 -0
  330. aip_agents/tools/browser_use/__init__.pyi +14 -0
  331. aip_agents/tools/browser_use/action_parser.py +103 -0
  332. aip_agents/tools/browser_use/action_parser.pyi +18 -0
  333. aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
  334. aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
  335. aip_agents/tools/browser_use/llm_config.py +120 -0
  336. aip_agents/tools/browser_use/llm_config.pyi +52 -0
  337. aip_agents/tools/browser_use/minio_storage.py +198 -0
  338. aip_agents/tools/browser_use/minio_storage.pyi +109 -0
  339. aip_agents/tools/browser_use/schemas.py +119 -0
  340. aip_agents/tools/browser_use/schemas.pyi +32 -0
  341. aip_agents/tools/browser_use/session.py +76 -0
  342. aip_agents/tools/browser_use/session.pyi +4 -0
  343. aip_agents/tools/browser_use/session_errors.py +132 -0
  344. aip_agents/tools/browser_use/session_errors.pyi +53 -0
  345. aip_agents/tools/browser_use/steel_session_recording.py +317 -0
  346. aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
  347. aip_agents/tools/browser_use/streaming.py +813 -0
  348. aip_agents/tools/browser_use/streaming.pyi +81 -0
  349. aip_agents/tools/browser_use/structured_data_parser.py +257 -0
  350. aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
  351. aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
  352. aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
  353. aip_agents/tools/browser_use/types.py +78 -0
  354. aip_agents/tools/browser_use/types.pyi +45 -0
  355. aip_agents/tools/code_sandbox/__init__.py +26 -0
  356. aip_agents/tools/code_sandbox/__init__.pyi +3 -0
  357. aip_agents/tools/code_sandbox/constant.py +13 -0
  358. aip_agents/tools/code_sandbox/constant.pyi +4 -0
  359. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +257 -0
  360. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +86 -0
  361. aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
  362. aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
  363. aip_agents/tools/constants.py +165 -0
  364. aip_agents/tools/constants.pyi +105 -100
  365. aip_agents/tools/document_loader/__init__.py +37 -0
  366. aip_agents/tools/document_loader/__init__.pyi +7 -0
  367. aip_agents/tools/document_loader/base_reader.py +262 -0
  368. aip_agents/tools/document_loader/base_reader.pyi +62 -0
  369. aip_agents/tools/document_loader/docx_reader_tool.py +53 -0
  370. aip_agents/tools/document_loader/docx_reader_tool.pyi +6 -0
  371. aip_agents/tools/document_loader/excel_reader_tool.py +160 -0
  372. aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
  373. aip_agents/tools/document_loader/pdf_reader_tool.py +67 -0
  374. aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
  375. aip_agents/tools/document_loader/pdf_splitter.py +169 -0
  376. aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
  377. aip_agents/tools/gl_connector/__init__.py +5 -0
  378. aip_agents/tools/gl_connector/__init__.pyi +3 -0
  379. aip_agents/tools/gl_connector/tool.py +351 -0
  380. aip_agents/tools/gl_connector/tool.pyi +74 -0
  381. aip_agents/tools/memory_search/__init__.py +22 -0
  382. aip_agents/tools/memory_search/__init__.pyi +5 -0
  383. aip_agents/tools/memory_search/base.py +200 -0
  384. aip_agents/tools/memory_search/base.pyi +69 -0
  385. aip_agents/tools/memory_search/mem0.py +258 -0
  386. aip_agents/tools/memory_search/mem0.pyi +19 -0
  387. aip_agents/tools/memory_search/schema.py +48 -0
  388. aip_agents/tools/memory_search/schema.pyi +15 -0
  389. aip_agents/tools/memory_search_tool.py +26 -0
  390. aip_agents/tools/memory_search_tool.pyi +3 -0
  391. aip_agents/tools/tool_config_injector.py +300 -0
  392. aip_agents/tools/web_search/__init__.py +15 -0
  393. aip_agents/tools/web_search/__init__.pyi +3 -0
  394. aip_agents/tools/web_search/serper_tool.py +187 -0
  395. aip_agents/tools/web_search/serper_tool.pyi +19 -0
  396. aip_agents/types/__init__.py +70 -0
  397. aip_agents/types/__init__.pyi +35 -2
  398. aip_agents/types/a2a_events.py +13 -0
  399. aip_agents/types/a2a_events.pyi +2 -73
  400. aip_agents/utils/__init__.py +79 -0
  401. aip_agents/utils/__init__.pyi +8 -2
  402. aip_agents/utils/a2a_connector.py +1757 -0
  403. aip_agents/utils/a2a_connector.pyi +15 -4
  404. aip_agents/utils/artifact_helpers.py +502 -0
  405. aip_agents/utils/artifact_helpers.pyi +26 -2
  406. aip_agents/utils/constants.py +22 -0
  407. aip_agents/utils/constants.pyi +10 -0
  408. aip_agents/utils/datetime/__init__.py +34 -0
  409. aip_agents/utils/datetime/__init__.pyi +4 -0
  410. aip_agents/utils/datetime/normalization.py +231 -0
  411. aip_agents/utils/datetime/normalization.pyi +95 -0
  412. aip_agents/utils/datetime/timezone.py +206 -0
  413. aip_agents/utils/datetime/timezone.pyi +48 -0
  414. aip_agents/utils/env_loader.py +27 -0
  415. aip_agents/utils/env_loader.pyi +10 -0
  416. aip_agents/utils/event_handler_registry.py +58 -0
  417. aip_agents/utils/event_handler_registry.pyi +23 -0
  418. aip_agents/utils/file_prompt_utils.py +176 -0
  419. aip_agents/utils/file_prompt_utils.pyi +21 -0
  420. aip_agents/utils/final_response_builder.py +211 -0
  421. aip_agents/utils/final_response_builder.pyi +34 -0
  422. aip_agents/utils/formatter_llm_client.py +231 -0
  423. aip_agents/utils/formatter_llm_client.pyi +71 -0
  424. aip_agents/utils/langgraph/__init__.py +19 -0
  425. aip_agents/utils/langgraph/converter.py +128 -0
  426. aip_agents/utils/langgraph/converter.pyi +1 -1
  427. aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
  428. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
  429. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +2 -2
  430. aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
  431. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +2 -3
  432. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
  433. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +17 -11
  434. aip_agents/utils/langgraph/tool_output_management.py +967 -0
  435. aip_agents/utils/langgraph/tool_output_management.pyi +15 -33
  436. aip_agents/utils/logger.py +195 -0
  437. aip_agents/utils/logger.pyi +60 -0
  438. aip_agents/utils/metadata/__init__.py +27 -0
  439. aip_agents/utils/metadata/__init__.pyi +5 -0
  440. aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
  441. aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
  442. aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
  443. aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
  444. aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
  445. aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
  446. aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
  447. aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
  448. aip_agents/utils/metadata/activity_narrative/context.py +49 -0
  449. aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
  450. aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
  451. aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
  452. aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
  453. aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
  454. aip_agents/utils/metadata/schemas/__init__.py +16 -0
  455. aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
  456. aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
  457. aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
  458. aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
  459. aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
  460. aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
  461. aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
  462. aip_agents/utils/metadata_helper.py +358 -0
  463. aip_agents/utils/metadata_helper.pyi +55 -48
  464. aip_agents/utils/name_preprocessor/__init__.py +17 -0
  465. aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
  466. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +1 -2
  467. aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
  468. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +1 -1
  469. aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
  470. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +4 -4
  471. aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
  472. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +1 -1
  473. aip_agents/utils/pii/__init__.py +25 -0
  474. aip_agents/utils/pii/__init__.pyi +5 -0
  475. aip_agents/utils/pii/pii_handler.py +397 -0
  476. aip_agents/utils/pii/pii_handler.pyi +96 -0
  477. aip_agents/utils/pii/pii_helper.py +207 -0
  478. aip_agents/utils/pii/pii_helper.pyi +78 -0
  479. aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
  480. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
  481. aip_agents/utils/reference_helper.py +273 -0
  482. aip_agents/utils/reference_helper.pyi +38 -6
  483. aip_agents/utils/sse_chunk_transformer.py +831 -0
  484. aip_agents/utils/sse_chunk_transformer.pyi +166 -0
  485. aip_agents/utils/step_limit_manager.py +265 -0
  486. aip_agents/utils/step_limit_manager.pyi +112 -0
  487. aip_agents/utils/token_usage_helper.py +156 -0
  488. aip_agents/utils/token_usage_helper.pyi +1 -1
  489. aip_agents_binary-0.5.11.dist-info/METADATA +689 -0
  490. aip_agents_binary-0.5.11.dist-info/RECORD +542 -0
  491. {aip_agents_binary-0.0.0b2.dist-info → aip_agents_binary-0.5.11.dist-info}/WHEEL +2 -1
  492. aip_agents_binary-0.5.11.dist-info/top_level.txt +1 -0
  493. aip_agents/agent/types.pyi +0 -106
  494. aip_agents/examples/hello_world_a2a_multi_agent_coordinator_client.pyi +0 -15
  495. aip_agents/examples/hello_world_a2a_multi_agent_coordinator_client_streaming.pyi +0 -5
  496. aip_agents/examples/hello_world_a2a_multi_agent_coordinator_server.pyi +0 -11
  497. aip_agents/examples/hello_world_langgraph_bosa.pyi +0 -5
  498. aip_agents/examples/tools/pr_details_bosa_tool.pyi +0 -26
  499. aip_agents/tools/base.pyi +0 -44
  500. aip_agents/tools/base_bosa_tools.pyi +0 -12
  501. aip_agents/tools/bosa_connector.pyi +0 -30
  502. aip_agents/tools/bosa_tools_interface.pyi +0 -26
  503. aip_agents/tools/nested_agent_tool.pyi +0 -45
  504. aip_agents/utils/logger_manager.pyi +0 -151
  505. aip_agents_binary-0.0.0b2.dist-info/METADATA +0 -277
  506. aip_agents_binary-0.0.0b2.dist-info/RECORD +0 -157
@@ -1,129 +1,134 @@
1
1
  from _typeshed import Incomplete
2
- from enum import Enum
2
+ from enum import Enum, StrEnum
3
3
 
4
4
  BOSA_API_BASE_URL: Incomplete
5
5
  BOSA_API_KEY: Incomplete
6
6
  BOSA_FETCH_MAX_RETRIES: int
7
7
 
8
+ class ToolType(StrEnum):
9
+ """Tool types for BOSA Connector."""
10
+ GLLM: str
11
+ LANGCHAIN: str
12
+
8
13
  class Action(Enum):
9
14
  """Actions for BOSA Connector."""
10
- GITHUB = 'github'
11
- GOOGLE = 'google'
12
- GOOGLE_DRIVE = 'google_drive'
13
- GOOGLE_MAIL = 'google_mail'
14
- TWITTER = 'twitter'
15
+ GITHUB: str
16
+ GOOGLE: str
17
+ GOOGLE_DRIVE: str
18
+ GOOGLE_MAIL: str
19
+ TWITTER: str
15
20
 
16
21
  class GitHubEndpoint(Enum):
17
22
  """GitHub endpoints for BOSA Connector."""
18
- INTEGRATIONS = 'integrations'
19
- USER_HAS_INTEGRATION = 'integration-exists'
20
- SUCCESS_AUTHORIZE_CALLBACK = 'success-authorize-callback'
21
- CREATE_ISSUE_HANDLER = 'create_issue'
22
- GET_ISSUE_HANDLER = 'get_issue'
23
- LIST_ISSUES = 'list_issues'
24
- LIST_ISSUES_COMMENTS = 'list_issues_comments'
25
- SEARCH_ALL_ISSUES = 'search_issues'
26
- GET_COMMITS = 'list_commits'
27
- SEARCH_COMMITS = 'search_commits'
28
- GET_COLLABORATORS = 'list_collaborators'
29
- GET_RELEASES = 'list_releases'
30
- GET_CONTRIBUTORS = 'list_contributors'
31
- GET_LANGUAGES = 'list_languages'
32
- SEARCH_CONTRIBUTIONS = 'search_contributions'
33
- LIST_PULL_REQUESTS = 'list_pull_requests'
34
- SEARCH_PR = 'search_pull_requests'
35
- GET_PULL = 'get_pull'
36
- GET_ALL_CONTRIBUTOR_COMMIT_ACTIVITIES = 'get_all_contributor_commit_activities'
37
- GET_COMMIT_ACTIVITY = 'get_the_last_year_of_commit_activity'
38
- GET_WEEKLY_COMMIT_COUNTS = 'get_weekly_commit_count '
39
- GET_USER_CONTRIBUTION_STATISTICS = 'get_user_contribution_statistics'
40
- LIST_PROJECT_ITEMS = 'list_project_items'
41
- LIST_PROJECTS = 'list_projects'
23
+ INTEGRATIONS: str
24
+ USER_HAS_INTEGRATION: str
25
+ SUCCESS_AUTHORIZE_CALLBACK: str
26
+ CREATE_ISSUE_HANDLER: str
27
+ GET_ISSUE_HANDLER: str
28
+ LIST_ISSUES: str
29
+ LIST_ISSUES_COMMENTS: str
30
+ SEARCH_ALL_ISSUES: str
31
+ GET_COMMITS: str
32
+ SEARCH_COMMITS: str
33
+ GET_COLLABORATORS: str
34
+ GET_RELEASES: str
35
+ GET_CONTRIBUTORS: str
36
+ GET_LANGUAGES: str
37
+ SEARCH_CONTRIBUTIONS: str
38
+ LIST_PULL_REQUESTS: str
39
+ SEARCH_PR: str
40
+ GET_PULL: str
41
+ GET_ALL_CONTRIBUTOR_COMMIT_ACTIVITIES: str
42
+ GET_COMMIT_ACTIVITY: str
43
+ GET_WEEKLY_COMMIT_COUNTS: str
44
+ GET_USER_CONTRIBUTION_STATISTICS: str
45
+ LIST_PROJECT_ITEMS: str
46
+ LIST_PROJECTS: str
42
47
 
43
48
  class GoogleDriveEndpoint(Enum):
44
49
  """Google Drive endpoints for BOSA Connector."""
45
- INTEGRATIONS = 'integrations'
46
- USER_HAS_INTEGRATION = 'integration-exists'
47
- SUCCESS_AUTHORIZE_CALLBACK = 'success-authorize-callback'
48
- SEARCH_FILES = 'search_files'
49
- GET_FILE = 'get_file'
50
- CREATE_FILE = 'create_file'
51
- CREATE_FOLDER = 'create_folder'
52
- UPDATE_FILE = 'update_file'
53
- UPDATE_FOLDER = 'update_folder'
54
- COPY_FILE = 'copy_file'
55
- DELETE_FILE = 'delete_file'
56
- SUMMARIZE_FOLDER_FILES_BY_TYPE = 'summarize_folder_files_by_type'
57
- SUMMARIZE_TOTAL_FILES_BY_TYPE = 'summarize_total_files_by_type'
58
- RECENT_FILES = 'list_recent_files_from_yesterday'
59
- CREATE_PERMISSION = 'create_permission'
60
- LIST_PERMISSIONS = 'list_permissions'
61
- GET_PERMISSION = 'get_permission'
62
- UPDATE_PERMISSION = 'update_permission'
63
- DELETE_PERMISSION = 'delete_permission'
64
- DOWNLOAD_FILE = 'download_file'
50
+ INTEGRATIONS: str
51
+ USER_HAS_INTEGRATION: str
52
+ SUCCESS_AUTHORIZE_CALLBACK: str
53
+ SEARCH_FILES: str
54
+ GET_FILE: str
55
+ CREATE_FILE: str
56
+ CREATE_FOLDER: str
57
+ UPDATE_FILE: str
58
+ UPDATE_FOLDER: str
59
+ COPY_FILE: str
60
+ DELETE_FILE: str
61
+ SUMMARIZE_FOLDER_FILES_BY_TYPE: str
62
+ SUMMARIZE_TOTAL_FILES_BY_TYPE: str
63
+ RECENT_FILES: str
64
+ CREATE_PERMISSION: str
65
+ LIST_PERMISSIONS: str
66
+ GET_PERMISSION: str
67
+ UPDATE_PERMISSION: str
68
+ DELETE_PERMISSION: str
69
+ DOWNLOAD_FILE: str
65
70
 
66
71
  class GoogleDocsEndpoint(Enum):
67
72
  """Google Docs endpoints for BOSA Connector."""
68
- INTEGRATIONS = 'integrations'
69
- USER_HAS_INTEGRATION = 'integration-exists'
70
- SUCCESS_AUTHORIZE_CALLBACK = 'success-authorize-callback'
71
- GET_DOCUMENT = 'get_document'
72
- LIST_DOCUMENTS = 'list_documents'
73
- CREATE_DOCUMENT = 'create_document'
74
- UPDATE_DOCUMENT = 'update_document'
75
- COPY_CONTENT = 'copy_content'
76
- UPDATE_DOCUMENT_MARKDOWN = 'update_document_markdown'
77
- LIST_COMMENTS = 'list_comments'
78
- SUMMARIZE_COMMENTS = 'summarize_comments'
73
+ INTEGRATIONS: str
74
+ USER_HAS_INTEGRATION: str
75
+ SUCCESS_AUTHORIZE_CALLBACK: str
76
+ GET_DOCUMENT: str
77
+ LIST_DOCUMENTS: str
78
+ CREATE_DOCUMENT: str
79
+ UPDATE_DOCUMENT: str
80
+ COPY_CONTENT: str
81
+ UPDATE_DOCUMENT_MARKDOWN: str
82
+ LIST_COMMENTS: str
83
+ SUMMARIZE_COMMENTS: str
79
84
 
80
85
  class GoogleEndpoint(Enum):
81
86
  """Google endpoints for BOSA Connector."""
82
- INTEGRATIONS = 'integrations'
83
- USER_HAS_INTEGRATION = 'integration-exists'
84
- SUCCESS_AUTHORIZE_CALLBACK = 'success-authorize-callback'
85
- USERINFO = 'userinfo'
87
+ INTEGRATIONS: str
88
+ USER_HAS_INTEGRATION: str
89
+ SUCCESS_AUTHORIZE_CALLBACK: str
90
+ USERINFO: str
86
91
 
87
92
  class TwitterEndpoint(Enum):
88
93
  """Twitter endpoints for BOSA Connector."""
89
- INTEGRATIONS = 'integrations'
90
- USER_HAS_INTEGRATION = 'integration-exists'
91
- SUCCESS_AUTHORIZE_CALLBACK = 'success-authorize-callback'
92
- SEARCH = 'tweet_search'
93
- GET_TWEETS = 'get_tweets'
94
- GET_THREAD = 'get_thread'
95
- GET_USERS = 'get_users'
94
+ INTEGRATIONS: str
95
+ USER_HAS_INTEGRATION: str
96
+ SUCCESS_AUTHORIZE_CALLBACK: str
97
+ SEARCH: str
98
+ GET_TWEETS: str
99
+ GET_THREAD: str
100
+ GET_USERS: str
96
101
 
97
102
  class GoogleMailEndpoint(Enum):
98
103
  """Google Mail endpoints for BOSA Connector."""
99
- INTEGRATIONS = 'integrations'
100
- USER_HAS_INTEGRATION = 'integration-exists'
101
- SUCCESS_AUTHORIZE_CALLBACK = 'success-authorize-callback'
102
- CREATE_DRAFT = 'create_draft'
103
- LIST_DRAFTS = 'list_drafts'
104
- SEND_DRAFT = 'send_draft'
105
- GET_DRAFT = 'get_draft'
106
- MODIFY_DRAFT = 'modify_draft'
107
- LIST_LABELS = 'list_labels'
108
- LABEL_STATS = 'label_stats'
109
- GET_LABEL_DETAILS = 'get_label_details'
110
- CREATE_LABELS = 'create_labels'
111
- MODIFY_LABELS = 'modify_labels'
112
- DELETE_LABELS = 'delete_labels'
113
- SEND_EMAIL = 'send_email'
114
- LIST_EMAILS = 'list_emails'
115
- GET_EMAIL_DETAILS = 'get_email_details'
116
- MODIFY_EMAIL = 'modify_email'
117
- DELETE_EMAIL = 'delete_email'
118
- TRASH_EMAIL = 'trash_email'
119
- UNTRASH_EMAIL = 'untrash_email'
120
- LIST_THREADS = 'list_threads'
121
- THREAD_DETAILS = 'thread_details'
122
- MODIFY_THREAD = 'modify_thread'
123
- GET_AUTO_REPLY = 'get_auto_reply'
124
- SET_AUTO_REPLY = 'set_auto_reply'
125
- GET_ATTACHMENT = 'get_attachment'
126
- USERINFO = 'userinfo'
104
+ INTEGRATIONS: str
105
+ USER_HAS_INTEGRATION: str
106
+ SUCCESS_AUTHORIZE_CALLBACK: str
107
+ CREATE_DRAFT: str
108
+ LIST_DRAFTS: str
109
+ SEND_DRAFT: str
110
+ GET_DRAFT: str
111
+ MODIFY_DRAFT: str
112
+ LIST_LABELS: str
113
+ LABEL_STATS: str
114
+ GET_LABEL_DETAILS: str
115
+ CREATE_LABELS: str
116
+ MODIFY_LABELS: str
117
+ DELETE_LABELS: str
118
+ SEND_EMAIL: str
119
+ LIST_EMAILS: str
120
+ GET_EMAIL_DETAILS: str
121
+ MODIFY_EMAIL: str
122
+ DELETE_EMAIL: str
123
+ TRASH_EMAIL: str
124
+ UNTRASH_EMAIL: str
125
+ LIST_THREADS: str
126
+ THREAD_DETAILS: str
127
+ MODIFY_THREAD: str
128
+ GET_AUTO_REPLY: str
129
+ SET_AUTO_REPLY: str
130
+ GET_ATTACHMENT: str
131
+ USERINFO: str
127
132
 
128
133
  class ActionEndpointMap:
129
134
  """Maps Action enums to their corresponding Endpoint enums."""
@@ -0,0 +1,37 @@
1
+ """Document loader tools package.
2
+
3
+ This package provides tools for reading and extracting content from various document formats.
4
+
5
+ Authors:
6
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
7
+ Douglas Raevan Faisal (douglas.raevan.faisal@gdplabs.id)
8
+
9
+ References:
10
+ NONE
11
+ """
12
+
13
+ try:
14
+ from aip_agents.tools.document_loader.base_reader import ( # noqa: F401
15
+ BaseDocumentReaderTool,
16
+ DocumentReaderInput,
17
+ )
18
+ from aip_agents.tools.document_loader.docx_reader_tool import DocxReaderTool # noqa: F401
19
+ from aip_agents.tools.document_loader.excel_reader_tool import ExcelReaderTool # noqa: F401
20
+ from aip_agents.tools.document_loader.pdf_reader_tool import PDFReaderTool # noqa: F401
21
+ from aip_agents.tools.document_loader.pdf_splitter import PDFSplitter # noqa: F401
22
+
23
+ __all__ = [
24
+ "BaseDocumentReaderTool",
25
+ "DocumentReaderInput",
26
+ "PDFReaderTool",
27
+ "DocxReaderTool",
28
+ "ExcelReaderTool",
29
+ "PDFSplitter",
30
+ ]
31
+ except ImportError:
32
+ import warnings
33
+
34
+ warnings.warn(
35
+ "Document loader tools not available. Install with: pip install aip-agents[document-loader]", ImportWarning
36
+ )
37
+ __all__ = []
@@ -0,0 +1,7 @@
1
+ from aip_agents.tools.document_loader.base_reader import BaseDocumentReaderTool as BaseDocumentReaderTool, DocumentReaderInput as DocumentReaderInput
2
+ from aip_agents.tools.document_loader.docx_reader_tool import DocxReaderTool as DocxReaderTool
3
+ from aip_agents.tools.document_loader.excel_reader_tool import ExcelReaderTool as ExcelReaderTool
4
+ from aip_agents.tools.document_loader.pdf_reader_tool import PDFReaderTool as PDFReaderTool
5
+ from aip_agents.tools.document_loader.pdf_splitter import PDFSplitter as PDFSplitter
6
+
7
+ __all__ = ['BaseDocumentReaderTool', 'DocumentReaderInput', 'PDFReaderTool', 'DocxReaderTool', 'ExcelReaderTool', 'PDFSplitter']
@@ -0,0 +1,262 @@
1
+ """Base document reader tool.
2
+
3
+ Authors:
4
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
5
+
6
+ References:
7
+ https://github.com/GDP-ADMIN/gdplabs-exploration/blob/ai-agent-app/backend/aip_agents/tools/reader/base_reader.py
8
+ """
9
+
10
+ import gc
11
+ import os
12
+ from abc import ABC, abstractmethod
13
+
14
+ from gllm_docproc.loader.pipeline_loader import PipelineLoader
15
+ from langchain_core.runnables import RunnableConfig
16
+ from langchain_core.tools import BaseTool
17
+ from pydantic import BaseModel, Field
18
+ from unidecode import unidecode
19
+
20
+ from aip_agents.utils.logger import get_logger
21
+
22
+ logger = get_logger(__name__)
23
+
24
+
25
+ class BaseDocumentConfig(BaseModel):
26
+ """Base tool configuration schema for document processing with batching functionality.
27
+
28
+ This configuration enables page-by-page batching to optimize memory usage when
29
+ processing large document files. When batching is enabled, documents are processed
30
+ sequentially by pages rather than loading the entire document into memory at once.
31
+
32
+ Attributes:
33
+ batching (bool): Enable page-by-page batching to reduce memory usage.
34
+ When True, documents are processed page by page sequentially.
35
+ When False, maintains current behavior of loading entire document.
36
+ Defaults to False for backward compatibility.
37
+ batch_size (int): Number of pages to process in each batch.
38
+ Must be between 1 and 100 pages inclusive.
39
+ Larger batch sizes may use more memory but could be more efficient.
40
+ Smaller batch sizes use less memory but may have more overhead.
41
+ Defaults to 10 for balanced memory usage and efficiency.
42
+
43
+ Examples:
44
+ >>> # Default configuration (no batching)
45
+ >>> config = BaseDocumentConfig()
46
+ >>> print(config.batching) # False
47
+ >>> print(config.batch_size) # 10
48
+
49
+ >>> # Enable batching with single page processing
50
+ >>> config = BaseDocumentConfig(batching=True, batch_size=1)
51
+
52
+ >>> # Enable batching with multi-page batches
53
+ >>> config = BaseDocumentConfig(batching=True, batch_size=3)
54
+ """
55
+
56
+ batching: bool = Field(
57
+ default=False,
58
+ description="Enable page-by-page batching to reduce memory usage when processing large documents",
59
+ )
60
+ batch_size: int = Field(
61
+ default=10,
62
+ ge=1,
63
+ le=100,
64
+ description="Number of pages to process per batch (1-100 pages)",
65
+ )
66
+
67
+
68
+ class DocumentReaderInput(BaseModel):
69
+ """Input schema for the DocumentReader tool."""
70
+
71
+ file_path: str = Field(..., description="Path to the document file to be read")
72
+
73
+
74
+ class BaseDocumentReaderTool(BaseTool, ABC):
75
+ """Base tool to read and extract text from document files."""
76
+
77
+ name: str = "base_document_reader_tool"
78
+ description: str = "Read a document file and extract its text content."
79
+ args_schema: type[BaseModel] = DocumentReaderInput
80
+ tool_config_schema: type[BaseModel] = BaseDocumentConfig
81
+ loader: PipelineLoader = Field(default_factory=PipelineLoader)
82
+
83
+ def __init__(self):
84
+ """Initialize the base document reader tool."""
85
+ super().__init__()
86
+ self._setup_loader()
87
+
88
+ @abstractmethod
89
+ def _setup_loader(self):
90
+ """Set up the specific loaders for each document type."""
91
+ pass # pragma: no cover
92
+
93
+ def _run(self, file_path: str, config: RunnableConfig | None = None) -> str:
94
+ """Run with optional batching based on configuration.
95
+
96
+ Args:
97
+ file_path: Path to the document file to be read
98
+ config: Optional RunnableConfig containing tool configuration
99
+
100
+ Returns:
101
+ Extracted text content from the document
102
+ """
103
+ tool_config = None
104
+ if hasattr(self, "get_tool_config"):
105
+ tool_config = self.get_tool_config(config)
106
+
107
+ tool_config = tool_config or BaseDocumentConfig()
108
+
109
+ logger.info(f"Batching: {tool_config.batching}, Batch size: {tool_config.batch_size}")
110
+ if tool_config.batching:
111
+ return self._run_with_batching(file_path, tool_config.batch_size)
112
+ else:
113
+ return self._run_standard(file_path)
114
+
115
+ def _run_standard(self, file_path: str) -> str:
116
+ """Standard processing (existing behavior).
117
+
118
+ Args:
119
+ file_path: Path to the document file to be read
120
+
121
+ Returns:
122
+ Extracted text content from the document
123
+ """
124
+ try:
125
+ return self._process_single_file(file_path)
126
+ except Exception as e:
127
+ return f"Error reading file: {str(e)}"
128
+
129
+ def _run_with_batching(self, file_path: str, batch_size: int) -> str:
130
+ """Process file using batching with existing loader.
131
+
132
+ Args:
133
+ file_path: Path to the document file to be read
134
+ batch_size: Number of pages to process per batch
135
+
136
+ Returns:
137
+ Extracted text content from the document
138
+ """
139
+ try:
140
+ logger.info(f"Splitting file: {file_path} into {batch_size} pages per batch")
141
+ split_files = self._split_file(file_path, batch_size)
142
+ return self._process_file_batch(split_files)
143
+ except Exception as e:
144
+ return f"Error reading file: {str(e)}"
145
+
146
+ def _process_single_file(self, file_path: str) -> str:
147
+ """Process a single file and return extracted text.
148
+
149
+ Args:
150
+ file_path: Path to the document file to be read
151
+
152
+ Returns:
153
+ Extracted text content from the document (ASCII-normalized)
154
+ """
155
+ try:
156
+ # Load and process the file
157
+ loaded_elements = self.loader.load(file_path)
158
+ full_text = "\n".join(element["text"] for element in loaded_elements)
159
+
160
+ # Apply unidecode to convert non-ASCII characters to ASCII equivalents
161
+ # This prevents encoding errors by transliterating characters like:
162
+ # "Café" -> "Cafe", "François" -> "Francois", "北京" -> "Bei Jing"
163
+ result = unidecode(full_text).strip()
164
+
165
+ # Explicit memory cleanup
166
+ del loaded_elements
167
+ del full_text
168
+
169
+ # Force garbage collection to free memory immediately
170
+ gc.collect()
171
+
172
+ return result
173
+
174
+ except Exception:
175
+ # Ensure cleanup even on error
176
+ gc.collect()
177
+ raise
178
+
179
+ def _process_file_batch(self, split_files: list[str]) -> str:
180
+ """Process a batch of split files and return combined text.
181
+
182
+ Args:
183
+ split_files: List of temporary file paths to process
184
+
185
+ Returns:
186
+ Combined extracted text content from all files
187
+ """
188
+ results = []
189
+ errors = []
190
+
191
+ for split_file in split_files:
192
+ try:
193
+ text = self._process_single_file(split_file)
194
+ results.append(text)
195
+
196
+ # Clear the text variable to free memory immediately
197
+ del text
198
+
199
+ except Exception as e:
200
+ error_msg = f"Error processing batch: {str(e)}"
201
+ errors.append(error_msg)
202
+ finally:
203
+ self._cleanup_temp_file(split_file)
204
+ # Force garbage collection after each file to minimize memory usage
205
+ gc.collect()
206
+
207
+ # Combine results
208
+ full_text = "\n".join(results).strip()
209
+
210
+ # Clear intermediate results to free memory
211
+ del results
212
+ gc.collect()
213
+
214
+ if errors:
215
+ error_summary = f"\n\nProcessing completed with {len(errors)} errors:\n" + "\n".join(errors)
216
+ full_text += error_summary
217
+
218
+ return full_text
219
+
220
+ def _cleanup_temp_file(self, file_path: str) -> None:
221
+ """Clean up temporary file.
222
+
223
+ Args:
224
+ file_path: Path to the temporary file to clean up
225
+ """
226
+ try:
227
+ os.unlink(file_path)
228
+ except OSError:
229
+ pass
230
+
231
+ def cleanup_memory(self) -> None:
232
+ """Explicitly clean up memory and force garbage collection.
233
+
234
+ This method can be called after processing to minimize memory usage.
235
+ While it won't reset memory to exactly 0, it will free up as much
236
+ memory as possible by clearing internal caches and forcing garbage collection.
237
+ """
238
+ # Clear any cached data in the loader if it has a cleanup method
239
+ if hasattr(self.loader, "clear_cache"):
240
+ self.loader.clear_cache()
241
+
242
+ # Force garbage collection multiple times to ensure cleanup
243
+ for _ in range(3):
244
+ gc.collect()
245
+
246
+ # Optional: Clear loader entirely and reinitialize (more aggressive)
247
+ # This is commented out as it may affect performance for subsequent calls
248
+ # self.loader = PipelineLoader()
249
+ # self._setup_loader()
250
+
251
+ @abstractmethod
252
+ def _split_file(self, file_path: str, batch_size: int) -> list[str]:
253
+ """Split file into temporary files for batch processing.
254
+
255
+ Args:
256
+ file_path: Path to the document file to be split
257
+ batch_size: Number of pages to include in each split file
258
+
259
+ Returns:
260
+ List of temporary file paths containing the split content
261
+ """
262
+ pass # pragma: no cover
@@ -0,0 +1,62 @@
1
+ from _typeshed import Incomplete
2
+ from abc import ABC
3
+ from aip_agents.utils.logger import get_logger as get_logger
4
+ from gllm_docproc.loader.pipeline_loader import PipelineLoader
5
+ from langchain_core.tools import BaseTool
6
+ from pydantic import BaseModel
7
+
8
+ logger: Incomplete
9
+
10
+ class BaseDocumentConfig(BaseModel):
11
+ """Base tool configuration schema for document processing with batching functionality.
12
+
13
+ This configuration enables page-by-page batching to optimize memory usage when
14
+ processing large document files. When batching is enabled, documents are processed
15
+ sequentially by pages rather than loading the entire document into memory at once.
16
+
17
+ Attributes:
18
+ batching (bool): Enable page-by-page batching to reduce memory usage.
19
+ When True, documents are processed page by page sequentially.
20
+ When False, maintains current behavior of loading entire document.
21
+ Defaults to False for backward compatibility.
22
+ batch_size (int): Number of pages to process in each batch.
23
+ Must be between 1 and 100 pages inclusive.
24
+ Larger batch sizes may use more memory but could be more efficient.
25
+ Smaller batch sizes use less memory but may have more overhead.
26
+ Defaults to 10 for balanced memory usage and efficiency.
27
+
28
+ Examples:
29
+ >>> # Default configuration (no batching)
30
+ >>> config = BaseDocumentConfig()
31
+ >>> print(config.batching) # False
32
+ >>> print(config.batch_size) # 10
33
+
34
+ >>> # Enable batching with single page processing
35
+ >>> config = BaseDocumentConfig(batching=True, batch_size=1)
36
+
37
+ >>> # Enable batching with multi-page batches
38
+ >>> config = BaseDocumentConfig(batching=True, batch_size=3)
39
+ """
40
+ batching: bool
41
+ batch_size: int
42
+
43
+ class DocumentReaderInput(BaseModel):
44
+ """Input schema for the DocumentReader tool."""
45
+ file_path: str
46
+
47
+ class BaseDocumentReaderTool(BaseTool, ABC):
48
+ """Base tool to read and extract text from document files."""
49
+ name: str
50
+ description: str
51
+ args_schema: type[BaseModel]
52
+ tool_config_schema: type[BaseModel]
53
+ loader: PipelineLoader
54
+ def __init__(self) -> None:
55
+ """Initialize the base document reader tool."""
56
+ def cleanup_memory(self) -> None:
57
+ """Explicitly clean up memory and force garbage collection.
58
+
59
+ This method can be called after processing to minimize memory usage.
60
+ While it won't reset memory to exactly 0, it will free up as much
61
+ memory as possible by clearing internal caches and forcing garbage collection.
62
+ """
@@ -0,0 +1,53 @@
1
+ """Base tool to read and extract text from document files.
2
+
3
+ Authors:
4
+ Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
5
+
6
+ References:
7
+ https://github.com/GDP-ADMIN/gdplabs-exploration/blob/ai-agent-app/backend/aip_agents/tools/
8
+ reader/docx_reader_tool.py
9
+ """
10
+
11
+ from gllm_docproc.loader.docx import DOCX2PythonLoader, PythonDOCXTableLoader
12
+
13
+ from aip_agents.tools.document_loader.base_reader import BaseDocumentReaderTool
14
+
15
+
16
+ class DocxReaderTool(BaseDocumentReaderTool):
17
+ """Tool to read and extract text from Word documents."""
18
+
19
+ name: str = "docx_reader_tool"
20
+ description: str = "Read a Word document and extract its text content. Input should be the path to the Word file."
21
+
22
+ def _setup_loader(self):
23
+ self.loader.add_loader(DOCX2PythonLoader())
24
+ self.loader.add_loader(PythonDOCXTableLoader())
25
+
26
+ def _run_with_batching(self, file_path: str, batch_size: int) -> str:
27
+ """Run without batching until DOCX splitting is implemented.
28
+
29
+ Args:
30
+ file_path: Path to the DOCX file to be processed
31
+ batch_size: Number of pages to include in each batch (not used currently)
32
+
33
+ Returns:
34
+ Extracted text content from the document
35
+ """
36
+ # TODO: implement DOCX batching with real splits before enabling batching flow.
37
+ return self._run_standard(file_path)
38
+
39
+ def _split_file(self, file_path: str, batch_size: int) -> list[str]:
40
+ """Split DOCX file into temporary files for batch processing.
41
+
42
+ Note: This is a placeholder implementation. DOCX batching is not
43
+ implemented in this feature but the method is required by the abstract base class.
44
+
45
+ Args:
46
+ file_path: Path to the DOCX file to be split
47
+ batch_size: Number of pages to include in each split file
48
+
49
+ Returns:
50
+ List of temporary file paths containing the split content
51
+ """
52
+ # Placeholder implementation - DOCX batching not implemented in this feature
53
+ return [file_path]
@@ -0,0 +1,6 @@
1
+ from aip_agents.tools.document_loader.base_reader import BaseDocumentReaderTool as BaseDocumentReaderTool
2
+
3
+ class DocxReaderTool(BaseDocumentReaderTool):
4
+ """Tool to read and extract text from Word documents."""
5
+ name: str
6
+ description: str