Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
253 changes: 128 additions & 125 deletions python_a2a/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
A2AValidationError,
A2AAuthenticationError,
A2AConfigurationError,
A2AStreamingError
A2AStreamingError,
)

# All core models - these should be available with basic install
Expand All @@ -35,7 +35,7 @@
FunctionCallContent,
FunctionResponseContent,
ErrorContent,
Metadata
Metadata,
)
from .models.agent import AgentCard, AgentSkill
from .models.task import Task, TaskStatus, TaskState
Expand All @@ -58,29 +58,29 @@
run_registry,
DiscoveryClient,
enable_discovery,
RegistryAgent
RegistryAgent,
)

# Utility functions
from .utils.formatting import (
format_message_as_text,
format_conversation_as_text,
pretty_print_message,
pretty_print_conversation
pretty_print_conversation,
)
from .utils.validation import (
validate_message,
validate_conversation,
is_valid_message,
is_valid_conversation
is_valid_conversation,
)
from .utils.conversion import (
create_text_message,
create_function_call,
create_function_response,
create_error_message,
format_function_params,
conversation_to_messages
conversation_to_messages,
)
from .utils.decorators import skill, agent

Expand All @@ -96,7 +96,7 @@
ConditionStep,
ParallelStep,
ParallelBuilder,
StepType
StepType,
)

# MCP integration
Expand All @@ -106,7 +106,7 @@
MCPConnectionError,
MCPTimeoutError,
MCPToolError,
MCPTools
MCPTools,
)
from .mcp.agent import MCPEnabledAgent
from .mcp.fastmcp import (
Expand All @@ -116,12 +116,9 @@
error_response,
image_response,
multi_content_response,
ContentType as MCPContentType
)
from .mcp.integration import (
FastMCPAgent,
A2AMCPAgent
ContentType as MCPContentType,
)
from .mcp.integration import FastMCPAgent, A2AMCPAgent
from .mcp.proxy import create_proxy_server
from .mcp.transport import create_fastapi_app

Expand All @@ -130,23 +127,33 @@
to_a2a_server,
to_langchain_agent,
to_mcp_server,
to_langchain_tool
to_langchain_tool,
)
from .langchain.exceptions import (
LangChainIntegrationError,
LangChainNotInstalledError,
LangChainToolConversionError,
MCPToolConversionError,
LangChainAgentConversionError,
A2AAgentConversionError
A2AAgentConversionError,
)

HAS_LANGCHAIN = (
importlib.util.find_spec("langchain") is not None
or importlib.util.find_spec("langchain_core") is not None
)
HAS_LANGCHAIN = importlib.util.find_spec("langchain") is not None or importlib.util.find_spec("langchain_core") is not None

# Optional integration with LLM providers
# These might not be available if the specific provider packages are not installed
try:
from .client.llm import OpenAIA2AClient, AnthropicA2AClient
from .server.llm import OpenAIA2AServer, AnthropicA2AServer, BedrockA2AServer
from .client.llm import OpenAIA2AClient, OllamaA2AClient, AnthropicA2AClient
from .server.llm import (
OpenAIA2AServer,
OllamaA2AServer,
AnthropicA2AServer,
BedrockA2AServer,
)

HAS_LLM_CLIENTS = True
HAS_LLM_SERVERS = True
except ImportError:
Expand All @@ -156,20 +163,23 @@
# Optional doc generation
try:
from .docs import generate_a2a_docs, generate_html_docs

HAS_DOCS = True
except ImportError:
HAS_DOCS = False

# Optional CLI
try:
from .cli import main as cli_main

HAS_CLI = True
except ImportError:
HAS_CLI = False

# Agent Flow import - optional but integrated by default
try:
from .agent_flow import models, engine, server, storage

HAS_AGENT_FLOW_IMPORT = True
except ImportError:
HAS_AGENT_FLOW_IMPORT = False
Expand All @@ -193,130 +203,123 @@
# Define __all__ for explicit exports
__all__ = [
# Version
'__version__',

"__version__",
# Exceptions
'A2AError',
'A2AImportError',
'A2AConnectionError',
'A2AResponseError',
'A2ARequestError',
'A2AValidationError',
'A2AAuthenticationError',
'A2AConfigurationError',
'A2AStreamingError',

"A2AError",
"A2AImportError",
"A2AConnectionError",
"A2AResponseError",
"A2ARequestError",
"A2AValidationError",
"A2AAuthenticationError",
"A2AConfigurationError",
"A2AStreamingError",
# Models
'BaseModel',
'Message',
'MessageRole',
'Conversation',
'ContentType',
'TextContent',
'FunctionParameter',
'FunctionCallContent',
'FunctionResponseContent',
'ErrorContent',
'Metadata',
'AgentCard',
'AgentSkill',
'Task',
'TaskStatus',
'TaskState',

"BaseModel",
"Message",
"MessageRole",
"Conversation",
"ContentType",
"TextContent",
"FunctionParameter",
"FunctionCallContent",
"FunctionResponseContent",
"ErrorContent",
"Metadata",
"AgentCard",
"AgentSkill",
"Task",
"TaskStatus",
"TaskState",
# Client
'BaseA2AClient',
'A2AClient',
'AgentNetwork',
'AIAgentRouter',
'StreamingClient',

"BaseA2AClient",
"A2AClient",
"AgentNetwork",
"AIAgentRouter",
"StreamingClient",
# Server
'BaseA2AServer',
'A2AServer',
'run_server',

"BaseA2AServer",
"A2AServer",
"run_server",
# Discovery
'AgentRegistry',
'run_registry',
'DiscoveryClient',
'enable_discovery',
'RegistryAgent',

"AgentRegistry",
"run_registry",
"DiscoveryClient",
"enable_discovery",
"RegistryAgent",
# Utilities
'format_message_as_text',
'format_conversation_as_text',
'pretty_print_message',
'pretty_print_conversation',
'validate_message',
'validate_conversation',
'is_valid_message',
'is_valid_conversation',
'create_text_message',
'create_function_call',
'create_function_response',
'create_error_message',
'format_function_params',
'conversation_to_messages',
'skill',
'agent',

"format_message_as_text",
"format_conversation_as_text",
"pretty_print_message",
"pretty_print_conversation",
"validate_message",
"validate_conversation",
"is_valid_message",
"is_valid_conversation",
"create_text_message",
"create_function_call",
"create_function_response",
"create_error_message",
"format_function_params",
"conversation_to_messages",
"skill",
"agent",
# Workflow
'Flow',
'WorkflowContext',
'WorkflowStep',
'QueryStep',
'AutoRouteStep',
'FunctionStep',
'ConditionalBranch',
'ConditionStep',
'ParallelStep',
'ParallelBuilder',
'StepType',

"Flow",
"WorkflowContext",
"WorkflowStep",
"QueryStep",
"AutoRouteStep",
"FunctionStep",
"ConditionalBranch",
"ConditionStep",
"ParallelStep",
"ParallelBuilder",
"StepType",
# MCP
'MCPClient',
'MCPError',
'MCPConnectionError',
'MCPTimeoutError',
'MCPToolError',
'MCPTools',
'MCPEnabledAgent',
'FastMCP',
'MCPResponse',
'text_response',
'error_response',
'image_response',
'multi_content_response',
'MCPContentType',
'FastMCPAgent',
'A2AMCPAgent',
'create_proxy_server',
'create_fastapi_app',

"MCPClient",
"MCPError",
"MCPConnectionError",
"MCPTimeoutError",
"MCPToolError",
"MCPTools",
"MCPEnabledAgent",
"FastMCP",
"MCPResponse",
"text_response",
"error_response",
"image_response",
"multi_content_response",
"MCPContentType",
"FastMCPAgent",
"A2AMCPAgent",
"create_proxy_server",
"create_fastapi_app",
# LangChain Integration (always included)
'to_a2a_server',
'to_langchain_agent',
'to_mcp_server',
'to_langchain_tool',
'LangChainIntegrationError',
'LangChainNotInstalledError',
'LangChainToolConversionError',
'MCPToolConversionError',
'LangChainAgentConversionError',
'A2AAgentConversionError',
"to_a2a_server",
"to_langchain_agent",
"to_mcp_server",
"to_langchain_tool",
"LangChainIntegrationError",
"LangChainNotInstalledError",
"LangChainToolConversionError",
"MCPToolConversionError",
"LangChainAgentConversionError",
"A2AAgentConversionError",
]

# Conditionally add LLM clients/servers
if HAS_LLM_CLIENTS:
__all__.extend(['OpenAIA2AClient', 'AnthropicA2AClient'])
__all__.extend(["OpenAIA2AClient", "OllamaA2AClient", "AnthropicA2AClient"])
if HAS_LLM_SERVERS:
__all__.extend(['OpenAIA2AServer', 'AnthropicA2AServer', 'BedrockA2AServer'])
__all__.extend(
["OpenAIA2AServer", "OllamaA2AServer", "AnthropicA2AServer", "BedrockA2AServer"]
)

# Conditionally add docs
if HAS_DOCS:
__all__.extend(['generate_a2a_docs', 'generate_html_docs'])
__all__.extend(["generate_a2a_docs", "generate_html_docs"])

# Conditionally add CLI
if HAS_CLI:
__all__.append('cli_main')
__all__.append("cli_main")
Loading