Spaces:
Sleeping
Sleeping
import streamlit as st | |
import os | |
from dotenv import load_dotenv | |
from langsmith import traceable | |
from app.chat import ( | |
initialize_session_state, | |
display_chat_history, | |
) | |
from app.data_loader import get_data, load_docs | |
from app.document_processor import process_documents, save_vector_store_to_supabase, load_vector_store_from_supabase | |
from app.db import supabase | |
from app.config import Config | |
# Modularized helpers | |
import app.rag as rag | |
import app.vector_store as vs | |
import app.auth as auth | |
import app.ui as ui | |
from app.session import restore_user_session_if_needed, ensure_active_session | |
from app.workflows import prepare_vector_store_if_needed | |
from uuid import uuid4 | |
load_dotenv() | |
BUCKET_NAME = Config.BUCKET_NAME | |
VECTOR_STORE_PREFIX = Config.VECTOR_STORE_PREFIX | |
def main(): | |
try: | |
load_dotenv() | |
except Exception: | |
pass | |
initialize_session_state() | |
st.set_page_config( | |
page_title="PNP-Bot", | |
page_icon="assets/favicon.ico", | |
) | |
# Try restore Supabase session if user missing | |
restore_user_session_if_needed() | |
# Authentication gate | |
user = st.session_state.get("user") | |
if not user: | |
auth.auth_view() | |
return | |
# Ensure we have an active chat session | |
ensure_active_session(user["id"]) | |
# Sidebar: delegate completely to UI module | |
with st.sidebar: | |
ui.render_sidebar_sessions() | |
# Vector store orchestration (delegated) | |
vector_store = prepare_vector_store_if_needed(len(st.session_state["history"])) | |
st.session_state["vector_store"] = vector_store | |
if st.session_state["vector_store"] is not None: | |
chain = rag.create_conversational_chain(st.session_state["vector_store"]) | |
display_chat_history(chain) | |
if __name__ == "__main__": | |
main() | |