kiwi/frontend
pyr0ball e57f46f4b6 feat(streaming): add native SSE fallback for L3/L4 recipe generation (closes #126)
Two-phase streaming architecture:
  Phase 1 (sync thread): IngredientClassifier builds element profiles +
    gap list from SQLite — thread-safe, no async context needed
  Phase 2 (async): LLMRecipeGenerator.stream_generate() yields tokens via
    cf-orch warm vllm (existing /stream-token path) or AsyncOpenAI against
    Ollama if the coordinator is unavailable

Backend (app/services/recipe/llm_recipe.py):
  - stream_generate() async generator; _try_alloc_for_stream() sync helper
  - _stream_openai_compat() static method handles __auto__ model resolution
  - LLMRecipeGenerator(None) is safe for streaming (store not used)

Endpoint (app/api/endpoints/recipes.py):
  - ?stream=true on POST /recipes/suggest returns StreamingResponse
  - X-Accel-Buffering: no prevents nginx buffering without nginx.conf edits

Frontend (api.ts, recipes.ts, RecipesView.vue):
  - suggestRecipeStream() uses fetch + ReadableStream (POST; EventSource
    only supports GET)
  - streamSuggest() action in recipes store builds request internally
  - RecipesView.streamRecipe() silently falls back to native SSE when
    cf-orch token fetch fails rather than surfacing an error
2026-05-11 11:32:54 -07:00
..
.vscode chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
public feat(pwa): add Progressive Web App support — installable to homescreen 2026-04-25 12:33:22 -07:00
src feat(streaming): add native SSE fallback for L3/L4 recipe generation (closes #126) 2026-05-11 11:32:54 -07:00
.env chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
.gitignore chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
index.html feat(pwa): add Progressive Web App support — installable to homescreen 2026-04-25 12:33:22 -07:00
package-lock.json feat(pwa): add Progressive Web App support — installable to homescreen 2026-04-25 12:33:22 -07:00
package.json feat(pwa): add Progressive Web App support — installable to homescreen 2026-04-25 12:33:22 -07:00
THEMING_SYSTEM.md chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
tsconfig.app.json feat(kiwi-fe): wire OrchUsagePill into RecipesView and Settings opt-in toggle 2026-04-14 15:51:34 -07:00
tsconfig.json chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
tsconfig.node.json chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
vite.config.ts fix(pwa): set start_url/scope from VITE_BASE_URL so install launches /kiwi/ not site root 2026-04-25 12:59:59 -07:00