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,60 +0,0 @@
1
- from abc import ABC, abstractmethod
2
- from aip_agents.types import ChatMessage as ChatMessage
3
- from collections.abc import Sequence
4
- from typing import Any
5
-
6
- class BaseMemory(ABC):
7
- """Base class for agent memory.
8
-
9
- This concrete base class provides a default structure. Subclasses
10
- can inherit from this class to implement specific memory management
11
- behaviors.
12
- """
13
- @classmethod
14
- def validate_env(cls) -> None:
15
- """Validate environment prerequisites for a memory backend.
16
-
17
- This hook allows memory implementations to fail fast when required
18
- environment variables or credentials are missing. Default is a no-op.
19
- """
20
- @abstractmethod
21
- def get_messages(self) -> list[ChatMessage]:
22
- """Retrieve a list of messages.
23
-
24
- Returns:
25
- List[ChatMessage]: A list of messages in a generic format.
26
- """
27
- @abstractmethod
28
- def add_message(self, message: ChatMessage) -> None:
29
- """Add a message to the memory.
30
-
31
- Adds a single ChatMessage to the memory storage. The exact implementation
32
- depends on the specific memory backend.
33
-
34
- Args:
35
- message: The ChatMessage object to add to memory. The message should
36
- contain role and content information.
37
- """
38
- def add_messages(self, messages: Sequence[ChatMessage]) -> None:
39
- """Add multiple messages to the memory.
40
-
41
- Args:
42
- messages: A sequence of ChatMessage objects to add.
43
- """
44
- @abstractmethod
45
- def clear(self) -> None:
46
- """Clears the memory or resets the state of the agent.
47
-
48
- This method must be implemented to define the specific behavior
49
- for clearing or resetting the memory of the agent.
50
- """
51
- def get_memory_variables(self) -> dict[str, Any]:
52
- """Retrieve memory variables.
53
-
54
- This method returns a dictionary containing memory-related variables.
55
- The default implementation returns a dictionary with chat_history.
56
-
57
- Returns:
58
- Dict[str, Any]: A dictionary where keys are variable names and values
59
- are the corresponding memory-related data.
60
- """
@@ -1,25 +0,0 @@
1
- from _typeshed import Incomplete
2
-
3
- class MemoryMethod:
4
- """Constants for memory method names used in hasattr checks."""
5
- SEARCH: str
6
- SAVE_INTERACTION: str
7
- FORMAT_HITS: str
8
-
9
- class MemoryDefaults:
10
- """Default values for memory configuration parameters."""
11
- MAX_ITEMS: int
12
- RETRIEVAL_LIMIT: int
13
- MAX_CHARS: int
14
- LOG_PREVIEW_LENGTH: int
15
- SMALL_PREVIEW_LENGTH: int
16
- AGENT_ID_PREFIX: str
17
- MEMORY_TAG_OPEN: str
18
- MEMORY_TAG_CLOSE: str
19
- DEFAULT_USER_ID: str
20
- DATE_STRING_LENGTH: int
21
-
22
- class MemoryBackends:
23
- """Supported memory backend identifiers."""
24
- MEM0: str
25
- SUPPORTED: Incomplete
@@ -1,24 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.memory.base import BaseMemory as BaseMemory
3
- from aip_agents.utils.logger import get_logger as get_logger
4
- from typing import Any
5
-
6
- logger: Incomplete
7
- BACKENDS: Incomplete
8
-
9
- class MemoryFactory:
10
- """Factory to build concrete memory adapters by backend name."""
11
- @staticmethod
12
- def create(backend: str, **kwargs: Any) -> BaseMemory:
13
- '''Create a memory adapter instance.
14
-
15
- Args:
16
- backend: Backend identifier (e.g., "mem0").
17
- **kwargs: Keyword args passed to adapter constructor (e.g., limit, max_chars, namespace).
18
-
19
- Returns:
20
- BaseMemory: A constructed memory adapter instance.
21
-
22
- Raises:
23
- ValueError: If backend is unknown or adapter can\'t be constructed.
24
- '''
@@ -1,3 +0,0 @@
1
- from _typeshed import Incomplete
2
-
3
- MEM0_MEMORY_RECALL_GUIDANCE: Incomplete
@@ -1,23 +0,0 @@
1
- from aip_agents.memory.base import BaseMemory as BaseMemory, ChatMessage as ChatMessage
2
-
3
- class SimpleMemory(BaseMemory):
4
- """A simple memory implementation that stores messages in a list."""
5
- messages: list[ChatMessage]
6
- def __init__(self) -> None:
7
- """Initialize the SimpleMemory instance with an empty message list."""
8
- def add_message(self, message_or_role, content=None) -> None:
9
- '''Add a message to memory.
10
-
11
- Supports two calling patterns for backward compatibility:
12
- 1. add_message(ChatMessage) - Adds a ChatMessage object directly
13
- 2. add_message(role, content) - Creates and adds a ChatMessage with the given role and content
14
-
15
- Args:
16
- message_or_role: Either a ChatMessage object or a string role (e.g., "user", "assistant").
17
- content: Optional content string when using the role+content pattern.
18
- Required when message_or_role is a string role.
19
- '''
20
- def get_messages(self) -> list[ChatMessage]:
21
- """Get all messages from memory."""
22
- def clear(self) -> None:
23
- """Clear all messages from memory."""
@@ -1,5 +0,0 @@
1
- from aip_agents.middleware.base import AgentMiddleware as AgentMiddleware, ModelRequest as ModelRequest
2
- from aip_agents.middleware.manager import MiddlewareManager as MiddlewareManager
3
- from aip_agents.middleware.todolist import TodoListMiddleware as TodoListMiddleware, TodoStatus as TodoStatus
4
-
5
- __all__ = ['AgentMiddleware', 'ModelRequest', 'MiddlewareManager', 'TodoListMiddleware', 'TodoStatus']
@@ -1,75 +0,0 @@
1
- from langchain_core.tools import BaseTool as BaseTool
2
- from typing import Any, Protocol, TypedDict
3
-
4
- class ModelRequest(TypedDict, total=False):
5
- """Represents parameters for a model invocation that middleware can modify.
6
-
7
- This TypedDict defines the structure of requests passed to the LLM, allowing
8
- middleware to add tools or modify prompts before each invocation.
9
-
10
- Attributes:
11
- messages: List of messages in the conversation.
12
- tools: List of tools available to the model.
13
- system_prompt: System-level instruction for the model.
14
- """
15
- messages: list[Any]
16
- tools: list[BaseTool]
17
- system_prompt: str
18
-
19
- class AgentMiddleware(Protocol):
20
- """Protocol defining the interface for composable agent middleware.
21
-
22
- Middleware components can contribute tools, enhance system prompts, and provide
23
- lifecycle hooks that execute before, during, and after model invocations.
24
-
25
- All middleware must implement this protocol to be compatible with MiddlewareManager.
26
-
27
- Attributes:
28
- tools: List of tools contributed by this middleware.
29
- system_prompt_additions: Optional text to append to the agent's system prompt.
30
- """
31
- tools: list[BaseTool]
32
- system_prompt_additions: str | None
33
- def before_model(self, state: dict[str, Any]) -> dict[str, Any]:
34
- """Hook executed before each model invocation.
35
-
36
- Use this hook to prepare state, log context, or perform setup tasks
37
- before the model is called.
38
-
39
- Args:
40
- state: Current agent state containing messages and other context.
41
-
42
- Returns:
43
- Dict of state updates to merge into the agent state. Return empty dict
44
- if no updates are needed.
45
- """
46
- def modify_model_request(self, request: ModelRequest, state: dict[str, Any]) -> ModelRequest:
47
- """Hook to modify the model request before invocation.
48
-
49
- Use this hook to add tools, modify the system prompt, adjust model parameters,
50
- or change tool selection strategy.
51
-
52
- Args:
53
- request: The model request that will be sent to the LLM.
54
- state: Current agent state for context.
55
-
56
- Returns:
57
- Modified ModelRequest. Can return the same request if no changes needed.
58
- """
59
- def after_model(self, state: dict[str, Any]) -> dict[str, Any]:
60
- """Hook executed after each model invocation.
61
-
62
- Use this hook for cleanup, logging, state updates, or post-processing
63
- of model outputs.
64
-
65
- Args:
66
- state: Current agent state after model invocation.
67
-
68
- Returns:
69
- Dict of state updates to merge into the agent state. Return empty dict
70
- if no updates are needed.
71
- """
72
- async def abefore_model(self, state: dict[str, Any]) -> dict[str, Any]:
73
- """Asynchronous version of before_model hook."""
74
- async def aafter_model(self, state: dict[str, Any]) -> dict[str, Any]:
75
- """Asynchronous version of after_model hook."""
@@ -1,84 +0,0 @@
1
- from _typeshed import Incomplete
2
- from aip_agents.middleware.base import AgentMiddleware as AgentMiddleware, ModelRequest as ModelRequest
3
- from langchain_core.tools import BaseTool as BaseTool
4
- from typing import Any
5
-
6
- class MiddlewareManager:
7
- """Orchestrates multiple middleware components and manages hook execution.
8
-
9
- The manager collects tools from all middleware, builds enhanced system prompts,
10
- and executes lifecycle hooks in the correct order (forward for setup, reverse
11
- for cleanup).
12
-
13
- Attributes:
14
- middleware: List of middleware components in registration order.
15
- """
16
- middleware: Incomplete
17
- def __init__(self, middleware: list[AgentMiddleware]) -> None:
18
- """Initialize the middleware manager.
19
-
20
- Args:
21
- middleware: List of middleware components to manage. Order matters:
22
- hooks execute forward (first to last) for before/modify,
23
- and reverse (last to first) for after.
24
- """
25
- def get_all_tools(self) -> list[BaseTool]:
26
- """Collect tools from all registered middleware.
27
-
28
- Returns:
29
- Combined list of all tools contributed by all middleware components.
30
- Empty list if no middleware or if middleware provide no tools.
31
- """
32
- def build_system_prompt(self, base_instruction: str) -> str:
33
- """Build enhanced system prompt by concatenating base instruction with middleware additions.
34
-
35
- Args:
36
- base_instruction: The base system prompt for the agent.
37
-
38
- Returns:
39
- Enhanced system prompt with all middleware additions appended.
40
- If no middleware provide additions, returns base_instruction unchanged.
41
- """
42
- def before_model(self, state: dict[str, Any]) -> dict[str, Any]:
43
- """Execute before_model hooks for all middleware in forward order.
44
-
45
- Hooks run first to last, allowing earlier middleware to prepare state
46
- for later middleware.
47
-
48
- Args:
49
- state: Current agent state.
50
-
51
- Returns:
52
- Merged dictionary of all state updates from all middleware.
53
- Updates are accumulated in order of execution.
54
- """
55
- def modify_model_request(self, request: ModelRequest, state: dict[str, Any]) -> ModelRequest:
56
- """Execute modify_model_request hooks for all middleware in forward order.
57
-
58
- Each middleware receives the request modified by previous middleware,
59
- allowing them to build on each other's changes.
60
-
61
- Args:
62
- request: The model request to be modified.
63
- state: Current agent state for context.
64
-
65
- Returns:
66
- Final modified request after all middleware have processed it.
67
- """
68
- def after_model(self, state: dict[str, Any]) -> dict[str, Any]:
69
- """Execute after_model hooks for all middleware in reverse order.
70
-
71
- Hooks run last to first (reverse of registration order), allowing
72
- proper cleanup and unwinding of middleware operations.
73
-
74
- Args:
75
- state: Current agent state after model invocation.
76
-
77
- Returns:
78
- Merged dictionary of all state updates from all middleware.
79
- Updates are accumulated in reverse order of execution.
80
- """
81
- async def abefore_model(self, state: dict[str, Any]) -> dict[str, Any]:
82
- """Asynchronously execute before_model hooks for all middleware."""
83
- async def aafter_model(self, state: dict[str, Any]) -> dict[str, Any]:
84
- """Asynchronously execute after_model hooks for all middleware in reverse order."""
@@ -1,125 +0,0 @@
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
- '''
@@ -1,9 +0,0 @@
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']
aip_agents/schema/a2a.pyi DELETED
@@ -1,40 +0,0 @@
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
@@ -1,65 +0,0 @@
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
@@ -1,89 +0,0 @@
1
- from _typeshed import Incomplete
2
- from dataclasses import dataclass
3
- from datetime import datetime
4
- from enum import StrEnum
5
- from pydantic import BaseModel
6
- from typing import Any
7
-
8
- __all__ = ['ApprovalDecisionType', 'ApprovalRequest', 'ApprovalDecision', 'ApprovalLogEntry', 'HitlMetadata']
9
-
10
- class ApprovalDecisionType(StrEnum):
11
- """Enumeration of possible approval decision types."""
12
- APPROVED: str
13
- REJECTED: str
14
- SKIPPED: str
15
- TIMEOUT_SKIP: str
16
- PENDING: str
17
-
18
- @dataclass
19
- class ApprovalRequest:
20
- """Represents an in-flight prompt shown to the operator."""
21
- request_id: str
22
- tool_name: str
23
- arguments_preview: str
24
- context: dict[str, str] | None = ...
25
- created_at: datetime | None = ...
26
- timeout_at: datetime | None = ...
27
- def __post_init__(self) -> None:
28
- """Initialize timestamps if not provided."""
29
- @classmethod
30
- def create(cls, tool_name: str, arguments_preview: str, context: dict[str, str] | None = None) -> ApprovalRequest:
31
- """Create a new approval request with generated request_id.
32
-
33
- Args:
34
- tool_name (str): The name of the tool requiring approval.
35
- arguments_preview (str): A preview of the arguments for display.
36
- context (dict[str, str] | None, optional): Additional context information.
37
-
38
- Returns:
39
- ApprovalRequest: A new approval request instance.
40
- """
41
-
42
- @dataclass
43
- class ApprovalDecision:
44
- """Captures the operator outcome."""
45
- request_id: str
46
- decision: ApprovalDecisionType
47
- operator_input: str
48
- decided_at: datetime | None = ...
49
- latency_ms: int | None = ...
50
- def __post_init__(self) -> None:
51
- """Initialize timestamp if not provided."""
52
-
53
- @dataclass
54
- class ApprovalLogEntry:
55
- """Structured log entry for HITL decisions."""
56
- request_id: str
57
- tool_name: str
58
- decision: str
59
- event: str = ...
60
- agent_id: str | None = ...
61
- thread_id: str | None = ...
62
- additional_context: dict[str, Any] | None = ...
63
- timestamp: datetime | None = ...
64
- def __post_init__(self) -> None:
65
- """Initialize timestamp if not provided."""
66
-
67
- class HitlMetadata(BaseModel):
68
- """Structured metadata payload included in agent streaming events."""
69
- required: bool
70
- decision: ApprovalDecisionType
71
- request_id: str
72
- timeout_seconds: int | None
73
- timeout_at: datetime | None
74
- model_config: Incomplete
75
- def as_payload(self) -> dict[str, Any]:
76
- """Return a JSON-ready metadata payload."""
77
- @classmethod
78
- def from_decision(cls, decision: ApprovalDecision, *, required: bool = True, timeout_seconds: int | None = None, timeout_at: datetime | None = None) -> HitlMetadata:
79
- """Build metadata from an ``ApprovalDecision``.
80
-
81
- Args:
82
- decision (ApprovalDecision): The approval decision to build metadata from.
83
- required (bool, optional): Whether approval is required. Defaults to True.
84
- timeout_seconds (int | None, optional): Timeout in seconds for the decision.
85
- timeout_at (datetime | None, optional): Specific timeout datetime.
86
-
87
- Returns:
88
- HitlMetadata: The constructed metadata instance.
89
- """
@@ -1,28 +0,0 @@
1
- from dataclasses import dataclass
2
- from gllm_core.schema import Chunk
3
- from langchain_core.messages import ToolMessage
4
- from langchain_core.messages.ai import UsageMetadata
5
- from langchain_core.tools import BaseTool
6
- from typing import Any
7
-
8
- __all__ = ['ToolCallResult', 'ToolStorageParams']
9
-
10
- @dataclass
11
- class ToolCallResult:
12
- """Container for the results of a single tool call execution."""
13
- messages: list[ToolMessage]
14
- artifacts: list[dict[str, Any]]
15
- metadata_delta: dict[str, Any]
16
- references: list[Chunk]
17
- step_usage: UsageMetadata | None
18
- pii_mapping: dict[str, str] | None = ...
19
-
20
- @dataclass
21
- class ToolStorageParams:
22
- """Parameters required for automatically storing tool outputs."""
23
- tool: BaseTool
24
- tool_output: Any
25
- tool_call: dict[str, Any]
26
- tool_call_id: str
27
- resolved_args: dict[str, Any]
28
- state: dict[str, Any]