@@ -148,9 +148,7 @@ def __init__(
148148 @asynccontextmanager
149149 async def lifespan (app : FastAPI ):
150150 # trigger A2A server app startup
151- logger .info (
152- "Triggering A2A server app startup within API server..."
153- )
151+ logger .info ("Triggering A2A server app startup within API server..." )
154152 for handler in _a2a_server_app .router .on_startup :
155153 await handler ()
156154 yield
@@ -245,78 +243,6 @@ async def event_generator():
245243 routes .insert (0 , routes .pop (i ))
246244 break
247245
248- @self .app .post ("/run_sse" )
249- async def run_agent_sse (req : RunAgentRequest ) -> StreamingResponse :
250- print ("my run sse !!!" )
251- # SSE endpoint
252- session = await self .server .session_service .get_session (
253- app_name = req .app_name ,
254- user_id = req .user_id ,
255- session_id = req .session_id ,
256- )
257- if not session :
258- raise HTTPException (status_code = 404 , detail = "Session not found" )
259-
260- # Convert the events to properly formatted SSE
261- async def event_generator ():
262- try :
263- stream_mode = (
264- StreamingMode .SSE
265- if req .streaming
266- else StreamingMode .NONE
267- )
268- runner = await self .server .get_runner_async (req .app_name )
269- async with Aclosing (
270- runner .run_async (
271- user_id = req .user_id ,
272- session_id = req .session_id ,
273- new_message = req .new_message ,
274- state_delta = req .state_delta ,
275- run_config = RunConfig (streaming_mode = stream_mode ),
276- invocation_id = req .invocation_id ,
277- )
278- ) as agen :
279- async for event in agen :
280- # ADK Web renders artifacts from `actions.artifactDelta`
281- # during part processing *and* during action processing
282- # 1) the original event with `artifactDelta` cleared (content)
283- # 2) a content-less "action-only" event carrying `artifactDelta`
284- events_to_stream = [event ]
285- if (
286- event .actions .artifact_delta
287- and event .content
288- and event .content .parts
289- ):
290- content_event = event .model_copy (deep = True )
291- content_event .actions .artifact_delta = {}
292- artifact_event = event .model_copy (deep = True )
293- artifact_event .content = None
294- events_to_stream = [
295- content_event ,
296- artifact_event ,
297- ]
298-
299- for event_to_stream in events_to_stream :
300- sse_event = event_to_stream .model_dump_json (
301- exclude_none = True ,
302- by_alias = True ,
303- )
304- logger .debug (
305- "Generated event in agent run streaming: %s" ,
306- sse_event ,
307- )
308- yield f"data: { sse_event } \n \n "
309- except Exception as e :
310- logger .exception ("Error in event_generator: %s" , e )
311- yield f"data: { json .dumps ({'error' : str (e )})} \n \n "
312-
313- # Returns a streaming response with the proper media type for SSE
314-
315- return StreamingResponse (
316- event_generator (),
317- media_type = "text/event-stream" ,
318- )
319-
320246 # Attach ASGI middleware for unified telemetry across all routes
321247 self .app .add_middleware (AgentkitTelemetryHTTPMiddleware )
322248
@@ -392,9 +318,7 @@ async def event_generator():
392318 user_id = user_id ,
393319 session_id = session_id ,
394320 new_message = content ,
395- run_config = RunConfig (
396- streaming_mode = StreamingMode .SSE
397- ),
321+ run_config = RunConfig (streaming_mode = StreamingMode .SSE ),
398322 )
399323 ) as agen :
400324 async for event in agen :
0 commit comments