Spaces:
Running
Running
Mathias Heider
Claude Fable 5.1
Keep the agent running: cycle watchdog, Retry-After cap, boot at container start, self keep-alive
73849a1 unverified Download agent/ui_common.py from aim4composites/AutonomousAgent: direct link, hf CLI and curl.
- Browser
- Download file 2.41 kB
-
https://huggingface.co/spaces/aim4composites/AutonomousAgent/resolve/main/agent/ui_common.py
- Command line
-
hf download hf://spaces/aim4composites/AutonomousAgent/agent/ui_common.py
-
curl -L -o ui_common.py https://huggingface.co/spaces/aim4composites/AutonomousAgent/resolve/main/agent/ui_common.py
2.41 kB
| """Shared Streamlit helpers for the agent Space pages.""" | |
| from __future__ import annotations | |
| import streamlit as st | |
| from agent import agdb, config as C | |
| def db_ready() -> tuple[bool, str]: | |
| """(ok, message) β is the Postgres config present and reachable?""" | |
| try: | |
| conn = agdb.connect() | |
| conn.close() | |
| return True, "" | |
| except Exception as exc: | |
| return False, str(exc) | |
| def boot() -> dict: | |
| """Once per server process: schema, seed queries, start scheduler. | |
| Delegates to agent.autostart.boot_once, which run_space.py already ran at | |
| container start; this is the fallback for a process started with plain | |
| `streamlit run app.py` (local development, AppTest).""" | |
| from agent import autostart | |
| return autostart.boot_once() | |
| def is_admin() -> bool: | |
| return bool(st.session_state.get("agent_admin", False)) | |
| def admin_gate() -> bool: | |
| """Sidebar unlock for state-changing controls. Returns is_admin().""" | |
| with st.sidebar: | |
| if not C.ADMIN_PASSWORD: | |
| st.warning("AGENT_ADMIN_PASSWORD secret is not set β " | |
| "controls are locked (read-only mode).") | |
| return False | |
| if is_admin(): | |
| st.success("Admin unlocked") | |
| if st.button("Lock"): | |
| st.session_state["agent_admin"] = False | |
| st.rerun() | |
| else: | |
| pw = st.text_input("Admin password", type="password", | |
| key="admin_pw_input") | |
| if st.button("Unlock") : | |
| if pw == C.ADMIN_PASSWORD: | |
| st.session_state["agent_admin"] = True | |
| st.rerun() | |
| else: | |
| st.error("Wrong password") | |
| return is_admin() | |
| def status_banner() -> None: | |
| info = boot() | |
| if not info["db"]: | |
| st.error(f"Database not reachable β set the DB_* secrets. ({info['error']})") | |
| st.stop() | |
| if not C.GEMINI_API_KEY: | |
| st.warning("GEMINI_API_KEY is not set β discovery/download will work, " | |
| "but extraction is disabled until the secret is added.") | |
| def df_or_empty(sql: str, params: tuple = ()): | |
| import pandas as pd | |
| try: | |
| conn = agdb.connect() | |
| try: | |
| return agdb.fetch_df(conn, sql, params) | |
| finally: | |
| conn.close() | |
| except Exception: | |
| return pd.DataFrame() | |