;; lib/host/feed.sx — Feed domain endpoints on the host. The first real endpoint ;; migrated onto the SX host: the activity timeline, read straight from the feed ;; subsystem's public API (feed/all + the stream combinators) and serialised as ;; JSON. GET /feed returns recent-first activities; ?actor= filters by actor ;; and ?limit= caps the count. Depends on lib/feed/* + lib/host/handler.sx. ;; GET /feed -> recent-first activities as a JSON envelope. ;; Query: ?actor= (filter) ?limit= (cap, applied after filtering). (define host/feed-timeline (fn (req) (let ((base (feed/recent (feed/all))) (actor (dream-query-param req "actor"))) (let ((filtered (if actor (feed/by-actor base actor) base)) (limit (dream-query-param req "limit"))) (let ((capped (if limit (feed/take filtered (string->number limit)) filtered))) (host/ok (feed/items capped))))))) ;; Route group contributed by the feed domain. (define host/feed-routes (list (dream-get "/feed" host/feed-timeline)))