File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -171,6 +171,9 @@ def _handle_session_init(
171171 if session is None :
172172 raise MessageHandlingException ("Session rejected." )
173173
174+ for mail in payload .additionalMail :
175+ session .session_state .add_log_entry (** mail .model_dump ())
176+
174177 user_state = {}
175178 try :
176179 user_state = session .session_state .user_state .to_dict ()
Original file line number Diff line number Diff line change 1313import tempfile
1414import textwrap
1515import time
16+ import traceback
1617import typing
1718from contextlib import asynccontextmanager , suppress
1819from importlib .machinery import ModuleSpec
@@ -121,6 +122,8 @@ def get_asgi_app(
121122 global app
122123 if serve_mode not in ["run" , "edit" ]:
123124 raise ValueError ("""Invalid mode. Must be either "run" or "edit".""" )
125+
126+ custom_server_setup_mail : list [dict ] = []
124127
125128 _fix_mimetype ()
126129 app_runner = AppRunner (user_app_path , serve_mode )
@@ -351,6 +354,7 @@ async def init(
351354 cookies = dict (request .cookies ),
352355 headers = dict (request .headers ),
353356 proposedSessionId = initBody .proposedSessionId ,
357+ additionalMail = custom_server_setup_mail ,
354358 )
355359 )
356360
@@ -960,7 +964,17 @@ async def stream(websocket: WebSocket):
960964
961965 # Return
962966 if enable_server_setup is True :
963- _execute_server_setup_hook (user_app_path )
967+ try :
968+ _execute_server_setup_hook (user_app_path )
969+ except Exception as e :
970+ custom_server_setup_mail .append (
971+ {
972+ "type" : "error" ,
973+ "title" : "Custom server setup error" ,
974+ "message" : str (e ),
975+ "code" : traceback .format_exc ()
976+ }
977+ )
964978
965979 return app
966980
Original file line number Diff line number Diff line change @@ -139,10 +139,18 @@ class AppProcessServerRequest(BaseModel):
139139 payload : Optional [Any ] = None
140140
141141
142+ class AdditionalMail (BaseModel ):
143+ type : Literal ["info" , "error" ]
144+ title : str
145+ message : str
146+ code : Optional [str ] = None
147+
148+
142149class InitSessionRequestPayload (BaseModel ):
143150 cookies : Optional [Dict [str , str ]] = None
144151 headers : Optional [Dict [str , str ]] = None
145152 proposedSessionId : Optional [str ] = None
153+ additionalMail : list [AdditionalMail ] = []
146154
147155
148156class InitSessionRequest (AppProcessServerRequest ):
You can’t perform that action at this time.
0 commit comments