| <!-- ARCHITECTURE.md --> | |
| # Shasha AI β Architecture Overview | |
| A highβlevel view of the components and data flow in the Shasha AI codeβgeneration platform. | |
| ## 1. Core Layers | |
| ### 1.1 Frontend (Gradio UI) | |
| - **app.py**: Defines the Gradio Blocks UI β input panels (prompt, file, website, image), model selector, language selector, buttons, and output panes (Code, Preview, History). | |
| - **static/**: Holds `index.html`, `index.js`, `style.css` for any transformers.js demos and custom styling. | |
| - **assets/**: Images, logos, and other static assets. | |
| ### 1.2 Backend Services | |
| #### 1.2.1 Inference Routing | |
| - **hf_client.py** | |
| - `get_inference_client(model_id, provider)` | |
| - Wraps HF/OpenAI/Gemini/Groq providers into a unified interface. | |
| - Automatically selects/falls back based on model prefix and available credentials. | |
| - **inference.py** | |
| - `chat_completion(...)` and `stream_chat_completion(...)` | |
| - Encapsulates request/response logic, streaming vs. blocking, and error handling. | |
| #### 1.2.2 Model Registry | |
| - **models.py** | |
| - `ModelInfo` dataclass & `AVAILABLE_MODELS` registry | |
| - Central source of truth for supported models, identifiers, descriptions, and default providers. | |
| - Helper `find_model()` for lookup by name or ID. | |
| #### 1.2.3 Prompt & History Management | |
| - **constants.py** | |
| - System prompts for HTML/transformers.js modes, search/replace tokens, Gradio language support. | |
| - **utils.py** | |
| - `history_to_messages()`, `remove_code_block()`, multimodal image encoding, parsing transformers.js outputs, search/replace utilities. | |
| #### 1.2.4 Deployment & Project Import | |
| - **deploy.py** | |
| - `send_to_sandbox()` β live HTML preview in iframe | |
| - `load_project_from_url()` β import existing HF Spaces (app.py/index.html) | |
| - `deploy_to_spaces*()` β create/update HF Space via Hub API | |
| ## 2. Extensions & Plugins | |
| - **plugins.py** (future) | |
| - Plugin discovery/loading for communityβcreated extensions (e.g., DB runners, snippet libraries). | |
| - **auth.py** (future) | |
| - OAuth flows for GitHub, Google Drive, Slack β enable private file loading. | |
| ## 3. Project Structure | |
| . | |
| βββ app.py # Gradio application | |
| βββ constants.py # System prompts & appβwide constants | |
| βββ hf_client.py # Inference client factory | |
| βββ models.py # Model registry & metadata | |
| βββ inference.py # Chat completion wrappers | |
| βββ utils.py # Helpers: history, code parsing, multimodal | |
| βββ deploy.py # Sandbox preview & HF Spaces import/deploy | |
| βββ plugins.py # (planned) Plugin architecture | |
| βββ auth.py # (planned) OAuth integrations | |
| βββ notebooks/ # Demo Jupyter notebooks | |
| βββ tests/ # pytest suites & UI smoke tests | |
| βββ ci.yaml # CI pipeline for lint/test/deploy | |
| βββ docs/ | |
| β βββ QUICKSTART.md | |
| β βββ ARCHITECTURE.md | |
| β βββ API_REFERENCE.md | |
| βββ static/ # transformers.js demos & CSS/JS assets | |
| yaml | |
| Copy | |
| Edit | |
| ## 4. Data Flow | |
| 1. **User Interaction**: User enters prompt / uploads file / selects model & language. | |
| 2. **Preprocessing**: | |
| - File β `extract_text_from_file()` | |
| - Website β `extract_website_content()` | |
| - Image β `process_image_for_model()` | |
| 3. **Message Assembly**: | |
| - System prompt + history β OpenAIβstyle message list | |
| - Enhanced via optional web search (Tavily) | |
| 4. **Inference Call**: | |
| - `get_inference_client()` β select provider & billing | |
| - `chat_completion()` or streaming | |
| 5. **Postprocessing**: | |
| - Parse code blocks / transformers.js multiβfile output | |
| - Apply search/replace to existing code if editing | |
| 6. **UI Update**: | |
| - Code pane | |
| - Live preview iframe (`send_to_sandbox`) | |
| - Chat history pane | |
| --- | |