115 lines
4.4 KiB
Python
115 lines
4.4 KiB
Python
from __future__ import annotations
|
|
from dotenv import load_dotenv
|
|
import streamlit as st
|
|
import logfire
|
|
import asyncio
|
|
|
|
# Set page config - must be the first Streamlit command
|
|
st.set_page_config(
|
|
page_title="Archon - Agent Builder",
|
|
page_icon="🤖",
|
|
layout="wide",
|
|
)
|
|
|
|
# Utilities and styles
|
|
from utils.utils import get_clients
|
|
from streamlit_pages.styles import load_css
|
|
|
|
# Streamlit pages
|
|
from streamlit_pages.intro import intro_tab
|
|
from streamlit_pages.chat import chat_tab
|
|
from streamlit_pages.environment import environment_tab
|
|
from streamlit_pages.database import database_tab
|
|
from streamlit_pages.documentation import documentation_tab
|
|
from streamlit_pages.agent_service import agent_service_tab
|
|
from streamlit_pages.mcp import mcp_tab
|
|
from streamlit_pages.future_enhancements import future_enhancements_tab
|
|
|
|
# Load environment variables from .env file
|
|
load_dotenv()
|
|
|
|
# Initialize clients
|
|
openai_client, supabase = get_clients()
|
|
|
|
# Load custom CSS styles
|
|
load_css()
|
|
|
|
# Configure logfire to suppress warnings (optional)
|
|
logfire.configure(send_to_logfire='never')
|
|
|
|
async def main():
|
|
# Check for tab query parameter
|
|
query_params = st.query_params
|
|
if "tab" in query_params:
|
|
tab_name = query_params["tab"]
|
|
if tab_name in ["Intro", "Chat", "Environment", "Database", "Documentation", "Agent Service", "MCP", "Future Enhancements"]:
|
|
st.session_state.selected_tab = tab_name
|
|
|
|
# Add sidebar navigation
|
|
with st.sidebar:
|
|
st.image("public/ArchonLightGrey.png", width=1000)
|
|
|
|
# Navigation options with vertical buttons
|
|
st.write("### Navigation")
|
|
|
|
# Initialize session state for selected tab if not present
|
|
if "selected_tab" not in st.session_state:
|
|
st.session_state.selected_tab = "Intro"
|
|
|
|
# Vertical navigation buttons
|
|
intro_button = st.button("Intro", use_container_width=True, key="intro_button")
|
|
chat_button = st.button("Chat", use_container_width=True, key="chat_button")
|
|
env_button = st.button("Environment", use_container_width=True, key="env_button")
|
|
db_button = st.button("Database", use_container_width=True, key="db_button")
|
|
docs_button = st.button("Documentation", use_container_width=True, key="docs_button")
|
|
service_button = st.button("Agent Service", use_container_width=True, key="service_button")
|
|
mcp_button = st.button("MCP", use_container_width=True, key="mcp_button")
|
|
future_enhancements_button = st.button("Future Enhancements", use_container_width=True, key="future_enhancements_button")
|
|
|
|
# Update selected tab based on button clicks
|
|
if intro_button:
|
|
st.session_state.selected_tab = "Intro"
|
|
elif chat_button:
|
|
st.session_state.selected_tab = "Chat"
|
|
elif mcp_button:
|
|
st.session_state.selected_tab = "MCP"
|
|
elif env_button:
|
|
st.session_state.selected_tab = "Environment"
|
|
elif service_button:
|
|
st.session_state.selected_tab = "Agent Service"
|
|
elif db_button:
|
|
st.session_state.selected_tab = "Database"
|
|
elif docs_button:
|
|
st.session_state.selected_tab = "Documentation"
|
|
elif future_enhancements_button:
|
|
st.session_state.selected_tab = "Future Enhancements"
|
|
|
|
# Display the selected tab
|
|
if st.session_state.selected_tab == "Intro":
|
|
st.title("Archon - Introduction")
|
|
intro_tab()
|
|
elif st.session_state.selected_tab == "Chat":
|
|
st.title("Archon - Agent Builder")
|
|
await chat_tab()
|
|
elif st.session_state.selected_tab == "MCP":
|
|
st.title("Archon - MCP Configuration")
|
|
mcp_tab()
|
|
elif st.session_state.selected_tab == "Environment":
|
|
st.title("Archon - Environment Configuration")
|
|
environment_tab()
|
|
elif st.session_state.selected_tab == "Agent Service":
|
|
st.title("Archon - Agent Service")
|
|
agent_service_tab()
|
|
elif st.session_state.selected_tab == "Database":
|
|
st.title("Archon - Database Configuration")
|
|
database_tab(supabase)
|
|
elif st.session_state.selected_tab == "Documentation":
|
|
st.title("Archon - Documentation")
|
|
documentation_tab(supabase)
|
|
elif st.session_state.selected_tab == "Future Enhancements":
|
|
st.title("Archon - Future Enhancements")
|
|
future_enhancements_tab()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(main())
|