Skip to content
Draft
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
25 changes: 16 additions & 9 deletions samples/hello_world_agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@
from a2a.compat.v0_3.grpc_handler import CompatGrpcHandler
from a2a.server.agent_execution.agent_executor import AgentExecutor
from a2a.server.agent_execution.context import RequestContext
from a2a.server.apps import A2AFastAPIApplication, A2ARESTFastAPIApplication
from a2a.server.events.event_queue import EventQueue
from a2a.server.request_handlers import GrpcHandler
from a2a.server.request_handlers.default_request_handler import (
DefaultRequestHandler,
)
from a2a.server.routes import AgentCardRoutes, JsonRpcRoutes, RestRoutes
from a2a.server.tasks.inmemory_task_store import InMemoryTaskStore
from a2a.server.tasks.task_updater import TaskUpdater
from a2a.types import (
Expand Down Expand Up @@ -190,22 +190,29 @@ async def serve(
agent_executor=SampleAgentExecutor(), task_store=task_store
)

rest_app_builder = A2ARESTFastAPIApplication(
agent_card_routes = AgentCardRoutes(
agent_card=agent_card,
http_handler=request_handler,
card_url='/.well-known/agent-card.json',
)
# JSON-RPC
jsonrpc_routes = JsonRpcRoutes(
agent_card=agent_card,
request_handler=request_handler,
rpc_url='/a2a/jsonrpc/',
enable_v0_3_compat=True,
)
rest_app = rest_app_builder.build()

jsonrpc_app_builder = A2AFastAPIApplication(
# REST
rest_routes = RestRoutes(
agent_card=agent_card,
http_handler=request_handler,
request_handler=request_handler,
rpc_url='/a2a/rest',
enable_v0_3_compat=True,
)

app = FastAPI()
jsonrpc_app_builder.add_routes_to_app(app, rpc_url='/a2a/jsonrpc/')
app.mount('/a2a/rest', rest_app)
app.routes.extend(agent_card_routes.routes)
app.routes.extend(jsonrpc_routes.routes)
app.routes.extend(rest_routes.routes)

grpc_server = grpc.aio.server()
grpc_server.add_insecure_port(f'{host}:{grpc_port}')
Expand Down
2 changes: 1 addition & 1 deletion src/a2a/compat/v0_3/jsonrpc_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
if TYPE_CHECKING:
from starlette.requests import Request

from a2a.server.apps.jsonrpc.jsonrpc_app import CallContextBuilder
from a2a.server.request_handlers.request_handler import RequestHandler
from a2a.server.routes.jsonrpc_dispatcher import CallContextBuilder
from a2a.types.a2a_pb2 import AgentCard

_package_starlette_installed = True
Expand Down
7 changes: 3 additions & 4 deletions src/a2a/compat/v0_3/rest_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,11 @@

from a2a.compat.v0_3 import conversions
from a2a.compat.v0_3.rest_handler import REST03Handler
from a2a.server.apps.jsonrpc.jsonrpc_app import (
from a2a.server.context import ServerCallContext
from a2a.server.routes.jsonrpc_dispatcher import (
CallContextBuilder,
DefaultCallContextBuilder,
)
from a2a.server.apps.rest.rest_adapter import RESTAdapterInterface
from a2a.server.context import ServerCallContext
from a2a.utils.error_handlers import (
rest_error_handler,
rest_stream_error_handler,
Expand All @@ -53,7 +52,7 @@
logger = logging.getLogger(__name__)


class REST03Adapter(RESTAdapterInterface):
class REST03Adapter:
"""Adapter to make RequestHandler work with v0.3 RESTful API.

Defines v0.3 REST request processors and their routes, as well as managing response generation including Server-Sent Events (SSE).
Expand Down
18 changes: 0 additions & 18 deletions src/a2a/server/apps/__init__.py

This file was deleted.

20 changes: 0 additions & 20 deletions src/a2a/server/apps/jsonrpc/__init__.py

This file was deleted.

148 changes: 0 additions & 148 deletions src/a2a/server/apps/jsonrpc/fastapi_app.py

This file was deleted.

Loading