aip-agents-binary 0.5.20__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.
- aip_agents/__init__.py +65 -0
- aip_agents/a2a/__init__.py +19 -0
- aip_agents/a2a/server/__init__.py +10 -0
- aip_agents/a2a/server/base_executor.py +1086 -0
- aip_agents/a2a/server/google_adk_executor.py +198 -0
- aip_agents/a2a/server/langflow_executor.py +180 -0
- aip_agents/a2a/server/langgraph_executor.py +270 -0
- aip_agents/a2a/types.py +232 -0
- aip_agents/agent/__init__.py +27 -0
- aip_agents/agent/base_agent.py +970 -0
- aip_agents/agent/base_langgraph_agent.py +2942 -0
- aip_agents/agent/google_adk_agent.py +926 -0
- aip_agents/agent/google_adk_constants.py +6 -0
- aip_agents/agent/hitl/__init__.py +24 -0
- aip_agents/agent/hitl/config.py +28 -0
- aip_agents/agent/hitl/langgraph_hitl_mixin.py +515 -0
- aip_agents/agent/hitl/manager.py +532 -0
- aip_agents/agent/hitl/models.py +18 -0
- aip_agents/agent/hitl/prompt/__init__.py +9 -0
- aip_agents/agent/hitl/prompt/base.py +42 -0
- aip_agents/agent/hitl/prompt/deferred.py +73 -0
- aip_agents/agent/hitl/registry.py +149 -0
- aip_agents/agent/interface.py +138 -0
- aip_agents/agent/interfaces.py +65 -0
- aip_agents/agent/langflow_agent.py +464 -0
- aip_agents/agent/langgraph_memory_enhancer_agent.py +433 -0
- aip_agents/agent/langgraph_react_agent.py +2514 -0
- aip_agents/agent/system_instruction_context.py +34 -0
- aip_agents/clients/__init__.py +10 -0
- aip_agents/clients/langflow/__init__.py +10 -0
- aip_agents/clients/langflow/client.py +477 -0
- aip_agents/clients/langflow/types.py +18 -0
- aip_agents/constants.py +23 -0
- aip_agents/credentials/manager.py +132 -0
- aip_agents/examples/__init__.py +5 -0
- aip_agents/examples/compare_streaming_client.py +783 -0
- aip_agents/examples/compare_streaming_server.py +142 -0
- aip_agents/examples/demo_memory_recall.py +401 -0
- aip_agents/examples/hello_world_a2a_google_adk_client.py +49 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_agent.py +48 -0
- aip_agents/examples/hello_world_a2a_google_adk_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_google_adk_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_client.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_agent.py +39 -0
- aip_agents/examples/hello_world_a2a_langchain_client_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_a2a_langchain_client_streaming.py +41 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_client_streaming.py +60 -0
- aip_agents/examples/hello_world_a2a_langchain_reference_server.py +105 -0
- aip_agents/examples/hello_world_a2a_langchain_server.py +79 -0
- aip_agents/examples/hello_world_a2a_langchain_server_lm_invoker.py +78 -0
- aip_agents/examples/hello_world_a2a_langflow_client.py +83 -0
- aip_agents/examples/hello_world_a2a_langflow_server.py +82 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client.py +73 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_client_streaming.py +76 -0
- aip_agents/examples/hello_world_a2a_langgraph_artifact_server.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_client.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent.py +54 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_agent_lm_invoker.py +32 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming.py +50 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_lm_invoker.py +44 -0
- aip_agents/examples/hello_world_a2a_langgraph_client_streaming_tool_streaming.py +92 -0
- aip_agents/examples/hello_world_a2a_langgraph_server.py +84 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_lm_invoker.py +79 -0
- aip_agents/examples/hello_world_a2a_langgraph_server_tool_streaming.py +132 -0
- aip_agents/examples/hello_world_a2a_mcp_langgraph.py +196 -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_server.py +251 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_client.py +57 -0
- aip_agents/examples/hello_world_a2a_with_metadata_langchain_server_lm_invoker.py +80 -0
- aip_agents/examples/hello_world_google_adk.py +41 -0
- aip_agents/examples/hello_world_google_adk_mcp_http.py +34 -0
- aip_agents/examples/hello_world_google_adk_mcp_http_stream.py +40 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_sse_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio.py +44 -0
- aip_agents/examples/hello_world_google_adk_mcp_stdio_stream.py +48 -0
- aip_agents/examples/hello_world_google_adk_stream.py +44 -0
- aip_agents/examples/hello_world_langchain.py +28 -0
- aip_agents/examples/hello_world_langchain_lm_invoker.py +15 -0
- aip_agents/examples/hello_world_langchain_mcp_http.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_http_interactive.py +130 -0
- aip_agents/examples/hello_world_langchain_mcp_http_stream.py +42 -0
- aip_agents/examples/hello_world_langchain_mcp_multi_server.py +155 -0
- aip_agents/examples/hello_world_langchain_mcp_sse.py +34 -0
- aip_agents/examples/hello_world_langchain_mcp_sse_stream.py +40 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio.py +30 -0
- aip_agents/examples/hello_world_langchain_mcp_stdio_stream.py +41 -0
- aip_agents/examples/hello_world_langchain_stream.py +36 -0
- aip_agents/examples/hello_world_langchain_stream_lm_invoker.py +39 -0
- aip_agents/examples/hello_world_langflow_agent.py +163 -0
- aip_agents/examples/hello_world_langgraph.py +39 -0
- aip_agents/examples/hello_world_langgraph_bosa_twitter.py +41 -0
- aip_agents/examples/hello_world_langgraph_mcp_http.py +31 -0
- aip_agents/examples/hello_world_langgraph_mcp_http_stream.py +34 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_sse_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio.py +35 -0
- aip_agents/examples/hello_world_langgraph_mcp_stdio_stream.py +50 -0
- aip_agents/examples/hello_world_langgraph_stream.py +43 -0
- aip_agents/examples/hello_world_langgraph_stream_lm_invoker.py +37 -0
- aip_agents/examples/hello_world_model_switch_cli.py +210 -0
- aip_agents/examples/hello_world_multi_agent_adk.py +75 -0
- aip_agents/examples/hello_world_multi_agent_langchain.py +54 -0
- aip_agents/examples/hello_world_multi_agent_langgraph.py +66 -0
- aip_agents/examples/hello_world_multi_agent_langgraph_lm_invoker.py +69 -0
- aip_agents/examples/hello_world_pii_logger.py +21 -0
- aip_agents/examples/hello_world_sentry.py +133 -0
- aip_agents/examples/hello_world_step_limits.py +273 -0
- aip_agents/examples/hello_world_stock_a2a_server.py +103 -0
- aip_agents/examples/hello_world_tool_output_client.py +46 -0
- aip_agents/examples/hello_world_tool_output_server.py +114 -0
- aip_agents/examples/hitl_demo.py +724 -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_server.py +126 -0
- aip_agents/examples/pii_demo_multi_agent_client.py +80 -0
- aip_agents/examples/pii_demo_multi_agent_server.py +247 -0
- aip_agents/examples/todolist_planning_a2a_langchain_client.py +70 -0
- aip_agents/examples/todolist_planning_a2a_langgraph_server.py +88 -0
- aip_agents/examples/tools/__init__.py +27 -0
- aip_agents/examples/tools/adk_arithmetic_tools.py +36 -0
- aip_agents/examples/tools/adk_weather_tool.py +60 -0
- aip_agents/examples/tools/data_generator_tool.py +103 -0
- aip_agents/examples/tools/data_visualization_tool.py +312 -0
- aip_agents/examples/tools/image_artifact_tool.py +136 -0
- aip_agents/examples/tools/langchain_arithmetic_tools.py +26 -0
- aip_agents/examples/tools/langchain_currency_exchange_tool.py +88 -0
- aip_agents/examples/tools/langchain_graph_artifact_tool.py +172 -0
- aip_agents/examples/tools/langchain_weather_tool.py +48 -0
- aip_agents/examples/tools/langgraph_streaming_tool.py +130 -0
- aip_agents/examples/tools/mock_retrieval_tool.py +56 -0
- aip_agents/examples/tools/pii_demo_tools.py +189 -0
- aip_agents/examples/tools/random_chart_tool.py +142 -0
- aip_agents/examples/tools/serper_tool.py +202 -0
- aip_agents/examples/tools/stock_tools.py +82 -0
- aip_agents/examples/tools/table_generator_tool.py +167 -0
- aip_agents/examples/tools/time_tool.py +82 -0
- aip_agents/examples/tools/weather_forecast_tool.py +38 -0
- aip_agents/executor/agent_executor.py +473 -0
- aip_agents/executor/base.py +48 -0
- aip_agents/mcp/__init__.py +1 -0
- aip_agents/mcp/client/__init__.py +14 -0
- aip_agents/mcp/client/base_mcp_client.py +369 -0
- aip_agents/mcp/client/connection_manager.py +193 -0
- aip_agents/mcp/client/google_adk/__init__.py +11 -0
- aip_agents/mcp/client/google_adk/client.py +381 -0
- aip_agents/mcp/client/langchain/__init__.py +11 -0
- aip_agents/mcp/client/langchain/client.py +265 -0
- aip_agents/mcp/client/persistent_session.py +359 -0
- aip_agents/mcp/client/session_pool.py +351 -0
- aip_agents/mcp/client/transports.py +215 -0
- aip_agents/mcp/utils/__init__.py +7 -0
- aip_agents/mcp/utils/config_validator.py +139 -0
- aip_agents/memory/__init__.py +14 -0
- aip_agents/memory/adapters/__init__.py +10 -0
- aip_agents/memory/adapters/base_adapter.py +717 -0
- aip_agents/memory/adapters/mem0.py +84 -0
- aip_agents/memory/base.py +84 -0
- aip_agents/memory/constants.py +49 -0
- aip_agents/memory/factory.py +86 -0
- aip_agents/memory/guidance.py +20 -0
- aip_agents/memory/simple_memory.py +47 -0
- aip_agents/middleware/__init__.py +17 -0
- aip_agents/middleware/base.py +88 -0
- aip_agents/middleware/manager.py +128 -0
- aip_agents/middleware/todolist.py +274 -0
- aip_agents/schema/__init__.py +69 -0
- aip_agents/schema/a2a.py +56 -0
- aip_agents/schema/agent.py +111 -0
- aip_agents/schema/hitl.py +157 -0
- aip_agents/schema/langgraph.py +37 -0
- aip_agents/schema/model_id.py +97 -0
- aip_agents/schema/step_limit.py +108 -0
- aip_agents/schema/storage.py +40 -0
- aip_agents/sentry/__init__.py +11 -0
- aip_agents/sentry/sentry.py +151 -0
- aip_agents/storage/__init__.py +41 -0
- aip_agents/storage/base.py +85 -0
- aip_agents/storage/clients/__init__.py +12 -0
- aip_agents/storage/clients/minio_client.py +318 -0
- aip_agents/storage/config.py +62 -0
- aip_agents/storage/providers/__init__.py +15 -0
- aip_agents/storage/providers/base.py +106 -0
- aip_agents/storage/providers/memory.py +114 -0
- aip_agents/storage/providers/object_storage.py +214 -0
- aip_agents/tools/__init__.py +33 -0
- aip_agents/tools/bosa_tools.py +105 -0
- aip_agents/tools/browser_use/__init__.py +82 -0
- aip_agents/tools/browser_use/action_parser.py +103 -0
- aip_agents/tools/browser_use/browser_use_tool.py +1112 -0
- aip_agents/tools/browser_use/llm_config.py +120 -0
- aip_agents/tools/browser_use/minio_storage.py +198 -0
- aip_agents/tools/browser_use/schemas.py +119 -0
- aip_agents/tools/browser_use/session.py +76 -0
- aip_agents/tools/browser_use/session_errors.py +132 -0
- aip_agents/tools/browser_use/steel_session_recording.py +317 -0
- aip_agents/tools/browser_use/streaming.py +813 -0
- aip_agents/tools/browser_use/structured_data_parser.py +257 -0
- aip_agents/tools/browser_use/structured_data_recovery.py +204 -0
- aip_agents/tools/browser_use/types.py +78 -0
- aip_agents/tools/code_sandbox/__init__.py +26 -0
- aip_agents/tools/code_sandbox/constant.py +13 -0
- aip_agents/tools/code_sandbox/e2b_cloud_sandbox_extended.py +257 -0
- aip_agents/tools/code_sandbox/e2b_sandbox_tool.py +411 -0
- aip_agents/tools/constants.py +165 -0
- aip_agents/tools/document_loader/__init__.py +44 -0
- aip_agents/tools/document_loader/base_reader.py +302 -0
- aip_agents/tools/document_loader/docx_reader_tool.py +68 -0
- aip_agents/tools/document_loader/excel_reader_tool.py +171 -0
- aip_agents/tools/document_loader/pdf_reader_tool.py +79 -0
- aip_agents/tools/document_loader/pdf_splitter.py +169 -0
- aip_agents/tools/gl_connector/__init__.py +5 -0
- aip_agents/tools/gl_connector/tool.py +351 -0
- aip_agents/tools/memory_search/__init__.py +22 -0
- aip_agents/tools/memory_search/base.py +200 -0
- aip_agents/tools/memory_search/mem0.py +258 -0
- aip_agents/tools/memory_search/schema.py +48 -0
- aip_agents/tools/memory_search_tool.py +26 -0
- aip_agents/tools/time_tool.py +117 -0
- aip_agents/tools/tool_config_injector.py +300 -0
- aip_agents/tools/web_search/__init__.py +15 -0
- aip_agents/tools/web_search/serper_tool.py +187 -0
- aip_agents/types/__init__.py +70 -0
- aip_agents/types/a2a_events.py +13 -0
- aip_agents/utils/__init__.py +79 -0
- aip_agents/utils/a2a_connector.py +1757 -0
- aip_agents/utils/artifact_helpers.py +502 -0
- aip_agents/utils/constants.py +22 -0
- aip_agents/utils/datetime/__init__.py +34 -0
- aip_agents/utils/datetime/normalization.py +231 -0
- aip_agents/utils/datetime/timezone.py +206 -0
- aip_agents/utils/env_loader.py +27 -0
- aip_agents/utils/event_handler_registry.py +58 -0
- aip_agents/utils/file_prompt_utils.py +176 -0
- aip_agents/utils/final_response_builder.py +211 -0
- aip_agents/utils/formatter_llm_client.py +231 -0
- aip_agents/utils/langgraph/__init__.py +19 -0
- aip_agents/utils/langgraph/converter.py +128 -0
- aip_agents/utils/langgraph/tool_managers/__init__.py +15 -0
- aip_agents/utils/langgraph/tool_managers/a2a_tool_manager.py +99 -0
- aip_agents/utils/langgraph/tool_managers/base_tool_manager.py +66 -0
- aip_agents/utils/langgraph/tool_managers/delegation_tool_manager.py +1071 -0
- aip_agents/utils/langgraph/tool_output_management.py +967 -0
- aip_agents/utils/logger.py +195 -0
- aip_agents/utils/metadata/__init__.py +27 -0
- aip_agents/utils/metadata/activity_metadata_helper.py +407 -0
- aip_agents/utils/metadata/activity_narrative/__init__.py +35 -0
- aip_agents/utils/metadata/activity_narrative/builder.py +817 -0
- aip_agents/utils/metadata/activity_narrative/constants.py +51 -0
- aip_agents/utils/metadata/activity_narrative/context.py +49 -0
- aip_agents/utils/metadata/activity_narrative/formatters.py +230 -0
- aip_agents/utils/metadata/activity_narrative/utils.py +35 -0
- aip_agents/utils/metadata/schemas/__init__.py +16 -0
- aip_agents/utils/metadata/schemas/activity_schema.py +29 -0
- aip_agents/utils/metadata/schemas/thinking_schema.py +31 -0
- aip_agents/utils/metadata/thinking_metadata_helper.py +38 -0
- aip_agents/utils/metadata_helper.py +358 -0
- aip_agents/utils/name_preprocessor/__init__.py +17 -0
- aip_agents/utils/name_preprocessor/base_name_preprocessor.py +73 -0
- aip_agents/utils/name_preprocessor/google_name_preprocessor.py +100 -0
- aip_agents/utils/name_preprocessor/name_preprocessor.py +87 -0
- aip_agents/utils/name_preprocessor/openai_name_preprocessor.py +48 -0
- aip_agents/utils/pii/__init__.py +25 -0
- aip_agents/utils/pii/pii_handler.py +397 -0
- aip_agents/utils/pii/pii_helper.py +207 -0
- aip_agents/utils/pii/uuid_deanonymizer_mapping.py +195 -0
- aip_agents/utils/reference_helper.py +273 -0
- aip_agents/utils/sse_chunk_transformer.py +831 -0
- aip_agents/utils/step_limit_manager.py +265 -0
- aip_agents/utils/token_usage_helper.py +156 -0
- aip_agents_binary-0.5.20.dist-info/METADATA +681 -0
- aip_agents_binary-0.5.20.dist-info/RECORD +280 -0
- aip_agents_binary-0.5.20.dist-info/WHEEL +5 -0
- aip_agents_binary-0.5.20.dist-info/top_level.txt +1 -0
aip_agents/a2a/types.py
ADDED
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
"""Type definitions and constants for A2A artifact generation.
|
|
2
|
+
|
|
3
|
+
This module provides common MIME types, artifact types, and other constants
|
|
4
|
+
used in A2A artifact generation to ensure consistency across the codebase.
|
|
5
|
+
|
|
6
|
+
Authors:
|
|
7
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
import base64
|
|
11
|
+
from enum import StrEnum
|
|
12
|
+
from typing import Any
|
|
13
|
+
|
|
14
|
+
from pydantic import BaseModel, Field, field_validator
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class MimeType(StrEnum):
|
|
18
|
+
"""Common MIME types for A2A artifacts.
|
|
19
|
+
|
|
20
|
+
This class provides constants for commonly used MIME types in artifact generation,
|
|
21
|
+
ensuring consistency and reducing typos across the codebase.
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
# Text formats
|
|
25
|
+
TEXT_PLAIN = "text/plain"
|
|
26
|
+
TEXT_HTML = "text/html"
|
|
27
|
+
TEXT_CSS = "text/css"
|
|
28
|
+
TEXT_JAVASCRIPT = "text/javascript"
|
|
29
|
+
TEXT_CSV = "text/csv"
|
|
30
|
+
TEXT_XML = "text/xml"
|
|
31
|
+
TEXT_MARKDOWN = "text/markdown"
|
|
32
|
+
|
|
33
|
+
# Application formats
|
|
34
|
+
APPLICATION_JSON = "application/json"
|
|
35
|
+
APPLICATION_XML = "application/xml"
|
|
36
|
+
APPLICATION_PDF = "application/pdf"
|
|
37
|
+
APPLICATION_ZIP = "application/zip"
|
|
38
|
+
APPLICATION_GZIP = "application/gzip"
|
|
39
|
+
APPLICATION_TAR = "application/x-tar"
|
|
40
|
+
APPLICATION_OCTET_STREAM = "application/octet-stream"
|
|
41
|
+
|
|
42
|
+
# Microsoft Office formats
|
|
43
|
+
APPLICATION_MSWORD = "application/msword"
|
|
44
|
+
APPLICATION_EXCEL = "application/vnd.ms-excel"
|
|
45
|
+
APPLICATION_POWERPOINT = "application/vnd.ms-powerpoint"
|
|
46
|
+
APPLICATION_DOCX = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"
|
|
47
|
+
APPLICATION_XLSX = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
|
|
48
|
+
APPLICATION_PPTX = "application/vnd.openxmlformats-officedocument.presentationml.presentation"
|
|
49
|
+
|
|
50
|
+
# Image formats
|
|
51
|
+
IMAGE_JPEG = "image/jpeg"
|
|
52
|
+
IMAGE_PNG = "image/png"
|
|
53
|
+
IMAGE_GIF = "image/gif"
|
|
54
|
+
IMAGE_WEBP = "image/webp"
|
|
55
|
+
IMAGE_SVG = "image/svg+xml"
|
|
56
|
+
IMAGE_BMP = "image/bmp"
|
|
57
|
+
IMAGE_TIFF = "image/tiff"
|
|
58
|
+
IMAGE_ICO = "image/x-icon"
|
|
59
|
+
|
|
60
|
+
# Audio formats
|
|
61
|
+
AUDIO_MP3 = "audio/mpeg"
|
|
62
|
+
AUDIO_WAV = "audio/wav"
|
|
63
|
+
AUDIO_OGG = "audio/ogg"
|
|
64
|
+
AUDIO_AAC = "audio/aac"
|
|
65
|
+
AUDIO_FLAC = "audio/flac"
|
|
66
|
+
|
|
67
|
+
# Video formats
|
|
68
|
+
VIDEO_MP4 = "video/mp4"
|
|
69
|
+
VIDEO_AVI = "video/x-msvideo"
|
|
70
|
+
VIDEO_MOV = "video/quicktime"
|
|
71
|
+
VIDEO_WMV = "video/x-ms-wmv"
|
|
72
|
+
VIDEO_WEBM = "video/webm"
|
|
73
|
+
VIDEO_MKV = "video/x-matroska"
|
|
74
|
+
|
|
75
|
+
# Font formats
|
|
76
|
+
FONT_TTF = "font/ttf"
|
|
77
|
+
FONT_OTF = "font/otf"
|
|
78
|
+
FONT_WOFF = "font/woff"
|
|
79
|
+
FONT_WOFF2 = "font/woff2"
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
class ArtifactType(StrEnum):
|
|
83
|
+
"""Common artifact types for A2A artifacts.
|
|
84
|
+
|
|
85
|
+
This class provides constants for artifact types used in the A2A protocol.
|
|
86
|
+
"""
|
|
87
|
+
|
|
88
|
+
FILE = "file"
|
|
89
|
+
DATA = "data"
|
|
90
|
+
TEXT = "text"
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Common file extension to MIME type mappings
|
|
94
|
+
EXTENSION_TO_MIME_TYPE = {
|
|
95
|
+
# Text files
|
|
96
|
+
".txt": MimeType.TEXT_PLAIN,
|
|
97
|
+
".html": MimeType.TEXT_HTML,
|
|
98
|
+
".htm": MimeType.TEXT_HTML,
|
|
99
|
+
".css": MimeType.TEXT_CSS,
|
|
100
|
+
".js": MimeType.TEXT_JAVASCRIPT,
|
|
101
|
+
".csv": MimeType.TEXT_CSV,
|
|
102
|
+
".xml": MimeType.TEXT_XML,
|
|
103
|
+
".md": MimeType.TEXT_MARKDOWN,
|
|
104
|
+
".markdown": MimeType.TEXT_MARKDOWN,
|
|
105
|
+
# Application files
|
|
106
|
+
".json": MimeType.APPLICATION_JSON,
|
|
107
|
+
".pdf": MimeType.APPLICATION_PDF,
|
|
108
|
+
".zip": MimeType.APPLICATION_ZIP,
|
|
109
|
+
".gz": MimeType.APPLICATION_GZIP,
|
|
110
|
+
".tar": MimeType.APPLICATION_TAR,
|
|
111
|
+
# Microsoft Office
|
|
112
|
+
".doc": MimeType.APPLICATION_MSWORD,
|
|
113
|
+
".xls": MimeType.APPLICATION_EXCEL,
|
|
114
|
+
".ppt": MimeType.APPLICATION_POWERPOINT,
|
|
115
|
+
".docx": MimeType.APPLICATION_DOCX,
|
|
116
|
+
".xlsx": MimeType.APPLICATION_XLSX,
|
|
117
|
+
".pptx": MimeType.APPLICATION_PPTX,
|
|
118
|
+
# Images
|
|
119
|
+
".jpg": MimeType.IMAGE_JPEG,
|
|
120
|
+
".jpeg": MimeType.IMAGE_JPEG,
|
|
121
|
+
".png": MimeType.IMAGE_PNG,
|
|
122
|
+
".gif": MimeType.IMAGE_GIF,
|
|
123
|
+
".webp": MimeType.IMAGE_WEBP,
|
|
124
|
+
".svg": MimeType.IMAGE_SVG,
|
|
125
|
+
".bmp": MimeType.IMAGE_BMP,
|
|
126
|
+
".tiff": MimeType.IMAGE_TIFF,
|
|
127
|
+
".tif": MimeType.IMAGE_TIFF,
|
|
128
|
+
".ico": MimeType.IMAGE_ICO,
|
|
129
|
+
# Audio
|
|
130
|
+
".mp3": MimeType.AUDIO_MP3,
|
|
131
|
+
".wav": MimeType.AUDIO_WAV,
|
|
132
|
+
".ogg": MimeType.AUDIO_OGG,
|
|
133
|
+
".aac": MimeType.AUDIO_AAC,
|
|
134
|
+
".flac": MimeType.AUDIO_FLAC,
|
|
135
|
+
# Video
|
|
136
|
+
".mp4": MimeType.VIDEO_MP4,
|
|
137
|
+
".avi": MimeType.VIDEO_AVI,
|
|
138
|
+
".mov": MimeType.VIDEO_MOV,
|
|
139
|
+
".wmv": MimeType.VIDEO_WMV,
|
|
140
|
+
".webm": MimeType.VIDEO_WEBM,
|
|
141
|
+
".mkv": MimeType.VIDEO_MKV,
|
|
142
|
+
# Fonts
|
|
143
|
+
".ttf": MimeType.FONT_TTF,
|
|
144
|
+
".otf": MimeType.FONT_OTF,
|
|
145
|
+
".woff": MimeType.FONT_WOFF,
|
|
146
|
+
".woff2": MimeType.FONT_WOFF2,
|
|
147
|
+
}
|
|
148
|
+
MIME_TYPE_TO_EXTENSION = {v: k for k, v in EXTENSION_TO_MIME_TYPE.items()}
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def get_mime_type_from_filename(filename: str) -> str:
|
|
152
|
+
"""Get MIME type from filename extension.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
filename: The filename to get the MIME type for.
|
|
156
|
+
|
|
157
|
+
Returns:
|
|
158
|
+
The MIME type string, or application/octet-stream if unknown.
|
|
159
|
+
|
|
160
|
+
Example:
|
|
161
|
+
>>> get_mime_type_from_filename("data.csv")
|
|
162
|
+
'text/csv'
|
|
163
|
+
>>> get_mime_type_from_filename("image.png")
|
|
164
|
+
'image/png'
|
|
165
|
+
>>> get_mime_type_from_filename("unknown.xyz")
|
|
166
|
+
'application/octet-stream'
|
|
167
|
+
"""
|
|
168
|
+
if "." not in filename:
|
|
169
|
+
return MimeType.APPLICATION_OCTET_STREAM
|
|
170
|
+
|
|
171
|
+
extension = "." + filename.split(".")[-1].lower()
|
|
172
|
+
return EXTENSION_TO_MIME_TYPE.get(extension, MimeType.APPLICATION_OCTET_STREAM)
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def get_extension_from_mime_type(mime_type: str) -> str | None:
|
|
176
|
+
"""Get file extension from MIME type.
|
|
177
|
+
|
|
178
|
+
Args:
|
|
179
|
+
mime_type: The MIME type to get the extension for.
|
|
180
|
+
|
|
181
|
+
Returns:
|
|
182
|
+
The file extension (with dot) or None if not found.
|
|
183
|
+
|
|
184
|
+
Example:
|
|
185
|
+
>>> get_extension_from_mime_type("text/csv")
|
|
186
|
+
'.csv'
|
|
187
|
+
>>> get_extension_from_mime_type("image/png")
|
|
188
|
+
'.png'
|
|
189
|
+
>>> get_extension_from_mime_type("unknown/type")
|
|
190
|
+
None
|
|
191
|
+
"""
|
|
192
|
+
return MIME_TYPE_TO_EXTENSION.get(mime_type)
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
class Artifact(BaseModel):
|
|
196
|
+
"""Represents an artifact payload used by A2A helpers and executors.
|
|
197
|
+
|
|
198
|
+
This model standardizes the structure for artifacts generated by tools and
|
|
199
|
+
passed through the A2A pipeline.
|
|
200
|
+
|
|
201
|
+
Attributes:
|
|
202
|
+
artifact_type (ArtifactType): The type of artifact. Defaults to FILE.
|
|
203
|
+
data (str): Base64-encoded content of the artifact.
|
|
204
|
+
name (str): Display name or filename of the artifact.
|
|
205
|
+
description (str): Optional description for the artifact. Defaults to empty string.
|
|
206
|
+
mime_type (str): MIME type of the artifact content.
|
|
207
|
+
metadata (dict[str, Any] | None): Optional per-artifact metadata to pass through.
|
|
208
|
+
"""
|
|
209
|
+
|
|
210
|
+
artifact_type: ArtifactType = Field(default=ArtifactType.FILE)
|
|
211
|
+
data: str
|
|
212
|
+
name: str
|
|
213
|
+
description: str = ""
|
|
214
|
+
mime_type: str
|
|
215
|
+
metadata: dict[str, Any] | None = None
|
|
216
|
+
|
|
217
|
+
@field_validator("data")
|
|
218
|
+
@classmethod
|
|
219
|
+
def validate_base64(cls, v: str) -> str:
|
|
220
|
+
"""Validate that 'data' is a valid base64 string.
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
v (str): The base64 string to validate.
|
|
224
|
+
|
|
225
|
+
Returns:
|
|
226
|
+
str: The validated base64 string if valid.
|
|
227
|
+
"""
|
|
228
|
+
try:
|
|
229
|
+
base64.b64decode(v, validate=True)
|
|
230
|
+
except Exception as exc: # noqa: BLE001
|
|
231
|
+
raise ValueError("Artifact.data must be a valid base64-encoded string") from exc
|
|
232
|
+
return v
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""This module initializes the agent package.
|
|
2
|
+
|
|
3
|
+
Exposes the core agent classes and interfaces.
|
|
4
|
+
|
|
5
|
+
Author:
|
|
6
|
+
Christian Trisno Sen Long Chen (christian.t.s.l.chen@gdplabs.id)
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from aip_agents.agent.base_agent import BaseAgent
|
|
10
|
+
from aip_agents.agent.base_langgraph_agent import BaseLangGraphAgent
|
|
11
|
+
from aip_agents.agent.google_adk_agent import GoogleADKAgent
|
|
12
|
+
from aip_agents.agent.interface import AgentInterface
|
|
13
|
+
from aip_agents.agent.langflow_agent import LangflowAgent
|
|
14
|
+
from aip_agents.agent.langgraph_memory_enhancer_agent import LangGraphMemoryEnhancerAgent
|
|
15
|
+
from aip_agents.agent.langgraph_react_agent import LangChainAgent, LangGraphAgent, LangGraphReactAgent
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
"AgentInterface",
|
|
19
|
+
"BaseAgent",
|
|
20
|
+
"BaseLangGraphAgent",
|
|
21
|
+
"LangGraphReactAgent",
|
|
22
|
+
"GoogleADKAgent",
|
|
23
|
+
"LangGraphAgent",
|
|
24
|
+
"LangChainAgent",
|
|
25
|
+
"LangflowAgent",
|
|
26
|
+
"LangGraphMemoryEnhancerAgent",
|
|
27
|
+
]
|