aip-agents-binary 0.6.0__py3-none-any.whl → 0.6.2__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 (306) hide show
  1. aip_agents/agent/langgraph_react_agent.py +194 -2
  2. aip_agents/examples/hello_world_ptc.py +49 -0
  3. aip_agents/ptc/__init__.py +48 -0
  4. aip_agents/ptc/doc_gen.py +122 -0
  5. aip_agents/ptc/exceptions.py +39 -0
  6. aip_agents/ptc/executor.py +143 -0
  7. aip_agents/ptc/mcp/__init__.py +45 -0
  8. aip_agents/ptc/mcp/sandbox_bridge.py +668 -0
  9. aip_agents/ptc/mcp/templates/__init__.py +1 -0
  10. aip_agents/ptc/mcp/templates/mcp_client.py.template +239 -0
  11. aip_agents/ptc/naming.py +184 -0
  12. aip_agents/ptc/payload.py +26 -0
  13. aip_agents/ptc/prompt_builder.py +571 -0
  14. aip_agents/ptc/ptc_helper.py +16 -0
  15. aip_agents/ptc/sandbox_bridge.py +58 -0
  16. aip_agents/ptc/template_utils.py +33 -0
  17. aip_agents/ptc/templates/__init__.py +1 -0
  18. aip_agents/ptc/templates/ptc_helper.py.template +134 -0
  19. aip_agents/sandbox/__init__.py +43 -0
  20. aip_agents/sandbox/defaults.py +9 -0
  21. aip_agents/sandbox/e2b_runtime.py +267 -0
  22. aip_agents/sandbox/template_builder.py +131 -0
  23. aip_agents/sandbox/types.py +24 -0
  24. aip_agents/sandbox/validation.py +50 -0
  25. aip_agents/tools/__init__.py +2 -0
  26. aip_agents/tools/execute_ptc_code.py +308 -0
  27. {aip_agents_binary-0.6.0.dist-info → aip_agents_binary-0.6.2.dist-info}/METADATA +1 -1
  28. {aip_agents_binary-0.6.0.dist-info → aip_agents_binary-0.6.2.dist-info}/RECORD +30 -282
  29. aip_agents/__init__.pyi +0 -19
  30. aip_agents/a2a/__init__.pyi +0 -3
  31. aip_agents/a2a/server/__init__.pyi +0 -4
  32. aip_agents/a2a/server/base_executor.pyi +0 -73
  33. aip_agents/a2a/server/google_adk_executor.pyi +0 -51
  34. aip_agents/a2a/server/langflow_executor.pyi +0 -43
  35. aip_agents/a2a/server/langgraph_executor.pyi +0 -47
  36. aip_agents/a2a/types.pyi +0 -132
  37. aip_agents/agent/__init__.pyi +0 -9
  38. aip_agents/agent/base_agent.pyi +0 -221
  39. aip_agents/agent/base_langgraph_agent.pyi +0 -233
  40. aip_agents/agent/google_adk_agent.pyi +0 -141
  41. aip_agents/agent/google_adk_constants.pyi +0 -3
  42. aip_agents/agent/hitl/__init__.pyi +0 -6
  43. aip_agents/agent/hitl/config.pyi +0 -15
  44. aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +0 -42
  45. aip_agents/agent/hitl/manager.pyi +0 -200
  46. aip_agents/agent/hitl/models.pyi +0 -3
  47. aip_agents/agent/hitl/prompt/__init__.pyi +0 -4
  48. aip_agents/agent/hitl/prompt/base.pyi +0 -24
  49. aip_agents/agent/hitl/prompt/deferred.pyi +0 -30
  50. aip_agents/agent/hitl/registry.pyi +0 -101
  51. aip_agents/agent/interface.pyi +0 -81
  52. aip_agents/agent/interfaces.pyi +0 -44
  53. aip_agents/agent/langflow_agent.pyi +0 -133
  54. aip_agents/agent/langgraph_memory_enhancer_agent.pyi +0 -49
  55. aip_agents/agent/langgraph_react_agent.pyi +0 -131
  56. aip_agents/agent/system_instruction_context.pyi +0 -13
  57. aip_agents/clients/__init__.pyi +0 -4
  58. aip_agents/clients/langflow/__init__.pyi +0 -4
  59. aip_agents/clients/langflow/client.pyi +0 -140
  60. aip_agents/clients/langflow/types.pyi +0 -7
  61. aip_agents/constants.pyi +0 -7
  62. aip_agents/examples/__init__.pyi +0 -0
  63. aip_agents/examples/compare_streaming_client.pyi +0 -48
  64. aip_agents/examples/compare_streaming_server.pyi +0 -18
  65. aip_agents/examples/demo_memory_recall.pyi +0 -58
  66. aip_agents/examples/hello_world_a2a_google_adk_client.pyi +0 -9
  67. aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +0 -9
  68. aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +0 -9
  69. aip_agents/examples/hello_world_a2a_google_adk_server.pyi +0 -15
  70. aip_agents/examples/hello_world_a2a_langchain_client.pyi +0 -5
  71. aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +0 -5
  72. aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +0 -5
  73. aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +0 -5
  74. aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +0 -5
  75. aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +0 -15
  76. aip_agents/examples/hello_world_a2a_langchain_server.pyi +0 -15
  77. aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +0 -15
  78. aip_agents/examples/hello_world_a2a_langflow_client.pyi +0 -9
  79. aip_agents/examples/hello_world_a2a_langflow_server.pyi +0 -14
  80. aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +0 -5
  81. aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +0 -5
  82. aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +0 -16
  83. aip_agents/examples/hello_world_a2a_langgraph_client.pyi +0 -9
  84. aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +0 -9
  85. aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +0 -2
  86. aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +0 -9
  87. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +0 -5
  88. aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +0 -5
  89. aip_agents/examples/hello_world_a2a_langgraph_server.pyi +0 -14
  90. aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +0 -15
  91. aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +0 -15
  92. aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +0 -48
  93. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +0 -48
  94. aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +0 -45
  95. aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +0 -5
  96. aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +0 -15
  97. aip_agents/examples/hello_world_google_adk.pyi +0 -5
  98. aip_agents/examples/hello_world_google_adk_mcp_http.pyi +0 -5
  99. aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +0 -5
  100. aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +0 -5
  101. aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +0 -5
  102. aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +0 -5
  103. aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +0 -5
  104. aip_agents/examples/hello_world_google_adk_stream.pyi +0 -5
  105. aip_agents/examples/hello_world_langchain.pyi +0 -5
  106. aip_agents/examples/hello_world_langchain_lm_invoker.pyi +0 -2
  107. aip_agents/examples/hello_world_langchain_mcp_http.pyi +0 -5
  108. aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +0 -16
  109. aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +0 -5
  110. aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +0 -18
  111. aip_agents/examples/hello_world_langchain_mcp_sse.pyi +0 -5
  112. aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +0 -5
  113. aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +0 -5
  114. aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +0 -5
  115. aip_agents/examples/hello_world_langchain_stream.pyi +0 -5
  116. aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +0 -5
  117. aip_agents/examples/hello_world_langflow_agent.pyi +0 -35
  118. aip_agents/examples/hello_world_langgraph.pyi +0 -5
  119. aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +0 -5
  120. aip_agents/examples/hello_world_langgraph_mcp_http.pyi +0 -5
  121. aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +0 -5
  122. aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +0 -5
  123. aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +0 -5
  124. aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +0 -5
  125. aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +0 -5
  126. aip_agents/examples/hello_world_langgraph_stream.pyi +0 -5
  127. aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +0 -5
  128. aip_agents/examples/hello_world_model_switch_cli.pyi +0 -30
  129. aip_agents/examples/hello_world_multi_agent_adk.pyi +0 -6
  130. aip_agents/examples/hello_world_multi_agent_langchain.pyi +0 -5
  131. aip_agents/examples/hello_world_multi_agent_langgraph.pyi +0 -5
  132. aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +0 -5
  133. aip_agents/examples/hello_world_pii_logger.pyi +0 -5
  134. aip_agents/examples/hello_world_sentry.pyi +0 -21
  135. aip_agents/examples/hello_world_step_limits.pyi +0 -17
  136. aip_agents/examples/hello_world_stock_a2a_server.pyi +0 -17
  137. aip_agents/examples/hello_world_tool_output_client.pyi +0 -5
  138. aip_agents/examples/hello_world_tool_output_server.pyi +0 -19
  139. aip_agents/examples/hitl_demo.pyi +0 -67
  140. aip_agents/examples/pii_demo_langgraph_client.pyi +0 -5
  141. aip_agents/examples/pii_demo_langgraph_server.pyi +0 -20
  142. aip_agents/examples/pii_demo_multi_agent_client.pyi +0 -5
  143. aip_agents/examples/pii_demo_multi_agent_server.pyi +0 -40
  144. aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +0 -5
  145. aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +0 -19
  146. aip_agents/examples/tools/__init__.pyi +0 -9
  147. aip_agents/examples/tools/adk_arithmetic_tools.pyi +0 -24
  148. aip_agents/examples/tools/adk_weather_tool.pyi +0 -18
  149. aip_agents/examples/tools/data_generator_tool.pyi +0 -15
  150. aip_agents/examples/tools/data_visualization_tool.pyi +0 -19
  151. aip_agents/examples/tools/image_artifact_tool.pyi +0 -26
  152. aip_agents/examples/tools/langchain_arithmetic_tools.pyi +0 -17
  153. aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -20
  154. aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +0 -25
  155. aip_agents/examples/tools/langchain_weather_tool.pyi +0 -19
  156. aip_agents/examples/tools/langgraph_streaming_tool.pyi +0 -43
  157. aip_agents/examples/tools/mock_retrieval_tool.pyi +0 -13
  158. aip_agents/examples/tools/pii_demo_tools.pyi +0 -54
  159. aip_agents/examples/tools/random_chart_tool.pyi +0 -20
  160. aip_agents/examples/tools/serper_tool.pyi +0 -16
  161. aip_agents/examples/tools/stock_tools.pyi +0 -36
  162. aip_agents/examples/tools/table_generator_tool.pyi +0 -22
  163. aip_agents/examples/tools/time_tool.pyi +0 -15
  164. aip_agents/examples/tools/weather_forecast_tool.pyi +0 -14
  165. aip_agents/guardrails/__init__.pyi +0 -6
  166. aip_agents/guardrails/engines/__init__.pyi +0 -4
  167. aip_agents/guardrails/engines/base.pyi +0 -61
  168. aip_agents/guardrails/engines/nemo.pyi +0 -46
  169. aip_agents/guardrails/engines/phrase_matcher.pyi +0 -48
  170. aip_agents/guardrails/exceptions.pyi +0 -23
  171. aip_agents/guardrails/manager.pyi +0 -42
  172. aip_agents/guardrails/middleware.pyi +0 -87
  173. aip_agents/guardrails/schemas.pyi +0 -43
  174. aip_agents/guardrails/utils.pyi +0 -19
  175. aip_agents/mcp/__init__.pyi +0 -0
  176. aip_agents/mcp/client/__init__.pyi +0 -5
  177. aip_agents/mcp/client/base_mcp_client.pyi +0 -148
  178. aip_agents/mcp/client/connection_manager.pyi +0 -51
  179. aip_agents/mcp/client/google_adk/__init__.pyi +0 -3
  180. aip_agents/mcp/client/google_adk/client.pyi +0 -75
  181. aip_agents/mcp/client/langchain/__init__.pyi +0 -3
  182. aip_agents/mcp/client/langchain/client.pyi +0 -48
  183. aip_agents/mcp/client/persistent_session.pyi +0 -122
  184. aip_agents/mcp/client/session_pool.pyi +0 -101
  185. aip_agents/mcp/client/transports.pyi +0 -132
  186. aip_agents/mcp/utils/__init__.pyi +0 -0
  187. aip_agents/mcp/utils/config_validator.pyi +0 -82
  188. aip_agents/memory/__init__.pyi +0 -5
  189. aip_agents/memory/adapters/__init__.pyi +0 -4
  190. aip_agents/memory/adapters/base_adapter.pyi +0 -150
  191. aip_agents/memory/adapters/mem0.pyi +0 -22
  192. aip_agents/memory/base.pyi +0 -60
  193. aip_agents/memory/constants.pyi +0 -25
  194. aip_agents/memory/factory.pyi +0 -24
  195. aip_agents/memory/guidance.pyi +0 -3
  196. aip_agents/memory/simple_memory.pyi +0 -23
  197. aip_agents/middleware/__init__.pyi +0 -5
  198. aip_agents/middleware/base.pyi +0 -75
  199. aip_agents/middleware/manager.pyi +0 -84
  200. aip_agents/middleware/todolist.pyi +0 -125
  201. aip_agents/schema/__init__.pyi +0 -9
  202. aip_agents/schema/a2a.pyi +0 -40
  203. aip_agents/schema/agent.pyi +0 -65
  204. aip_agents/schema/hitl.pyi +0 -89
  205. aip_agents/schema/langgraph.pyi +0 -28
  206. aip_agents/schema/model_id.pyi +0 -54
  207. aip_agents/schema/step_limit.pyi +0 -63
  208. aip_agents/schema/storage.pyi +0 -21
  209. aip_agents/sentry/__init__.pyi +0 -3
  210. aip_agents/sentry/sentry.pyi +0 -48
  211. aip_agents/storage/__init__.pyi +0 -8
  212. aip_agents/storage/base.pyi +0 -58
  213. aip_agents/storage/clients/__init__.pyi +0 -3
  214. aip_agents/storage/clients/minio_client.pyi +0 -137
  215. aip_agents/storage/config.pyi +0 -29
  216. aip_agents/storage/providers/__init__.pyi +0 -5
  217. aip_agents/storage/providers/base.pyi +0 -88
  218. aip_agents/storage/providers/memory.pyi +0 -79
  219. aip_agents/storage/providers/object_storage.pyi +0 -98
  220. aip_agents/tools/__init__.pyi +0 -9
  221. aip_agents/tools/browser_use/__init__.pyi +0 -14
  222. aip_agents/tools/browser_use/action_parser.pyi +0 -18
  223. aip_agents/tools/browser_use/browser_use_tool.pyi +0 -50
  224. aip_agents/tools/browser_use/llm_config.pyi +0 -52
  225. aip_agents/tools/browser_use/minio_storage.pyi +0 -109
  226. aip_agents/tools/browser_use/schemas.pyi +0 -32
  227. aip_agents/tools/browser_use/session.pyi +0 -4
  228. aip_agents/tools/browser_use/session_errors.pyi +0 -53
  229. aip_agents/tools/browser_use/steel_session_recording.pyi +0 -63
  230. aip_agents/tools/browser_use/streaming.pyi +0 -81
  231. aip_agents/tools/browser_use/structured_data_parser.pyi +0 -86
  232. aip_agents/tools/browser_use/structured_data_recovery.pyi +0 -43
  233. aip_agents/tools/browser_use/types.pyi +0 -45
  234. aip_agents/tools/code_sandbox/__init__.pyi +0 -3
  235. aip_agents/tools/code_sandbox/constant.pyi +0 -4
  236. aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +0 -102
  237. aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +0 -29
  238. aip_agents/tools/constants.pyi +0 -138
  239. aip_agents/tools/document_loader/__init__.pyi +0 -7
  240. aip_agents/tools/document_loader/base_reader.pyi +0 -75
  241. aip_agents/tools/document_loader/docx_reader_tool.pyi +0 -10
  242. aip_agents/tools/document_loader/excel_reader_tool.pyi +0 -26
  243. aip_agents/tools/document_loader/pdf_reader_tool.pyi +0 -11
  244. aip_agents/tools/document_loader/pdf_splitter.pyi +0 -18
  245. aip_agents/tools/gl_connector/__init__.pyi +0 -3
  246. aip_agents/tools/gl_connector/tool.pyi +0 -74
  247. aip_agents/tools/gl_connector_tools.pyi +0 -39
  248. aip_agents/tools/memory_search/__init__.pyi +0 -5
  249. aip_agents/tools/memory_search/base.pyi +0 -69
  250. aip_agents/tools/memory_search/mem0.pyi +0 -19
  251. aip_agents/tools/memory_search/schema.pyi +0 -15
  252. aip_agents/tools/memory_search_tool.pyi +0 -3
  253. aip_agents/tools/time_tool.pyi +0 -16
  254. aip_agents/tools/tool_config_injector.pyi +0 -26
  255. aip_agents/tools/web_search/__init__.pyi +0 -3
  256. aip_agents/tools/web_search/serper_tool.pyi +0 -19
  257. aip_agents/types/__init__.pyi +0 -36
  258. aip_agents/types/a2a_events.pyi +0 -3
  259. aip_agents/utils/__init__.pyi +0 -11
  260. aip_agents/utils/a2a_connector.pyi +0 -146
  261. aip_agents/utils/artifact_helpers.pyi +0 -203
  262. aip_agents/utils/constants.pyi +0 -10
  263. aip_agents/utils/datetime/__init__.pyi +0 -4
  264. aip_agents/utils/datetime/normalization.pyi +0 -95
  265. aip_agents/utils/datetime/timezone.pyi +0 -48
  266. aip_agents/utils/env_loader.pyi +0 -10
  267. aip_agents/utils/event_handler_registry.pyi +0 -23
  268. aip_agents/utils/file_prompt_utils.pyi +0 -21
  269. aip_agents/utils/final_response_builder.pyi +0 -34
  270. aip_agents/utils/formatter_llm_client.pyi +0 -71
  271. aip_agents/utils/langgraph/__init__.pyi +0 -3
  272. aip_agents/utils/langgraph/converter.pyi +0 -49
  273. aip_agents/utils/langgraph/tool_managers/__init__.pyi +0 -5
  274. aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +0 -35
  275. aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +0 -48
  276. aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +0 -56
  277. aip_agents/utils/langgraph/tool_output_management.pyi +0 -329
  278. aip_agents/utils/logger.pyi +0 -60
  279. aip_agents/utils/metadata/__init__.pyi +0 -5
  280. aip_agents/utils/metadata/activity_metadata_helper.pyi +0 -25
  281. aip_agents/utils/metadata/activity_narrative/__init__.pyi +0 -7
  282. aip_agents/utils/metadata/activity_narrative/builder.pyi +0 -35
  283. aip_agents/utils/metadata/activity_narrative/constants.pyi +0 -10
  284. aip_agents/utils/metadata/activity_narrative/context.pyi +0 -32
  285. aip_agents/utils/metadata/activity_narrative/formatters.pyi +0 -48
  286. aip_agents/utils/metadata/activity_narrative/utils.pyi +0 -12
  287. aip_agents/utils/metadata/schemas/__init__.pyi +0 -4
  288. aip_agents/utils/metadata/schemas/activity_schema.pyi +0 -18
  289. aip_agents/utils/metadata/schemas/thinking_schema.pyi +0 -20
  290. aip_agents/utils/metadata/thinking_metadata_helper.pyi +0 -4
  291. aip_agents/utils/metadata_helper.pyi +0 -117
  292. aip_agents/utils/name_preprocessor/__init__.pyi +0 -6
  293. aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +0 -52
  294. aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +0 -38
  295. aip_agents/utils/name_preprocessor/name_preprocessor.pyi +0 -41
  296. aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +0 -34
  297. aip_agents/utils/pii/__init__.pyi +0 -5
  298. aip_agents/utils/pii/pii_handler.pyi +0 -96
  299. aip_agents/utils/pii/pii_helper.pyi +0 -78
  300. aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +0 -73
  301. aip_agents/utils/reference_helper.pyi +0 -81
  302. aip_agents/utils/sse_chunk_transformer.pyi +0 -166
  303. aip_agents/utils/step_limit_manager.pyi +0 -112
  304. aip_agents/utils/token_usage_helper.pyi +0 -60
  305. {aip_agents_binary-0.6.0.dist-info → aip_agents_binary-0.6.2.dist-info}/WHEEL +0 -0
  306. {aip_agents_binary-0.6.0.dist-info → aip_agents_binary-0.6.2.dist-info}/top_level.txt +0 -0
@@ -1,98 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.storage.base import BaseObjectStorageClient as BaseObjectStorageClient
3
- from aip_agents.storage.providers.base import BaseStorageProvider as BaseStorageProvider, StorageError as StorageError
4
- from aip_agents.utils.logger import get_logger as get_logger
5
- from typing import Any
6
-
7
- logger: Incomplete
8
-
9
- class ObjectStorageProvider(BaseStorageProvider):
10
- """Object storage provider for S3-compatible storage.
11
-
12
- Works with any S3-compatible storage including AWS S3, MinIO,
13
- Google Cloud Storage (with S3 compatibility), etc.
14
-
15
- Best for:
16
- - Very large datasets
17
- - Distributed systems
18
- - Cloud deployments
19
- - Long-term storage
20
- - Multi-region access
21
- """
22
- client: Incomplete
23
- prefix: Incomplete
24
- use_json: Incomplete
25
- def __init__(self, client: BaseObjectStorageClient, prefix: str = '', use_json: bool = False) -> None:
26
- """Initialize object storage provider.
27
-
28
- Args:
29
- client: Object storage client instance
30
- prefix: Prefix for all keys (like a directory)
31
- use_json: Use JSON format (True) or pickle (False)
32
- """
33
- def store(self, key: str, data: Any) -> None:
34
- """Store data in object storage.
35
-
36
- Args:
37
- key: Unique identifier for the data
38
- data: Data to store
39
-
40
- Raises:
41
- StorageError: If storage operation fails
42
- """
43
- def retrieve(self, key: str) -> Any:
44
- """Retrieve data from object storage.
45
-
46
- Args:
47
- key: Unique identifier for the data
48
-
49
- Returns:
50
- The stored data
51
-
52
- Raises:
53
- KeyError: If key not found
54
- StorageError: If retrieval operation fails
55
- """
56
- def exists(self, key: str) -> bool:
57
- """Check if object exists.
58
-
59
- Args:
60
- key: Unique identifier to check
61
-
62
- Returns:
63
- True if key exists, False otherwise
64
- """
65
- def delete(self, key: str) -> None:
66
- """Delete object.
67
-
68
- Args:
69
- key: Unique identifier for the data
70
- """
71
- def list_keys(self, prefix: str = '') -> list[str]:
72
- """List all keys with optional prefix.
73
-
74
- Args:
75
- prefix: Optional prefix to filter keys
76
-
77
- Raises:
78
- NotImplementedError: list_keys is not implemented
79
- """
80
- def clear(self) -> None:
81
- """Clear all objects with the configured prefix.
82
-
83
- Warning:
84
- This is a dangerous operation!
85
- """
86
- def get_presigned_url(self, key: str, expires_hours: int = 24) -> str | None:
87
- """Generate presigned URL for direct access.
88
-
89
- Args:
90
- key: Storage key
91
- expires_hours: URL expiration in hours
92
-
93
- Returns:
94
- Presigned URL for direct access
95
-
96
- Raises:
97
- StorageError: If URL generation fails
98
- """
@@ -1,9 +0,0 @@
1
- from aip_agents.tools.browser_use import BrowserUseTool as BrowserUseTool
2
- from aip_agents.tools.code_sandbox import E2BCodeSandboxTool as E2BCodeSandboxTool
3
- from aip_agents.tools.document_loader import DocxReaderTool as DocxReaderTool, ExcelReaderTool as ExcelReaderTool, PDFReaderTool as PDFReaderTool
4
- from aip_agents.tools.gl_connector import GLConnectorTool as GLConnectorTool
5
- from aip_agents.tools.gl_connector_tools import BOSA_AUTOMATED_TOOLS as BOSA_AUTOMATED_TOOLS, GL_CONNECTORS_AUTOMATED_TOOLS as GL_CONNECTORS_AUTOMATED_TOOLS
6
- from aip_agents.tools.time_tool import TimeTool as TimeTool
7
- from aip_agents.tools.web_search import GoogleSerperTool as GoogleSerperTool
8
-
9
- __all__ = ['BOSA_AUTOMATED_TOOLS', 'GL_CONNECTORS_AUTOMATED_TOOLS', 'GLConnectorTool', 'GoogleSerperTool', 'TimeTool', 'BrowserUseTool', 'E2BCodeSandboxTool', 'DocxReaderTool', 'ExcelReaderTool', 'PDFReaderTool']
@@ -1,14 +0,0 @@
1
- from enum import StrEnum
2
-
3
- __all__ = [<ImportableName.BROWSER_USE_TOOL: 'BrowserUseTool'>, <ImportableName.BROWSER_USE_TOOL_INPUT: 'BrowserUseToolInput'>, <ImportableName.BROWSER_USE_TOOL_CONFIG: 'BrowserUseToolConfig'>]
4
-
5
- class ImportableName(StrEnum):
6
- """Names of the importable attributes."""
7
- BROWSER_USE_TOOL: str
8
- BROWSER_USE_TOOL_INPUT: str
9
- BROWSER_USE_TOOL_CONFIG: str
10
-
11
- # Names in __all__ with no definition:
12
- # BrowserUseTool
13
- # BrowserUseToolConfig
14
- # BrowserUseToolInput
@@ -1,18 +0,0 @@
1
- from aip_agents.tools.browser_use.types import ToolCallInfo
2
- from browser_use.agent.views import ActionResult, AgentOutput
3
-
4
- __all__ = ['ActionParser']
5
-
6
- class ActionParser:
7
- """Dedicated class for parsing agent actions with improved error handling."""
8
- @staticmethod
9
- def extract_actions(model_output: AgentOutput | None, last_result: list[ActionResult] | None = None) -> list[ToolCallInfo]:
10
- """Extract action information from model output.
11
-
12
- Args:
13
- model_output: The model output containing action information.
14
- last_result: The last result from the agent state for output extraction.
15
-
16
- Returns:
17
- list[ToolCallInfo]: Structured action information.
18
- """
@@ -1,50 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.tools.browser_use import session_errors as session_errors
3
- from aip_agents.tools.browser_use.action_parser import ActionParser as ActionParser
4
- from aip_agents.tools.browser_use.llm_config import build_browser_use_llm as build_browser_use_llm, configure_browser_use_environment as configure_browser_use_environment
5
- from aip_agents.tools.browser_use.schemas import BrowserUseToolConfig as BrowserUseToolConfig, BrowserUseToolInput as BrowserUseToolInput
6
- from aip_agents.tools.browser_use.session import BrowserSession as BrowserSession
7
- from aip_agents.tools.browser_use.steel_session_recording import SteelSessionRecorder as SteelSessionRecorder
8
- from aip_agents.tools.browser_use.streaming import create_error_response as create_error_response, create_step_response as create_step_response, generate_step_content as generate_step_content, generate_thinking_message as generate_thinking_message, yield_iframe_activity as yield_iframe_activity, yield_status_message as yield_status_message, yield_thinking_marker as yield_thinking_marker
9
- from aip_agents.tools.browser_use.structured_data_parser import detect_structured_data_failure as detect_structured_data_failure
10
- from aip_agents.tools.browser_use.types import BrowserUseFatalError as BrowserUseFatalError, RetryDecision as RetryDecision, StreamingResponse as StreamingResponse, StreamingState as StreamingState, ToolCallInfo as ToolCallInfo
11
- from aip_agents.utils.logger import get_logger as get_logger
12
- from langchain_core.runnables import RunnableConfig
13
- from langchain_core.tools import BaseTool
14
- from pydantic import BaseModel as BaseModel
15
-
16
- logger: Incomplete
17
-
18
- class BrowserUseTool(BaseTool):
19
- """Tool to execute web automation tasks using browser-use framework.
20
-
21
- This tool provides step-by-step execution of browser automation tasks with detailed
22
- logging of intermediate steps, including the agent's thinking process, goals, and
23
- results at each step.
24
- """
25
- name: str
26
- description: str
27
- args_schema: type[BaseModel]
28
- tool_config_schema: type[BaseModel]
29
- MAX_SESSION_RELEASE_RETRIES: int
30
- SESSION_RELEASE_SLEEP_TIME_IN_S: int
31
- async def arun_streaming(self, task: str = None, config: RunnableConfig | None = None, **kwargs):
32
- """Execute a web automation task using browser-use asynchronously with streaming output.
33
-
34
- This method creates a Steel browser session, initializes a browser-use agent with
35
- the specified task, and executes the automation step by step, yielding results
36
- in streaming fashion. Starts background recording after completion.
37
-
38
- Args:
39
- task (str, optional): The task prompt for the AI agent to execute in the browser.
40
- If not provided, will attempt to extract from kwargs.
41
- config (RunnableConfig): RunnableConfig containing tool configuration.
42
- **kwargs: Additional parameters that may contain the task or other tool-specific arguments.
43
-
44
- Yields:
45
- dict: Step-by-step results in standardized StreamingResponse format.
46
-
47
- Raises:
48
- Exception: Any exception that occurs during task execution will be caught
49
- and yielded as an error message.
50
- """
@@ -1,52 +0,0 @@
1
- from browser_use.llm import ChatOpenAI
2
- from typing import Any
3
-
4
- __all__ = ['build_browser_use_llm', 'configure_browser_use_environment', 'model_disallows_tunable_params', 'supports_frequency_penalty', 'supports_temperature_override']
5
-
6
- def model_disallows_tunable_params(model: Any) -> bool:
7
- """Return True if the provider forbids temperature/frequency overrides for the model.
8
-
9
- Args:
10
- model: The model name or identifier to check.
11
-
12
- Returns:
13
- bool: True if the model disallows tunable parameters, False otherwise.
14
- """
15
- def supports_temperature_override(model: Any) -> bool:
16
- """Return True when the given model supports setting a custom temperature.
17
-
18
- Args:
19
- model: The model name or identifier to check.
20
-
21
- Returns:
22
- bool: True if the model supports temperature override, False otherwise.
23
- """
24
- def supports_frequency_penalty(model: Any) -> bool:
25
- """Return True when the given model supports custom frequency penalties.
26
-
27
- Args:
28
- model: The model name or identifier to check.
29
-
30
- Returns:
31
- bool: True if the model supports frequency penalty override, False otherwise.
32
- """
33
- def build_browser_use_llm(*, model: Any, reasoning_effort: Any, temperature: float | None, api_key: str, base_url: str | None = None) -> ChatOpenAI:
34
- """Construct a ChatOpenAI instance with browser-use specific safeguards.
35
-
36
- Args:
37
- model: The model name or identifier to use.
38
- reasoning_effort: The reasoning effort level for the model.
39
- temperature: Optional temperature setting for the model. Can be None.
40
- api_key: The API key for authentication.
41
- base_url: The base URL for the model.
42
-
43
- Returns:
44
- ChatOpenAI: The configured ChatOpenAI instance.
45
- """
46
- def configure_browser_use_environment(enable_cloud_sync: bool, logging_level: str) -> None:
47
- """Ensure Browser Use environment flags are aligned with tool configuration.
48
-
49
- Args:
50
- enable_cloud_sync: Whether to enable cloud synchronization for browser sessions.
51
- logging_level: The desired logging level for browser use operations.
52
- """
@@ -1,109 +0,0 @@
1
- from _typeshed import Incomplete
2
-
3
- OBJECT_NAME_PREFIX: str
4
-
5
- class MinIOStorage:
6
- """Handles MinIO cloud storage operations for video files.
7
-
8
- This class provides a complete interface for MinIO operations including:
9
- - Connection management with authentication
10
- - Bucket existence validation and creation
11
- - File upload with proper metadata
12
- - Presigned URL generation for secure access
13
-
14
- Attributes:
15
- endpoint: MinIO server endpoint URL.
16
- access_key: MinIO access key for authentication.
17
- secret_key: MinIO secret key for authentication.
18
- secure: Whether to use HTTPS/TLS for connections.
19
- bucket_name: Target bucket for file storage.
20
- directory_prefix: Optional directory prefix for organized storage.
21
- client: MinIO client instance for API operations.
22
- """
23
- endpoint: Incomplete
24
- access_key: Incomplete
25
- secret_key: Incomplete
26
- secure: Incomplete
27
- bucket_name: Incomplete
28
- directory_prefix: Incomplete
29
- client: Incomplete
30
- def __init__(self) -> None:
31
- """Initialize MinIO storage with configuration from environment variables.
32
-
33
- Reads configuration from the following environment variables:
34
- - OBJECT_STORAGE_URL: MinIO server endpoint
35
- - OBJECT_STORAGE_USER: MinIO access key
36
- - OBJECT_STORAGE_PASSWORD: MinIO secret key
37
- - OBJECT_STORAGE_SECURE: Whether to use HTTPS (default: False)
38
- - OBJECT_STORAGE_BUCKET: Target bucket name
39
- - OBJECT_STORAGE_DIRECTORY_PREFIX: Optional directory prefix
40
-
41
- Raises:
42
- ValueError: If required environment variables are missing.
43
- Exception: If bucket creation or validation fails.
44
-
45
- Note:
46
- The method automatically ensures the target bucket exists,
47
- creating it if necessary.
48
- """
49
- def get_object_name(self, object_name: str) -> str:
50
- '''Get the object name with the directory prefix.
51
-
52
- This method constructs the full object path by combining the directory
53
- prefix with the base object name. It ensures consistent path structure
54
- for all stored files.
55
-
56
- Args:
57
- object_name: Name of the object in MinIO.
58
-
59
- Returns:
60
- str: Object name with the directory prefix and steel-recordings subdirectory.
61
- Format: {prefix}/steel-recordings/{object_name} or steel-recordings/{object_name}
62
-
63
- Note:
64
- The method automatically adds a "steel-recordings" subdirectory to
65
- organize video files separately from other content.
66
- '''
67
- def upload_file(self, file_path: str, object_name: str) -> None:
68
- '''Upload a file to MinIO bucket.
69
-
70
- This method handles the complete file upload process including:
71
- - File existence validation
72
- - Proper content type setting for video files
73
- - Error handling and logging
74
- - Structured object naming with prefixes
75
-
76
- Args:
77
- file_path: Local path to the file to upload.
78
- object_name: Name to use for the object in MinIO.
79
-
80
- Raises:
81
- Exception: If the file doesn\'t exist or upload fails.
82
- Specific S3Error details are included in the exception message.
83
-
84
- Note:
85
- The method automatically sets the content type to "video/webm"
86
- for proper video file handling in browsers and applications.
87
- '''
88
- def get_file_url(self, object_name: str) -> str:
89
- """Generate a presigned URL for accessing the uploaded file.
90
-
91
- This method creates a temporary, secure URL that allows access to the
92
- uploaded file without requiring MinIO credentials. The URL is valid
93
- for a limited time and provides secure, direct access to the file.
94
-
95
- Args:
96
- object_name: Name of the object in MinIO.
97
-
98
- Returns:
99
- str: Presigned URL for secure file access.
100
- The URL includes authentication tokens and is valid for a limited time.
101
-
102
- Raises:
103
- Exception: If presigned URL generation fails.
104
- S3Error details are included in the exception message.
105
-
106
- Note:
107
- Presigned URLs are useful for sharing files temporarily without
108
- exposing MinIO credentials or requiring users to have storage access.
109
- """
@@ -1,32 +0,0 @@
1
- from openai.types.shared.chat_model import ChatModel
2
- from pydantic import BaseModel
3
- from typing import Literal
4
-
5
- class BrowserUseToolInput(BaseModel):
6
- """Input schema for Browser Use tool."""
7
- task: str
8
-
9
- class BrowserUseToolConfig(BaseModel):
10
- """Tool configuration schema for Browser Use tool."""
11
- steel_api_key: str
12
- steel_base_url: str
13
- steel_ws_url: str
14
- steel_timeout_in_ms: int
15
- browser_use_llm_openai_api_key: str
16
- browser_use_llm_openai_model: ChatModel | str
17
- browser_use_llm_openai_temperature: float | None
18
- browser_use_llm_openai_reasoning_effort: Literal['minimal', 'low', 'medium', 'high']
19
- browser_use_llm_openai_base_url: str | None
20
- browser_use_page_extraction_llm_openai_api_key: str
21
- browser_use_page_extraction_llm_openai_model: ChatModel | str
22
- browser_use_page_extraction_llm_openai_temperature: float | None
23
- browser_use_page_extraction_llm_openai_reasoning_effort: Literal['minimal', 'low', 'medium', 'high']
24
- browser_use_page_extraction_llm_openai_base_url: str | None
25
- browser_use_extend_system_message: str | None
26
- browser_use_vision_detail_level: Literal['auto', 'low', 'high']
27
- browser_use_enable_cloud_sync: bool
28
- browser_use_logging_level: Literal['debug', 'info', 'warning', 'error', 'result']
29
- browser_use_llm_timeout_in_s: int
30
- browser_use_step_timeout_in_s: int
31
- browser_use_max_session_retries: int
32
- browser_use_session_retry_delay_in_s: float
@@ -1,4 +0,0 @@
1
- from browser_use.browser.session import BrowserSession as BrowserUseSession
2
-
3
- class BrowserSession(BrowserUseSession):
4
- """Represents an active browser session with a running browser process somewhere."""
@@ -1,53 +0,0 @@
1
- from collections.abc import Iterable
2
- from dataclasses import dataclass
3
-
4
- __all__ = ['SessionErrorCategory', 'categorize_fatal_message', 'categorize_warning_message', 'find_fatal_message', 'is_recoverable_message']
5
-
6
- @dataclass(frozen=True)
7
- class SessionErrorCategory:
8
- """Represents a fatal Steel/browser disconnect classification."""
9
- name: str
10
- markers: tuple[str, ...]
11
- fatal: bool
12
- retryable: bool
13
-
14
- def categorize_fatal_message(message: str) -> SessionErrorCategory | None:
15
- """Return the fatal session category associated with the given message, if any.
16
-
17
- Args:
18
- message: The error message to categorize.
19
-
20
- Returns:
21
- The SessionErrorCategory if the message matches a fatal error pattern,
22
- None otherwise.
23
- """
24
- def categorize_warning_message(message: str) -> str | None:
25
- """Return the name of a known non-fatal warning when present in the message.
26
-
27
- Args:
28
- message: The error message to check for warning patterns.
29
-
30
- Returns:
31
- The warning name if the message matches a known warning pattern,
32
- None otherwise.
33
- """
34
- def find_fatal_message(messages: Iterable[str]) -> tuple[str, SessionErrorCategory] | None:
35
- """Return the first fatal message detected in the iterable.
36
-
37
- Args:
38
- messages: An iterable of error messages to search through.
39
-
40
- Returns:
41
- A tuple of (message, category) for the first fatal message found,
42
- None if no fatal messages are detected.
43
- """
44
- def is_recoverable_message(message: str) -> bool:
45
- """Return True when the message maps to a retryable session disconnect.
46
-
47
- Args:
48
- message: The error message to check for recoverability.
49
-
50
- Returns:
51
- True if the message corresponds to a retryable fatal error,
52
- False otherwise.
53
- """
@@ -1,63 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.tools.browser_use.minio_storage import MinIOStorage as MinIOStorage
3
- from aip_agents.utils.logger import get_logger as get_logger
4
-
5
- logger: Incomplete
6
- VIDEO_FILE_NAME_PREFIX: str
7
- MANIFEST_TEMP_SUFFIX: str
8
-
9
- class SteelSessionRecorder:
10
- """High-level helper to export Steel sessions via their HLS manifests.
11
-
12
- This class provides a high-level interface for exporting Steel sessions via their HLS manifests.
13
- It provides methods for sanitizing session IDs, building safe filenames, and generating video filenames.
14
- It also provides methods for downloading and merging HLS manifests, and uploading videos to MinIO.
15
- """
16
- @staticmethod
17
- def safe_session_id(session_id: str) -> str:
18
- """Sanitize a session ID for filename usage.
19
-
20
- Args:
21
- session_id: The session ID to sanitize.
22
-
23
- Returns:
24
- str: The sanitized session ID.
25
- """
26
- @staticmethod
27
- def safe_session_filename(session_id: str, extension: str) -> str:
28
- """Build a safe filename for a session recording.
29
-
30
- Args:
31
- session_id: The session ID to build a filename for.
32
- extension: The extension of the filename.
33
-
34
- Returns:
35
- str: The safe filename.
36
- """
37
- @staticmethod
38
- def generate_video_filename(session_id: str, extension: str = '.mp4') -> str:
39
- """Generate a filename for a session recording.
40
-
41
- Args:
42
- session_id: The session ID to generate a filename for.
43
- extension: The extension of the filename.
44
-
45
- Returns:
46
- str: The generated filename.
47
- """
48
- base_url: Incomplete
49
- api_key: Incomplete
50
- minio_storage: Incomplete
51
- def __init__(self, base_url: str, api_key: str) -> None:
52
- """Initialize the recorder.
53
-
54
- Args:
55
- base_url: Steel API base URL.
56
- api_key: Steel API key for authentication.
57
- """
58
- async def record_session_to_video(self, session_id: str) -> None:
59
- """Download the HLS manifest and upload the merged video to MinIO.
60
-
61
- Args:
62
- session_id: The session ID to record.
63
- """
@@ -1,81 +0,0 @@
1
- from aip_agents.tools.browser_use.types import StreamingResponse, ToolCallInfo
2
- from browser_use import Agent
3
- from typing import Any, Literal
4
-
5
- __all__ = ['PROCESSING_MESSAGE', 'TASK_COMPLETED_MESSAGE', 'create_error_response', 'create_step_response', 'generate_step_content', 'generate_thinking_message', 'yield_iframe_activity', 'yield_status_message', 'yield_thinking_marker']
6
-
7
- TASK_COMPLETED_MESSAGE: str
8
- PROCESSING_MESSAGE: str
9
-
10
- def create_step_response(agent: Agent, tool_calls: list[ToolCallInfo], is_done: bool, content: str, thinking_message: str | None) -> StreamingResponse:
11
- """Compose the per-step payload emitted during browser-use streaming.
12
-
13
- Args:
14
- agent: Browser-use agent producing the step output.
15
- tool_calls: Tool call descriptors extracted from the step.
16
- is_done: Flag indicating whether this is the final step in the run.
17
- content: High-level status text describing the step progress.
18
- thinking_message: Optional preformatted thinking summary to attach.
19
-
20
- Returns:
21
- StreamingResponse: Serialized payload for the current streaming step.
22
- """
23
- async def generate_thinking_message(content: str, tool_calls: list[dict[str, Any]], *, is_final: bool) -> str | None:
24
- """Generate a user-facing thinking summary using the formatter LLM when available.
25
-
26
- Args:
27
- content: High-level status text describing the step progress.
28
- tool_calls: Serialized tool call dictionaries with outputs.
29
- is_final: Whether the task has completed.
30
-
31
- Returns:
32
- Markdown-formatted summary string, or ``None`` when not applicable.
33
- """
34
- def create_error_response(error_message: str, recording_url: str = '') -> dict:
35
- """Create a standardized error response.
36
-
37
- Args:
38
- error_message: The error message to include.
39
- recording_url: The recording URL if available.
40
-
41
- Returns:
42
- dict: Standardized error response.
43
- """
44
- def generate_step_content(tool_calls: list[ToolCallInfo], is_done: bool) -> str:
45
- """Return user-friendly status text derived from tool call outputs.
46
-
47
- Args:
48
- tool_calls: Tool call descriptors extracted from the step.
49
- is_done: Flag indicating whether this is the final step in the run.
50
-
51
- Returns:
52
- User-friendly status text string.
53
- """
54
- def yield_iframe_activity(url: str, content: str) -> dict:
55
- """Create and return an iframe activity streaming response.
56
-
57
- Args:
58
- url: The URL to display in the iframe.
59
- content: The content message for the response.
60
-
61
- Returns:
62
- dict: Streaming response dictionary.
63
- """
64
- def yield_status_message(content: str) -> dict:
65
- """Create a status update event notifying clients about recovery attempts.
66
-
67
- Args:
68
- content: The status message content to include in the event.
69
-
70
- Returns:
71
- dict: Streaming response dictionary for the status update event.
72
- """
73
- def yield_thinking_marker(marker_type: Literal['start', 'end']) -> dict:
74
- """Create and return a thinking marker streaming response.
75
-
76
- Args:
77
- marker_type: Either 'start' or 'end' to indicate thinking phase.
78
-
79
- Returns:
80
- dict: Streaming response dictionary.
81
- """