@@ -56,9 +56,9 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
5656 <div class =" post-body" >
5757 <p >
5858 I've worked on Atmosphere for years — a real-time transport for the JVM.
59- It streams events from the server to connected clients, picking whatever
60- transport the client can actually use — WebSocket, SSE, long-polling, gRPC,
61- or WebTransport/HTTP3 — and handling the parts that break at scale:
59+ It streams events from the server to connected clients, auto-negotiating
60+ WebSocket, SSE, or long-polling — with gRPC and WebTransport/HTTP3 available
61+ as separate transports — and handling the parts that break at scale:
6262 reconnects, write-timeouts, and backpressure when a client falls behind.
6363 It runs on Spring Boot, Quarkus, or a plain servlet container. Atmosphere 4
6464 adds an AI agent layer on top of that transport.
@@ -87,9 +87,9 @@ const swapSnippet = `<!-- Built-in OpenAI-compatible client by default — no
8787 That's the whole class. The persona lives in <code >skill:support-agent</code > —
8888 the same <code >SKILL.md</code > format from the Skills section, so the agent stays a
8989 shareable artifact. <code >@RequiresApproval</code > parks the refund tool — the
90- pipeline suspends the virtual thread, sends an approval request to the client, and
91- resumes only on a yes — while tokens stream the whole time. None of that is glue
92- you write; it's the annotations.
90+ pipeline suspends the virtual thread and sends an approval request to the client;
91+ the tool runs only if the human approves, and a denial or timeout resumes the call
92+ without running it. None of that is glue you write; it's the annotations.
9393 </p >
9494 <p >
9595 That one line in <code >@Prompt</code > deserves a closer look, because it doesn't
0 commit comments