kiwi/app
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
..
api feat(streaming): add native SSE fallback for L3/L4 recipe generation (closes #126) 2026-05-11 11:32:54 -07:00
core feat: corrections router (#73) + Magpie flywheel hook (#28) 2026-04-25 23:31:20 -07:00
db feat: recipe scanner — photo to structured recipe (kiwi#9) 2026-04-27 08:23:01 -07:00
mcp feat(mcp): add Kiwi MCP server for corpus DB access (closes #124) 2026-05-11 11:32:40 -07:00
models feat(filters): split time filter into hands-on and total time (kiwi#52) 2026-04-27 16:03:27 -07:00
services feat(streaming): add native SSE fallback for L3/L4 recipe generation (closes #126) 2026-05-11 11:32:54 -07:00
staples fix: staple library — consistent tofu_firm slug, load error handling, typed yield_formats, expanded test coverage 2026-03-30 23:10:51 -07:00
static chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
styles feat: recipe engine Phase 3 — StyleAdapter, LLM levels 3-4, user settings 2026-03-31 14:15:18 -07:00
tasks feat(scheduler): auto-detect OrchestratedScheduler when cf-orch is installed 2026-04-19 22:12:44 -07:00
utils chore: initial commit — kiwi Phase 2 complete 2026-03-30 22:20:48 -07:00
__init__.py chore: bump version to 0.2.0 2026-04-08 22:10:36 -07:00
cloud_session.py refactor: replace hand-rolled JWT+Heimdall with cf-core CloudSessionFactory 2026-04-25 16:35:56 -07:00
main.py feat(browse-counts): add pre-computed FTS counts cache with nightly refresh 2026-04-21 15:04:23 -07:00
tiers.py feat: recipe scanner — photo to structured recipe (kiwi#9) 2026-04-27 08:23:01 -07:00