aip-agents-binary 0.6.4__py3-none-any.whl → 0.6.5__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.
Potentially problematic release.
This version of aip-agents-binary might be problematic. Click here for more details.
- aip_agents/agent/__init__.py +44 -4
- aip_agents/mcp/client/__init__.py +38 -2
- aip_agents/sentry/sentry.py +29 -8
- {aip_agents_binary-0.6.4.dist-info → aip_agents_binary-0.6.5.dist-info}/METADATA +1 -1
- {aip_agents_binary-0.6.4.dist-info → aip_agents_binary-0.6.5.dist-info}/RECORD +7 -305
- aip_agents/__init__.pyi +0 -19
- aip_agents/a2a/__init__.pyi +0 -3
- aip_agents/a2a/server/__init__.pyi +0 -4
- aip_agents/a2a/server/base_executor.pyi +0 -73
- aip_agents/a2a/server/google_adk_executor.pyi +0 -51
- aip_agents/a2a/server/langflow_executor.pyi +0 -43
- aip_agents/a2a/server/langgraph_executor.pyi +0 -47
- aip_agents/a2a/types.pyi +0 -132
- aip_agents/agent/__init__.pyi +0 -9
- aip_agents/agent/base_agent.pyi +0 -221
- aip_agents/agent/base_langgraph_agent.pyi +0 -233
- aip_agents/agent/google_adk_agent.pyi +0 -141
- aip_agents/agent/google_adk_constants.pyi +0 -3
- aip_agents/agent/hitl/__init__.pyi +0 -6
- aip_agents/agent/hitl/config.pyi +0 -15
- aip_agents/agent/hitl/langgraph_hitl_mixin.pyi +0 -42
- aip_agents/agent/hitl/manager.pyi +0 -200
- aip_agents/agent/hitl/models.pyi +0 -3
- aip_agents/agent/hitl/prompt/__init__.pyi +0 -4
- aip_agents/agent/hitl/prompt/base.pyi +0 -24
- aip_agents/agent/hitl/prompt/deferred.pyi +0 -30
- aip_agents/agent/hitl/registry.pyi +0 -101
- aip_agents/agent/interface.pyi +0 -81
- aip_agents/agent/interfaces.pyi +0 -44
- aip_agents/agent/langflow_agent.pyi +0 -133
- aip_agents/agent/langgraph_memory_enhancer_agent.pyi +0 -50
- aip_agents/agent/langgraph_react_agent.pyi +0 -170
- aip_agents/agent/system_instruction_context.pyi +0 -13
- aip_agents/clients/__init__.pyi +0 -4
- aip_agents/clients/langflow/__init__.pyi +0 -4
- aip_agents/clients/langflow/client.pyi +0 -140
- aip_agents/clients/langflow/types.pyi +0 -7
- aip_agents/constants.pyi +0 -7
- aip_agents/examples/__init__.pyi +0 -0
- aip_agents/examples/compare_streaming_client.pyi +0 -48
- aip_agents/examples/compare_streaming_server.pyi +0 -18
- aip_agents/examples/hello_world_a2a_google_adk_client.pyi +0 -9
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.pyi +0 -9
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.pyi +0 -9
- aip_agents/examples/hello_world_a2a_google_adk_server.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langchain_client.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_client_agent.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langchain_reference_server.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langchain_server.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langflow_client.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langflow_server.pyi +0 -14
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.pyi +0 -16
- aip_agents/examples/hello_world_a2a_langgraph_client.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.pyi +0 -2
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.pyi +0 -9
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.pyi +0 -5
- aip_agents/examples/hello_world_a2a_langgraph_server.pyi +0 -14
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.pyi +0 -15
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.pyi +0 -15
- aip_agents/examples/hello_world_a2a_mcp_langgraph.pyi +0 -48
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_client.pyi +0 -48
- aip_agents/examples/hello_world_a2a_three_level_agent_hierarchy_server.pyi +0 -45
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.pyi +0 -5
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.pyi +0 -15
- aip_agents/examples/hello_world_google_adk.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_http.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_sse.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_stdio.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.pyi +0 -5
- aip_agents/examples/hello_world_google_adk_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain.pyi +0 -5
- aip_agents/examples/hello_world_langchain_lm_invoker.pyi +0 -2
- aip_agents/examples/hello_world_langchain_mcp_http.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.pyi +0 -16
- aip_agents/examples/hello_world_langchain_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_multi_server.pyi +0 -18
- aip_agents/examples/hello_world_langchain_mcp_sse.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_stdio.pyi +0 -5
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_stream.pyi +0 -5
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_langflow_agent.pyi +0 -35
- aip_agents/examples/hello_world_langgraph.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_gl_connector_twitter.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_http.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_sse.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_stdio.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_stream.pyi +0 -5
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_model_switch_cli.pyi +0 -30
- aip_agents/examples/hello_world_multi_agent_adk.pyi +0 -6
- aip_agents/examples/hello_world_multi_agent_langchain.pyi +0 -5
- aip_agents/examples/hello_world_multi_agent_langgraph.pyi +0 -5
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.pyi +0 -5
- aip_agents/examples/hello_world_pii_logger.pyi +0 -5
- aip_agents/examples/hello_world_ptc.pyi +0 -5
- aip_agents/examples/hello_world_sentry.pyi +0 -21
- aip_agents/examples/hello_world_step_limits.pyi +0 -17
- aip_agents/examples/hello_world_stock_a2a_server.pyi +0 -17
- aip_agents/examples/hello_world_tool_output_client.pyi +0 -5
- aip_agents/examples/hello_world_tool_output_server.pyi +0 -19
- aip_agents/examples/hitl_demo.pyi +0 -67
- aip_agents/examples/pii_demo_langgraph_client.pyi +0 -5
- aip_agents/examples/pii_demo_langgraph_server.pyi +0 -20
- aip_agents/examples/pii_demo_multi_agent_client.pyi +0 -5
- aip_agents/examples/pii_demo_multi_agent_server.pyi +0 -40
- aip_agents/examples/todolist_planning_a2a_langchain_client.pyi +0 -5
- aip_agents/examples/todolist_planning_a2a_langgraph_server.pyi +0 -19
- aip_agents/examples/tools/__init__.pyi +0 -9
- aip_agents/examples/tools/adk_arithmetic_tools.pyi +0 -24
- aip_agents/examples/tools/adk_weather_tool.pyi +0 -18
- aip_agents/examples/tools/data_generator_tool.pyi +0 -15
- aip_agents/examples/tools/data_visualization_tool.pyi +0 -19
- aip_agents/examples/tools/image_artifact_tool.pyi +0 -26
- aip_agents/examples/tools/langchain_arithmetic_tools.pyi +0 -17
- aip_agents/examples/tools/langchain_currency_exchange_tool.pyi +0 -20
- aip_agents/examples/tools/langchain_graph_artifact_tool.pyi +0 -25
- aip_agents/examples/tools/langchain_weather_tool.pyi +0 -19
- aip_agents/examples/tools/langgraph_streaming_tool.pyi +0 -43
- aip_agents/examples/tools/mock_retrieval_tool.pyi +0 -13
- aip_agents/examples/tools/pii_demo_tools.pyi +0 -54
- aip_agents/examples/tools/random_chart_tool.pyi +0 -20
- aip_agents/examples/tools/serper_tool.pyi +0 -16
- aip_agents/examples/tools/stock_tools.pyi +0 -36
- aip_agents/examples/tools/table_generator_tool.pyi +0 -22
- aip_agents/examples/tools/time_tool.pyi +0 -15
- aip_agents/examples/tools/weather_forecast_tool.pyi +0 -14
- aip_agents/guardrails/__init__.pyi +0 -6
- aip_agents/guardrails/engines/__init__.pyi +0 -4
- aip_agents/guardrails/engines/base.pyi +0 -61
- aip_agents/guardrails/engines/nemo.pyi +0 -46
- aip_agents/guardrails/engines/phrase_matcher.pyi +0 -48
- aip_agents/guardrails/exceptions.pyi +0 -23
- aip_agents/guardrails/manager.pyi +0 -42
- aip_agents/guardrails/middleware.pyi +0 -87
- aip_agents/guardrails/schemas.pyi +0 -43
- aip_agents/guardrails/utils.pyi +0 -19
- aip_agents/mcp/__init__.pyi +0 -0
- aip_agents/mcp/client/__init__.pyi +0 -5
- aip_agents/mcp/client/base_mcp_client.pyi +0 -148
- aip_agents/mcp/client/connection_manager.pyi +0 -51
- aip_agents/mcp/client/google_adk/__init__.pyi +0 -3
- aip_agents/mcp/client/google_adk/client.pyi +0 -75
- aip_agents/mcp/client/langchain/__init__.pyi +0 -3
- aip_agents/mcp/client/langchain/client.pyi +0 -48
- aip_agents/mcp/client/persistent_session.pyi +0 -122
- aip_agents/mcp/client/session_pool.pyi +0 -101
- aip_agents/mcp/client/transports.pyi +0 -132
- aip_agents/mcp/utils/__init__.pyi +0 -0
- aip_agents/mcp/utils/config_validator.pyi +0 -82
- aip_agents/memory/__init__.pyi +0 -5
- aip_agents/memory/adapters/__init__.pyi +0 -4
- aip_agents/memory/adapters/base_adapter.pyi +0 -176
- aip_agents/memory/adapters/mem0.pyi +0 -22
- aip_agents/memory/base.pyi +0 -60
- aip_agents/memory/constants.pyi +0 -25
- aip_agents/memory/factory.pyi +0 -24
- aip_agents/memory/guidance.pyi +0 -3
- aip_agents/memory/simple_memory.pyi +0 -23
- aip_agents/middleware/__init__.pyi +0 -5
- aip_agents/middleware/base.pyi +0 -75
- aip_agents/middleware/manager.pyi +0 -84
- aip_agents/middleware/todolist.pyi +0 -125
- aip_agents/ptc/__init__.pyi +0 -10
- aip_agents/ptc/doc_gen.pyi +0 -40
- aip_agents/ptc/exceptions.pyi +0 -22
- aip_agents/ptc/executor.pyi +0 -73
- aip_agents/ptc/mcp/__init__.pyi +0 -7
- aip_agents/ptc/mcp/sandbox_bridge.pyi +0 -47
- aip_agents/ptc/mcp/templates/__init__.pyi +0 -0
- aip_agents/ptc/naming.pyi +0 -76
- aip_agents/ptc/payload.pyi +0 -15
- aip_agents/ptc/prompt_builder.pyi +0 -55
- aip_agents/ptc/ptc_helper.pyi +0 -1
- aip_agents/ptc/sandbox_bridge.pyi +0 -25
- aip_agents/ptc/template_utils.pyi +0 -13
- aip_agents/ptc/templates/__init__.pyi +0 -0
- aip_agents/sandbox/__init__.pyi +0 -5
- aip_agents/sandbox/defaults.pyi +0 -2
- aip_agents/sandbox/e2b_runtime.pyi +0 -51
- aip_agents/sandbox/template_builder.pyi +0 -36
- aip_agents/sandbox/types.pyi +0 -14
- aip_agents/sandbox/validation.pyi +0 -20
- aip_agents/schema/__init__.pyi +0 -9
- aip_agents/schema/a2a.pyi +0 -40
- aip_agents/schema/agent.pyi +0 -65
- aip_agents/schema/hitl.pyi +0 -89
- aip_agents/schema/langgraph.pyi +0 -28
- aip_agents/schema/model_id.pyi +0 -54
- aip_agents/schema/step_limit.pyi +0 -63
- aip_agents/schema/storage.pyi +0 -21
- aip_agents/sentry/__init__.pyi +0 -3
- aip_agents/sentry/sentry.pyi +0 -48
- aip_agents/storage/__init__.pyi +0 -8
- aip_agents/storage/base.pyi +0 -58
- aip_agents/storage/clients/__init__.pyi +0 -3
- aip_agents/storage/clients/minio_client.pyi +0 -137
- aip_agents/storage/config.pyi +0 -29
- aip_agents/storage/providers/__init__.pyi +0 -5
- aip_agents/storage/providers/base.pyi +0 -88
- aip_agents/storage/providers/memory.pyi +0 -79
- aip_agents/storage/providers/object_storage.pyi +0 -98
- aip_agents/tools/__init__.pyi +0 -11
- aip_agents/tools/browser_use/__init__.pyi +0 -14
- aip_agents/tools/browser_use/action_parser.pyi +0 -18
- aip_agents/tools/browser_use/browser_use_tool.pyi +0 -50
- aip_agents/tools/browser_use/llm_config.pyi +0 -52
- aip_agents/tools/browser_use/minio_storage.pyi +0 -109
- aip_agents/tools/browser_use/schemas.pyi +0 -32
- aip_agents/tools/browser_use/session.pyi +0 -4
- aip_agents/tools/browser_use/session_errors.pyi +0 -53
- aip_agents/tools/browser_use/steel_session_recording.pyi +0 -63
- aip_agents/tools/browser_use/streaming.pyi +0 -81
- aip_agents/tools/browser_use/structured_data_parser.pyi +0 -86
- aip_agents/tools/browser_use/structured_data_recovery.pyi +0 -43
- aip_agents/tools/browser_use/types.pyi +0 -45
- aip_agents/tools/code_sandbox/__init__.pyi +0 -3
- aip_agents/tools/code_sandbox/constant.pyi +0 -4
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.pyi +0 -102
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.pyi +0 -29
- aip_agents/tools/constants.pyi +0 -138
- aip_agents/tools/date_range_tool.pyi +0 -21
- aip_agents/tools/document_loader/__init__.pyi +0 -7
- aip_agents/tools/document_loader/base_reader.pyi +0 -75
- aip_agents/tools/document_loader/docx_reader_tool.pyi +0 -10
- aip_agents/tools/document_loader/excel_reader_tool.pyi +0 -26
- aip_agents/tools/document_loader/pdf_reader_tool.pyi +0 -11
- aip_agents/tools/document_loader/pdf_splitter.pyi +0 -18
- aip_agents/tools/execute_ptc_code.pyi +0 -90
- aip_agents/tools/gl_connector/__init__.pyi +0 -3
- aip_agents/tools/gl_connector/tool.pyi +0 -74
- aip_agents/tools/gl_connector_tools.pyi +0 -39
- aip_agents/tools/memory_search/__init__.pyi +0 -5
- aip_agents/tools/memory_search/base.pyi +0 -69
- aip_agents/tools/memory_search/mem0.pyi +0 -29
- aip_agents/tools/memory_search/schema.pyi +0 -25
- aip_agents/tools/memory_search_tool.pyi +0 -3
- aip_agents/tools/time_tool.pyi +0 -16
- aip_agents/tools/tool_config_injector.pyi +0 -26
- aip_agents/tools/web_search/__init__.pyi +0 -3
- aip_agents/tools/web_search/serper_tool.pyi +0 -19
- aip_agents/types/__init__.pyi +0 -36
- aip_agents/types/a2a_events.pyi +0 -3
- aip_agents/utils/__init__.pyi +0 -11
- aip_agents/utils/a2a_connector.pyi +0 -146
- aip_agents/utils/artifact_helpers.pyi +0 -203
- aip_agents/utils/constants.pyi +0 -10
- aip_agents/utils/datetime/__init__.pyi +0 -4
- aip_agents/utils/datetime/normalization.pyi +0 -95
- aip_agents/utils/datetime/timezone.pyi +0 -48
- aip_agents/utils/env_loader.pyi +0 -10
- aip_agents/utils/event_handler_registry.pyi +0 -23
- aip_agents/utils/file_prompt_utils.pyi +0 -21
- aip_agents/utils/final_response_builder.pyi +0 -34
- aip_agents/utils/formatter_llm_client.pyi +0 -71
- aip_agents/utils/langgraph/__init__.pyi +0 -3
- aip_agents/utils/langgraph/converter.pyi +0 -49
- aip_agents/utils/langgraph/tool_managers/__init__.pyi +0 -5
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.pyi +0 -35
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.pyi +0 -48
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.pyi +0 -56
- aip_agents/utils/langgraph/tool_output_management.pyi +0 -329
- aip_agents/utils/logger.pyi +0 -60
- aip_agents/utils/metadata/__init__.pyi +0 -5
- aip_agents/utils/metadata/activity_metadata_helper.pyi +0 -25
- aip_agents/utils/metadata/activity_narrative/__init__.pyi +0 -7
- aip_agents/utils/metadata/activity_narrative/builder.pyi +0 -35
- aip_agents/utils/metadata/activity_narrative/constants.pyi +0 -10
- aip_agents/utils/metadata/activity_narrative/context.pyi +0 -32
- aip_agents/utils/metadata/activity_narrative/formatters.pyi +0 -48
- aip_agents/utils/metadata/activity_narrative/utils.pyi +0 -12
- aip_agents/utils/metadata/schemas/__init__.pyi +0 -4
- aip_agents/utils/metadata/schemas/activity_schema.pyi +0 -18
- aip_agents/utils/metadata/schemas/thinking_schema.pyi +0 -20
- aip_agents/utils/metadata/thinking_metadata_helper.pyi +0 -4
- aip_agents/utils/metadata_helper.pyi +0 -117
- aip_agents/utils/name_preprocessor/__init__.pyi +0 -6
- aip_agents/utils/name_preprocessor/base_name_preprocessor.pyi +0 -52
- aip_agents/utils/name_preprocessor/google_name_preprocessor.pyi +0 -38
- aip_agents/utils/name_preprocessor/name_preprocessor.pyi +0 -41
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.pyi +0 -34
- aip_agents/utils/pii/__init__.pyi +0 -5
- aip_agents/utils/pii/pii_handler.pyi +0 -96
- aip_agents/utils/pii/pii_helper.pyi +0 -78
- aip_agents/utils/pii/uuid_deanonymizer_mapping.pyi +0 -73
- aip_agents/utils/reference_helper.pyi +0 -81
- aip_agents/utils/sse_chunk_transformer.pyi +0 -166
- aip_agents/utils/step_limit_manager.pyi +0 -112
- aip_agents/utils/token_usage_helper.pyi +0 -60
- {aip_agents_binary-0.6.4.dist-info → aip_agents_binary-0.6.5.dist-info}/WHEEL +0 -0
- {aip_agents_binary-0.6.4.dist-info → aip_agents_binary-0.6.5.dist-info}/top_level.txt +0 -0
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from abc import ABC
|
|
3
|
-
from aip_agents.memory.constants import MemoryDefaults as MemoryDefaults
|
|
4
|
-
from aip_agents.tools.memory_search.schema import LongTermMemorySearchInput as LongTermMemorySearchInput, MemoryConfig as MemoryConfig
|
|
5
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
6
|
-
from collections.abc import Callable
|
|
7
|
-
from langchain_core.tools import BaseTool
|
|
8
|
-
from pydantic import BaseModel as BaseModel
|
|
9
|
-
from typing import Any, ClassVar, Protocol
|
|
10
|
-
|
|
11
|
-
logger: Incomplete
|
|
12
|
-
|
|
13
|
-
class LongTermMemoryBackend(Protocol):
|
|
14
|
-
"""Protocol for memory adapters that support retrieval and formatting."""
|
|
15
|
-
def retrieve(self, *, query: str | None, user_id: str, limit: int | None = None, filters: dict[str, Any] | None = None, page: int | None = None) -> list[dict[str, Any]]:
|
|
16
|
-
"""Retrieve memories matching the given query and filters.
|
|
17
|
-
|
|
18
|
-
Args:
|
|
19
|
-
query: Optional search query string.
|
|
20
|
-
user_id: User identifier for scoped retrieval.
|
|
21
|
-
limit: Maximum number of results to return.
|
|
22
|
-
filters: Optional filters to apply to the retrieval.
|
|
23
|
-
page: Page number for pagination.
|
|
24
|
-
|
|
25
|
-
Returns:
|
|
26
|
-
List of memory hit dictionaries.
|
|
27
|
-
"""
|
|
28
|
-
def format_hits(self, hits: list[dict[str, Any]], max_items: int = ..., with_tag: bool = True) -> str:
|
|
29
|
-
"""Format memory hits into a readable string.
|
|
30
|
-
|
|
31
|
-
Args:
|
|
32
|
-
hits: List of memory hit dictionaries to format.
|
|
33
|
-
max_items: Maximum number of hits to include in output.
|
|
34
|
-
with_tag: Whether to wrap output with memory tags.
|
|
35
|
-
|
|
36
|
-
Returns:
|
|
37
|
-
Formatted string representation of memory hits.
|
|
38
|
-
"""
|
|
39
|
-
|
|
40
|
-
class LongTermMemorySearchTool(BaseTool, ABC):
|
|
41
|
-
"""Abstract base class for provider-specific long-term memory search tools."""
|
|
42
|
-
name: str
|
|
43
|
-
description: str
|
|
44
|
-
args_schema: type[LongTermMemorySearchInput]
|
|
45
|
-
tool_config_schema: type[BaseModel]
|
|
46
|
-
memory: LongTermMemoryBackend
|
|
47
|
-
default_user_id: str | None
|
|
48
|
-
user_id_provider: Callable[[], str | None] | None
|
|
49
|
-
MINIMUM_MEMORY_RETRIEVAL: ClassVar[int]
|
|
50
|
-
LOG_PREFIX: ClassVar[str]
|
|
51
|
-
def __init__(self, memory: LongTermMemoryBackend, *, default_user_id: str | None = None, user_id_provider: Callable[[], str | None] | None = None, **kwargs: Any) -> None:
|
|
52
|
-
"""Initialize the long-term memory search tool.
|
|
53
|
-
|
|
54
|
-
Args:
|
|
55
|
-
memory: Memory adapter instance with retrieve() and format_hits() methods.
|
|
56
|
-
default_user_id: Default user ID to use if not provided in metadata.
|
|
57
|
-
user_id_provider: Callable that returns a user ID.
|
|
58
|
-
**kwargs: Additional keyword arguments passed to the parent class.
|
|
59
|
-
"""
|
|
60
|
-
def format_hits(self, hits: list[dict[str, Any]], with_tag: bool = False) -> str:
|
|
61
|
-
"""Format hits into a string with optional tags.
|
|
62
|
-
|
|
63
|
-
Args:
|
|
64
|
-
hits: List of memory hit dictionaries to format.
|
|
65
|
-
with_tag: Whether to wrap the output with memory tags.
|
|
66
|
-
|
|
67
|
-
Returns:
|
|
68
|
-
Formatted string representation of the memory hits.
|
|
69
|
-
"""
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.memory.constants import MemoryDefaults as MemoryDefaults
|
|
3
|
-
from aip_agents.tools.memory_search.base import LongTermMemorySearchTool as LongTermMemorySearchTool
|
|
4
|
-
from aip_agents.tools.memory_search.schema import LongTermMemoryDeleteInput as LongTermMemoryDeleteInput, LongTermMemorySearchInput as LongTermMemorySearchInput
|
|
5
|
-
from aip_agents.utils.datetime import is_valid_date_string as is_valid_date_string, next_day_iso as next_day_iso
|
|
6
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
7
|
-
from typing import ClassVar
|
|
8
|
-
|
|
9
|
-
logger: Incomplete
|
|
10
|
-
MEMORY_SEARCH_TOOL_NAME: str
|
|
11
|
-
MEMORY_DELETE_TOOL_NAME: str
|
|
12
|
-
|
|
13
|
-
class Mem0SearchTool(LongTermMemorySearchTool):
|
|
14
|
-
"""Mem0-specific implementation of the long-term memory search tool."""
|
|
15
|
-
name: str
|
|
16
|
-
description: str
|
|
17
|
-
args_schema: type[LongTermMemorySearchInput]
|
|
18
|
-
LOG_PREFIX: ClassVar[str]
|
|
19
|
-
METADATA_FILTER_BLOCKLIST: ClassVar[set[str]]
|
|
20
|
-
Mem0SearchInput = LongTermMemorySearchInput
|
|
21
|
-
|
|
22
|
-
class Mem0DeleteTool(LongTermMemorySearchTool):
|
|
23
|
-
"""Mem0-specific implementation of the long-term memory delete tool."""
|
|
24
|
-
name: str
|
|
25
|
-
description: str
|
|
26
|
-
args_schema: type[LongTermMemoryDeleteInput]
|
|
27
|
-
LOG_PREFIX: ClassVar[str]
|
|
28
|
-
METADATA_FILTER_BLOCKLIST: ClassVar[set[str]]
|
|
29
|
-
Mem0DeleteInput = LongTermMemoryDeleteInput
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
from pydantic import BaseModel
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
class MemoryConfig(BaseModel):
|
|
5
|
-
"""Tool configuration schema for memory operations."""
|
|
6
|
-
user_id: str
|
|
7
|
-
|
|
8
|
-
class LongTermMemorySearchInput(BaseModel):
|
|
9
|
-
"""Input schema for unified long-term memory retrieval."""
|
|
10
|
-
query: str | None
|
|
11
|
-
start_date: str | None
|
|
12
|
-
end_date: str | None
|
|
13
|
-
limit: int | None
|
|
14
|
-
categories: list[str] | None
|
|
15
|
-
metadata: dict[str, Any] | None
|
|
16
|
-
|
|
17
|
-
class LongTermMemoryDeleteInput(BaseModel):
|
|
18
|
-
"""Input schema for unified long-term memory deletion."""
|
|
19
|
-
query: str | None
|
|
20
|
-
memory_ids: list[str] | None
|
|
21
|
-
delete_all: bool | None
|
|
22
|
-
top_k: int | None
|
|
23
|
-
threshold: float | None
|
|
24
|
-
categories: list[str] | None
|
|
25
|
-
metadata: dict[str, Any] | None
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
from aip_agents.tools.memory_search import LongTermMemoryDeleteInput as LongTermMemoryDeleteInput, LongTermMemorySearchInput as LongTermMemorySearchInput, LongTermMemorySearchTool as LongTermMemorySearchTool, MEMORY_DELETE_TOOL_NAME as MEMORY_DELETE_TOOL_NAME, MEMORY_SEARCH_TOOL_NAME as MEMORY_SEARCH_TOOL_NAME, Mem0DeleteInput as Mem0DeleteInput, Mem0DeleteTool as Mem0DeleteTool, Mem0SearchInput as Mem0SearchInput, Mem0SearchTool as Mem0SearchTool, MemoryConfig as MemoryConfig
|
|
2
|
-
|
|
3
|
-
__all__ = ['MemoryConfig', 'LongTermMemoryDeleteInput', 'LongTermMemorySearchInput', 'LongTermMemorySearchTool', 'Mem0DeleteInput', 'Mem0DeleteTool', 'Mem0SearchInput', 'Mem0SearchTool', 'MEMORY_DELETE_TOOL_NAME', 'MEMORY_SEARCH_TOOL_NAME']
|
aip_agents/tools/time_tool.pyi
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
from langchain_core.tools import BaseTool
|
|
2
|
-
from pydantic import BaseModel
|
|
3
|
-
|
|
4
|
-
FORMAT_STRING: str
|
|
5
|
-
DEFAULT_TIMEZONE: str
|
|
6
|
-
|
|
7
|
-
class TimeToolInput(BaseModel):
|
|
8
|
-
"""Input schema for the TimeTool."""
|
|
9
|
-
datetime_format: str
|
|
10
|
-
timezone: str | None
|
|
11
|
-
|
|
12
|
-
class TimeTool(BaseTool):
|
|
13
|
-
"""Tool to get the current time."""
|
|
14
|
-
name: str
|
|
15
|
-
description: str
|
|
16
|
-
args_schema: type[BaseModel]
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
from langchain_core.tools import BaseTool
|
|
2
|
-
from pydantic import BaseModel
|
|
3
|
-
from typing import TypeVar
|
|
4
|
-
|
|
5
|
-
__all__ = ['inject_config_methods_into_tool', 'CONFIG_SCHEMA_ATTR', 'CONFIG_ATTR', 'TOOL_CONFIG_SCHEMA_ATTR', 'TOOL_CONFIGS_KEY']
|
|
6
|
-
|
|
7
|
-
ConfigSchema = TypeVar('ConfigSchema', bound=BaseModel)
|
|
8
|
-
CONFIG_SCHEMA_ATTR: str
|
|
9
|
-
CONFIG_ATTR: str
|
|
10
|
-
TOOL_CONFIG_SCHEMA_ATTR: str
|
|
11
|
-
TOOL_CONFIGS_KEY: str
|
|
12
|
-
|
|
13
|
-
def inject_config_methods_into_tool(tool: BaseTool, config_schema: type[ConfigSchema]) -> None:
|
|
14
|
-
"""Inject configuration methods into a tool.
|
|
15
|
-
|
|
16
|
-
This function is used by the SDK to automatically inject configuration capabilities
|
|
17
|
-
into tools that have a tool_config_schema attribute. It can also be used directly
|
|
18
|
-
by developers who want to add configuration support to their tools.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
tool: The tool to inject configuration capabilities into.
|
|
22
|
-
config_schema: Pydantic model class for configuration validation.
|
|
23
|
-
|
|
24
|
-
Raises:
|
|
25
|
-
ValueError: If tool is not a BaseTool instance or config_schema is not a Pydantic BaseModel subclass.
|
|
26
|
-
"""
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
3
|
-
from langchain_community.utilities.google_serper import GoogleSerperAPIWrapper
|
|
4
|
-
from langchain_core.tools import BaseTool
|
|
5
|
-
from pydantic import BaseModel
|
|
6
|
-
|
|
7
|
-
logger: Incomplete
|
|
8
|
-
|
|
9
|
-
class GoogleSerperInput(BaseModel):
|
|
10
|
-
"""Input schema for the GoogleSerperTool."""
|
|
11
|
-
query: str
|
|
12
|
-
|
|
13
|
-
class GoogleSerperTool(BaseTool):
|
|
14
|
-
"""Tool to search Google Serper API."""
|
|
15
|
-
name: str
|
|
16
|
-
description: str
|
|
17
|
-
save_output_history: bool
|
|
18
|
-
args_schema: type[BaseModel]
|
|
19
|
-
api_wrapper: GoogleSerperAPIWrapper
|
aip_agents/types/__init__.pyi
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from aip_agents.schema.a2a import A2AEvent as A2AEvent, A2AStreamEventType as A2AStreamEventType, ToolCallInfo as ToolCallInfo, ToolResultInfo as ToolResultInfo
|
|
2
|
-
from pydantic import BaseModel
|
|
3
|
-
from typing import Any, Protocol
|
|
4
|
-
|
|
5
|
-
__all__ = ['A2AEvent', 'A2AStreamEventType', 'ToolCallInfo', 'ToolResultInfo', 'AgentProtocol', 'ChatMessage']
|
|
6
|
-
|
|
7
|
-
class ChatMessage(BaseModel):
|
|
8
|
-
"""Represents a single message in a chat conversation."""
|
|
9
|
-
role: str
|
|
10
|
-
content: str
|
|
11
|
-
|
|
12
|
-
class AgentProtocol(Protocol):
|
|
13
|
-
"""Defines the expected interface for an agent."""
|
|
14
|
-
id: str
|
|
15
|
-
name: str
|
|
16
|
-
description: str
|
|
17
|
-
def run(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
18
|
-
"""Synchronous execution method.
|
|
19
|
-
|
|
20
|
-
Args:
|
|
21
|
-
query (str): The query to execute.
|
|
22
|
-
**kwargs (Any): Additional keyword arguments.
|
|
23
|
-
|
|
24
|
-
Returns:
|
|
25
|
-
dict[str, Any]: The execution result.
|
|
26
|
-
"""
|
|
27
|
-
async def arun(self, query: str, **kwargs: Any) -> dict[str, Any]:
|
|
28
|
-
"""Asynchronous execution method.
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
query (str): The query to execute.
|
|
32
|
-
**kwargs (Any): Additional keyword arguments.
|
|
33
|
-
|
|
34
|
-
Returns:
|
|
35
|
-
dict[str, Any]: The execution result.
|
|
36
|
-
"""
|
aip_agents/types/a2a_events.pyi
DELETED
aip_agents/utils/__init__.pyi
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
from aip_agents.utils.artifact_helpers import create_artifact_command as create_artifact_command, create_artifact_response as create_artifact_response, create_error_response as create_error_response, create_multiple_artifacts_command as create_multiple_artifacts_command, create_text_artifact_response as create_text_artifact_response
|
|
2
|
-
from aip_agents.utils.file_prompt_utils import augment_query_with_file_paths as augment_query_with_file_paths
|
|
3
|
-
from aip_agents.utils.final_response_builder import assemble_final_response as assemble_final_response
|
|
4
|
-
from aip_agents.utils.logger import LoggerManager as LoggerManager, get_logger as get_logger
|
|
5
|
-
from aip_agents.utils.pii.pii_handler import ToolPIIHandler as ToolPIIHandler
|
|
6
|
-
from aip_agents.utils.pii.pii_helper import add_pii_mappings as add_pii_mappings, extract_pii_mapping_from_agent_response as extract_pii_mapping_from_agent_response
|
|
7
|
-
from aip_agents.utils.reference_helper import add_references_chunks as add_references_chunks, serialize_references_for_metadata as serialize_references_for_metadata, validate_references as validate_references
|
|
8
|
-
from aip_agents.utils.sse_chunk_transformer import SSEChunkTransformer as SSEChunkTransformer
|
|
9
|
-
from aip_agents.utils.step_limit_manager import StepExecutionContext as StepExecutionContext, StepLimitManager as StepLimitManager, _DELEGATION_CHAIN_CVAR as _DELEGATION_CHAIN_CVAR, _DELEGATION_DEPTH_CVAR as _DELEGATION_DEPTH_CVAR, _REMAINING_STEP_BUDGET_CVAR as _REMAINING_STEP_BUDGET_CVAR, _STEP_LIMIT_CONFIG_CVAR as _STEP_LIMIT_CONFIG_CVAR
|
|
10
|
-
|
|
11
|
-
__all__ = ['get_logger', 'LoggerManager', 'create_artifact_response', 'create_error_response', 'create_artifact_command', 'create_multiple_artifacts_command', 'create_text_artifact_response', 'validate_references', 'serialize_references_for_metadata', 'add_references_chunks', 'assemble_final_response', 'augment_query_with_file_paths', 'SSEChunkTransformer', 'StepExecutionContext', 'StepLimitManager', '_DELEGATION_CHAIN_CVAR', '_DELEGATION_DEPTH_CVAR', '_REMAINING_STEP_BUDGET_CVAR', '_STEP_LIMIT_CONFIG_CVAR', 'ToolPIIHandler', 'add_pii_mappings', 'extract_pii_mapping_from_agent_response']
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
from _typeshed import Incomplete
|
|
2
|
-
from a2a.types import AgentCard
|
|
3
|
-
from aip_agents.schema.a2a import A2AStreamEventType as A2AStreamEventType
|
|
4
|
-
from aip_agents.utils.event_handler_registry import DEFAULT_EVENT_HANDLER_REGISTRY as DEFAULT_EVENT_HANDLER_REGISTRY, EventHandlerRegistry as EventHandlerRegistry
|
|
5
|
-
from aip_agents.utils.final_response_builder import FinalResponseMetadataOptions as FinalResponseMetadataOptions, assemble_final_response as assemble_final_response
|
|
6
|
-
from aip_agents.utils.logger import get_logger as get_logger
|
|
7
|
-
from aip_agents.utils.metadata_helper import Kind as Kind, MetadataFieldKeys as MetadataFieldKeys, MetadataTimeTracker as MetadataTimeTracker, Status as Status, create_metadata as create_metadata, create_status_update_metadata as create_status_update_metadata, create_tool_processing_metadata as create_tool_processing_metadata
|
|
8
|
-
from aip_agents.utils.sse_chunk_transformer import SSEChunkTransformer as SSEChunkTransformer
|
|
9
|
-
from collections.abc import AsyncGenerator
|
|
10
|
-
from pydantic import BaseModel
|
|
11
|
-
from typing import Any
|
|
12
|
-
|
|
13
|
-
logger: Incomplete
|
|
14
|
-
|
|
15
|
-
class ArtifactInfo(BaseModel):
|
|
16
|
-
"""Structured artifact information for A2A communication.
|
|
17
|
-
|
|
18
|
-
This Pydantic model provides type safety and validation for artifact data
|
|
19
|
-
exchanged between agents through the A2A protocol.
|
|
20
|
-
"""
|
|
21
|
-
artifact_id: str | None
|
|
22
|
-
name: str | None
|
|
23
|
-
content_type: str | None
|
|
24
|
-
mime_type: str | None
|
|
25
|
-
file_name: str | None
|
|
26
|
-
has_file_data: bool
|
|
27
|
-
has_file_uri: bool
|
|
28
|
-
file_data: str | None
|
|
29
|
-
file_uri: str | None
|
|
30
|
-
description: str | None
|
|
31
|
-
parts: int | None
|
|
32
|
-
|
|
33
|
-
class StreamingConfig(BaseModel):
|
|
34
|
-
"""Configuration for A2A streaming operations."""
|
|
35
|
-
http_kwargs: dict[str, Any] | None
|
|
36
|
-
|
|
37
|
-
class A2AConnector:
|
|
38
|
-
"""Handles A2A protocol communication between agents.
|
|
39
|
-
|
|
40
|
-
This class provides methods for sending messages to other agents using the A2A protocol,
|
|
41
|
-
supporting both synchronous and asynchronous communication patterns, as well as streaming
|
|
42
|
-
responses with immediate artifact event handling.
|
|
43
|
-
"""
|
|
44
|
-
FLOAT_EPSILON: float
|
|
45
|
-
event_registry: EventHandlerRegistry
|
|
46
|
-
@staticmethod
|
|
47
|
-
def send_to_agent(agent_card: AgentCard, message: str | dict[str, Any], **kwargs: Any) -> dict[str, Any]:
|
|
48
|
-
"""Synchronously sends a message to another agent using the A2A protocol.
|
|
49
|
-
|
|
50
|
-
This method is a synchronous wrapper around asend_to_agent. It handles the creation
|
|
51
|
-
of an event loop if one doesn't exist, and manages the asynchronous call internally.
|
|
52
|
-
|
|
53
|
-
Args:
|
|
54
|
-
agent_card: The AgentCard instance containing the target agent's details including
|
|
55
|
-
URL, authentication requirements, and capabilities.
|
|
56
|
-
message: The message to send to the agent. Can be either a string for simple text
|
|
57
|
-
messages or a dictionary for structured data.
|
|
58
|
-
**kwargs: Additional keyword arguments passed to asend_to_agent.
|
|
59
|
-
|
|
60
|
-
Returns:
|
|
61
|
-
A dictionary containing the response details:
|
|
62
|
-
- status (str): 'success' or 'error'
|
|
63
|
-
- content (str): Extracted text content from the response
|
|
64
|
-
- task_id (str, optional): ID of the created/updated task
|
|
65
|
-
- task_state (str, optional): Current state of the task
|
|
66
|
-
- raw_response (str): Complete JSON response from the A2A client
|
|
67
|
-
- error_type (str, optional): Type of error if status is 'error'
|
|
68
|
-
- message (str, optional): Error message if status is 'error'
|
|
69
|
-
|
|
70
|
-
Raises:
|
|
71
|
-
RuntimeError: If asend_to_agent encounters an unhandled exception.
|
|
72
|
-
"""
|
|
73
|
-
@staticmethod
|
|
74
|
-
async def asend_to_agent(agent_card: AgentCard, message: str | dict[str, Any], **kwargs: Any) -> dict[str, Any]:
|
|
75
|
-
'''Asynchronously sends a message to another agent using the A2A protocol.
|
|
76
|
-
|
|
77
|
-
This method uses the streaming approach internally but only returns the final response,
|
|
78
|
-
avoiding direct httpx usage that can cause issues with Nuitka compilation.
|
|
79
|
-
|
|
80
|
-
Args:
|
|
81
|
-
agent_card: The AgentCard instance containing the target agent\'s details including
|
|
82
|
-
URL, authentication requirements, and capabilities.
|
|
83
|
-
message: The message to send to the agent. Can be either a string for simple text
|
|
84
|
-
messages or a dictionary for structured data.
|
|
85
|
-
**kwargs: Additional keyword arguments.
|
|
86
|
-
|
|
87
|
-
Returns:
|
|
88
|
-
A dictionary containing the final response with the simplified structure:
|
|
89
|
-
- status (str): "success" or "error"
|
|
90
|
-
- task_state (str): Final A2A TaskState value
|
|
91
|
-
- content (str): Final text content from the agent
|
|
92
|
-
- task_id (str): ID of the associated task
|
|
93
|
-
- context_id (str): Context ID of the task
|
|
94
|
-
- final (bool): Always True for final responses
|
|
95
|
-
- artifacts (list): List of all artifacts created during execution
|
|
96
|
-
|
|
97
|
-
Raises:
|
|
98
|
-
Exception: If there\'s an error during message sending or processing.
|
|
99
|
-
'''
|
|
100
|
-
@staticmethod
|
|
101
|
-
async def astream_to_agent(agent_card: AgentCard, message: str | dict[str, Any], **kwargs: Any) -> AsyncGenerator[dict[str, Any], None]:
|
|
102
|
-
'''Asynchronously sends a streaming message to another agent using the A2A protocol.
|
|
103
|
-
|
|
104
|
-
This method supports streaming responses from the target agent, yielding chunks of
|
|
105
|
-
the response as they become available. It handles the official A2A streaming event
|
|
106
|
-
types as defined in the specification.
|
|
107
|
-
|
|
108
|
-
Args:
|
|
109
|
-
agent_card: The AgentCard instance containing the target agent\'s details including
|
|
110
|
-
URL, authentication requirements, and capabilities.
|
|
111
|
-
message: The message to send to the agent. Can be either a string for simple text
|
|
112
|
-
messages or a dictionary for structured data.
|
|
113
|
-
**kwargs: Additional keyword arguments.
|
|
114
|
-
|
|
115
|
-
Yields:
|
|
116
|
-
Dictionaries containing streaming response chunks with a simplified structure:
|
|
117
|
-
|
|
118
|
-
For successful responses:
|
|
119
|
-
- status (str): "success" or "error"
|
|
120
|
-
- task_state (str): A2A TaskState value
|
|
121
|
-
- content (str): Text content from the agent
|
|
122
|
-
- task_id (str): ID of the associated task
|
|
123
|
-
- context_id (str): Context ID of the task
|
|
124
|
-
- final (bool): Whether this is the final update
|
|
125
|
-
- artifacts (list, optional): List of artifacts created in this step
|
|
126
|
-
|
|
127
|
-
Each artifact in the artifacts list contains:
|
|
128
|
-
- artifact_id (str): ID of the artifact
|
|
129
|
-
- name (str): Name of the artifact
|
|
130
|
-
- content_type (str): "text" or "file"
|
|
131
|
-
- mime_type (str): MIME type of the artifact
|
|
132
|
-
- file_name (str, optional): Name of the file for file artifacts
|
|
133
|
-
- has_file_data (bool): Whether file data is included
|
|
134
|
-
- has_file_uri (bool): Whether file URI is included
|
|
135
|
-
- file_data (str, optional): Base64 encoded file content
|
|
136
|
-
- file_uri (str, optional): URI reference to the file
|
|
137
|
-
|
|
138
|
-
For errors:
|
|
139
|
-
- status (str): "error"
|
|
140
|
-
- error_type (str): Type of error encountered
|
|
141
|
-
- message (str): Error description
|
|
142
|
-
|
|
143
|
-
Raises:
|
|
144
|
-
httpx.HTTPError: If there\'s an HTTP-related error during the streaming request.
|
|
145
|
-
Exception: For any other unexpected errors during message streaming or processing.
|
|
146
|
-
'''
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
from aip_agents.a2a.types import Artifact as Artifact, ArtifactType as ArtifactType, MimeType as MimeType, get_mime_type_from_filename as get_mime_type_from_filename
|
|
2
|
-
from langgraph.types import Command
|
|
3
|
-
from typing import Any
|
|
4
|
-
|
|
5
|
-
class ArtifactHandler:
|
|
6
|
-
"""Handler class for creating and managing artifacts in agent tools.
|
|
7
|
-
|
|
8
|
-
This class provides a clean, object-oriented interface for artifact creation
|
|
9
|
-
with built-in validation, deduplication, and standardized formatting.
|
|
10
|
-
"""
|
|
11
|
-
def __init__(self) -> None:
|
|
12
|
-
"""Initialize the ArtifactHandler."""
|
|
13
|
-
def create_file_artifact(self, result: str, artifact_data: bytes | str, artifact_name: str, artifact_description: str = '', mime_type: str | None = None, enable_deduplication: bool = True) -> dict[str, Any]:
|
|
14
|
-
'''Deprecated. Use create_artifact instead.
|
|
15
|
-
|
|
16
|
-
Args:
|
|
17
|
-
result (str): The message/result to show to the agent.
|
|
18
|
-
artifact_data (bytes | str): The binary data for the artifact.
|
|
19
|
-
artifact_name (str): The name for the artifact file.
|
|
20
|
-
artifact_description (str, optional): Description of the artifact. Defaults to "".
|
|
21
|
-
mime_type (str | None, optional): MIME type of the artifact. If None, will be auto-detected.
|
|
22
|
-
enable_deduplication (bool, optional): Whether to deduplicate by content hash. Defaults to True.
|
|
23
|
-
|
|
24
|
-
Returns:
|
|
25
|
-
dict[str, Any]: Dictionary with \'result\' and \'artifact\' keys.
|
|
26
|
-
'''
|
|
27
|
-
def create_text_artifact(self, result: str, artifact_text: str, artifact_name: str, artifact_description: str = '', mime_type: str | None = None, enable_deduplication: bool = True) -> dict[str, Any]:
|
|
28
|
-
'''Deprecated. Use create_artifact instead.
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
result (str): The message/result to show to the agent.
|
|
32
|
-
artifact_text (str): The text content for the artifact.
|
|
33
|
-
artifact_name (str): The name for the artifact file.
|
|
34
|
-
artifact_description (str, optional): Description of the artifact. Defaults to "".
|
|
35
|
-
mime_type (str | None, optional): MIME type of the artifact. If None, will be auto-detected.
|
|
36
|
-
enable_deduplication (bool, optional): Whether to deduplicate by content hash. Defaults to True.
|
|
37
|
-
|
|
38
|
-
Returns:
|
|
39
|
-
dict[str, Any]: Dictionary with \'result\' and \'artifact\' keys.
|
|
40
|
-
'''
|
|
41
|
-
def create_artifact(self, result: str, data: bytes | str, artifact_name: str, artifact_description: str = '', mime_type: str | None = None, enable_deduplication: bool = True) -> dict[str, Any]:
|
|
42
|
-
"""Create an artifact with automatic text/binary handling.
|
|
43
|
-
|
|
44
|
-
Args:
|
|
45
|
-
result: The message/result to show to the agent.
|
|
46
|
-
data: The data for the artifact. Bytes for binary; str for text or base64.
|
|
47
|
-
artifact_name: The filename to present to users.
|
|
48
|
-
artifact_description: Description of the artifact.
|
|
49
|
-
mime_type: Optional MIME type. If None, inferred from filename.
|
|
50
|
-
enable_deduplication: Whether to deduplicate by content hash.
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
Dictionary with 'result' and 'artifact' keys.
|
|
54
|
-
"""
|
|
55
|
-
def create_error_response(self, error_message: str) -> str:
|
|
56
|
-
"""Create a standardized error response for tools.
|
|
57
|
-
|
|
58
|
-
Args:
|
|
59
|
-
error_message: The error message to return.
|
|
60
|
-
|
|
61
|
-
Returns:
|
|
62
|
-
String with error information.
|
|
63
|
-
"""
|
|
64
|
-
def clear_cache(self) -> None:
|
|
65
|
-
"""Clear the artifact cache."""
|
|
66
|
-
def get_cache_size(self) -> int:
|
|
67
|
-
"""Get the number of cached artifacts.
|
|
68
|
-
|
|
69
|
-
Returns:
|
|
70
|
-
Number of artifacts in cache.
|
|
71
|
-
"""
|
|
72
|
-
@staticmethod
|
|
73
|
-
def generate_artifact_hash(artifact_data: str, name: str, mime_type: str) -> str:
|
|
74
|
-
"""Generate a hash for artifact deduplication.
|
|
75
|
-
|
|
76
|
-
Args:
|
|
77
|
-
artifact_data: Base64 encoded artifact data.
|
|
78
|
-
name: Artifact name.
|
|
79
|
-
mime_type: MIME type.
|
|
80
|
-
|
|
81
|
-
Returns:
|
|
82
|
-
Hash string for deduplication.
|
|
83
|
-
"""
|
|
84
|
-
|
|
85
|
-
def create_artifact_response(result: str, artifact_data: bytes | str, artifact_name: str, artifact_description: str = '', mime_type: str | None = None) -> dict[str, Any]:
|
|
86
|
-
'''Create a standardized artifact response for tools.
|
|
87
|
-
|
|
88
|
-
This function creates a response that separates the agent-facing result
|
|
89
|
-
from the user-facing artifact, following the established pattern for
|
|
90
|
-
artifact generation in the agent system.
|
|
91
|
-
|
|
92
|
-
Args:
|
|
93
|
-
result: The message/result to show to the agent (clean, no file data).
|
|
94
|
-
artifact_data: The binary data or base64 string for the artifact.
|
|
95
|
-
artifact_name: The name for the artifact file.
|
|
96
|
-
artifact_description: Description of the artifact. Defaults to "".
|
|
97
|
-
mime_type: MIME type of the artifact. If None, will be auto-detected from filename.
|
|
98
|
-
|
|
99
|
-
Returns:
|
|
100
|
-
Dictionary with \'result\' and \'artifacts\' keys (artifacts is always a list).
|
|
101
|
-
|
|
102
|
-
Example:
|
|
103
|
-
>>> import io
|
|
104
|
-
>>> csv_data = "Name,Age\\\\nAlice,30\\\\nBob,25"
|
|
105
|
-
>>> response = create_artifact_response(
|
|
106
|
-
... result="Generated a 2-row CSV table",
|
|
107
|
-
... artifact_data=csv_data.encode(\'utf-8\'),
|
|
108
|
-
... artifact_name="data.csv",
|
|
109
|
-
... artifact_description="Sample data table",
|
|
110
|
-
... mime_type="text/csv"
|
|
111
|
-
... )
|
|
112
|
-
>>> assert "result" in response
|
|
113
|
-
>>> assert "artifacts" in response
|
|
114
|
-
>>> assert isinstance(response["artifacts"], list)
|
|
115
|
-
'''
|
|
116
|
-
def create_text_artifact_response(result: str, artifact_text: str, artifact_name: str, artifact_description: str = '', mime_type: str | None = None) -> dict[str, Any]:
|
|
117
|
-
"""Create a standardized artifact response for tools.
|
|
118
|
-
|
|
119
|
-
Args:
|
|
120
|
-
result: The message/result to show to the agent.
|
|
121
|
-
artifact_text: The text content for the artifact.
|
|
122
|
-
artifact_name: The name for the artifact file.
|
|
123
|
-
artifact_description: Description of the artifact.
|
|
124
|
-
mime_type: MIME type of the artifact. If None, will be auto-detected from filename.
|
|
125
|
-
|
|
126
|
-
Returns:
|
|
127
|
-
Dictionary with 'result' and 'artifacts' keys (artifacts is always a list).
|
|
128
|
-
"""
|
|
129
|
-
def create_multiple_artifacts_response(result: str, artifacts: list[dict[str, Any]]) -> dict[str, Any]:
|
|
130
|
-
"""Create a standardized response for multiple artifacts.
|
|
131
|
-
|
|
132
|
-
Args:
|
|
133
|
-
result: The message/result to show to the agent.
|
|
134
|
-
artifacts: List of artifact dictionaries.
|
|
135
|
-
|
|
136
|
-
Returns:
|
|
137
|
-
Dictionary with 'result' and 'artifacts' keys.
|
|
138
|
-
"""
|
|
139
|
-
def create_artifact_command(result: str, artifact_data: bytes | str, artifact_name: str, artifact_description: str = '', mime_type: str | None = None, metadata_update: dict[str, Any] | None = None) -> Command:
|
|
140
|
-
"""Create a Command that updates artifacts (and optional metadata).
|
|
141
|
-
|
|
142
|
-
Args:
|
|
143
|
-
result: Message/result to show to the agent (for ToolMessage content).
|
|
144
|
-
artifact_data: The binary data or base64 string for the artifact.
|
|
145
|
-
artifact_name: The name for the artifact file.
|
|
146
|
-
artifact_description: Description of the artifact.
|
|
147
|
-
mime_type: MIME type of the artifact. If None, auto-detected from filename.
|
|
148
|
-
metadata_update: Optional metadata delta to merge into state metadata.
|
|
149
|
-
|
|
150
|
-
Returns:
|
|
151
|
-
Command: A LangGraph Command with update containing 'result', 'artifacts', and optional 'metadata'.
|
|
152
|
-
"""
|
|
153
|
-
def create_multiple_artifacts_command(result: str, artifacts: list[Artifact | dict[str, Any]] | None = None, metadata_update: dict[str, Any] | None = None) -> Command:
|
|
154
|
-
"""Create a Command that updates multiple artifacts (and optional metadata).
|
|
155
|
-
|
|
156
|
-
The 'artifacts' list accepts mixed item types:
|
|
157
|
-
- Artifact: a typed artifact model (preferred). Will be converted via model_dump().
|
|
158
|
-
- dict: a prebuilt artifact dict ready for A2A.
|
|
159
|
-
- DataSpec dict: raw spec to build an artifact with keys:
|
|
160
|
-
{'data': bytes|str, 'artifact_name': str, 'artifact_description'?: str, 'mime_type'?: str}
|
|
161
|
-
|
|
162
|
-
Args:
|
|
163
|
-
result: Message/result to show to the agent.
|
|
164
|
-
artifacts: List of items (Artifact | dict) to attach or build.
|
|
165
|
-
metadata_update: Optional metadata delta to merge into state metadata.
|
|
166
|
-
|
|
167
|
-
Returns:
|
|
168
|
-
Command: A LangGraph Command with update containing 'result', 'artifacts', and optional 'metadata'.
|
|
169
|
-
"""
|
|
170
|
-
def create_error_response(error_message: str) -> str:
|
|
171
|
-
"""Create a standardized error response for tools.
|
|
172
|
-
|
|
173
|
-
For error cases, we return a simple string that will be passed directly
|
|
174
|
-
to the agent without any artifact processing.
|
|
175
|
-
|
|
176
|
-
Args:
|
|
177
|
-
error_message: The error message to return.
|
|
178
|
-
|
|
179
|
-
Returns:
|
|
180
|
-
String with error information.
|
|
181
|
-
"""
|
|
182
|
-
def extract_artifacts_from_agent_response(result: Any) -> tuple[str, list[dict[str, Any]]]:
|
|
183
|
-
"""Extract artifacts from agent response for delegation tools.
|
|
184
|
-
|
|
185
|
-
Args:
|
|
186
|
-
result: The result returned by the delegated agent.
|
|
187
|
-
|
|
188
|
-
Returns:
|
|
189
|
-
Tuple of (text_response, artifacts_list) where:
|
|
190
|
-
- text_response: The text content for the agent
|
|
191
|
-
- artifacts_list: List of artifacts to be passed through
|
|
192
|
-
"""
|
|
193
|
-
def create_delegation_response_with_artifacts(result: str, artifacts: list[dict[str, Any]], agent_name: str = '') -> Command:
|
|
194
|
-
"""Create a delegation response that includes artifacts only when needed.
|
|
195
|
-
|
|
196
|
-
Args:
|
|
197
|
-
result: The text result from the delegated agent.
|
|
198
|
-
artifacts: List of artifacts from the delegated agent (always a list).
|
|
199
|
-
agent_name: Name of the agent for prefixing the result.
|
|
200
|
-
|
|
201
|
-
Returns:
|
|
202
|
-
Command containing 'result' and optional 'artifacts'.
|
|
203
|
-
"""
|
aip_agents/utils/constants.pyi
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
from enum import StrEnum
|
|
2
|
-
from uuid import UUID
|
|
3
|
-
|
|
4
|
-
__all__ = ['DefaultTimezone', 'DEFAULT_PII_TAG_NAMESPACE']
|
|
5
|
-
|
|
6
|
-
class DefaultTimezone(StrEnum):
|
|
7
|
-
"""Default timezone constants used across the application."""
|
|
8
|
-
JAKARTA: str
|
|
9
|
-
|
|
10
|
-
DEFAULT_PII_TAG_NAMESPACE: UUID
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
from aip_agents.utils.datetime.normalization import format_created_updated_label as format_created_updated_label, is_valid_date_string as is_valid_date_string, next_day_iso as next_day_iso, normalize_timestamp_to_date as normalize_timestamp_to_date
|
|
2
|
-
from aip_agents.utils.datetime.timezone import ensure_utc_datetime as ensure_utc_datetime, get_timezone_aware_now as get_timezone_aware_now
|
|
3
|
-
|
|
4
|
-
__all__ = ['normalize_timestamp_to_date', 'format_created_updated_label', 'is_valid_date_string', 'next_day_iso', 'ensure_utc_datetime', 'get_timezone_aware_now']
|