Context
The registry is adding GET /api/registry/feed/stream as the Server-Sent Events transport for cursor-based registry feed pages. GET /api/registry/feed also now includes required freshness metadata.
Registry PR: adcontextprotocol/adcp#5733
SDK work
- Regenerate/import registry OpenAPI types so
FeedResponse includes freshness.
- Add a stream client for
/api/registry/feed/stream; generated OpenAPI types alone are not enough because the response is text/event-stream.
- Update
RegistrySync to default to auto: try SSE first, fall back to polling /api/registry/feed on unsupported transport, 404/406, proxy/network failure, or stream parse failure.
- Persist cursor exactly as today; reconnect with last persisted cursor after disconnect.
- On
cursor_expired, re-bootstrap then resume.
- Treat cursors as scoped to the same logical
types subscription.
- Persist
data.cursor from SSE payload; registry does not use SSE id: / Last-Event-ID in 3.x.
Tests
- Mock SSE server emits
feed, heartbeat, disconnect, cursor_expired, and malformed data.
- Cursor advances only on
feed, not heartbeat.
- Reconnect resumes from persisted cursor.
- Stream errors and unsupported endpoint fall back to polling.
cursor_expired triggers re-bootstrap.
- Duplicate or partial pages do not corrupt indexes.
- Freshness metadata is exposed or observable for lag monitoring.
Context
The registry is adding
GET /api/registry/feed/streamas the Server-Sent Events transport for cursor-based registry feed pages.GET /api/registry/feedalso now includes requiredfreshnessmetadata.Registry PR: adcontextprotocol/adcp#5733
SDK work
FeedResponseincludesfreshness./api/registry/feed/stream; generated OpenAPI types alone are not enough because the response istext/event-stream.RegistrySyncto default toauto: try SSE first, fall back to polling/api/registry/feedon unsupported transport, 404/406, proxy/network failure, or stream parse failure.cursor_expired, re-bootstrap then resume.typessubscription.data.cursorfrom SSE payload; registry does not use SSEid:/Last-Event-IDin 3.x.Tests
feed,heartbeat, disconnect,cursor_expired, and malformed data.feed, not heartbeat.cursor_expiredtriggers re-bootstrap.