SurfSense/surfsense_backend/app/tasks/chat
CREDO23 b2a0888588 refactor(chat): add streaming/flows/new_chat/orchestrator.stream_new_chat
Slim composition root for the new-chat streaming flow. Sequences:

1. validate inputs and load the LLM bundle (negative id => YAML)
2. open the OTEL chat_request span; set agent_mode tag
3. spawn the four pre-stream DB writes (set-ai-responding, persist
   user turn, persist assistant shell, first-assistant probe)
4. reserve premium quota (with free-fallback retry on denial)
5. build connector + checkpointer + agent + input_state
6. emit first frames (message-start, step-start, initial thinking step)
7. spawn the background title generator
8. run the shared stream_loop with a flow-local _recover closure that
   reroutes to the next auto-pin config on provider 429s
9. finalize: emit terminal title/token frames, shielded assistant
   finalize, release-or-finalize premium quota, close session, GC,
   record OTEL outcome

Public entry-point flows/new_chat/__init__ re-exports stream_new_chat.

Existing wiring (routes, tests) still imports the legacy function from
app.tasks.chat.stream_new_chat. Cutover is a later commit.
2026-05-25 21:49:55 +02:00
..
streaming refactor(chat): add streaming/flows/new_chat/orchestrator.stream_new_chat 2026-05-25 21:49:55 +02:00
content_builder.py feat: improved document, folder mentions rendering 2026-05-09 22:15:51 -07:00
persistence.py feat: improved document, folder mentions rendering 2026-05-09 22:15:51 -07:00
stream_new_chat.py feat(chat): add model retry and stream lifecycle events 2026-05-22 17:48:43 +05:30