Server (sx_server.ml): - eval_with_io: CEK evaluator with IO suspension handling (io-sleep, import) - io-sleep platform primitive: raises CekPerformRequest, resolved by eval_with_io - Streaming render uses eval_with_io for data + content evaluation - Data items with "delay" field sleep before resolving (async streaming) - Removed hardcoded streaming-demo-data — application logic belongs in .sx Application (streaming-demo.sx): - streaming-demo-data defined in SX: 3 items with 1s/3s/5s delays - Each item has delay, stream-id, and display data fields - Shell renders instantly, slots fill progressively as IO completes Tests (streaming.spec.js): - Staggered resolve test: fast resolves first, medium/slow still skeleton - Verifies independent slot resolution matches async IO behavior Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
15 KiB
15 KiB