Skip to content

Commit 35fc031

Browse files
committed
fix openapi route for web
1 parent 9dad26c commit 35fc031

File tree

3 files changed

+49
-2
lines changed

3 files changed

+49
-2
lines changed

veadk/cli/cli_web.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,32 @@ def _get_memory(
102102
return short_term_memory, long_term_memory
103103

104104

105+
def patch_adkwebserver_disable_openapi():
106+
"""
107+
Monkey patch AdkWebServer.get_fast_api to remove openapi.json route.
108+
"""
109+
import google.adk.cli.adk_web_server
110+
from fastapi.routing import APIRoute
111+
from starlette.routing import Route
112+
113+
original_get_fast_api = google.adk.cli.adk_web_server.AdkWebServer.get_fast_api_app
114+
115+
def wrapped_get_fast_api(self, *args, **kwargs):
116+
app = original_get_fast_api(self, *args, **kwargs)
117+
118+
paths = ["/openapi.json", "/docs", "/redoc"]
119+
new_routes = []
120+
for route in app.router.routes:
121+
if isinstance(route, (APIRoute, Route)) and route.path in paths:
122+
continue
123+
new_routes.append(route)
124+
app.router.routes = new_routes
125+
126+
return app
127+
128+
google.adk.cli.adk_web_server.AdkWebServer.get_fast_api_app = wrapped_get_fast_api
129+
130+
105131
@click.command()
106132
@click.option("--host", default="127.0.0.1", help="Host to run the web server on")
107133
def web(host: str) -> None:
@@ -145,6 +171,7 @@ def init_for_veadk(
145171
import google.adk.cli.adk_web_server
146172

147173
google.adk.cli.adk_web_server.AdkWebServer.__init__ = init_for_veadk
174+
patch_adkwebserver_disable_openapi()
148175

149176
import google.adk.cli.cli_tools_click as cli_tools_click
150177

veadk/integrations/ve_faas/template/{{cookiecutter.local_dir_name}}/src/app.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,16 @@
1717
from typing import Callable
1818

1919
from agent import agent_run_config
20+
2021
from fastapi import FastAPI
22+
from fastapi.routing import APIRoute
23+
2124
from fastmcp import FastMCP
25+
26+
from starlette.routing import Route
27+
2228
from google.adk.a2a.utils.agent_card_builder import AgentCardBuilder
29+
2330
from veadk.a2a.ve_a2a_server import init_app
2431
from veadk.runner import Runner
2532
from veadk.tracing.telemetry.exporters.apmplus_exporter import APMPlusExporter
@@ -159,4 +166,14 @@ async def combined_lifespan(app: FastAPI):
159166
# Mount MCP server at /mcp endpoint
160167
app.mount("/mcp", mcp_app)
161168

169+
170+
# remove openapi routes
171+
paths = ["/openapi.json", "/docs", "/redoc"]
172+
new_routes = []
173+
for route in app.router.routes:
174+
if isinstance(route, (APIRoute, Route)) and route.path in paths:
175+
continue
176+
new_routes.append(route)
177+
app.router.routes = new_routes
178+
162179
# === Build mcp server end ===

veadk/runner.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def __init__(
5151
self,
5252
agent: VeAgent,
5353
short_term_memory: ShortTermMemory,
54-
plugins: list[BasePlugin] = [],
54+
plugins: list[BasePlugin] | None = None,
5555
app_name: str = "veadk_default_app",
5656
user_id: str = "veadk_default_user",
5757
):
@@ -77,7 +77,10 @@ def __init__(
7777
try:
7878
# try to detect tracer
7979
_ = self.agent.tracers[0]
80-
plugins.extend([UserMessagePlugin(name="user_message_plugin")])
80+
if not plugins:
81+
plugins = [UserMessagePlugin(name="user_message_plugin")]
82+
else:
83+
plugins.append(UserMessagePlugin(name="user_message_plugin"))
8184
except Exception:
8285
logger.debug("Agent has no tracers, telemetry plugin not added.")
8386

0 commit comments

Comments
 (0)