OverviewFilesCommitsIssuesDocsReleasesPeers

atproto-did-peer commits / ccd5f53

listBlobs support: enumerate the published blob pointer set
The referenced blob set can be derived by walking records. An ORPHAN — uploaded, referenced by no record — cannot; it is invisible to any such walk by construction, and that is the class that permanently lost the 2026-07-03 image. The pointer set is the authority's own inventory, so it is the only place the difference shows up. BlobPointerStore.list() pages the SHARED __blob__/<cid> keys (sorted, cursor-stable), so it lists what the DID published across all co-owners rather than what one node holds bytes for. `since` is deliberately NOT supported: pointers carry no rev, and answering a rev filter wrongly is worse than not offering it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ccd5f5326404d111bc5787eb4ee6aa9b33cdca96
by plankatron <fleeky@gmail.com> · 2026-08-07T01:59:02.000Z

Changed files (1) +5 -0

lib/did-peer.js +5 -0
……@@ -395,6 +395,11 @@ export class DidPeer {
395395 getPreferences ({ token } = {}) { return this._call('get-preferences', { token }, { readOnly: true }) }
396396 putPreferences ({ preferences, token } = {}) { return this._call('put-preferences', { preferences, token }) }
397397 getBlob (cid) { return this._call('get-blob', { cid }, { readOnly: true }) }
398
399 // The peer's published blob inventory (com.atproto.sync.listBlobs). Read-only, same gate as getBlob.
400 // Returns { cids, cursor }. A peer too old to answer replies not-supported rather than erroring, so a
401 // mixed-version fleet degrades to "orphans unchecked" instead of failing the whole call.
402 listBlobs ({ limit, cursor } = {}) { return this._call('list-blobs', { limit, cursor }, { readOnly: true }) }
398403 uploadBlob ({ bytes, mimeType, token } = {}) { return this._call('upload-blob', { bytes, mimeType, token }) }
399404
400405 // Decode a #commit frame BODY (from firehose.decodeFrame) into normalized ops with the changed record