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() | |