buildmymcpserver/apps/web/app/(dashboard)
Marco Sadjadi 0c6d738a6b
All checks were successful
Deploy to Production / deploy (push) Successful in 1m27s
feat(preview): SSE-streamed generation, no CF 100s edge cap
Architectural fix for "spec_too_large" / preview_timeout — the sync
endpoint had to fit the whole model run into Cloudflare's ~100s edge
window, which made the system fragile against any prompt that produced
a verbose spec. The new streaming path pipes Anthropic's token deltas
as Server-Sent Events; every chunk resets CF's idle timer and a 15s
keepalive comment guarantees activity even during slow first-token
windows.

@bmm/llm: new streamSpecFromAnthropic() exposes the SDK's .stream()
flow with the same typed-error contract as generateSpec — same
SpecTruncatedError / SpecValidationError / SpecTimeoutError raised from
the relevant moment.

API: POST /v1/servers/preview/stream returns text/event-stream with
events 'text' (deltas), 'spec' (final success payload, same shape as
the sync endpoint), 'error' (typed). Anthropic-only — GLM/hobby falls
back to the sync route via 409 streaming_unavailable.

Frontend: apiSseStream() handles the POST + ReadableStream + SSE
parser. The wizard's analyze() prefers the stream and only uses the
sync endpoint on the explicit 409 fallback.

nginx (api.buildmymcpserver.com): the /v1/builds/ location block (which
already had proxy_buffering off + 600s read timeout for the WS build
stream) now also matches /v1/servers/preview/stream so the SSE
response isn't buffered.
2026-05-28 21:11:05 +02:00
..
audit feat(web): real 3-step wizard, settings, audit, docs, marketing pages 2026-05-19 18:20:31 +02:00
dashboard feat(web): country-code picker, auth-aware header, dedupe new-server CTA 2026-05-21 23:41:19 +02:00
servers feat(preview): SSE-streamed generation, no CF 100s edge cap 2026-05-28 21:11:05 +02:00
settings feat: user menu + profile page + in-app subscription management 2026-05-25 17:46:36 +02:00
layout.tsx feat(web): glow-pulse on primary CTAs + hero fills full first viewport 2026-05-27 12:20:25 +02:00