feat: monorepo rebuild with streaming chat, Convex auth, FastAPI backend, and recovery UI - #4
Merged
Merged
Conversation
…reen theme - Replace simple form-based chat with full streaming UI using @langchain/react useStream - Add resizable sidebar with drag handle (200-400px range) and thread history management - Apply muted green 'Moss & Stone' theme palette across all tokens (hue ~152-155°) - Add fancy Composer with animated expansion, green glow, and border-radius morph on multiline - Add Transcript, ReportPanel, InterruptDialog, MarkdownContent components - Migrate from Tailwind v3 to v4 with CSS-native config, add shadcn/ui (New York style) - Switch LLM to nvidia/nemotron-3-super-120b-a12b:free and enable streaming on both models - Remove redundant header 'New' button, add subtle atmospheric radial gradients to body
Translate React SDK messages-tuple stream requests to the Python LangGraph messages mode while preserving values streaming for final state handoff. Normalize raw LangChain message chunk tuples into messages SSE events so @langchain/react can render live assistant output. Persist assistant responses from the authoritative final thread state in the web client, falling back to live stream messages only when final state messages are unavailable. Decouple run idle cleanup from Convex assistant-message sync failures so completed runs do not remain stuck in a thinking state. Add async persisted graph construction for the FastAPI runtime, including async SQLite/Postgres checkpointers and stores, and return clear 503 responses when state or history endpoints are unavailable because persistence is disabled. Harden Convex LangGraph thread authorization by returning a structured 403 through the proxy and allowing the web app to detach invalid LangGraph thread links. Add focused backend and frontend coverage for stream protocol handling, LangChain message serialization, final-state message extraction, and persistence-disabled state/history behavior.
Stop auto-opening the last or first saved thread during authenticated app hydration. Clear persisted LangGraph thread/run IDs on startup so a stale or half-finished conversation cannot blank the app before the user chooses it. Keep existing conversations selectable from the sidebar, make the new-chat action return to an empty conversation, and fall back to the blank state when a selected thread is deleted or disappears.
…ssible sidebar delete
Deploying rerai with
|
| Latest commit: |
864790d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://58dcb7a7.rerai.pages.dev |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR represents a full rebuild of rerAI from a single Python script into a production-grade monorepo with three integrated apps: a Python FastAPI backend, a React frontend, and a Convex backend-as-a-service.
What Changed
1. Monorepo Structure (
d6bc5f8)apps/backend,apps/web, andapps/convexworkspacesbunworkspace management with shared tooling2. React Frontend (
ee41bae,f4524be,2100657,fe9c2bf)3. Convex Backend (
41c902c,01f79d5)4. FastAPI Backend (
b56131c,4bcb1eb,db9373e)rerai_api) exposing LangGraph via SSE streaming endpointsrailway.json) with healthchecks5. Agent Architecture (
53f9420)interrupt_onstill available for future high-risk toolsInterruptDialogwith closeable UI, dismiss-to-restart, and payload normalizationinterruptHelpers.tsfor pure, testable interrupt handling6. Testing & Quality
test_fastapi_backend.py(graph construction, interrupt serialization)ErrorBoundary.test.tsx,InterruptDialog.test.ts,messages.test.tstsc -b --noEmitclean for TypeScriptDeployment
langgraph-backendservice)Commits