|
|
import streamlit as st |
|
|
|
|
|
|
|
|
def run_async(coro): |
|
|
"""Run an async function within the stored event loop.""" |
|
|
return st.session_state.loop.run_until_complete(coro) |
|
|
|
|
|
def reset_connection_state(): |
|
|
"""Reset all connection-related session state variables.""" |
|
|
if st.session_state.client is not None: |
|
|
try: |
|
|
|
|
|
run_async(st.session_state.client.__aexit__(None, None, None)) |
|
|
except Exception as e: |
|
|
st.error(f"Error closing previous client: {str(e)}") |
|
|
|
|
|
st.session_state.client = None |
|
|
st.session_state.agent = None |
|
|
st.session_state.tools = [] |
|
|
|
|
|
def on_shutdown(): |
|
|
|
|
|
if st.session_state.client is not None: |
|
|
try: |
|
|
|
|
|
run_async(st.session_state.client.__aexit__(None, None, None)) |
|
|
except Exception as e: |
|
|
st.error(f"Error during shutdown: {str(e)}") |