Add chat-ui-htmx module: streaming chat page on Spring AI 2.0.2 with htmx and its SSE extension (vendored), MessageChatMemoryAdvisor keyed by the HTTP session, a Stop button, and the traps measured: EventSource strips one leading space per data line, model text must be HTML-escaped, a cancelled stream left the upstream connection open in 7 of 8 runs until an OkHttp interceptor calls Call.cancel (8 of 8 closed after), and the SDK push source ignores back-pressure (limitRate changes only the demand; a bounded buffer works). The model is a stub OpenAI-compatible SSE server written for the module; no real provider was run.

Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_017ic4b6Kg9RWSTJzyz6KP9X
This commit is contained in:
2026-10-31 04:02:56 +00:00
co-authored by Claude Sonnet 5.5
parent c97bcf9adf
commit 68da642f9a
35 changed files with 1571 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
$ GET /chat/stream?message=hello world (raw lines, first 14 and last 5)
event:token
data: [stub]
event:token
data: saw
event:token
data: 2
event:token
data: messages.
event:token
data: Earlier
...
data: world
<blank>
event:done
data:
<blank>
event names seen: [token, done]
joined token text as EventSource delivers it: [stub] saw 2 messages. Earlier user turns: none. You said: hello world
same text if the server did not pad: [stub]saw2messages.Earlieruserturns:none.Yousaid:helloworld