Spaces:
Runtime error
Runtime error
| import os | |
| import asyncio | |
| import streamlit as st | |
| from dotenv import load_dotenv | |
| from agent import root_agent | |
| from google.adk.sessions import InMemorySessionService | |
| from google.adk.runners import Runner | |
| from google.genai.types import Content, Part | |
| # Load environment variables | |
| load_dotenv() | |
| GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY") | |
| if not GOOGLE_API_KEY: | |
| st.error("โ GOOGLE_API_KEY is missing! Please set it in a .env file.") | |
| st.stop() | |
| # Streamlit page setup | |
| st.set_page_config(page_title="๐ฎ Task Gamifier", layout="wide") | |
| st.title("๐ Gamify & Schedule Tasks") | |
| # ------------------------------- | |
| # ๐ช Exit Button & Session Reset | |
| # ------------------------------- | |
| if st.button("๐ Exit & Restart Session"): | |
| for key in ["session", "runner", "history"]: | |
| st.session_state.pop(key, None) | |
| st.success("โ Session restarted.") | |
| st.rerun() | |
| # ------------------------------- | |
| # ๐ง Initialize session + runner | |
| # ------------------------------- | |
| if "session_service" not in st.session_state: | |
| st.session_state.session_service = InMemorySessionService() | |
| if "session" not in st.session_state: | |
| st.session_state.session = asyncio.run( | |
| st.session_state.session_service.create_session( | |
| app_name="task_gamifier_app", | |
| user_id="user-001" | |
| ) | |
| ) | |
| if "runner" not in st.session_state: | |
| st.session_state.runner = Runner( | |
| app_name=st.session_state.session.app_name, | |
| agent=root_agent, | |
| session_service=st.session_state.session_service | |
| ) | |
| if "history" not in st.session_state: | |
| st.session_state.history = [] | |
| # ------------------------------- | |
| # โ๏ธ Task Input Form | |
| # ------------------------------- | |
| with st.form(key="task_form", clear_on_submit=True): | |
| task_input = st.text_input("๐ What task do you want to gamify & schedule?", key="task_input") | |
| submitted = st.form_submit_button("๐ Submit") | |
| if submitted and task_input: | |
| async def process(): | |
| final_response = None | |
| async for event in st.session_state.runner.run_async( | |
| session_id=st.session_state.session.id, | |
| user_id=st.session_state.session.user_id, | |
| new_message=Content(role="user", parts=[Part(text=task_input)]) | |
| ): | |
| if event.is_final_response(): | |
| final_response = event.content.parts[0].text | |
| return final_response | |
| try: | |
| response = asyncio.run(process()) | |
| st.session_state.history.append((task_input, response)) | |
| st.rerun() | |
| except Exception as e: | |
| st.error(f"โ ๏ธ Error: {e}") | |
| # ------------------------------- | |
| # ๐ฌ Chat History | |
| # ------------------------------- | |
| st.subheader("๐ฌ Interaction History") | |
| for user_input, agent_response in reversed(st.session_state.history): | |
| st.markdown(f"**You:** {user_input}") | |
| st.markdown(f"๐ค **Agent:** {agent_response}") | |
| st.markdown("---") | |
| # ------------------------------- | |
| # ๐งน Clear Chat History | |
| # ------------------------------- | |
| if st.button("Clear Chat Only"): | |
| st.session_state.history = [] | |
| st.rerun() | |