aip-agents-binary 0.5.20__py3-none-manylinux_2_31_x86_64.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 (546) hide show
  1. aip_agents/__init__.py +65 -0
  2. aip_agents/__init__.pyi +19 -0
  3. aip_agents/a2a/__init__.py +19 -0
  4. aip_agents/a2a/__init__.pyi +3 -0
  5. aip_agents/a2a/server/__init__.py +10 -0
  6. aip_agents/a2a/server/__init__.pyi +4 -0
  7. aip_agents/a2a/server/base_executor.py +1086 -0
  8. aip_agents/a2a/server/base_executor.pyi +73 -0
  9. aip_agents/a2a/server/google_adk_executor.py +198 -0
  10. aip_agents/a2a/server/google_adk_executor.pyi +51 -0
  11. aip_agents/a2a/server/langflow_executor.py +180 -0
  12. aip_agents/a2a/server/langflow_executor.pyi +43 -0
  13. aip_agents/a2a/server/langgraph_executor.py +270 -0
  14. aip_agents/a2a/server/langgraph_executor.pyi +47 -0
  15. aip_agents/a2a/types.py +232 -0
  16. aip_agents/a2a/types.pyi +132 -0
  17. aip_agents/agent/__init__.py +27 -0
  18. aip_agents/agent/__init__.pyi +9 -0
  19. aip_agents/agent/base_agent.py +970 -0
  20. aip_agents/agent/base_agent.pyi +221 -0
  21. aip_agents/agent/base_langgraph_agent.py +2942 -0
  22. aip_agents/agent/base_langgraph_agent.pyi +232 -0
  23. aip_agents/agent/google_adk_agent.py +926 -0
  24. aip_agents/agent/google_adk_agent.pyi +141 -0
  25. aip_agents/agent/google_adk_constants.py +6 -0
  26. aip_agents/agent/google_adk_constants.pyi +3 -0
  27. aip_agents/agent/hitl/__init__.py +24 -0
  28. aip_agents/agent/hitl/__init__.pyi +6 -0
  29. aip_agents/agent/hitl/config.py +28 -0
  30. aip_agents/agent/hitl/config.pyi +15 -0
  31. aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
  32. aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
  33. aip_agents/agent/hitl/manager.py +532 -0
  34. aip_agents/agent/hitl/manager.pyi +200 -0
  35. aip_agents/agent/hitl/models.py +18 -0
  36. aip_agents/agent/hitl/models.pyi +3 -0
  37. aip_agents/agent/hitl/prompt/__init__.py +9 -0
  38. aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
  39. aip_agents/agent/hitl/prompt/base.py +42 -0
  40. aip_agents/agent/hitl/prompt/base.pyi +24 -0
  41. aip_agents/agent/hitl/prompt/deferred.py +73 -0
  42. aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
  43. aip_agents/agent/hitl/registry.py +149 -0
  44. aip_agents/agent/hitl/registry.pyi +101 -0
  45. aip_agents/agent/interface.py +138 -0
  46. aip_agents/agent/interface.pyi +81 -0
  47. aip_agents/agent/interfaces.py +65 -0
  48. aip_agents/agent/interfaces.pyi +44 -0
  49. aip_agents/agent/langflow_agent.py +464 -0
  50. aip_agents/agent/langflow_agent.pyi +133 -0
  51. aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
  52. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +49 -0
  53. aip_agents/agent/langgraph_react_agent.py +2514 -0
  54. aip_agents/agent/langgraph_react_agent.pyi +126 -0
  55. aip_agents/agent/system_instruction_context.py +34 -0
  56. aip_agents/agent/system_instruction_context.pyi +13 -0
  57. aip_agents/clients/__init__.py +10 -0
  58. aip_agents/clients/__init__.pyi +4 -0
  59. aip_agents/clients/langflow/__init__.py +10 -0
  60. aip_agents/clients/langflow/__init__.pyi +4 -0
  61. aip_agents/clients/langflow/client.py +477 -0
  62. aip_agents/clients/langflow/client.pyi +140 -0
  63. aip_agents/clients/langflow/types.py +18 -0
  64. aip_agents/clients/langflow/types.pyi +7 -0
  65. aip_agents/constants.py +23 -0
  66. aip_agents/constants.pyi +7 -0
  67. aip_agents/credentials/manager.py +132 -0
  68. aip_agents/examples/__init__.py +5 -0
  69. aip_agents/examples/__init__.pyi +0 -0
  70. aip_agents/examples/compare_streaming_client.py +783 -0
  71. aip_agents/examples/compare_streaming_client.pyi +48 -0
  72. aip_agents/examples/compare_streaming_server.py +142 -0
  73. aip_agents/examples/compare_streaming_server.pyi +18 -0
  74. aip_agents/examples/demo_memory_recall.py +401 -0
  75. aip_agents/examples/demo_memory_recall.pyi +58 -0
  76. aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
  77. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +9 -0
  78. aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
  79. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +9 -0
  80. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
  81. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +9 -0
  82. aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
  83. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +15 -0
  84. aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
  85. aip_agents/examples/hello_world_a2a_langchain_client.pyi +5 -0
  86. aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
  87. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +5 -0
  88. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
  89. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +5 -0
  90. aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
  91. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +5 -0
  92. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
  93. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +5 -0
  94. aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
  95. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +15 -0
  96. aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
  97. aip_agents/examples/hello_world_a2a_langchain_server.pyi +15 -0
  98. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
  99. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +15 -0
  100. aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
  101. aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
  102. aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
  103. aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
  104. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
  105. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +5 -0
  106. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
  107. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +5 -0
  108. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
  109. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +16 -0
  110. aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
  111. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +9 -0
  112. aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
  113. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +9 -0
  114. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
  115. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +2 -0
  116. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
  117. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +9 -0
  118. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
  119. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +5 -0
  120. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
  121. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +5 -0
  122. aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
  123. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +14 -0
  124. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
  125. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +15 -0
  126. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
  127. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +15 -0
  128. aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
  129. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +48 -0
  130. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
  131. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +48 -0
  132. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
  133. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +45 -0
  134. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
  135. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +5 -0
  136. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
  137. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +15 -0
  138. aip_agents/examples/hello_world_google_adk.py +41 -0
  139. aip_agents/examples/hello_world_google_adk.pyi +5 -0
  140. aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
  141. aip_agents/examples/hello_world_google_adk_mcp_http.pyi +5 -0
  142. aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
  143. aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +5 -0
  144. aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
  145. aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +5 -0
  146. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
  147. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +5 -0
  148. aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
  149. aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +5 -0
  150. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
  151. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +5 -0
  152. aip_agents/examples/hello_world_google_adk_stream.py +44 -0
  153. aip_agents/examples/hello_world_google_adk_stream.pyi +5 -0
  154. aip_agents/examples/hello_world_langchain.py +28 -0
  155. aip_agents/examples/hello_world_langchain.pyi +5 -0
  156. aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
  157. aip_agents/examples/hello_world_langchain_lm_invoker.pyi +2 -0
  158. aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
  159. aip_agents/examples/hello_world_langchain_mcp_http.pyi +5 -0
  160. aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
  161. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
  162. aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
  163. aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +5 -0
  164. aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
  165. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
  166. aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
  167. aip_agents/examples/hello_world_langchain_mcp_sse.pyi +5 -0
  168. aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
  169. aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +5 -0
  170. aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
  171. aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +5 -0
  172. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
  173. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +5 -0
  174. aip_agents/examples/hello_world_langchain_stream.py +36 -0
  175. aip_agents/examples/hello_world_langchain_stream.pyi +5 -0
  176. aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
  177. aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +5 -0
  178. aip_agents/examples/hello_world_langflow_agent.py +163 -0
  179. aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
  180. aip_agents/examples/hello_world_langgraph.py +39 -0
  181. aip_agents/examples/hello_world_langgraph.pyi +5 -0
  182. aip_agents/examples/hello_world_langgraph_bosa_twitter.py +41 -0
  183. aip_agents/examples/hello_world_langgraph_bosa_twitter.pyi +5 -0
  184. aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
  185. aip_agents/examples/hello_world_langgraph_mcp_http.pyi +5 -0
  186. aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
  187. aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +5 -0
  188. aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
  189. aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +5 -0
  190. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
  191. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +5 -0
  192. aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
  193. aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +5 -0
  194. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
  195. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +5 -0
  196. aip_agents/examples/hello_world_langgraph_stream.py +43 -0
  197. aip_agents/examples/hello_world_langgraph_stream.pyi +5 -0
  198. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
  199. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +5 -0
  200. aip_agents/examples/hello_world_model_switch_cli.py +210 -0
  201. aip_agents/examples/hello_world_model_switch_cli.pyi +30 -0
  202. aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
  203. aip_agents/examples/hello_world_multi_agent_adk.pyi +6 -0
  204. aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
  205. aip_agents/examples/hello_world_multi_agent_langchain.pyi +5 -0
  206. aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
  207. aip_agents/examples/hello_world_multi_agent_langgraph.pyi +5 -0
  208. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
  209. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +5 -0
  210. aip_agents/examples/hello_world_pii_logger.py +21 -0
  211. aip_agents/examples/hello_world_pii_logger.pyi +5 -0
  212. aip_agents/examples/hello_world_sentry.py +133 -0
  213. aip_agents/examples/hello_world_sentry.pyi +21 -0
  214. aip_agents/examples/hello_world_step_limits.py +273 -0
  215. aip_agents/examples/hello_world_step_limits.pyi +17 -0
  216. aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
  217. aip_agents/examples/hello_world_stock_a2a_server.pyi +17 -0
  218. aip_agents/examples/hello_world_tool_output_client.py +46 -0
  219. aip_agents/examples/hello_world_tool_output_client.pyi +5 -0
  220. aip_agents/examples/hello_world_tool_output_server.py +114 -0
  221. aip_agents/examples/hello_world_tool_output_server.pyi +19 -0
  222. aip_agents/examples/hitl_demo.py +724 -0
  223. aip_agents/examples/hitl_demo.pyi +67 -0
  224. aip_agents/examples/mcp_configs/configs.py +63 -0
  225. aip_agents/examples/mcp_servers/common.py +76 -0
  226. aip_agents/examples/mcp_servers/mcp_name.py +29 -0
  227. aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
  228. aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
  229. aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
  230. aip_agents/examples/mcp_servers/mcp_time.py +10 -0
  231. aip_agents/examples/pii_demo_langgraph_client.py +69 -0
  232. aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
  233. aip_agents/examples/pii_demo_langgraph_server.py +126 -0
  234. aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
  235. aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
  236. aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
  237. aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
  238. aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
  239. aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
  240. aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
  241. aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
  242. aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
  243. aip_agents/examples/tools/__init__.py +27 -0
  244. aip_agents/examples/tools/__init__.pyi +9 -0
  245. aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
  246. aip_agents/examples/tools/adk_arithmetic_tools.pyi +24 -0
  247. aip_agents/examples/tools/adk_weather_tool.py +60 -0
  248. aip_agents/examples/tools/adk_weather_tool.pyi +18 -0
  249. aip_agents/examples/tools/data_generator_tool.py +103 -0
  250. aip_agents/examples/tools/data_generator_tool.pyi +15 -0
  251. aip_agents/examples/tools/data_visualization_tool.py +312 -0
  252. aip_agents/examples/tools/data_visualization_tool.pyi +19 -0
  253. aip_agents/examples/tools/image_artifact_tool.py +136 -0
  254. aip_agents/examples/tools/image_artifact_tool.pyi +26 -0
  255. aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
  256. aip_agents/examples/tools/langchain_arithmetic_tools.pyi +17 -0
  257. aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
  258. aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +20 -0
  259. aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
  260. aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +25 -0
  261. aip_agents/examples/tools/langchain_weather_tool.py +48 -0
  262. aip_agents/examples/tools/langchain_weather_tool.pyi +19 -0
  263. aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
  264. aip_agents/examples/tools/langgraph_streaming_tool.pyi +43 -0
  265. aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
  266. aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
  267. aip_agents/examples/tools/pii_demo_tools.py +189 -0
  268. aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
  269. aip_agents/examples/tools/random_chart_tool.py +142 -0
  270. aip_agents/examples/tools/random_chart_tool.pyi +20 -0
  271. aip_agents/examples/tools/serper_tool.py +202 -0
  272. aip_agents/examples/tools/serper_tool.pyi +16 -0
  273. aip_agents/examples/tools/stock_tools.py +82 -0
  274. aip_agents/examples/tools/stock_tools.pyi +36 -0
  275. aip_agents/examples/tools/table_generator_tool.py +167 -0
  276. aip_agents/examples/tools/table_generator_tool.pyi +22 -0
  277. aip_agents/examples/tools/time_tool.py +82 -0
  278. aip_agents/examples/tools/time_tool.pyi +15 -0
  279. aip_agents/examples/tools/weather_forecast_tool.py +38 -0
  280. aip_agents/examples/tools/weather_forecast_tool.pyi +14 -0
  281. aip_agents/executor/agent_executor.py +473 -0
  282. aip_agents/executor/base.py +48 -0
  283. aip_agents/mcp/__init__.py +1 -0
  284. aip_agents/mcp/__init__.pyi +0 -0
  285. aip_agents/mcp/client/__init__.py +14 -0
  286. aip_agents/mcp/client/__init__.pyi +5 -0
  287. aip_agents/mcp/client/base_mcp_client.py +369 -0
  288. aip_agents/mcp/client/base_mcp_client.pyi +148 -0
  289. aip_agents/mcp/client/connection_manager.py +193 -0
  290. aip_agents/mcp/client/connection_manager.pyi +48 -0
  291. aip_agents/mcp/client/google_adk/__init__.py +11 -0
  292. aip_agents/mcp/client/google_adk/__init__.pyi +3 -0
  293. aip_agents/mcp/client/google_adk/client.py +381 -0
  294. aip_agents/mcp/client/google_adk/client.pyi +75 -0
  295. aip_agents/mcp/client/langchain/__init__.py +11 -0
  296. aip_agents/mcp/client/langchain/__init__.pyi +3 -0
  297. aip_agents/mcp/client/langchain/client.py +265 -0
  298. aip_agents/mcp/client/langchain/client.pyi +48 -0
  299. aip_agents/mcp/client/persistent_session.py +359 -0
  300. aip_agents/mcp/client/persistent_session.pyi +113 -0
  301. aip_agents/mcp/client/session_pool.py +351 -0
  302. aip_agents/mcp/client/session_pool.pyi +101 -0
  303. aip_agents/mcp/client/transports.py +215 -0
  304. aip_agents/mcp/client/transports.pyi +123 -0
  305. aip_agents/mcp/utils/__init__.py +7 -0
  306. aip_agents/mcp/utils/__init__.pyi +0 -0
  307. aip_agents/mcp/utils/config_validator.py +139 -0
  308. aip_agents/mcp/utils/config_validator.pyi +82 -0
  309. aip_agents/memory/__init__.py +14 -0
  310. aip_agents/memory/__init__.pyi +5 -0
  311. aip_agents/memory/adapters/__init__.py +10 -0
  312. aip_agents/memory/adapters/__init__.pyi +4 -0
  313. aip_agents/memory/adapters/base_adapter.py +717 -0
  314. aip_agents/memory/adapters/base_adapter.pyi +150 -0
  315. aip_agents/memory/adapters/mem0.py +84 -0
  316. aip_agents/memory/adapters/mem0.pyi +22 -0
  317. aip_agents/memory/base.py +84 -0
  318. aip_agents/memory/base.pyi +60 -0
  319. aip_agents/memory/constants.py +49 -0
  320. aip_agents/memory/constants.pyi +25 -0
  321. aip_agents/memory/factory.py +86 -0
  322. aip_agents/memory/factory.pyi +24 -0
  323. aip_agents/memory/guidance.py +20 -0
  324. aip_agents/memory/guidance.pyi +3 -0
  325. aip_agents/memory/simple_memory.py +47 -0
  326. aip_agents/memory/simple_memory.pyi +23 -0
  327. aip_agents/middleware/__init__.py +17 -0
  328. aip_agents/middleware/__init__.pyi +5 -0
  329. aip_agents/middleware/base.py +88 -0
  330. aip_agents/middleware/base.pyi +71 -0
  331. aip_agents/middleware/manager.py +128 -0
  332. aip_agents/middleware/manager.pyi +80 -0
  333. aip_agents/middleware/todolist.py +274 -0
  334. aip_agents/middleware/todolist.pyi +125 -0
  335. aip_agents/schema/__init__.py +69 -0
  336. aip_agents/schema/__init__.pyi +9 -0
  337. aip_agents/schema/a2a.py +56 -0
  338. aip_agents/schema/a2a.pyi +40 -0
  339. aip_agents/schema/agent.py +111 -0
  340. aip_agents/schema/agent.pyi +65 -0
  341. aip_agents/schema/hitl.py +157 -0
  342. aip_agents/schema/hitl.pyi +89 -0
  343. aip_agents/schema/langgraph.py +37 -0
  344. aip_agents/schema/langgraph.pyi +28 -0
  345. aip_agents/schema/model_id.py +97 -0
  346. aip_agents/schema/model_id.pyi +54 -0
  347. aip_agents/schema/step_limit.py +108 -0
  348. aip_agents/schema/step_limit.pyi +63 -0
  349. aip_agents/schema/storage.py +40 -0
  350. aip_agents/schema/storage.pyi +21 -0
  351. aip_agents/sentry/__init__.py +11 -0
  352. aip_agents/sentry/__init__.pyi +3 -0
  353. aip_agents/sentry/sentry.py +151 -0
  354. aip_agents/sentry/sentry.pyi +48 -0
  355. aip_agents/storage/__init__.py +41 -0
  356. aip_agents/storage/__init__.pyi +8 -0
  357. aip_agents/storage/base.py +85 -0
  358. aip_agents/storage/base.pyi +58 -0
  359. aip_agents/storage/clients/__init__.py +12 -0
  360. aip_agents/storage/clients/__init__.pyi +3 -0
  361. aip_agents/storage/clients/minio_client.py +318 -0
  362. aip_agents/storage/clients/minio_client.pyi +137 -0
  363. aip_agents/storage/config.py +62 -0
  364. aip_agents/storage/config.pyi +29 -0
  365. aip_agents/storage/providers/__init__.py +15 -0
  366. aip_agents/storage/providers/__init__.pyi +5 -0
  367. aip_agents/storage/providers/base.py +106 -0
  368. aip_agents/storage/providers/base.pyi +88 -0
  369. aip_agents/storage/providers/memory.py +114 -0
  370. aip_agents/storage/providers/memory.pyi +79 -0
  371. aip_agents/storage/providers/object_storage.py +214 -0
  372. aip_agents/storage/providers/object_storage.pyi +98 -0
  373. aip_agents/tools/__init__.py +33 -0
  374. aip_agents/tools/__init__.pyi +13 -0
  375. aip_agents/tools/bosa_tools.py +105 -0
  376. aip_agents/tools/bosa_tools.pyi +37 -0
  377. aip_agents/tools/browser_use/__init__.py +82 -0
  378. aip_agents/tools/browser_use/__init__.pyi +14 -0
  379. aip_agents/tools/browser_use/action_parser.py +103 -0
  380. aip_agents/tools/browser_use/action_parser.pyi +18 -0
  381. aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
  382. aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
  383. aip_agents/tools/browser_use/llm_config.py +120 -0
  384. aip_agents/tools/browser_use/llm_config.pyi +52 -0
  385. aip_agents/tools/browser_use/minio_storage.py +198 -0
  386. aip_agents/tools/browser_use/minio_storage.pyi +109 -0
  387. aip_agents/tools/browser_use/schemas.py +119 -0
  388. aip_agents/tools/browser_use/schemas.pyi +32 -0
  389. aip_agents/tools/browser_use/session.py +76 -0
  390. aip_agents/tools/browser_use/session.pyi +4 -0
  391. aip_agents/tools/browser_use/session_errors.py +132 -0
  392. aip_agents/tools/browser_use/session_errors.pyi +53 -0
  393. aip_agents/tools/browser_use/steel_session_recording.py +317 -0
  394. aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
  395. aip_agents/tools/browser_use/streaming.py +813 -0
  396. aip_agents/tools/browser_use/streaming.pyi +81 -0
  397. aip_agents/tools/browser_use/structured_data_parser.py +257 -0
  398. aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
  399. aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
  400. aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
  401. aip_agents/tools/browser_use/types.py +78 -0
  402. aip_agents/tools/browser_use/types.pyi +45 -0
  403. aip_agents/tools/code_sandbox/__init__.py +26 -0
  404. aip_agents/tools/code_sandbox/__init__.pyi +3 -0
  405. aip_agents/tools/code_sandbox/constant.py +13 -0
  406. aip_agents/tools/code_sandbox/constant.pyi +4 -0
  407. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +257 -0
  408. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +86 -0
  409. aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
  410. aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
  411. aip_agents/tools/constants.py +165 -0
  412. aip_agents/tools/constants.pyi +135 -0
  413. aip_agents/tools/document_loader/__init__.py +44 -0
  414. aip_agents/tools/document_loader/__init__.pyi +7 -0
  415. aip_agents/tools/document_loader/base_reader.py +302 -0
  416. aip_agents/tools/document_loader/base_reader.pyi +75 -0
  417. aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
  418. aip_agents/tools/document_loader/docx_reader_tool.pyi +10 -0
  419. aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
  420. aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
  421. aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
  422. aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
  423. aip_agents/tools/document_loader/pdf_splitter.py +169 -0
  424. aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
  425. aip_agents/tools/gl_connector/__init__.py +5 -0
  426. aip_agents/tools/gl_connector/__init__.pyi +3 -0
  427. aip_agents/tools/gl_connector/tool.py +351 -0
  428. aip_agents/tools/gl_connector/tool.pyi +74 -0
  429. aip_agents/tools/memory_search/__init__.py +22 -0
  430. aip_agents/tools/memory_search/__init__.pyi +5 -0
  431. aip_agents/tools/memory_search/base.py +200 -0
  432. aip_agents/tools/memory_search/base.pyi +69 -0
  433. aip_agents/tools/memory_search/mem0.py +258 -0
  434. aip_agents/tools/memory_search/mem0.pyi +19 -0
  435. aip_agents/tools/memory_search/schema.py +48 -0
  436. aip_agents/tools/memory_search/schema.pyi +15 -0
  437. aip_agents/tools/memory_search_tool.py +26 -0
  438. aip_agents/tools/memory_search_tool.pyi +3 -0
  439. aip_agents/tools/time_tool.py +117 -0
  440. aip_agents/tools/time_tool.pyi +16 -0
  441. aip_agents/tools/tool_config_injector.py +300 -0
  442. aip_agents/tools/tool_config_injector.pyi +26 -0
  443. aip_agents/tools/web_search/__init__.py +15 -0
  444. aip_agents/tools/web_search/__init__.pyi +3 -0
  445. aip_agents/tools/web_search/serper_tool.py +187 -0
  446. aip_agents/tools/web_search/serper_tool.pyi +19 -0
  447. aip_agents/types/__init__.py +70 -0
  448. aip_agents/types/__init__.pyi +36 -0
  449. aip_agents/types/a2a_events.py +13 -0
  450. aip_agents/types/a2a_events.pyi +3 -0
  451. aip_agents/utils/__init__.py +79 -0
  452. aip_agents/utils/__init__.pyi +11 -0
  453. aip_agents/utils/a2a_connector.py +1757 -0
  454. aip_agents/utils/a2a_connector.pyi +146 -0
  455. aip_agents/utils/artifact_helpers.py +502 -0
  456. aip_agents/utils/artifact_helpers.pyi +203 -0
  457. aip_agents/utils/constants.py +22 -0
  458. aip_agents/utils/constants.pyi +10 -0
  459. aip_agents/utils/datetime/__init__.py +34 -0
  460. aip_agents/utils/datetime/__init__.pyi +4 -0
  461. aip_agents/utils/datetime/normalization.py +231 -0
  462. aip_agents/utils/datetime/normalization.pyi +95 -0
  463. aip_agents/utils/datetime/timezone.py +206 -0
  464. aip_agents/utils/datetime/timezone.pyi +48 -0
  465. aip_agents/utils/env_loader.py +27 -0
  466. aip_agents/utils/env_loader.pyi +10 -0
  467. aip_agents/utils/event_handler_registry.py +58 -0
  468. aip_agents/utils/event_handler_registry.pyi +23 -0
  469. aip_agents/utils/file_prompt_utils.py +176 -0
  470. aip_agents/utils/file_prompt_utils.pyi +21 -0
  471. aip_agents/utils/final_response_builder.py +211 -0
  472. aip_agents/utils/final_response_builder.pyi +34 -0
  473. aip_agents/utils/formatter_llm_client.py +231 -0
  474. aip_agents/utils/formatter_llm_client.pyi +71 -0
  475. aip_agents/utils/langgraph/__init__.py +19 -0
  476. aip_agents/utils/langgraph/__init__.pyi +3 -0
  477. aip_agents/utils/langgraph/converter.py +128 -0
  478. aip_agents/utils/langgraph/converter.pyi +49 -0
  479. aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
  480. aip_agents/utils/langgraph/tool_managers/__init__.pyi +5 -0
  481. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
  482. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +35 -0
  483. aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
  484. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +48 -0
  485. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
  486. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +56 -0
  487. aip_agents/utils/langgraph/tool_output_management.py +967 -0
  488. aip_agents/utils/langgraph/tool_output_management.pyi +292 -0
  489. aip_agents/utils/logger.py +195 -0
  490. aip_agents/utils/logger.pyi +60 -0
  491. aip_agents/utils/metadata/__init__.py +27 -0
  492. aip_agents/utils/metadata/__init__.pyi +5 -0
  493. aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
  494. aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
  495. aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
  496. aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
  497. aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
  498. aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
  499. aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
  500. aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
  501. aip_agents/utils/metadata/activity_narrative/context.py +49 -0
  502. aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
  503. aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
  504. aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
  505. aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
  506. aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
  507. aip_agents/utils/metadata/schemas/__init__.py +16 -0
  508. aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
  509. aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
  510. aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
  511. aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
  512. aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
  513. aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
  514. aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
  515. aip_agents/utils/metadata_helper.py +358 -0
  516. aip_agents/utils/metadata_helper.pyi +117 -0
  517. aip_agents/utils/name_preprocessor/__init__.py +17 -0
  518. aip_agents/utils/name_preprocessor/__init__.pyi +6 -0
  519. aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
  520. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +52 -0
  521. aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
  522. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +38 -0
  523. aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
  524. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +41 -0
  525. aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
  526. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +34 -0
  527. aip_agents/utils/pii/__init__.py +25 -0
  528. aip_agents/utils/pii/__init__.pyi +5 -0
  529. aip_agents/utils/pii/pii_handler.py +397 -0
  530. aip_agents/utils/pii/pii_handler.pyi +96 -0
  531. aip_agents/utils/pii/pii_helper.py +207 -0
  532. aip_agents/utils/pii/pii_helper.pyi +78 -0
  533. aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
  534. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
  535. aip_agents/utils/reference_helper.py +273 -0
  536. aip_agents/utils/reference_helper.pyi +81 -0
  537. aip_agents/utils/sse_chunk_transformer.py +831 -0
  538. aip_agents/utils/sse_chunk_transformer.pyi +166 -0
  539. aip_agents/utils/step_limit_manager.py +265 -0
  540. aip_agents/utils/step_limit_manager.pyi +112 -0
  541. aip_agents/utils/token_usage_helper.py +156 -0
  542. aip_agents/utils/token_usage_helper.pyi +60 -0
  543. aip_agents_binary-0.5.20.dist-info/METADATA +681 -0
  544. aip_agents_binary-0.5.20.dist-info/RECORD +546 -0
  545. aip_agents_binary-0.5.20.dist-info/WHEEL +5 -0
  546. aip_agents_binary-0.5.20.dist-info/top_level.txt +1 -0
@@ -0,0 +1,125 @@
1
+ import threading
2
+ from _typeshed import Incomplete
3
+ from aip_agents.middleware.base import ModelRequest as ModelRequest
4
+ from aip_agents.utils.logger import get_logger as get_logger
5
+ from enum import StrEnum
6
+ from langchain_core.tools import BaseTool
7
+ from pydantic import BaseModel, SkipValidation
8
+ from typing import Any
9
+
10
+ logger: Incomplete
11
+
12
+ class TodoStatus(StrEnum):
13
+ """Enumeration of possible todo item statuses."""
14
+ PENDING: str
15
+ IN_PROGRESS: str
16
+ COMPLETED: str
17
+
18
+ WRITE_TODOS_SYSTEM_PROMPT: str
19
+ EMPTY_TODO_REMINDER: str
20
+
21
+ class TodoItem(BaseModel):
22
+ """Represents a single todo item in the agent's plan.
23
+
24
+ Attributes:
25
+ content: Human-readable description of the task.
26
+ active_form: Short imperative phrase for UI display.
27
+ status: Current status of the todo item.
28
+ """
29
+ content: str
30
+ active_form: str
31
+ status: TodoStatus
32
+
33
+ class TodoList(BaseModel):
34
+ """Represents a complete todo list for a thread.
35
+
36
+ Attributes:
37
+ items: List of todo items in order.
38
+ """
39
+ items: list[TodoItem]
40
+
41
+ WRITE_TODOS_TOOL_DESCRIPTION: str
42
+
43
+ class WriteTodosInput(BaseModel):
44
+ """Input schema for the write_todos tool."""
45
+ todos: TodoList
46
+
47
+ class WriteTodosTool(BaseTool):
48
+ """LangChain-compatible tool for managing todo lists via TodoListMiddleware."""
49
+ name: str
50
+ description: str
51
+ args_schema: type[BaseModel]
52
+ storage: SkipValidation[dict[str, TodoList]]
53
+ storage_lock: SkipValidation[threading.RLock]
54
+
55
+ class TodoListMiddleware:
56
+ """Middleware that provides planning capabilities via todo list management.
57
+
58
+ Adds the write_todos tool and enhances the system prompt with planning
59
+ instructions, encouraging agents to break down complex tasks.
60
+
61
+ This middleware maintains thread-isolated todo lists, ensuring that
62
+ different conversation threads don't interfere with each other.
63
+
64
+ Each middleware instance has its own storage, preventing race conditions
65
+ when multiple agent instances are used concurrently.
66
+ """
67
+ tools: Incomplete
68
+ system_prompt_additions: Incomplete
69
+ def __init__(self) -> None:
70
+ """Initialize the TodoList middleware with planning tools and instructions."""
71
+ def before_model(self, state: dict[str, Any]) -> dict[str, Any]:
72
+ """Hook executed before model invocation.
73
+
74
+ Syncs todos FROM state TO internal storage for LangGraph agents.
75
+ This allows todos to be persisted via LangGraph checkpointer.
76
+
77
+ Args:
78
+ state: Current agent state (may contain 'todos' key).
79
+
80
+ Returns:
81
+ Empty dict (no state updates needed).
82
+ """
83
+ def modify_model_request(self, request: ModelRequest, state: dict[str, Any]) -> ModelRequest:
84
+ """Hook to modify model request before invocation.
85
+
86
+ Injects current todo list status into the system prompt, ensuring
87
+ the agent has visibility into its current plan on every turn.
88
+ This follows Claude Code's pattern of injecting system reminders.
89
+
90
+ Args:
91
+ request: The model request.
92
+ state: Current agent state.
93
+
94
+ Returns:
95
+ Modified request with todo status injected into system prompt.
96
+ """
97
+ def after_model(self, state: dict[str, Any]) -> dict[str, Any]:
98
+ """Hook executed after model invocation.
99
+
100
+ Syncs todos FROM internal storage TO state for LangGraph agents.
101
+ This ensures any tool updates are reflected in the checkpointed state.
102
+
103
+ Args:
104
+ state: Current agent state.
105
+
106
+ Returns:
107
+ Dict with 'todos' key containing updated TodoList, or empty dict.
108
+ """
109
+ def get_todos(self, thread_id: str = 'default') -> TodoList:
110
+ '''Retrieve the todo list for a specific thread.
111
+
112
+ Args:
113
+ thread_id: Thread identifier. Defaults to "default".
114
+
115
+ Returns:
116
+ TodoList for the thread, or empty list if none exists.
117
+ '''
118
+ def clear_todos(self, thread_id: str = 'default') -> None:
119
+ '''Clear the todo list for a specific thread.
120
+
121
+ Useful for cleanup between test runs or conversation resets.
122
+
123
+ Args:
124
+ thread_id: Thread identifier. Defaults to "default".
125
+ '''
@@ -0,0 +1,69 @@
1
+ """Central schema package for aip_agents data models."""
2
+
3
+ from aip_agents.schema.a2a import A2AEvent, A2AStreamEventType, ToolCallInfo, ToolResultInfo
4
+ from aip_agents.schema.agent import (
5
+ A2AClientConfig,
6
+ AgentConfig,
7
+ BaseAgentConfig,
8
+ CredentialType,
9
+ HttpxClientOptions,
10
+ LangflowAgentConfig,
11
+ StreamMode,
12
+ )
13
+ from aip_agents.schema.hitl import (
14
+ ApprovalDecision,
15
+ ApprovalDecisionType,
16
+ ApprovalLogEntry,
17
+ ApprovalRequest,
18
+ HitlMetadata,
19
+ )
20
+ from aip_agents.schema.langgraph import ToolCallResult, ToolStorageParams
21
+ from aip_agents.schema.model_id import ModelId, ModelProvider
22
+ from aip_agents.schema.step_limit import (
23
+ MaxDelegationDepthExceededError,
24
+ MaxStepsExceededError,
25
+ StepLimitConfig,
26
+ StepLimitError,
27
+ StepLimitErrorResponse,
28
+ StepLimitErrorType,
29
+ )
30
+ from aip_agents.schema.storage import OBJECT_STORAGE_PREFIX, StorageConfig, StorageType
31
+
32
+ __all__ = [
33
+ # A2A
34
+ "A2AEvent",
35
+ "A2AStreamEventType",
36
+ "ToolCallInfo",
37
+ "ToolResultInfo",
38
+ # Agent
39
+ "A2AClientConfig",
40
+ "AgentConfig",
41
+ "BaseAgentConfig",
42
+ "CredentialType",
43
+ "HttpxClientOptions",
44
+ "LangflowAgentConfig",
45
+ "StreamMode",
46
+ # HITL
47
+ "ApprovalDecision",
48
+ "ApprovalDecisionType",
49
+ "ApprovalLogEntry",
50
+ "ApprovalRequest",
51
+ "HitlMetadata",
52
+ # LangGraph
53
+ "ToolCallResult",
54
+ "ToolStorageParams",
55
+ # Model
56
+ "ModelId",
57
+ "ModelProvider",
58
+ # Storage
59
+ "OBJECT_STORAGE_PREFIX",
60
+ "StorageConfig",
61
+ "StorageType",
62
+ # Step Limit
63
+ "MaxDelegationDepthExceededError",
64
+ "MaxStepsExceededError",
65
+ "StepLimitConfig",
66
+ "StepLimitError",
67
+ "StepLimitErrorResponse",
68
+ "StepLimitErrorType",
69
+ ]
@@ -0,0 +1,9 @@
1
+ from aip_agents.schema.a2a import A2AEvent as A2AEvent, A2AStreamEventType as A2AStreamEventType, ToolCallInfo as ToolCallInfo, ToolResultInfo as ToolResultInfo
2
+ from aip_agents.schema.agent import A2AClientConfig as A2AClientConfig, AgentConfig as AgentConfig, BaseAgentConfig as BaseAgentConfig, CredentialType as CredentialType, HttpxClientOptions as HttpxClientOptions, LangflowAgentConfig as LangflowAgentConfig, StreamMode as StreamMode
3
+ from aip_agents.schema.hitl import ApprovalDecision as ApprovalDecision, ApprovalDecisionType as ApprovalDecisionType, ApprovalLogEntry as ApprovalLogEntry, ApprovalRequest as ApprovalRequest, HitlMetadata as HitlMetadata
4
+ from aip_agents.schema.langgraph import ToolCallResult as ToolCallResult, ToolStorageParams as ToolStorageParams
5
+ from aip_agents.schema.model_id import ModelId as ModelId, ModelProvider as ModelProvider
6
+ from aip_agents.schema.step_limit import MaxDelegationDepthExceededError as MaxDelegationDepthExceededError, MaxStepsExceededError as MaxStepsExceededError, StepLimitConfig as StepLimitConfig, StepLimitError as StepLimitError, StepLimitErrorResponse as StepLimitErrorResponse, StepLimitErrorType as StepLimitErrorType
7
+ from aip_agents.schema.storage import OBJECT_STORAGE_PREFIX as OBJECT_STORAGE_PREFIX, StorageConfig as StorageConfig, StorageType as StorageType
8
+
9
+ __all__ = ['A2AEvent', 'A2AStreamEventType', 'ToolCallInfo', 'ToolResultInfo', 'A2AClientConfig', 'AgentConfig', 'BaseAgentConfig', 'CredentialType', 'HttpxClientOptions', 'LangflowAgentConfig', 'StreamMode', 'ApprovalDecision', 'ApprovalDecisionType', 'ApprovalLogEntry', 'ApprovalRequest', 'HitlMetadata', 'ToolCallResult', 'ToolStorageParams', 'ModelId', 'ModelProvider', 'OBJECT_STORAGE_PREFIX', 'StorageConfig', 'StorageType', 'MaxDelegationDepthExceededError', 'MaxStepsExceededError', 'StepLimitConfig', 'StepLimitError', 'StepLimitErrorResponse', 'StepLimitErrorType']
@@ -0,0 +1,56 @@
1
+ """A2A event schema definitions used for agent-executor communication."""
2
+
3
+ from enum import Enum
4
+ from typing import Any
5
+
6
+ from typing_extensions import TypedDict
7
+
8
+ __all__ = [
9
+ "A2AStreamEventType",
10
+ "A2AEvent",
11
+ "ToolCallInfo",
12
+ "ToolResultInfo",
13
+ ]
14
+
15
+
16
+ class A2AStreamEventType(Enum):
17
+ """Semantic event types for A2A agent-executor communication."""
18
+
19
+ STATUS_UPDATE = "status_update"
20
+ CONTENT_CHUNK = "content_chunk"
21
+ FINAL_RESPONSE = "final_response"
22
+ TOOL_CALL = "tool_call"
23
+ TOOL_RESULT = "tool_result"
24
+ ERROR = "error"
25
+ STEP_LIMIT_EXCEEDED = "step_limit_exceeded"
26
+
27
+
28
+ class A2AEvent(TypedDict):
29
+ """Structured event data used by the A2A connector."""
30
+
31
+ event_type: A2AStreamEventType
32
+ content: str
33
+ metadata: dict[str, Any]
34
+ tool_info: dict[str, Any] | None
35
+ is_final: bool
36
+ artifacts: list[dict[str, Any]] | None
37
+ references: list[Any] | None
38
+ step_usage: dict[str, Any] | None
39
+ total_usage: dict[str, Any] | None
40
+ thinking_and_activity_info: dict[str, Any] | None
41
+
42
+
43
+ class ToolCallInfo(TypedDict):
44
+ """Structured information for tool invocation events."""
45
+
46
+ tool_calls: list[dict[str, Any]]
47
+ status: str
48
+
49
+
50
+ class ToolResultInfo(TypedDict):
51
+ """Structured information for tool completion events."""
52
+
53
+ name: str
54
+ args: dict[str, Any]
55
+ output: str
56
+ execution_time: float | None
@@ -0,0 +1,40 @@
1
+ from enum import Enum
2
+ from typing import Any
3
+ from typing_extensions import TypedDict
4
+
5
+ __all__ = ['A2AStreamEventType', 'A2AEvent', 'ToolCallInfo', 'ToolResultInfo']
6
+
7
+ class A2AStreamEventType(Enum):
8
+ """Semantic event types for A2A agent-executor communication."""
9
+ STATUS_UPDATE: str
10
+ CONTENT_CHUNK: str
11
+ FINAL_RESPONSE: str
12
+ TOOL_CALL: str
13
+ TOOL_RESULT: str
14
+ ERROR: str
15
+ STEP_LIMIT_EXCEEDED: str
16
+
17
+ class A2AEvent(TypedDict):
18
+ """Structured event data used by the A2A connector."""
19
+ event_type: A2AStreamEventType
20
+ content: str
21
+ metadata: dict[str, Any]
22
+ tool_info: dict[str, Any] | None
23
+ is_final: bool
24
+ artifacts: list[dict[str, Any]] | None
25
+ references: list[Any] | None
26
+ step_usage: dict[str, Any] | None
27
+ total_usage: dict[str, Any] | None
28
+ thinking_and_activity_info: dict[str, Any] | None
29
+
30
+ class ToolCallInfo(TypedDict):
31
+ """Structured information for tool invocation events."""
32
+ tool_calls: list[dict[str, Any]]
33
+ status: str
34
+
35
+ class ToolResultInfo(TypedDict):
36
+ """Structured information for tool completion events."""
37
+ name: str
38
+ args: dict[str, Any]
39
+ output: str
40
+ execution_time: float | None
@@ -0,0 +1,111 @@
1
+ """Schema definitions for agent configuration types."""
2
+
3
+ from enum import StrEnum
4
+ from typing import Any
5
+
6
+ from a2a.types import AgentCard
7
+ from gllm_core.utils.retry import RetryConfig
8
+ from pydantic import BaseModel, Field
9
+
10
+ try:
11
+ # Pydantic v2 preferred config
12
+ from pydantic import ConfigDict # type: ignore
13
+ except Exception: # pragma: no cover
14
+ ConfigDict = None # type: ignore
15
+
16
+ __all__ = [
17
+ "CredentialType",
18
+ "StreamMode",
19
+ "HttpxClientOptions",
20
+ "A2AClientConfig",
21
+ "BaseAgentConfig",
22
+ "AgentConfig",
23
+ "LangflowAgentConfig",
24
+ ]
25
+
26
+
27
+ class CredentialType(StrEnum):
28
+ """Credential type enumeration for type safety and better developer experience."""
29
+
30
+ API_KEY = "api_key"
31
+ FILE = "file"
32
+ DICT = "dict"
33
+
34
+
35
+ class StreamMode(StrEnum):
36
+ """LangGraph stream modes for astream operations."""
37
+
38
+ VALUES = "values"
39
+ CUSTOM = "custom"
40
+ MESSAGES = "messages"
41
+
42
+
43
+ class HttpxClientOptions(BaseModel):
44
+ """Options for the HTTP client."""
45
+
46
+ timeout: float = 360.0
47
+ trust_env: bool = False
48
+ follow_redirects: bool = True
49
+
50
+ if ConfigDict is not None:
51
+ # Pydantic v2 style config
52
+ model_config = ConfigDict(extra="allow") # type: ignore[assignment]
53
+ else: # pragma: no cover
54
+
55
+ class Config: # type: ignore[no-redef]
56
+ """Pydantic v1 fallback config for HttpxClientOptions."""
57
+
58
+ extra = "allow"
59
+
60
+
61
+ class A2AClientConfig(BaseModel):
62
+ """Configuration for A2A client."""
63
+
64
+ discovery_urls: list[str] | None = None
65
+ known_agents: dict[str, AgentCard] = Field(default_factory=dict)
66
+ httpx_client_options: HttpxClientOptions | None = HttpxClientOptions()
67
+
68
+
69
+ class BaseAgentConfig(BaseModel):
70
+ """Base configuration for agent implementations."""
71
+
72
+ tools: list[Any] | None = None
73
+ default_hyperparameters: dict[str, Any] | None = None
74
+
75
+ if ConfigDict is not None:
76
+ model_config = ConfigDict(extra="allow") # type: ignore[assignment]
77
+ else: # pragma: no cover
78
+
79
+ class Config: # type: ignore[no-redef]
80
+ """Pydantic v1 fallback config for BaseAgentConfig."""
81
+
82
+ extra = "allow"
83
+
84
+
85
+ class AgentConfig(BaseAgentConfig):
86
+ """Configuration for agent implementations with language model settings."""
87
+
88
+ lm_name: str | None = None
89
+ lm_hyperparameters: dict[str, Any] | None = None
90
+ lm_provider: str | None = None
91
+ lm_base_url: str | None = None
92
+ lm_api_key: str | None = None
93
+ lm_credentials: str | dict[str, Any] | None = None
94
+ lm_retry_config: RetryConfig | None = None
95
+
96
+
97
+ class LangflowAgentConfig(BaseAgentConfig):
98
+ """Configuration for Langflow agent implementations."""
99
+
100
+ flow_id: str
101
+ base_url: str | None = None
102
+ api_key: str | None = None
103
+
104
+ if ConfigDict is not None:
105
+ model_config = ConfigDict(extra="allow") # type: ignore[assignment]
106
+ else: # pragma: no cover
107
+
108
+ class Config: # type: ignore[no-redef]
109
+ """Pydantic v1 fallback config for LangflowAgentConfig."""
110
+
111
+ extra = "allow"
@@ -0,0 +1,65 @@
1
+ from _typeshed import Incomplete
2
+ from a2a.types import AgentCard
3
+ from enum import StrEnum
4
+ from gllm_core.utils.retry import RetryConfig
5
+ from pydantic import BaseModel
6
+ from typing import Any
7
+
8
+ __all__ = ['CredentialType', 'StreamMode', 'HttpxClientOptions', 'A2AClientConfig', 'BaseAgentConfig', 'AgentConfig', 'LangflowAgentConfig']
9
+
10
+ class CredentialType(StrEnum):
11
+ """Credential type enumeration for type safety and better developer experience."""
12
+ API_KEY: str
13
+ FILE: str
14
+ DICT: str
15
+
16
+ class StreamMode(StrEnum):
17
+ """LangGraph stream modes for astream operations."""
18
+ VALUES: str
19
+ CUSTOM: str
20
+ MESSAGES: str
21
+
22
+ class HttpxClientOptions(BaseModel):
23
+ """Options for the HTTP client."""
24
+ timeout: float
25
+ trust_env: bool
26
+ follow_redirects: bool
27
+ model_config: Incomplete
28
+ class Config:
29
+ """Pydantic v1 fallback config for HttpxClientOptions."""
30
+ extra: str
31
+
32
+ class A2AClientConfig(BaseModel):
33
+ """Configuration for A2A client."""
34
+ discovery_urls: list[str] | None
35
+ known_agents: dict[str, AgentCard]
36
+ httpx_client_options: HttpxClientOptions | None
37
+
38
+ class BaseAgentConfig(BaseModel):
39
+ """Base configuration for agent implementations."""
40
+ tools: list[Any] | None
41
+ default_hyperparameters: dict[str, Any] | None
42
+ model_config: Incomplete
43
+ class Config:
44
+ """Pydantic v1 fallback config for BaseAgentConfig."""
45
+ extra: str
46
+
47
+ class AgentConfig(BaseAgentConfig):
48
+ """Configuration for agent implementations with language model settings."""
49
+ lm_name: str | None
50
+ lm_hyperparameters: dict[str, Any] | None
51
+ lm_provider: str | None
52
+ lm_base_url: str | None
53
+ lm_api_key: str | None
54
+ lm_credentials: str | dict[str, Any] | None
55
+ lm_retry_config: RetryConfig | None
56
+
57
+ class LangflowAgentConfig(BaseAgentConfig):
58
+ """Configuration for Langflow agent implementations."""
59
+ flow_id: str
60
+ base_url: str | None
61
+ api_key: str | None
62
+ model_config: Incomplete
63
+ class Config:
64
+ """Pydantic v1 fallback config for LangflowAgentConfig."""
65
+ extra: str
@@ -0,0 +1,157 @@
1
+ """Schema definitions for Human-in-the-Loop approval workflows."""
2
+
3
+ from dataclasses import dataclass
4
+ from datetime import datetime
5
+ from enum import StrEnum
6
+ from typing import Any
7
+ from uuid import uuid4
8
+
9
+ from pydantic import BaseModel, ConfigDict, Field
10
+
11
+ __all__ = [
12
+ "ApprovalDecisionType",
13
+ "ApprovalRequest",
14
+ "ApprovalDecision",
15
+ "ApprovalLogEntry",
16
+ "HitlMetadata",
17
+ ]
18
+
19
+
20
+ class ApprovalDecisionType(StrEnum):
21
+ """Enumeration of possible approval decision types."""
22
+
23
+ APPROVED = "approved"
24
+ REJECTED = "rejected"
25
+ SKIPPED = "skipped"
26
+ TIMEOUT_SKIP = "timeout_skip"
27
+ PENDING = "pending"
28
+
29
+
30
+ @dataclass
31
+ class ApprovalRequest:
32
+ """Represents an in-flight prompt shown to the operator."""
33
+
34
+ request_id: str
35
+ tool_name: str
36
+ arguments_preview: str
37
+ context: dict[str, str] | None = None
38
+ created_at: datetime | None = None
39
+ timeout_at: datetime | None = None
40
+
41
+ def __post_init__(self) -> None:
42
+ """Initialize timestamps if not provided."""
43
+ if self.created_at is None:
44
+ self.created_at = datetime.now()
45
+ if self.timeout_at is None and self.created_at is not None:
46
+ # Timeout is set externally when configuration is available
47
+ pass
48
+
49
+ @classmethod
50
+ def create(
51
+ cls,
52
+ tool_name: str,
53
+ arguments_preview: str,
54
+ context: dict[str, str] | None = None,
55
+ ) -> "ApprovalRequest":
56
+ """Create a new approval request with generated request_id.
57
+
58
+ Args:
59
+ tool_name (str): The name of the tool requiring approval.
60
+ arguments_preview (str): A preview of the arguments for display.
61
+ context (dict[str, str] | None, optional): Additional context information.
62
+
63
+ Returns:
64
+ ApprovalRequest: A new approval request instance.
65
+ """
66
+ return cls(
67
+ request_id=str(uuid4()),
68
+ tool_name=tool_name,
69
+ arguments_preview=arguments_preview,
70
+ context=context,
71
+ )
72
+
73
+
74
+ @dataclass
75
+ class ApprovalDecision:
76
+ """Captures the operator outcome."""
77
+
78
+ request_id: str
79
+ decision: ApprovalDecisionType
80
+ operator_input: str
81
+ decided_at: datetime | None = None
82
+ latency_ms: int | None = None
83
+
84
+ def __post_init__(self) -> None:
85
+ """Initialize timestamp if not provided."""
86
+ if self.decided_at is None:
87
+ self.decided_at = datetime.now()
88
+
89
+
90
+ @dataclass
91
+ class ApprovalLogEntry:
92
+ """Structured log entry for HITL decisions."""
93
+
94
+ request_id: str
95
+ tool_name: str
96
+ decision: str
97
+ event: str = "hitl_decision"
98
+ agent_id: str | None = None
99
+ thread_id: str | None = None
100
+ additional_context: dict[str, Any] | None = None
101
+ timestamp: datetime | None = None
102
+
103
+ def __post_init__(self) -> None:
104
+ """Initialize timestamp if not provided."""
105
+ if self.timestamp is None:
106
+ self.timestamp = datetime.now()
107
+
108
+
109
+ class HitlMetadata(BaseModel):
110
+ """Structured metadata payload included in agent streaming events."""
111
+
112
+ required: bool = Field(default=True)
113
+ decision: ApprovalDecisionType
114
+ request_id: str
115
+ timeout_seconds: int | None = Field(default=None, ge=0)
116
+ timeout_at: datetime | None = None
117
+
118
+ model_config = ConfigDict(extra="forbid", use_enum_values=True)
119
+
120
+ def as_payload(self) -> dict[str, Any]:
121
+ """Return a JSON-ready metadata payload."""
122
+ payload = self.model_dump(mode="json", exclude_none=True)
123
+
124
+ # Pydantic emits UTC datetimes as Zulu strings when dumping to JSON.
125
+ # Preserve the canonical ``+00:00`` suffix expected by downstream tests.
126
+ if "timeout_at" in payload and isinstance(self.timeout_at, datetime):
127
+ payload["timeout_at"] = self.timeout_at.isoformat()
128
+
129
+ return payload
130
+
131
+ @classmethod
132
+ def from_decision(
133
+ cls,
134
+ decision: ApprovalDecision,
135
+ *,
136
+ required: bool = True,
137
+ timeout_seconds: int | None = None,
138
+ timeout_at: datetime | None = None,
139
+ ) -> "HitlMetadata":
140
+ """Build metadata from an ``ApprovalDecision``.
141
+
142
+ Args:
143
+ decision (ApprovalDecision): The approval decision to build metadata from.
144
+ required (bool, optional): Whether approval is required. Defaults to True.
145
+ timeout_seconds (int | None, optional): Timeout in seconds for the decision.
146
+ timeout_at (datetime | None, optional): Specific timeout datetime.
147
+
148
+ Returns:
149
+ HitlMetadata: The constructed metadata instance.
150
+ """
151
+ return cls(
152
+ required=required,
153
+ decision=decision.decision,
154
+ request_id=decision.request_id,
155
+ timeout_seconds=timeout_seconds,
156
+ timeout_at=timeout_at,
157
+ )