aip-agents-binary 0.5.25b1__py3-none-macosx_13_0_arm64.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.
- aip_agents/__init__.py +65 -0
- aip_agents/__init__.pyi +19 -0
- aip_agents/a2a/__init__.py +19 -0
- aip_agents/a2a/__init__.pyi +3 -0
- aip_agents/a2a/server/__init__.py +10 -0
- aip_agents/a2a/server/__init__.pyi +4 -0
- aip_agents/a2a/server/base_executor.py +1086 -0
- aip_agents/a2a/server/base_executor.pyi +73 -0
- aip_agents/a2a/server/google_adk_executor.py +198 -0
- aip_agents/a2a/server/google_adk_executor.pyi +51 -0
- aip_agents/a2a/server/langflow_executor.py +180 -0
- aip_agents/a2a/server/langflow_executor.pyi +43 -0
- aip_agents/a2a/server/langgraph_executor.py +270 -0
- aip_agents/a2a/server/langgraph_executor.pyi +47 -0
- aip_agents/a2a/types.py +232 -0
- aip_agents/a2a/types.pyi +132 -0
- aip_agents/agent/__init__.py +27 -0
- aip_agents/agent/__init__.pyi +9 -0
- aip_agents/agent/base_agent.py +970 -0
- aip_agents/agent/base_agent.pyi +221 -0
- aip_agents/agent/base_langgraph_agent.py +2948 -0
- aip_agents/agent/base_langgraph_agent.pyi +232 -0
- aip_agents/agent/google_adk_agent.py +926 -0
- aip_agents/agent/google_adk_agent.pyi +141 -0
- aip_agents/agent/google_adk_constants.py +6 -0
- aip_agents/agent/google_adk_constants.pyi +3 -0
- aip_agents/agent/hitl/__init__.py +24 -0
- aip_agents/agent/hitl/__init__.pyi +6 -0
- aip_agents/agent/hitl/config.py +28 -0
- aip_agents/agent/hitl/config.pyi +15 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +42 -0
- aip_agents/agent/hitl/manager.py +532 -0
- aip_agents/agent/hitl/manager.pyi +200 -0
- aip_agents/agent/hitl/models.py +18 -0
- aip_agents/agent/hitl/models.pyi +3 -0
- aip_agents/agent/hitl/prompt/__init__.py +9 -0
- aip_agents/agent/hitl/prompt/__init__.pyi +4 -0
- aip_agents/agent/hitl/prompt/base.py +42 -0
- aip_agents/agent/hitl/prompt/base.pyi +24 -0
- aip_agents/agent/hitl/prompt/deferred.py +73 -0
- aip_agents/agent/hitl/prompt/deferred.pyi +30 -0
- aip_agents/agent/hitl/registry.py +149 -0
- aip_agents/agent/hitl/registry.pyi +101 -0
- aip_agents/agent/interface.py +138 -0
- aip_agents/agent/interface.pyi +81 -0
- aip_agents/agent/interfaces.py +65 -0
- aip_agents/agent/interfaces.pyi +44 -0
- aip_agents/agent/langflow_agent.py +464 -0
- aip_agents/agent/langflow_agent.pyi +133 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.pyi +49 -0
- aip_agents/agent/langgraph_react_agent.py +2596 -0
- aip_agents/agent/langgraph_react_agent.pyi +131 -0
- aip_agents/agent/system_instruction_context.py +34 -0
- aip_agents/agent/system_instruction_context.pyi +13 -0
- aip_agents/clients/__init__.py +10 -0
- aip_agents/clients/__init__.pyi +4 -0
- aip_agents/clients/langflow/__init__.py +10 -0
- aip_agents/clients/langflow/__init__.pyi +4 -0
- aip_agents/clients/langflow/client.py +477 -0
- aip_agents/clients/langflow/client.pyi +140 -0
- aip_agents/clients/langflow/types.py +18 -0
- aip_agents/clients/langflow/types.pyi +7 -0
- aip_agents/constants.py +23 -0
- aip_agents/constants.pyi +7 -0
- aip_agents/credentials/manager.py +132 -0
- aip_agents/examples/__init__.py +5 -0
- aip_agents/examples/__init__.pyi +0 -0
- aip_agents/examples/compare_streaming_client.py +783 -0
- aip_agents/examples/compare_streaming_client.pyi +48 -0
- aip_agents/examples/compare_streaming_server.py +142 -0
- aip_agents/examples/compare_streaming_server.pyi +18 -0
- aip_agents/examples/demo_memory_recall.py +401 -0
- aip_agents/examples/demo_memory_recall.pyi +58 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +9 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_server.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
- aip_agents/examples/hello_world_a2a_langflow_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
- aip_agents/examples/hello_world_a2a_langflow_server.pyi +14 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +16 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +2 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +9 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +5 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.pyi +14 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +15 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +48 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.py +244 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +48 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.py +251 -0
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +45 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +5 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +15 -0
- aip_agents/examples/hello_world_google_adk.py +41 -0
- aip_agents/examples/hello_world_google_adk.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_google_adk_stream.py +44 -0
- aip_agents/examples/hello_world_google_adk_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain.py +28 -0
- aip_agents/examples/hello_world_langchain.pyi +5 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.pyi +2 -0
- aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +16 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +18 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_stream.py +36 -0
- aip_agents/examples/hello_world_langchain_stream.pyi +5 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_langflow_agent.py +163 -0
- aip_agents/examples/hello_world_langflow_agent.pyi +35 -0
- aip_agents/examples/hello_world_langgraph.py +39 -0
- aip_agents/examples/hello_world_langgraph.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.py +44 -0
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_stream.py +43 -0
- aip_agents/examples/hello_world_langgraph_stream.pyi +5 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_model_switch_cli.py +210 -0
- aip_agents/examples/hello_world_model_switch_cli.pyi +30 -0
- aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
- aip_agents/examples/hello_world_multi_agent_adk.pyi +6 -0
- aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
- aip_agents/examples/hello_world_multi_agent_langchain.pyi +5 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.pyi +5 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +5 -0
- aip_agents/examples/hello_world_pii_logger.py +21 -0
- aip_agents/examples/hello_world_pii_logger.pyi +5 -0
- aip_agents/examples/hello_world_sentry.py +133 -0
- aip_agents/examples/hello_world_sentry.pyi +21 -0
- aip_agents/examples/hello_world_step_limits.py +273 -0
- aip_agents/examples/hello_world_step_limits.pyi +17 -0
- aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
- aip_agents/examples/hello_world_stock_a2a_server.pyi +17 -0
- aip_agents/examples/hello_world_tool_output_client.py +46 -0
- aip_agents/examples/hello_world_tool_output_client.pyi +5 -0
- aip_agents/examples/hello_world_tool_output_server.py +114 -0
- aip_agents/examples/hello_world_tool_output_server.pyi +19 -0
- aip_agents/examples/hitl_demo.py +724 -0
- aip_agents/examples/hitl_demo.pyi +67 -0
- aip_agents/examples/mcp_configs/configs.py +63 -0
- aip_agents/examples/mcp_servers/common.py +76 -0
- aip_agents/examples/mcp_servers/mcp_name.py +29 -0
- aip_agents/examples/mcp_servers/mcp_server_http.py +19 -0
- aip_agents/examples/mcp_servers/mcp_server_sse.py +19 -0
- aip_agents/examples/mcp_servers/mcp_server_stdio.py +19 -0
- aip_agents/examples/mcp_servers/mcp_time.py +10 -0
- aip_agents/examples/pii_demo_langgraph_client.py +69 -0
- aip_agents/examples/pii_demo_langgraph_client.pyi +5 -0
- aip_agents/examples/pii_demo_langgraph_server.py +126 -0
- aip_agents/examples/pii_demo_langgraph_server.pyi +20 -0
- aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
- aip_agents/examples/pii_demo_multi_agent_client.pyi +5 -0
- aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
- aip_agents/examples/pii_demo_multi_agent_server.pyi +40 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +5 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +19 -0
- aip_agents/examples/tools/__init__.py +27 -0
- aip_agents/examples/tools/__init__.pyi +9 -0
- aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
- aip_agents/examples/tools/adk_arithmetic_tools.pyi +24 -0
- aip_agents/examples/tools/adk_weather_tool.py +60 -0
- aip_agents/examples/tools/adk_weather_tool.pyi +18 -0
- aip_agents/examples/tools/data_generator_tool.py +103 -0
- aip_agents/examples/tools/data_generator_tool.pyi +15 -0
- aip_agents/examples/tools/data_visualization_tool.py +312 -0
- aip_agents/examples/tools/data_visualization_tool.pyi +19 -0
- aip_agents/examples/tools/image_artifact_tool.py +136 -0
- aip_agents/examples/tools/image_artifact_tool.pyi +26 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.pyi +17 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +20 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +25 -0
- aip_agents/examples/tools/langchain_weather_tool.py +48 -0
- aip_agents/examples/tools/langchain_weather_tool.pyi +19 -0
- aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
- aip_agents/examples/tools/langgraph_streaming_tool.pyi +43 -0
- aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
- aip_agents/examples/tools/mock_retrieval_tool.pyi +13 -0
- aip_agents/examples/tools/pii_demo_tools.py +189 -0
- aip_agents/examples/tools/pii_demo_tools.pyi +54 -0
- aip_agents/examples/tools/random_chart_tool.py +142 -0
- aip_agents/examples/tools/random_chart_tool.pyi +20 -0
- aip_agents/examples/tools/serper_tool.py +202 -0
- aip_agents/examples/tools/serper_tool.pyi +16 -0
- aip_agents/examples/tools/stock_tools.py +82 -0
- aip_agents/examples/tools/stock_tools.pyi +36 -0
- aip_agents/examples/tools/table_generator_tool.py +167 -0
- aip_agents/examples/tools/table_generator_tool.pyi +22 -0
- aip_agents/examples/tools/time_tool.py +82 -0
- aip_agents/examples/tools/time_tool.pyi +15 -0
- aip_agents/examples/tools/weather_forecast_tool.py +38 -0
- aip_agents/examples/tools/weather_forecast_tool.pyi +14 -0
- aip_agents/executor/agent_executor.py +473 -0
- aip_agents/executor/base.py +48 -0
- aip_agents/guardrails/__init__.py +83 -0
- aip_agents/guardrails/__init__.pyi +6 -0
- aip_agents/guardrails/engines/__init__.py +69 -0
- aip_agents/guardrails/engines/__init__.pyi +4 -0
- aip_agents/guardrails/engines/base.py +90 -0
- aip_agents/guardrails/engines/base.pyi +61 -0
- aip_agents/guardrails/engines/nemo.py +101 -0
- aip_agents/guardrails/engines/nemo.pyi +46 -0
- aip_agents/guardrails/engines/phrase_matcher.py +113 -0
- aip_agents/guardrails/engines/phrase_matcher.pyi +48 -0
- aip_agents/guardrails/exceptions.py +39 -0
- aip_agents/guardrails/exceptions.pyi +23 -0
- aip_agents/guardrails/manager.py +163 -0
- aip_agents/guardrails/manager.pyi +42 -0
- aip_agents/guardrails/middleware.py +199 -0
- aip_agents/guardrails/middleware.pyi +87 -0
- aip_agents/guardrails/schemas.py +63 -0
- aip_agents/guardrails/schemas.pyi +43 -0
- aip_agents/guardrails/utils.py +45 -0
- aip_agents/guardrails/utils.pyi +19 -0
- aip_agents/mcp/__init__.py +1 -0
- aip_agents/mcp/__init__.pyi +0 -0
- aip_agents/mcp/client/__init__.py +14 -0
- aip_agents/mcp/client/__init__.pyi +5 -0
- aip_agents/mcp/client/base_mcp_client.py +369 -0
- aip_agents/mcp/client/base_mcp_client.pyi +148 -0
- aip_agents/mcp/client/connection_manager.py +193 -0
- aip_agents/mcp/client/connection_manager.pyi +48 -0
- aip_agents/mcp/client/google_adk/__init__.py +11 -0
- aip_agents/mcp/client/google_adk/__init__.pyi +3 -0
- aip_agents/mcp/client/google_adk/client.py +381 -0
- aip_agents/mcp/client/google_adk/client.pyi +75 -0
- aip_agents/mcp/client/langchain/__init__.py +11 -0
- aip_agents/mcp/client/langchain/__init__.pyi +3 -0
- aip_agents/mcp/client/langchain/client.py +265 -0
- aip_agents/mcp/client/langchain/client.pyi +48 -0
- aip_agents/mcp/client/persistent_session.py +362 -0
- aip_agents/mcp/client/persistent_session.pyi +113 -0
- aip_agents/mcp/client/session_pool.py +351 -0
- aip_agents/mcp/client/session_pool.pyi +101 -0
- aip_agents/mcp/client/transports.py +228 -0
- aip_agents/mcp/client/transports.pyi +123 -0
- aip_agents/mcp/utils/__init__.py +7 -0
- aip_agents/mcp/utils/__init__.pyi +0 -0
- aip_agents/mcp/utils/config_validator.py +139 -0
- aip_agents/mcp/utils/config_validator.pyi +82 -0
- aip_agents/memory/__init__.py +14 -0
- aip_agents/memory/__init__.pyi +5 -0
- aip_agents/memory/adapters/__init__.py +10 -0
- aip_agents/memory/adapters/__init__.pyi +4 -0
- aip_agents/memory/adapters/base_adapter.py +717 -0
- aip_agents/memory/adapters/base_adapter.pyi +150 -0
- aip_agents/memory/adapters/mem0.py +84 -0
- aip_agents/memory/adapters/mem0.pyi +22 -0
- aip_agents/memory/base.py +84 -0
- aip_agents/memory/base.pyi +60 -0
- aip_agents/memory/constants.py +49 -0
- aip_agents/memory/constants.pyi +25 -0
- aip_agents/memory/factory.py +86 -0
- aip_agents/memory/factory.pyi +24 -0
- aip_agents/memory/guidance.py +20 -0
- aip_agents/memory/guidance.pyi +3 -0
- aip_agents/memory/simple_memory.py +47 -0
- aip_agents/memory/simple_memory.pyi +23 -0
- aip_agents/middleware/__init__.py +17 -0
- aip_agents/middleware/__init__.pyi +5 -0
- aip_agents/middleware/base.py +96 -0
- aip_agents/middleware/base.pyi +75 -0
- aip_agents/middleware/manager.py +150 -0
- aip_agents/middleware/manager.pyi +84 -0
- aip_agents/middleware/todolist.py +274 -0
- aip_agents/middleware/todolist.pyi +125 -0
- aip_agents/schema/__init__.py +69 -0
- aip_agents/schema/__init__.pyi +9 -0
- aip_agents/schema/a2a.py +56 -0
- aip_agents/schema/a2a.pyi +40 -0
- aip_agents/schema/agent.py +111 -0
- aip_agents/schema/agent.pyi +65 -0
- aip_agents/schema/hitl.py +157 -0
- aip_agents/schema/hitl.pyi +89 -0
- aip_agents/schema/langgraph.py +37 -0
- aip_agents/schema/langgraph.pyi +28 -0
- aip_agents/schema/model_id.py +97 -0
- aip_agents/schema/model_id.pyi +54 -0
- aip_agents/schema/step_limit.py +108 -0
- aip_agents/schema/step_limit.pyi +63 -0
- aip_agents/schema/storage.py +40 -0
- aip_agents/schema/storage.pyi +21 -0
- aip_agents/sentry/__init__.py +11 -0
- aip_agents/sentry/__init__.pyi +3 -0
- aip_agents/sentry/sentry.py +151 -0
- aip_agents/sentry/sentry.pyi +48 -0
- aip_agents/storage/__init__.py +41 -0
- aip_agents/storage/__init__.pyi +8 -0
- aip_agents/storage/base.py +85 -0
- aip_agents/storage/base.pyi +58 -0
- aip_agents/storage/clients/__init__.py +12 -0
- aip_agents/storage/clients/__init__.pyi +3 -0
- aip_agents/storage/clients/minio_client.py +318 -0
- aip_agents/storage/clients/minio_client.pyi +137 -0
- aip_agents/storage/config.py +62 -0
- aip_agents/storage/config.pyi +29 -0
- aip_agents/storage/providers/__init__.py +15 -0
- aip_agents/storage/providers/__init__.pyi +5 -0
- aip_agents/storage/providers/base.py +106 -0
- aip_agents/storage/providers/base.pyi +88 -0
- aip_agents/storage/providers/memory.py +114 -0
- aip_agents/storage/providers/memory.pyi +79 -0
- aip_agents/storage/providers/object_storage.py +214 -0
- aip_agents/storage/providers/object_storage.pyi +98 -0
- aip_agents/tools/__init__.py +53 -0
- aip_agents/tools/__init__.pyi +9 -0
- aip_agents/tools/browser_use/__init__.py +82 -0
- aip_agents/tools/browser_use/__init__.pyi +14 -0
- aip_agents/tools/browser_use/action_parser.py +103 -0
- aip_agents/tools/browser_use/action_parser.pyi +18 -0
- aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
- aip_agents/tools/browser_use/browser_use_tool.pyi +50 -0
- aip_agents/tools/browser_use/llm_config.py +120 -0
- aip_agents/tools/browser_use/llm_config.pyi +52 -0
- aip_agents/tools/browser_use/minio_storage.py +198 -0
- aip_agents/tools/browser_use/minio_storage.pyi +109 -0
- aip_agents/tools/browser_use/schemas.py +119 -0
- aip_agents/tools/browser_use/schemas.pyi +32 -0
- aip_agents/tools/browser_use/session.py +76 -0
- aip_agents/tools/browser_use/session.pyi +4 -0
- aip_agents/tools/browser_use/session_errors.py +132 -0
- aip_agents/tools/browser_use/session_errors.pyi +53 -0
- aip_agents/tools/browser_use/steel_session_recording.py +317 -0
- aip_agents/tools/browser_use/steel_session_recording.pyi +63 -0
- aip_agents/tools/browser_use/streaming.py +813 -0
- aip_agents/tools/browser_use/streaming.pyi +81 -0
- aip_agents/tools/browser_use/structured_data_parser.py +257 -0
- aip_agents/tools/browser_use/structured_data_parser.pyi +86 -0
- aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
- aip_agents/tools/browser_use/structured_data_recovery.pyi +43 -0
- aip_agents/tools/browser_use/types.py +78 -0
- aip_agents/tools/browser_use/types.pyi +45 -0
- aip_agents/tools/code_sandbox/__init__.py +26 -0
- aip_agents/tools/code_sandbox/__init__.pyi +3 -0
- aip_agents/tools/code_sandbox/constant.py +13 -0
- aip_agents/tools/code_sandbox/constant.pyi +4 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +306 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +102 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +29 -0
- aip_agents/tools/constants.py +177 -0
- aip_agents/tools/constants.pyi +138 -0
- aip_agents/tools/document_loader/__init__.py +44 -0
- aip_agents/tools/document_loader/__init__.pyi +7 -0
- aip_agents/tools/document_loader/base_reader.py +302 -0
- aip_agents/tools/document_loader/base_reader.pyi +75 -0
- aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
- aip_agents/tools/document_loader/docx_reader_tool.pyi +10 -0
- aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
- aip_agents/tools/document_loader/excel_reader_tool.pyi +26 -0
- aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
- aip_agents/tools/document_loader/pdf_reader_tool.pyi +11 -0
- aip_agents/tools/document_loader/pdf_splitter.py +169 -0
- aip_agents/tools/document_loader/pdf_splitter.pyi +18 -0
- aip_agents/tools/gl_connector/__init__.py +5 -0
- aip_agents/tools/gl_connector/__init__.pyi +3 -0
- aip_agents/tools/gl_connector/tool.py +383 -0
- aip_agents/tools/gl_connector/tool.pyi +74 -0
- aip_agents/tools/gl_connector_tools.py +119 -0
- aip_agents/tools/gl_connector_tools.pyi +39 -0
- aip_agents/tools/memory_search/__init__.py +22 -0
- aip_agents/tools/memory_search/__init__.pyi +5 -0
- aip_agents/tools/memory_search/base.py +200 -0
- aip_agents/tools/memory_search/base.pyi +69 -0
- aip_agents/tools/memory_search/mem0.py +258 -0
- aip_agents/tools/memory_search/mem0.pyi +19 -0
- aip_agents/tools/memory_search/schema.py +48 -0
- aip_agents/tools/memory_search/schema.pyi +15 -0
- aip_agents/tools/memory_search_tool.py +26 -0
- aip_agents/tools/memory_search_tool.pyi +3 -0
- aip_agents/tools/time_tool.py +117 -0
- aip_agents/tools/time_tool.pyi +16 -0
- aip_agents/tools/tool_config_injector.py +300 -0
- aip_agents/tools/tool_config_injector.pyi +26 -0
- aip_agents/tools/web_search/__init__.py +15 -0
- aip_agents/tools/web_search/__init__.pyi +3 -0
- aip_agents/tools/web_search/serper_tool.py +187 -0
- aip_agents/tools/web_search/serper_tool.pyi +19 -0
- aip_agents/types/__init__.py +70 -0
- aip_agents/types/__init__.pyi +36 -0
- aip_agents/types/a2a_events.py +13 -0
- aip_agents/types/a2a_events.pyi +3 -0
- aip_agents/utils/__init__.py +79 -0
- aip_agents/utils/__init__.pyi +11 -0
- aip_agents/utils/a2a_connector.py +1757 -0
- aip_agents/utils/a2a_connector.pyi +146 -0
- aip_agents/utils/artifact_helpers.py +502 -0
- aip_agents/utils/artifact_helpers.pyi +203 -0
- aip_agents/utils/constants.py +22 -0
- aip_agents/utils/constants.pyi +10 -0
- aip_agents/utils/datetime/__init__.py +34 -0
- aip_agents/utils/datetime/__init__.pyi +4 -0
- aip_agents/utils/datetime/normalization.py +231 -0
- aip_agents/utils/datetime/normalization.pyi +95 -0
- aip_agents/utils/datetime/timezone.py +206 -0
- aip_agents/utils/datetime/timezone.pyi +48 -0
- aip_agents/utils/env_loader.py +27 -0
- aip_agents/utils/env_loader.pyi +10 -0
- aip_agents/utils/event_handler_registry.py +58 -0
- aip_agents/utils/event_handler_registry.pyi +23 -0
- aip_agents/utils/file_prompt_utils.py +176 -0
- aip_agents/utils/file_prompt_utils.pyi +21 -0
- aip_agents/utils/final_response_builder.py +211 -0
- aip_agents/utils/final_response_builder.pyi +34 -0
- aip_agents/utils/formatter_llm_client.py +231 -0
- aip_agents/utils/formatter_llm_client.pyi +71 -0
- aip_agents/utils/langgraph/__init__.py +19 -0
- aip_agents/utils/langgraph/__init__.pyi +3 -0
- aip_agents/utils/langgraph/converter.py +128 -0
- aip_agents/utils/langgraph/converter.pyi +49 -0
- aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
- aip_agents/utils/langgraph/tool_managers/__init__.pyi +5 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +35 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +48 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +56 -0
- aip_agents/utils/langgraph/tool_output_management.py +967 -0
- aip_agents/utils/langgraph/tool_output_management.pyi +292 -0
- aip_agents/utils/logger.py +195 -0
- aip_agents/utils/logger.pyi +60 -0
- aip_agents/utils/metadata/__init__.py +27 -0
- aip_agents/utils/metadata/__init__.pyi +5 -0
- aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
- aip_agents/utils/metadata/activity_metadata_helper.pyi +25 -0
- aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
- aip_agents/utils/metadata/activity_narrative/__init__.pyi +7 -0
- aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
- aip_agents/utils/metadata/activity_narrative/builder.pyi +35 -0
- aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
- aip_agents/utils/metadata/activity_narrative/constants.pyi +10 -0
- aip_agents/utils/metadata/activity_narrative/context.py +49 -0
- aip_agents/utils/metadata/activity_narrative/context.pyi +32 -0
- aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
- aip_agents/utils/metadata/activity_narrative/formatters.pyi +48 -0
- aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
- aip_agents/utils/metadata/activity_narrative/utils.pyi +12 -0
- aip_agents/utils/metadata/schemas/__init__.py +16 -0
- aip_agents/utils/metadata/schemas/__init__.pyi +4 -0
- aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
- aip_agents/utils/metadata/schemas/activity_schema.pyi +18 -0
- aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
- aip_agents/utils/metadata/schemas/thinking_schema.pyi +20 -0
- aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
- aip_agents/utils/metadata/thinking_metadata_helper.pyi +4 -0
- aip_agents/utils/metadata_helper.py +358 -0
- aip_agents/utils/metadata_helper.pyi +117 -0
- aip_agents/utils/name_preprocessor/__init__.py +17 -0
- aip_agents/utils/name_preprocessor/__init__.pyi +6 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +52 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +38 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.pyi +41 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +34 -0
- aip_agents/utils/pii/__init__.py +25 -0
- aip_agents/utils/pii/__init__.pyi +5 -0
- aip_agents/utils/pii/pii_handler.py +397 -0
- aip_agents/utils/pii/pii_handler.pyi +96 -0
- aip_agents/utils/pii/pii_helper.py +207 -0
- aip_agents/utils/pii/pii_helper.pyi +78 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +73 -0
- aip_agents/utils/reference_helper.py +273 -0
- aip_agents/utils/reference_helper.pyi +81 -0
- aip_agents/utils/sse_chunk_transformer.py +831 -0
- aip_agents/utils/sse_chunk_transformer.pyi +166 -0
- aip_agents/utils/step_limit_manager.py +265 -0
- aip_agents/utils/step_limit_manager.pyi +112 -0
- aip_agents/utils/token_usage_helper.py +156 -0
- aip_agents/utils/token_usage_helper.pyi +60 -0
- aip_agents_binary-0.5.25b1.dist-info/METADATA +681 -0
- aip_agents_binary-0.5.25b1.dist-info/RECORD +566 -0
- aip_agents_binary-0.5.25b1.dist-info/WHEEL +5 -0
- aip_agents_binary-0.5.25b1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,383 @@
|
|
|
1
|
+
"""Wrapper for GL Connectors.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Saul Sayers (saul.sayers@gdplabs.id)
|
|
5
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
6
|
+
|
|
7
|
+
Reference:
|
|
8
|
+
https://gl-docs.gitbook.io/bosa/gl-connector/gl-connector
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import os
|
|
14
|
+
from collections.abc import Iterable
|
|
15
|
+
from typing import Any
|
|
16
|
+
|
|
17
|
+
from bosa_connectors import BosaConnector, BOSAConnectorToolGenerator
|
|
18
|
+
from langchain_core.runnables import RunnableConfig
|
|
19
|
+
from langchain_core.tools import BaseTool
|
|
20
|
+
from pydantic import ConfigDict, PrivateAttr
|
|
21
|
+
|
|
22
|
+
from aip_agents.tools.constants import ToolType
|
|
23
|
+
|
|
24
|
+
_REQUIRED_ENV_VARS: tuple[str, ...] = (
|
|
25
|
+
"GL_CONNECTORS_BASE_URL",
|
|
26
|
+
"GL_CONNECTORS_API_KEY",
|
|
27
|
+
"GL_CONNECTORS_USERNAME",
|
|
28
|
+
"GL_CONNECTORS_PASSWORD",
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
_ENV_VAR_MAPPING: dict[str, tuple[str, ...]] = {
|
|
32
|
+
"GL_CONNECTORS_BASE_URL": (
|
|
33
|
+
"GL_CONNECTORS_BASE_URL",
|
|
34
|
+
"BOSA_BASE_URL",
|
|
35
|
+
"BOSA_API_BASE_URL",
|
|
36
|
+
),
|
|
37
|
+
"GL_CONNECTORS_API_KEY": ("GL_CONNECTORS_API_KEY", "BOSA_API_KEY"),
|
|
38
|
+
"GL_CONNECTORS_USERNAME": ("GL_CONNECTORS_USERNAME", "BOSA_USERNAME"),
|
|
39
|
+
"GL_CONNECTORS_PASSWORD": ("GL_CONNECTORS_PASSWORD", "BOSA_PASSWORD"),
|
|
40
|
+
"GL_CONNECTORS_IDENTIFIER": ("GL_CONNECTORS_IDENTIFIER", "BOSA_IDENTIFIER"),
|
|
41
|
+
}
|
|
42
|
+
_TOP_LEVEL_KEYS: tuple[str, ...] = (
|
|
43
|
+
"token",
|
|
44
|
+
"identifier",
|
|
45
|
+
"timeout",
|
|
46
|
+
"request",
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class _InjectedTool(BaseTool):
|
|
51
|
+
"""Wrap a BaseTool to inject token and optional identifier into inputs."""
|
|
52
|
+
|
|
53
|
+
_base_tool: BaseTool = PrivateAttr()
|
|
54
|
+
_token: str = PrivateAttr()
|
|
55
|
+
_identifier: str | None = PrivateAttr(default=None)
|
|
56
|
+
|
|
57
|
+
model_config = ConfigDict(arbitrary_types_allowed=True)
|
|
58
|
+
|
|
59
|
+
def __init__(self, base_tool: BaseTool, token: str, identifier: str | None) -> None:
|
|
60
|
+
"""Initialize the injected tool wrapper.
|
|
61
|
+
|
|
62
|
+
Args:
|
|
63
|
+
base_tool: The base tool to wrap.
|
|
64
|
+
token: Authentication token to inject into tool inputs.
|
|
65
|
+
identifier: Optional identifier to inject into tool inputs.
|
|
66
|
+
|
|
67
|
+
Returns:
|
|
68
|
+
None
|
|
69
|
+
"""
|
|
70
|
+
base_fields = {field: getattr(base_tool, field) for field in BaseTool.model_fields}
|
|
71
|
+
super().__init__(**base_fields)
|
|
72
|
+
self._base_tool = base_tool
|
|
73
|
+
self._token = token
|
|
74
|
+
self._identifier = identifier
|
|
75
|
+
|
|
76
|
+
def _run(self, *args: Any, **kwargs: Any) -> Any:
|
|
77
|
+
"""Execute the wrapped tool synchronously.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
*args: Positional arguments to pass to the base tool.
|
|
81
|
+
**kwargs: Keyword arguments to pass to the base tool.
|
|
82
|
+
|
|
83
|
+
Returns:
|
|
84
|
+
The result of executing the base tool.
|
|
85
|
+
"""
|
|
86
|
+
return self._base_tool._run(*args, **kwargs)
|
|
87
|
+
|
|
88
|
+
async def _arun(self, *args: Any, **kwargs: Any) -> Any:
|
|
89
|
+
"""Execute the wrapped tool asynchronously.
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
*args: Positional arguments to pass to the base tool.
|
|
93
|
+
**kwargs: Keyword arguments to pass to the base tool.
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
The result of executing the base tool.
|
|
97
|
+
"""
|
|
98
|
+
return await self._base_tool._arun(*args, **kwargs)
|
|
99
|
+
|
|
100
|
+
def invoke(self, input: Any, config: RunnableConfig | None = None, **kwargs: Any) -> Any:
|
|
101
|
+
"""Invoke the tool with token and optional identifier injected.
|
|
102
|
+
|
|
103
|
+
Args:
|
|
104
|
+
input: Tool input to process.
|
|
105
|
+
config: Optional runnable configuration.
|
|
106
|
+
**kwargs: Additional keyword arguments.
|
|
107
|
+
|
|
108
|
+
Returns:
|
|
109
|
+
The result of invoking the tool with injected parameters.
|
|
110
|
+
"""
|
|
111
|
+
injected = _inject_params(input, self._token, self._identifier, self._base_tool)
|
|
112
|
+
return super().invoke(injected, config=config, **kwargs)
|
|
113
|
+
|
|
114
|
+
async def ainvoke(self, input: Any, config: RunnableConfig | None = None, **kwargs: Any) -> Any:
|
|
115
|
+
"""Invoke the tool asynchronously with token and optional identifier injected.
|
|
116
|
+
|
|
117
|
+
Args:
|
|
118
|
+
input: Tool input to process.
|
|
119
|
+
config: Optional runnable configuration.
|
|
120
|
+
**kwargs: Additional keyword arguments.
|
|
121
|
+
|
|
122
|
+
Returns:
|
|
123
|
+
The result of invoking the tool with injected parameters.
|
|
124
|
+
"""
|
|
125
|
+
injected = _inject_params(input, self._token, self._identifier, self._base_tool)
|
|
126
|
+
return await super().ainvoke(injected, config=config, **kwargs)
|
|
127
|
+
|
|
128
|
+
def run(self, tool_input: Any, **kwargs: Any) -> Any:
|
|
129
|
+
"""Run the tool with token and optional identifier injected.
|
|
130
|
+
|
|
131
|
+
Args:
|
|
132
|
+
tool_input: Tool input to process.
|
|
133
|
+
**kwargs: Additional keyword arguments.
|
|
134
|
+
|
|
135
|
+
Returns:
|
|
136
|
+
The result of running the tool with injected parameters.
|
|
137
|
+
"""
|
|
138
|
+
injected = _inject_params(tool_input, self._token, self._identifier, self._base_tool)
|
|
139
|
+
return super().run(injected, **kwargs)
|
|
140
|
+
|
|
141
|
+
async def arun(self, tool_input: Any, **kwargs: Any) -> Any:
|
|
142
|
+
"""Run the tool asynchronously with token and optional identifier injected.
|
|
143
|
+
|
|
144
|
+
Args:
|
|
145
|
+
tool_input: Tool input to process.
|
|
146
|
+
**kwargs: Additional keyword arguments.
|
|
147
|
+
|
|
148
|
+
Returns:
|
|
149
|
+
The result of running the tool with injected parameters.
|
|
150
|
+
"""
|
|
151
|
+
injected = _inject_params(tool_input, self._token, self._identifier, self._base_tool)
|
|
152
|
+
return await super().arun(injected, **kwargs)
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def GLConnectorTool(
|
|
156
|
+
tool_name: str,
|
|
157
|
+
*,
|
|
158
|
+
api_key: str | None = None,
|
|
159
|
+
identifier: str | None = None,
|
|
160
|
+
) -> BaseTool:
|
|
161
|
+
"""Create a single tool from GL Connectors by exact tool name.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
tool_name: Exact tool name (not module name).
|
|
165
|
+
api_key: Optional override for GL Connectors API key.
|
|
166
|
+
identifier: Optional override for GL Connectors identifier.
|
|
167
|
+
|
|
168
|
+
Returns:
|
|
169
|
+
A single LangChain BaseTool with token injection.
|
|
170
|
+
"""
|
|
171
|
+
if not tool_name or not tool_name.strip():
|
|
172
|
+
raise ValueError("tool_name must be a non-empty string")
|
|
173
|
+
|
|
174
|
+
env_values = _load_env(api_key=api_key, identifier=identifier)
|
|
175
|
+
connector = BosaConnector(
|
|
176
|
+
api_base_url=env_values["GL_CONNECTORS_BASE_URL"],
|
|
177
|
+
api_key=env_values["GL_CONNECTORS_API_KEY"],
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
modules = _get_available_modules(connector)
|
|
181
|
+
module_name = _resolve_module(tool_name, modules)
|
|
182
|
+
|
|
183
|
+
generator = BOSAConnectorToolGenerator(
|
|
184
|
+
api_base_url=env_values["GL_CONNECTORS_BASE_URL"],
|
|
185
|
+
api_key=env_values["GL_CONNECTORS_API_KEY"],
|
|
186
|
+
app_name=module_name,
|
|
187
|
+
)
|
|
188
|
+
tools = generator.generate_tools(tool_type=ToolType.LANGCHAIN)
|
|
189
|
+
|
|
190
|
+
matching = [tool for tool in tools if getattr(tool, "name", None) == tool_name]
|
|
191
|
+
if not matching:
|
|
192
|
+
raise ValueError(f"Tool '{tool_name}' not found in module '{module_name}'")
|
|
193
|
+
if len(matching) > 1:
|
|
194
|
+
raise ValueError(f"Multiple tools named '{tool_name}' found in module '{module_name}'")
|
|
195
|
+
|
|
196
|
+
token = _create_token(
|
|
197
|
+
connector,
|
|
198
|
+
env_values["GL_CONNECTORS_USERNAME"],
|
|
199
|
+
env_values["GL_CONNECTORS_PASSWORD"],
|
|
200
|
+
)
|
|
201
|
+
return _InjectedTool(matching[0], token, env_values.get("GL_CONNECTORS_IDENTIFIER"))
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
def _load_env(*, api_key: str | None, identifier: str | None) -> dict[str, str]:
|
|
205
|
+
"""Load and validate environment configuration for connector access.
|
|
206
|
+
|
|
207
|
+
Args:
|
|
208
|
+
api_key: Optional override for GL Connectors API key.
|
|
209
|
+
identifier: Optional override for GL Connectors identifier.
|
|
210
|
+
|
|
211
|
+
Returns:
|
|
212
|
+
Dictionary containing environment configuration values.
|
|
213
|
+
|
|
214
|
+
Raises:
|
|
215
|
+
ValueError: If required environment variables are missing.
|
|
216
|
+
"""
|
|
217
|
+
env: dict[str, str | None] = {}
|
|
218
|
+
|
|
219
|
+
# Load from environment using mapping (prefers GL_CONNECTORS_* over BOSA_*)
|
|
220
|
+
for internal_key, env_vars in _ENV_VAR_MAPPING.items():
|
|
221
|
+
val = None
|
|
222
|
+
for var_name in env_vars:
|
|
223
|
+
val = os.getenv(var_name)
|
|
224
|
+
if val:
|
|
225
|
+
break
|
|
226
|
+
env[internal_key] = val
|
|
227
|
+
|
|
228
|
+
if api_key:
|
|
229
|
+
env["GL_CONNECTORS_API_KEY"] = api_key
|
|
230
|
+
|
|
231
|
+
if identifier:
|
|
232
|
+
env["GL_CONNECTORS_IDENTIFIER"] = identifier
|
|
233
|
+
|
|
234
|
+
missing = [key for key in _REQUIRED_ENV_VARS if not env.get(key)]
|
|
235
|
+
if missing:
|
|
236
|
+
# Map back to human-friendly names for the error message
|
|
237
|
+
friendly_missing = []
|
|
238
|
+
for m in missing:
|
|
239
|
+
preferred = _ENV_VAR_MAPPING[m][0]
|
|
240
|
+
friendly_missing.append(preferred)
|
|
241
|
+
raise ValueError(f"Missing required environment variables: {', '.join(friendly_missing)}")
|
|
242
|
+
|
|
243
|
+
return {k: v for k, v in env.items() if v is not None}
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _get_available_modules(connector: BosaConnector) -> list[str]:
|
|
247
|
+
"""Return available connector modules or raise an actionable error.
|
|
248
|
+
|
|
249
|
+
Args:
|
|
250
|
+
connector: GL Connectors instance to query for modules.
|
|
251
|
+
|
|
252
|
+
Returns:
|
|
253
|
+
List of available module names.
|
|
254
|
+
|
|
255
|
+
Raises:
|
|
256
|
+
ValueError: If module fetching fails or no modules are available.
|
|
257
|
+
"""
|
|
258
|
+
try:
|
|
259
|
+
modules = list(connector.get_available_modules())
|
|
260
|
+
except Exception as exc:
|
|
261
|
+
raise ValueError("Failed to fetch available connector modules") from exc
|
|
262
|
+
|
|
263
|
+
if not modules:
|
|
264
|
+
raise ValueError("No connector modules available")
|
|
265
|
+
return modules
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
def _resolve_module(tool_name: str, modules: Iterable[str]) -> str:
|
|
269
|
+
"""Resolve the module name by longest prefix match.
|
|
270
|
+
|
|
271
|
+
Args:
|
|
272
|
+
tool_name: Name of the tool to resolve module for.
|
|
273
|
+
modules: Iterable of available module names.
|
|
274
|
+
|
|
275
|
+
Returns:
|
|
276
|
+
The resolved module name.
|
|
277
|
+
|
|
278
|
+
Raises:
|
|
279
|
+
ValueError: If no matching module is found or multiple ambiguous matches exist.
|
|
280
|
+
"""
|
|
281
|
+
candidates = [module for module in modules if tool_name == module or tool_name.startswith(f"{module}_")]
|
|
282
|
+
if not candidates:
|
|
283
|
+
raise ValueError(f"Unable to resolve module for tool '{tool_name}'. Available modules: {', '.join(modules)}")
|
|
284
|
+
|
|
285
|
+
candidates.sort(key=len, reverse=True)
|
|
286
|
+
if len(candidates) > 1 and len(candidates[0]) == len(candidates[1]):
|
|
287
|
+
raise ValueError(f"Ambiguous module match for tool '{tool_name}'. Matches: {', '.join(candidates)}")
|
|
288
|
+
return candidates[0]
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
def _create_token(connector: BosaConnector, username: str, password: str) -> str:
|
|
292
|
+
"""Authenticate the connector user and return a user token.
|
|
293
|
+
|
|
294
|
+
Args:
|
|
295
|
+
connector: GL Connectors instance for authentication.
|
|
296
|
+
username: GL Connectors username for authentication.
|
|
297
|
+
password: GL Connectors password for authentication.
|
|
298
|
+
|
|
299
|
+
Returns:
|
|
300
|
+
Authentication token string.
|
|
301
|
+
|
|
302
|
+
Raises:
|
|
303
|
+
ValueError: If authentication fails or token is missing.
|
|
304
|
+
"""
|
|
305
|
+
try:
|
|
306
|
+
user = connector.authenticate_bosa_user(username, password)
|
|
307
|
+
except Exception as exc:
|
|
308
|
+
raise ValueError("Failed to authenticate GL Connectors user") from exc
|
|
309
|
+
|
|
310
|
+
token = getattr(user, "token", None)
|
|
311
|
+
if not token:
|
|
312
|
+
raise ValueError("GL Connectors user token missing after authentication")
|
|
313
|
+
return token
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
def _inject_params(tool_input: Any, token: str, identifier: str | None, base_tool: BaseTool) -> dict[str, Any]:
|
|
317
|
+
"""Inject token and optional identifier into tool input.
|
|
318
|
+
|
|
319
|
+
Args:
|
|
320
|
+
tool_input: Original tool input dictionary.
|
|
321
|
+
token: Authentication token to inject.
|
|
322
|
+
identifier: Optional identifier to inject.
|
|
323
|
+
base_tool: Base tool instance for schema inspection.
|
|
324
|
+
|
|
325
|
+
Returns:
|
|
326
|
+
Dictionary with token and optional identifier injected.
|
|
327
|
+
|
|
328
|
+
Raises:
|
|
329
|
+
TypeError: If tool_input is not a dictionary.
|
|
330
|
+
"""
|
|
331
|
+
if tool_input is None:
|
|
332
|
+
tool_input = {}
|
|
333
|
+
|
|
334
|
+
if not isinstance(tool_input, dict):
|
|
335
|
+
raise TypeError("Connector tool input must be a dict to inject token")
|
|
336
|
+
|
|
337
|
+
if "args" in tool_input and isinstance(tool_input.get("args"), dict):
|
|
338
|
+
injected_args = dict(tool_input["args"])
|
|
339
|
+
injected_args["token"] = token
|
|
340
|
+
if identifier:
|
|
341
|
+
injected_args["identifier"] = identifier
|
|
342
|
+
injected = dict(tool_input)
|
|
343
|
+
injected["args"] = injected_args
|
|
344
|
+
return injected
|
|
345
|
+
|
|
346
|
+
injected = dict(tool_input)
|
|
347
|
+
injected = _wrap_request_if_needed(injected, base_tool)
|
|
348
|
+
injected["token"] = token
|
|
349
|
+
if identifier:
|
|
350
|
+
injected["identifier"] = identifier
|
|
351
|
+
return injected
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
def _wrap_request_if_needed(tool_input: dict[str, Any], base_tool: BaseTool) -> dict[str, Any]:
|
|
355
|
+
"""Wrap flat inputs into a 'request' payload when required by schema.
|
|
356
|
+
|
|
357
|
+
Args:
|
|
358
|
+
tool_input: Tool input dictionary to potentially wrap.
|
|
359
|
+
base_tool: Base tool instance for schema inspection.
|
|
360
|
+
|
|
361
|
+
Returns:
|
|
362
|
+
Dictionary with inputs wrapped in 'request' key if needed, otherwise unchanged.
|
|
363
|
+
"""
|
|
364
|
+
args_schema = getattr(base_tool, "args_schema", None)
|
|
365
|
+
if not (isinstance(args_schema, dict) and "request" in args_schema.get("properties", {})):
|
|
366
|
+
return tool_input
|
|
367
|
+
|
|
368
|
+
request_payload = {}
|
|
369
|
+
existing_request = tool_input.get("request")
|
|
370
|
+
if isinstance(existing_request, dict):
|
|
371
|
+
request_payload.update(existing_request)
|
|
372
|
+
|
|
373
|
+
for key, value in tool_input.items():
|
|
374
|
+
if key in _TOP_LEVEL_KEYS:
|
|
375
|
+
continue
|
|
376
|
+
request_payload.setdefault(key, value)
|
|
377
|
+
|
|
378
|
+
wrapped = dict(tool_input)
|
|
379
|
+
wrapped["request"] = request_payload
|
|
380
|
+
for key in list(wrapped.keys()):
|
|
381
|
+
if key not in _TOP_LEVEL_KEYS:
|
|
382
|
+
wrapped.pop(key, None)
|
|
383
|
+
return wrapped
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.tools.constants import ToolType as ToolType
|
|
3
|
+
from langchain_core.runnables import RunnableConfig
|
|
4
|
+
from langchain_core.tools import BaseTool
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
class _InjectedTool(BaseTool):
|
|
8
|
+
"""Wrap a BaseTool to inject token and optional identifier into inputs."""
|
|
9
|
+
model_config: Incomplete
|
|
10
|
+
def __init__(self, base_tool: BaseTool, token: str, identifier: str | None) -> None:
|
|
11
|
+
"""Initialize the injected tool wrapper.
|
|
12
|
+
|
|
13
|
+
Args:
|
|
14
|
+
base_tool: The base tool to wrap.
|
|
15
|
+
token: Authentication token to inject into tool inputs.
|
|
16
|
+
identifier: Optional identifier to inject into tool inputs.
|
|
17
|
+
|
|
18
|
+
Returns:
|
|
19
|
+
None
|
|
20
|
+
"""
|
|
21
|
+
def invoke(self, input: Any, config: RunnableConfig | None = None, **kwargs: Any) -> Any:
|
|
22
|
+
"""Invoke the tool with token and optional identifier injected.
|
|
23
|
+
|
|
24
|
+
Args:
|
|
25
|
+
input: Tool input to process.
|
|
26
|
+
config: Optional runnable configuration.
|
|
27
|
+
**kwargs: Additional keyword arguments.
|
|
28
|
+
|
|
29
|
+
Returns:
|
|
30
|
+
The result of invoking the tool with injected parameters.
|
|
31
|
+
"""
|
|
32
|
+
async def ainvoke(self, input: Any, config: RunnableConfig | None = None, **kwargs: Any) -> Any:
|
|
33
|
+
"""Invoke the tool asynchronously with token and optional identifier injected.
|
|
34
|
+
|
|
35
|
+
Args:
|
|
36
|
+
input: Tool input to process.
|
|
37
|
+
config: Optional runnable configuration.
|
|
38
|
+
**kwargs: Additional keyword arguments.
|
|
39
|
+
|
|
40
|
+
Returns:
|
|
41
|
+
The result of invoking the tool with injected parameters.
|
|
42
|
+
"""
|
|
43
|
+
def run(self, tool_input: Any, **kwargs: Any) -> Any:
|
|
44
|
+
"""Run the tool with token and optional identifier injected.
|
|
45
|
+
|
|
46
|
+
Args:
|
|
47
|
+
tool_input: Tool input to process.
|
|
48
|
+
**kwargs: Additional keyword arguments.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
The result of running the tool with injected parameters.
|
|
52
|
+
"""
|
|
53
|
+
async def arun(self, tool_input: Any, **kwargs: Any) -> Any:
|
|
54
|
+
"""Run the tool asynchronously with token and optional identifier injected.
|
|
55
|
+
|
|
56
|
+
Args:
|
|
57
|
+
tool_input: Tool input to process.
|
|
58
|
+
**kwargs: Additional keyword arguments.
|
|
59
|
+
|
|
60
|
+
Returns:
|
|
61
|
+
The result of running the tool with injected parameters.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
def GLConnectorTool(tool_name: str, *, api_key: str | None = None, identifier: str | None = None) -> BaseTool:
|
|
65
|
+
"""Create a single tool from GL Connectors by exact tool name.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
tool_name: Exact tool name (not module name).
|
|
69
|
+
api_key: Optional override for GL Connectors API key.
|
|
70
|
+
identifier: Optional override for GL Connectors identifier.
|
|
71
|
+
|
|
72
|
+
Returns:
|
|
73
|
+
A single LangChain BaseTool with token injection.
|
|
74
|
+
"""
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"""Auto-generated tools from GL Connectors.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Saul Sayers (saul.sayers@gdplabs.id)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from bosa_connectors import BosaConnector, BOSAConnectorToolGenerator
|
|
8
|
+
from langchain_core.tools import BaseTool
|
|
9
|
+
|
|
10
|
+
from aip_agents.tools.constants import (
|
|
11
|
+
GL_CONNECTORS_API_KEY,
|
|
12
|
+
GL_CONNECTORS_BASE_URL,
|
|
13
|
+
GL_CONNECTORS_FETCH_MAX_RETRIES,
|
|
14
|
+
ToolType,
|
|
15
|
+
)
|
|
16
|
+
from aip_agents.utils.logger import get_logger
|
|
17
|
+
|
|
18
|
+
logger = get_logger(__name__)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def get_gl_connector_modules_with_retry() -> list[str]:
|
|
22
|
+
"""Try to get available modules with retries.
|
|
23
|
+
|
|
24
|
+
Returns:
|
|
25
|
+
List of available modules.
|
|
26
|
+
"""
|
|
27
|
+
if not GL_CONNECTORS_BASE_URL or not GL_CONNECTORS_API_KEY:
|
|
28
|
+
logger.warning("GL Connectors credentials missing (base_url or api_key); returning empty modules list")
|
|
29
|
+
return []
|
|
30
|
+
|
|
31
|
+
connector = BosaConnector(api_base_url=GL_CONNECTORS_BASE_URL, api_key=GL_CONNECTORS_API_KEY)
|
|
32
|
+
modules = []
|
|
33
|
+
for attempt in range(GL_CONNECTORS_FETCH_MAX_RETRIES):
|
|
34
|
+
try:
|
|
35
|
+
modules = list(connector.get_available_modules())
|
|
36
|
+
if modules:
|
|
37
|
+
return modules
|
|
38
|
+
logger.warning(
|
|
39
|
+
f"Failed to get GL Connectors available modules, retrying... (attempt {attempt + 1} / {GL_CONNECTORS_FETCH_MAX_RETRIES})"
|
|
40
|
+
)
|
|
41
|
+
except Exception as e:
|
|
42
|
+
logger.exception(
|
|
43
|
+
f"Exception when getting GL Connectors available modules (attempt {attempt + 1} / {GL_CONNECTORS_FETCH_MAX_RETRIES}): {e}"
|
|
44
|
+
)
|
|
45
|
+
logger.error("Failed to get GL Connectors available modules after maximum retries")
|
|
46
|
+
return modules
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class LazyGLConnectorToolsDict(dict):
|
|
50
|
+
"""Lazy dictionary for GL Connectors."""
|
|
51
|
+
|
|
52
|
+
def __missing__(self, app):
|
|
53
|
+
"""When a key is missing, create the tools and store them in the dictionary.
|
|
54
|
+
|
|
55
|
+
Args:
|
|
56
|
+
app: Name of the GL Connectors.
|
|
57
|
+
|
|
58
|
+
Returns:
|
|
59
|
+
List of tools generated by the GL Connectors tool generator.
|
|
60
|
+
"""
|
|
61
|
+
if app not in get_gl_connector_modules():
|
|
62
|
+
return []
|
|
63
|
+
tools = []
|
|
64
|
+
for attempt in range(GL_CONNECTORS_FETCH_MAX_RETRIES):
|
|
65
|
+
try:
|
|
66
|
+
tools = BOSAConnectorToolGenerator(
|
|
67
|
+
api_base_url=GL_CONNECTORS_BASE_URL,
|
|
68
|
+
api_key=GL_CONNECTORS_API_KEY,
|
|
69
|
+
app_name=app,
|
|
70
|
+
).generate_tools(tool_type=ToolType.LANGCHAIN)
|
|
71
|
+
if tools:
|
|
72
|
+
self[app] = tools
|
|
73
|
+
return tools
|
|
74
|
+
logger.warning(
|
|
75
|
+
f"Failed to create GL Connectors, retrying... (attempt {attempt + 1} / {GL_CONNECTORS_FETCH_MAX_RETRIES})"
|
|
76
|
+
)
|
|
77
|
+
except Exception as e:
|
|
78
|
+
logger.exception(
|
|
79
|
+
f"Exception when creating GL Connectors for app '{app}' "
|
|
80
|
+
f"(attempt {attempt + 1} / {GL_CONNECTORS_FETCH_MAX_RETRIES}): {e}"
|
|
81
|
+
)
|
|
82
|
+
logger.error("Failed to create GL Connectors after maximum retries")
|
|
83
|
+
return tools
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
# Supported modules (dynamic)
|
|
87
|
+
def get_gl_connector_modules() -> list[str]:
|
|
88
|
+
"""Lazily fetch and cache GL Connectors modules.
|
|
89
|
+
|
|
90
|
+
Returns:
|
|
91
|
+
List of GL Connectors modules.
|
|
92
|
+
"""
|
|
93
|
+
if not hasattr(get_gl_connector_modules, "_cache"):
|
|
94
|
+
get_gl_connector_modules._cache = get_gl_connector_modules_with_retry()
|
|
95
|
+
return get_gl_connector_modules._cache
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
# FOR BACKWARDS COMPATIBILITY
|
|
99
|
+
def get_bosa_modules() -> list[str]:
|
|
100
|
+
"""Backward-compatible alias for get_gl_connector_modules."""
|
|
101
|
+
return get_gl_connector_modules()
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
GL_CONNECTORS_MODULES = [
|
|
105
|
+
"github",
|
|
106
|
+
"twitter",
|
|
107
|
+
"google",
|
|
108
|
+
"google_drive",
|
|
109
|
+
"google_mail",
|
|
110
|
+
"google_docs",
|
|
111
|
+
]
|
|
112
|
+
|
|
113
|
+
# FOR BACKWARDS COMPATIBILITY
|
|
114
|
+
BOSA_MODULES = GL_CONNECTORS_MODULES
|
|
115
|
+
|
|
116
|
+
GL_CONNECTORS_AUTOMATED_TOOLS: dict[str, list[BaseTool]] = LazyGLConnectorToolsDict()
|
|
117
|
+
|
|
118
|
+
# FOR BACKWARDS COMPATIBILITY
|
|
119
|
+
BOSA_AUTOMATED_TOOLS = GL_CONNECTORS_AUTOMATED_TOOLS
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from _typeshed import Incomplete
|
|
2
|
+
from aip_agents.tools.constants import GL_CONNECTORS_API_KEY as GL_CONNECTORS_API_KEY, GL_CONNECTORS_BASE_URL as GL_CONNECTORS_BASE_URL, GL_CONNECTORS_FETCH_MAX_RETRIES as GL_CONNECTORS_FETCH_MAX_RETRIES, ToolType as ToolType
|
|
3
|
+
from aip_agents.utils.logger import get_logger as get_logger
|
|
4
|
+
from langchain_core.tools import BaseTool as BaseTool
|
|
5
|
+
|
|
6
|
+
logger: Incomplete
|
|
7
|
+
|
|
8
|
+
def get_gl_connector_modules_with_retry() -> list[str]:
|
|
9
|
+
"""Try to get available modules with retries.
|
|
10
|
+
|
|
11
|
+
Returns:
|
|
12
|
+
List of available modules.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
class LazyGLConnectorToolsDict(dict):
|
|
16
|
+
"""Lazy dictionary for GL Connectors."""
|
|
17
|
+
def __missing__(self, app):
|
|
18
|
+
"""When a key is missing, create the tools and store them in the dictionary.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
app: Name of the GL Connectors.
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
List of tools generated by the GL Connectors tool generator.
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def get_gl_connector_modules() -> list[str]:
|
|
28
|
+
"""Lazily fetch and cache GL Connectors modules.
|
|
29
|
+
|
|
30
|
+
Returns:
|
|
31
|
+
List of GL Connectors modules.
|
|
32
|
+
"""
|
|
33
|
+
def get_bosa_modules() -> list[str]:
|
|
34
|
+
"""Backward-compatible alias for get_gl_connector_modules."""
|
|
35
|
+
|
|
36
|
+
GL_CONNECTORS_MODULES: Incomplete
|
|
37
|
+
BOSA_MODULES = GL_CONNECTORS_MODULES
|
|
38
|
+
GL_CONNECTORS_AUTOMATED_TOOLS: dict[str, list[BaseTool]]
|
|
39
|
+
BOSA_AUTOMATED_TOOLS = GL_CONNECTORS_AUTOMATED_TOOLS
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Memory search tool package exposing shared schemas and implementations.
|
|
2
|
+
|
|
3
|
+
Authors:
|
|
4
|
+
Raymond Christopher (raymond.christopher@gdplabs.id)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from aip_agents.tools.memory_search.base import LongTermMemorySearchTool
|
|
8
|
+
from aip_agents.tools.memory_search.mem0 import (
|
|
9
|
+
MEMORY_SEARCH_TOOL_NAME,
|
|
10
|
+
Mem0SearchInput,
|
|
11
|
+
Mem0SearchTool,
|
|
12
|
+
)
|
|
13
|
+
from aip_agents.tools.memory_search.schema import LongTermMemorySearchInput, MemoryConfig
|
|
14
|
+
|
|
15
|
+
__all__ = [
|
|
16
|
+
"MemoryConfig",
|
|
17
|
+
"LongTermMemorySearchInput",
|
|
18
|
+
"LongTermMemorySearchTool",
|
|
19
|
+
"Mem0SearchInput",
|
|
20
|
+
"Mem0SearchTool",
|
|
21
|
+
"MEMORY_SEARCH_TOOL_NAME",
|
|
22
|
+
]
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
from aip_agents.tools.memory_search.base import LongTermMemorySearchTool as LongTermMemorySearchTool
|
|
2
|
+
from aip_agents.tools.memory_search.mem0 import MEMORY_SEARCH_TOOL_NAME as MEMORY_SEARCH_TOOL_NAME, Mem0SearchInput as Mem0SearchInput, Mem0SearchTool as Mem0SearchTool
|
|
3
|
+
from aip_agents.tools.memory_search.schema import LongTermMemorySearchInput as LongTermMemorySearchInput, MemoryConfig as MemoryConfig
|
|
4
|
+
|
|
5
|
+
__all__ = ['MemoryConfig', 'LongTermMemorySearchInput', 'LongTermMemorySearchTool', 'Mem0SearchInput', 'Mem0SearchTool', 'MEMORY_SEARCH_TOOL_NAME']
|