import streamlit as st import os from storage import ensure_dirs from rag_core import query_documents, run_openai_agent, finalize_answer # --------------------------------------------------------------------------------- # STARTUP # --------------------------------------------------------------------------------- ensure_dirs() # --------------------------------------------------------------------------------- # PAGE CONFIGURATION # --------------------------------------------------------------------------------- st.set_page_config( page_title="DevRAG Assistant", page_icon="💻", layout="centered", initial_sidebar_state="expanded", ) # --------------------------------------------------------------------------------- # CUSTOM CSS # --------------------------------------------------------------------------------- st.markdown( """ """, unsafe_allow_html=True, ) # --------------------------------------------------------------------------------- # STATE MANAGEMENT # --------------------------------------------------------------------------------- if "messages" not in st.session_state: st.session_state["messages"] = [ { "role": "assistant", "content": "Hello! I am your focused programming assistant for **JavaScript, Python, and PHP**. How can I help you code today?", "sources": [], } ] # --------------------------------------------------------------------------------- # SIDEBAR # --------------------------------------------------------------------------------- with st.sidebar: st.markdown("### ⚙️ Settings") api_key_env = os.getenv("OPENAI_API_KEY", "") api_key_input = st.text_input( "OpenAI API Key", value=api_key_env, type="password", placeholder="sk-...", ) if api_key_input: os.environ["OPENAI_API_KEY"] = api_key_input st.session_state["api_key"] = api_key_input else: st.session_state["api_key"] = None st.divider() st.markdown("### 📚 Supported Stacks") st.markdown("- **Python**: core, libraries, logic") st.markdown("- **JavaScript**: node, web, frameworks") st.markdown("- **PHP**: general, laravel patterns") st.divider() st.markdown("### 💡 Example Questions") examples = [ "How do Python list comprehensions work?", "Explain JavaScript async/await with an example.", "What is a Service Class pattern in PHP?", "Difference between Python lists and JS arrays." ] for q in examples: if st.button(q, key=f"ex_{q}", use_container_width=True): st.session_state["clicked_example"] = q st.rerun() # --------------------------------------------------------------------------------- # MAIN INTERFACE # --------------------------------------------------------------------------------- st.markdown( """
Focused knowledge RAG for modern stacks