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
@@ -0,0 +1,89 @@
1
+ from _typeshed import Incomplete
2
+ from dataclasses import dataclass
3
+ from datetime import datetime
4
+ from enum import StrEnum
5
+ from pydantic import BaseModel
6
+ from typing import Any
7
+
8
+ __all__ = ['ApprovalDecisionType', 'ApprovalRequest', 'ApprovalDecision', 'ApprovalLogEntry', 'HitlMetadata']
9
+
10
+ class ApprovalDecisionType(StrEnum):
11
+ """Enumeration of possible approval decision types."""
12
+ APPROVED: str
13
+ REJECTED: str
14
+ SKIPPED: str
15
+ TIMEOUT_SKIP: str
16
+ PENDING: str
17
+
18
+ @dataclass
19
+ class ApprovalRequest:
20
+ """Represents an in-flight prompt shown to the operator."""
21
+ request_id: str
22
+ tool_name: str
23
+ arguments_preview: str
24
+ context: dict[str, str] | None = ...
25
+ created_at: datetime | None = ...
26
+ timeout_at: datetime | None = ...
27
+ def __post_init__(self) -> None:
28
+ """Initialize timestamps if not provided."""
29
+ @classmethod
30
+ def create(cls, tool_name: str, arguments_preview: str, context: dict[str, str] | None = None) -> ApprovalRequest:
31
+ """Create a new approval request with generated request_id.
32
+
33
+ Args:
34
+ tool_name (str): The name of the tool requiring approval.
35
+ arguments_preview (str): A preview of the arguments for display.
36
+ context (dict[str, str] | None, optional): Additional context information.
37
+
38
+ Returns:
39
+ ApprovalRequest: A new approval request instance.
40
+ """
41
+
42
+ @dataclass
43
+ class ApprovalDecision:
44
+ """Captures the operator outcome."""
45
+ request_id: str
46
+ decision: ApprovalDecisionType
47
+ operator_input: str
48
+ decided_at: datetime | None = ...
49
+ latency_ms: int | None = ...
50
+ def __post_init__(self) -> None:
51
+ """Initialize timestamp if not provided."""
52
+
53
+ @dataclass
54
+ class ApprovalLogEntry:
55
+ """Structured log entry for HITL decisions."""
56
+ request_id: str
57
+ tool_name: str
58
+ decision: str
59
+ event: str = ...
60
+ agent_id: str | None = ...
61
+ thread_id: str | None = ...
62
+ additional_context: dict[str, Any] | None = ...
63
+ timestamp: datetime | None = ...
64
+ def __post_init__(self) -> None:
65
+ """Initialize timestamp if not provided."""
66
+
67
+ class HitlMetadata(BaseModel):
68
+ """Structured metadata payload included in agent streaming events."""
69
+ required: bool
70
+ decision: ApprovalDecisionType
71
+ request_id: str
72
+ timeout_seconds: int | None
73
+ timeout_at: datetime | None
74
+ model_config: Incomplete
75
+ def as_payload(self) -> dict[str, Any]:
76
+ """Return a JSON-ready metadata payload."""
77
+ @classmethod
78
+ def from_decision(cls, decision: ApprovalDecision, *, required: bool = True, timeout_seconds: int | None = None, timeout_at: datetime | None = None) -> HitlMetadata:
79
+ """Build metadata from an ``ApprovalDecision``.
80
+
81
+ Args:
82
+ decision (ApprovalDecision): The approval decision to build metadata from.
83
+ required (bool, optional): Whether approval is required. Defaults to True.
84
+ timeout_seconds (int | None, optional): Timeout in seconds for the decision.
85
+ timeout_at (datetime | None, optional): Specific timeout datetime.
86
+
87
+ Returns:
88
+ HitlMetadata: The constructed metadata instance.
89
+ """
@@ -0,0 +1,37 @@
1
+ """LangGraph-related schema definitions for agent tool interactions."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from typing import Any
7
+
8
+ from gllm_core.schema import Chunk
9
+ from langchain_core.messages import ToolMessage
10
+ from langchain_core.messages.ai import UsageMetadata
11
+ from langchain_core.tools import BaseTool
12
+
13
+ __all__ = ["ToolCallResult", "ToolStorageParams"]
14
+
15
+
16
+ @dataclass
17
+ class ToolCallResult:
18
+ """Container for the results of a single tool call execution."""
19
+
20
+ messages: list[ToolMessage]
21
+ artifacts: list[dict[str, Any]]
22
+ metadata_delta: dict[str, Any]
23
+ references: list[Chunk]
24
+ step_usage: UsageMetadata | None
25
+ pii_mapping: dict[str, str] | None = None
26
+
27
+
28
+ @dataclass
29
+ class ToolStorageParams:
30
+ """Parameters required for automatically storing tool outputs."""
31
+
32
+ tool: BaseTool
33
+ tool_output: Any
34
+ tool_call: dict[str, Any]
35
+ tool_call_id: str
36
+ resolved_args: dict[str, Any]
37
+ state: dict[str, Any]
@@ -0,0 +1,28 @@
1
+ from dataclasses import dataclass
2
+ from gllm_core.schema import Chunk
3
+ from langchain_core.messages import ToolMessage
4
+ from langchain_core.messages.ai import UsageMetadata
5
+ from langchain_core.tools import BaseTool
6
+ from typing import Any
7
+
8
+ __all__ = ['ToolCallResult', 'ToolStorageParams']
9
+
10
+ @dataclass
11
+ class ToolCallResult:
12
+ """Container for the results of a single tool call execution."""
13
+ messages: list[ToolMessage]
14
+ artifacts: list[dict[str, Any]]
15
+ metadata_delta: dict[str, Any]
16
+ references: list[Chunk]
17
+ step_usage: UsageMetadata | None
18
+ pii_mapping: dict[str, str] | None = ...
19
+
20
+ @dataclass
21
+ class ToolStorageParams:
22
+ """Parameters required for automatically storing tool outputs."""
23
+ tool: BaseTool
24
+ tool_output: Any
25
+ tool_call: dict[str, Any]
26
+ tool_call_id: str
27
+ resolved_args: dict[str, Any]
28
+ state: dict[str, Any]
@@ -0,0 +1,97 @@
1
+ """Model identifiers and provider definitions for the AI agent platform."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from enum import StrEnum
6
+
7
+
8
+ class ModelProvider(StrEnum):
9
+ """Enumeration of supported model providers for the AI agent platform."""
10
+
11
+ OPENAI = "openai"
12
+ ANTHROPIC = "anthropic"
13
+ AZURE_OPENAI = "azure-openai"
14
+ GOOGLE_GENAI = "google"
15
+ GROQ = "groq"
16
+ TOGETHER_AI = "together"
17
+ DEEPINFRA = "deepinfra"
18
+ DEEPSEEK = "deepseek"
19
+ OPENAI_COMPATIBLE = "openai-compatible"
20
+
21
+
22
+ class ModelId:
23
+ """Model identifier class for representing language models."""
24
+
25
+ def __init__(self, provider: str, name: str, path: str | None = None):
26
+ """Initialize a ModelId.
27
+
28
+ Args:
29
+ provider: The model provider (e.g., 'openai', 'anthropic')
30
+ name: The specific model name
31
+ path: Optional path component for some providers
32
+ """
33
+ self.provider = provider
34
+ self.name = name
35
+ self.path = path
36
+
37
+ @classmethod
38
+ def from_string(cls, model_string: str) -> ModelId:
39
+ """Create a ModelId from a string representation.
40
+
41
+ Args:
42
+ model_string: String in format 'provider:name' or 'provider/path:name'
43
+
44
+ Returns:
45
+ ModelId instance
46
+
47
+ Raises:
48
+ ValueError: If the string format is invalid
49
+ """
50
+ if ":" not in model_string:
51
+ raise ValueError(
52
+ f"Invalid model string format: {model_string}. Expected 'provider:name' or 'provider/path:name'"
53
+ )
54
+
55
+ # Find the last colon to separate provider+path from name
56
+ last_colon_idx = model_string.rindex(":")
57
+ provider_part = model_string[:last_colon_idx]
58
+ name = model_string[last_colon_idx + 1 :]
59
+
60
+ # Split provider_part on "/" to separate provider from path
61
+ if "/" in provider_part:
62
+ provider, path = provider_part.split("/", 1)
63
+ else:
64
+ provider = provider_part
65
+ path = None
66
+
67
+ return cls(provider, name, path)
68
+
69
+ def __str__(self) -> str:
70
+ """String representation of the ModelId."""
71
+ if self.path:
72
+ return f"{self.provider}/{self.path}:{self.name}"
73
+ return f"{self.provider}:{self.name}"
74
+
75
+ def __repr__(self) -> str:
76
+ """String representation of the ModelId for debugging."""
77
+ return f"ModelId(provider='{self.provider}', name='{self.name}', path='{self.path}')"
78
+
79
+ def __eq__(self, other: object) -> bool:
80
+ """Check equality with another ModelId object.
81
+
82
+ Args:
83
+ other (object): The object to compare with.
84
+
85
+ Returns:
86
+ bool: True if the objects are equal, False otherwise.
87
+ """
88
+ if not isinstance(other, ModelId):
89
+ return NotImplemented
90
+ return self.provider == other.provider and self.name == other.name and self.path == other.path
91
+
92
+ def __hash__(self) -> int:
93
+ """Return hash of the ModelId."""
94
+ return hash((self.provider, self.name, self.path))
95
+
96
+
97
+ __all__ = ["ModelId", "ModelProvider"]
@@ -0,0 +1,54 @@
1
+ from _typeshed import Incomplete
2
+ from enum import StrEnum
3
+
4
+ __all__ = ['ModelId', 'ModelProvider']
5
+
6
+ class ModelProvider(StrEnum):
7
+ """Enumeration of supported model providers for the AI agent platform."""
8
+ OPENAI: str
9
+ ANTHROPIC: str
10
+ AZURE_OPENAI: str
11
+ GOOGLE_GENAI: str
12
+ GROQ: str
13
+ TOGETHER_AI: str
14
+ DEEPINFRA: str
15
+ DEEPSEEK: str
16
+ OPENAI_COMPATIBLE: str
17
+
18
+ class ModelId:
19
+ """Model identifier class for representing language models."""
20
+ provider: Incomplete
21
+ name: Incomplete
22
+ path: Incomplete
23
+ def __init__(self, provider: str, name: str, path: str | None = None) -> None:
24
+ """Initialize a ModelId.
25
+
26
+ Args:
27
+ provider: The model provider (e.g., 'openai', 'anthropic')
28
+ name: The specific model name
29
+ path: Optional path component for some providers
30
+ """
31
+ @classmethod
32
+ def from_string(cls, model_string: str) -> ModelId:
33
+ """Create a ModelId from a string representation.
34
+
35
+ Args:
36
+ model_string: String in format 'provider:name' or 'provider/path:name'
37
+
38
+ Returns:
39
+ ModelId instance
40
+
41
+ Raises:
42
+ ValueError: If the string format is invalid
43
+ """
44
+ def __eq__(self, other: object) -> bool:
45
+ """Check equality with another ModelId object.
46
+
47
+ Args:
48
+ other (object): The object to compare with.
49
+
50
+ Returns:
51
+ bool: True if the objects are equal, False otherwise.
52
+ """
53
+ def __hash__(self) -> int:
54
+ """Return hash of the ModelId."""
@@ -0,0 +1,108 @@
1
+ """Step limit configuration and error classes for agent execution limits."""
2
+
3
+ import os
4
+ from dataclasses import dataclass, field
5
+ from enum import StrEnum
6
+
7
+
8
+ class StepLimitErrorType(StrEnum):
9
+ """Types of step-related limit violations."""
10
+
11
+ STEP_LIMIT_EXCEEDED = "STEP_LIMIT_EXCEEDED"
12
+ DELEGATION_DEPTH_EXCEEDED = "DELEGATION_DEPTH_EXCEEDED"
13
+
14
+
15
+ @dataclass
16
+ class StepLimitConfig:
17
+ """Configuration for agent step and delegation limits.
18
+
19
+ Attributes:
20
+ max_steps: Maximum number of execution steps allowed per invocation.
21
+ Includes agent node (LLM call) and every tool call (parallel batches count per call).
22
+ max_delegation_depth: Maximum depth of delegation chain allowed.
23
+ Depth 0 means no delegation allowed.
24
+ """
25
+
26
+ max_steps: int = field(
27
+ default_factory=lambda: int(os.getenv("STEP_LIMIT_MAX_STEPS_DEFAULT", "100")),
28
+ )
29
+ max_delegation_depth: int = field(
30
+ default_factory=lambda: int(os.getenv("STEP_LIMIT_MAX_DELEGATION_DEPTH_DEFAULT", "5")),
31
+ )
32
+
33
+ def __post_init__(self):
34
+ """Validate configuration values and normalize range."""
35
+ from aip_agents.utils.logger import get_logger
36
+
37
+ logger = get_logger(__name__)
38
+
39
+ # Validate and clamp max_steps
40
+ if self.max_steps < 1:
41
+ logger.warning(f"Invalid max_steps={self.max_steps}, resetting to default (25). max_steps must be >= 1.")
42
+ self.max_steps = 25
43
+ elif self.max_steps > 1000:
44
+ logger.warning(f"Invalid max_steps={self.max_steps}, capping at 1000.")
45
+ self.max_steps = 1000
46
+
47
+ # Validate and clamp max_delegation_depth
48
+ if self.max_delegation_depth < 0:
49
+ logger.warning(
50
+ f"Invalid max_delegation_depth={self.max_delegation_depth}, resetting to default (5). "
51
+ "max_delegation_depth must be >= 0."
52
+ )
53
+ self.max_delegation_depth = 5
54
+ elif self.max_delegation_depth > 10:
55
+ logger.warning(f"Invalid max_delegation_depth={self.max_delegation_depth}, capping at 10.")
56
+ self.max_delegation_depth = 10
57
+
58
+
59
+ @dataclass
60
+ class StepLimitErrorResponse:
61
+ """Structured error response for step limit violations.
62
+
63
+ Attributes:
64
+ error_type: The type of limit that was exceeded.
65
+ agent_name: Name of the agent that hit the limit.
66
+ current_value: Current step count or delegation depth.
67
+ configured_limit: The configured limit that was exceeded.
68
+ message: Human-readable error message.
69
+ delegation_chain: Full chain for delegation errors.
70
+ partial_result: Any output generated before hitting the limit.
71
+ """
72
+
73
+ error_type: StepLimitErrorType
74
+ agent_name: str
75
+ current_value: int
76
+ configured_limit: int
77
+ message: str
78
+ delegation_chain: list[str] | None = None
79
+ partial_result: str | None = None
80
+
81
+
82
+ class StepLimitError(Exception):
83
+ """Base exception for step and delegation limit violations.
84
+
85
+ Attributes:
86
+ error_response: Structured error response with details.
87
+ """
88
+
89
+ def __init__(self, error_response: StepLimitErrorResponse):
90
+ """Initialize with error response.
91
+
92
+ Args:
93
+ error_response: Structured error details.
94
+ """
95
+ self.error_response = error_response
96
+ super().__init__(error_response.message)
97
+
98
+
99
+ class MaxStepsExceededError(StepLimitError):
100
+ """Raised when agent exceeds configured max_steps limit."""
101
+
102
+ pass
103
+
104
+
105
+ class MaxDelegationDepthExceededError(StepLimitError):
106
+ """Raised when delegation would exceed max_delegation_depth limit."""
107
+
108
+ pass
@@ -0,0 +1,63 @@
1
+ from _typeshed import Incomplete
2
+ from dataclasses import dataclass, field
3
+ from enum import StrEnum
4
+
5
+ class StepLimitErrorType(StrEnum):
6
+ """Types of step-related limit violations."""
7
+ STEP_LIMIT_EXCEEDED: str
8
+ DELEGATION_DEPTH_EXCEEDED: str
9
+
10
+ @dataclass
11
+ class StepLimitConfig:
12
+ """Configuration for agent step and delegation limits.
13
+
14
+ Attributes:
15
+ max_steps: Maximum number of execution steps allowed per invocation.
16
+ Includes agent node (LLM call) and every tool call (parallel batches count per call).
17
+ max_delegation_depth: Maximum depth of delegation chain allowed.
18
+ Depth 0 means no delegation allowed.
19
+ """
20
+ max_steps: int = field(default_factory=Incomplete)
21
+ max_delegation_depth: int = field(default_factory=Incomplete)
22
+ def __post_init__(self) -> None:
23
+ """Validate configuration values and normalize range."""
24
+
25
+ @dataclass
26
+ class StepLimitErrorResponse:
27
+ """Structured error response for step limit violations.
28
+
29
+ Attributes:
30
+ error_type: The type of limit that was exceeded.
31
+ agent_name: Name of the agent that hit the limit.
32
+ current_value: Current step count or delegation depth.
33
+ configured_limit: The configured limit that was exceeded.
34
+ message: Human-readable error message.
35
+ delegation_chain: Full chain for delegation errors.
36
+ partial_result: Any output generated before hitting the limit.
37
+ """
38
+ error_type: StepLimitErrorType
39
+ agent_name: str
40
+ current_value: int
41
+ configured_limit: int
42
+ message: str
43
+ delegation_chain: list[str] | None = ...
44
+ partial_result: str | None = ...
45
+
46
+ class StepLimitError(Exception):
47
+ """Base exception for step and delegation limit violations.
48
+
49
+ Attributes:
50
+ error_response: Structured error response with details.
51
+ """
52
+ error_response: Incomplete
53
+ def __init__(self, error_response: StepLimitErrorResponse) -> None:
54
+ """Initialize with error response.
55
+
56
+ Args:
57
+ error_response: Structured error details.
58
+ """
59
+
60
+ class MaxStepsExceededError(StepLimitError):
61
+ """Raised when agent exceeds configured max_steps limit."""
62
+ class MaxDelegationDepthExceededError(StepLimitError):
63
+ """Raised when delegation would exceed max_delegation_depth limit."""
@@ -0,0 +1,40 @@
1
+ """Schema definitions for storage configuration."""
2
+
3
+ import os
4
+ from dataclasses import dataclass
5
+ from enum import StrEnum
6
+
7
+ __all__ = ["OBJECT_STORAGE_PREFIX", "StorageType", "StorageConfig"]
8
+
9
+ OBJECT_STORAGE_PREFIX = "tool_outputs/"
10
+
11
+
12
+ class StorageType(StrEnum):
13
+ """Supported storage types."""
14
+
15
+ MEMORY = "memory"
16
+ OBJECT_STORAGE = "object_storage"
17
+
18
+
19
+ @dataclass
20
+ class StorageConfig:
21
+ """Configuration for storage providers."""
22
+
23
+ storage_type: StorageType = StorageType.MEMORY
24
+ object_prefix: str = OBJECT_STORAGE_PREFIX
25
+ object_use_json: bool = False
26
+
27
+ @classmethod
28
+ def from_env(cls) -> "StorageConfig":
29
+ """Create StorageConfig from environment variables."""
30
+ storage_type_str = os.getenv("TOOL_OUTPUT_STORAGE_TYPE", StorageType.MEMORY.value).lower()
31
+ if storage_type_str == StorageType.MEMORY.value:
32
+ storage_type = StorageType.MEMORY
33
+ else:
34
+ storage_type = StorageType.OBJECT_STORAGE
35
+
36
+ object_prefix = os.getenv("TOOL_OUTPUT_OBJECT_PREFIX", OBJECT_STORAGE_PREFIX)
37
+ use_json_str = os.getenv("TOOL_OUTPUT_USE_JSON", "false").lower()
38
+ use_json = use_json_str in ("true", "1", "yes", "on")
39
+
40
+ return cls(storage_type=storage_type, object_prefix=object_prefix, object_use_json=use_json)
@@ -0,0 +1,21 @@
1
+ from dataclasses import dataclass
2
+ from enum import StrEnum
3
+
4
+ __all__ = ['OBJECT_STORAGE_PREFIX', 'StorageType', 'StorageConfig']
5
+
6
+ OBJECT_STORAGE_PREFIX: str
7
+
8
+ class StorageType(StrEnum):
9
+ """Supported storage types."""
10
+ MEMORY: str
11
+ OBJECT_STORAGE: str
12
+
13
+ @dataclass
14
+ class StorageConfig:
15
+ """Configuration for storage providers."""
16
+ storage_type: StorageType = ...
17
+ object_prefix: str = ...
18
+ object_use_json: bool = ...
19
+ @classmethod
20
+ def from_env(cls) -> StorageConfig:
21
+ """Create StorageConfig from environment variables."""
@@ -0,0 +1,11 @@
1
+ """This module provides a centralized way to handle Sentry and OpenTelemetry configuration for BOSA SDK.
2
+
3
+ Authors:
4
+ Saul Sayers (saul.sayers@gdplabs.id)
5
+ """
6
+
7
+ from aip_agents.sentry.sentry import setup_telemetry
8
+
9
+ __all__ = [
10
+ "setup_telemetry",
11
+ ]
@@ -1,3 +1,3 @@
1
- from .sentry import setup_telemetry as setup_telemetry
1
+ from aip_agents.sentry.sentry import setup_telemetry as setup_telemetry
2
2
 
3
3
  __all__ = ['setup_telemetry']