Skip to content

feat: SSE streaming for LLM responses

david-full requested to merge feature/sse-streaming into main

Summary

  • ServiceTreeProxy now uses AuthInterceptor HTTP client (fixes 401 on categories API)
  • Thread authenticated httpClient through SidebarComponent, ServiceTreePanel
  • Add localhost→10.0.2.2 URL rewrite for emulator Chrome Custom Tab
  • Use genie-app client ID for consistent token validation
  • Fix weather service null crash from ipapi.co rate limit
  • Show spinner during entire SSE streaming response
  • Extract iss_sub userId from ID token for profile/account screens
  • Fix UserProfileProxy endpoint from /api/ to /api/me

What Works

  • Vue app OIDC login and QuickHelp responses
  • Flutter app OIDC login via emulator CCT
  • SSE streaming from Flutter app with spinner indicator
  • Both apps run concurrently with nginx dual server blocks
  • SSE stream (POST /api/queries/stream) returns 200 from both apps

What's Still Broken

  • UserProfileScreen — ProviderScope.containerOf(context) fails in initState flow. Needs proper Riverpod refactoring to inject auth httpClient.
  • 7 proxies create ApiService() without auth: admin_dashboard_proxy, analytics_proxy, chatbot_proxy, chat_history_proxy, document_file_proxy, label_proxy, weather_proxy — all need auth httpClient injection (same pattern as ServiceTreeProxy fix)
Edited by david-full

Merge request reports

Loading