diff --git a/lexicons/dev/mokkenstorm/crate/feed/getFeedSkeleton.sdl b/lexicons/dev/mokkenstorm/crate/feed/getFeedSkeleton.sdl new file mode 100644 index 0000000..ef8fab5 --- /dev/null +++ b/lexicons/dev/mokkenstorm/crate/feed/getFeedSkeleton.sdl @@ -0,0 +1,44 @@ +/// Feed skeleton per app.bsky.feed.getFeedSkeleton; hydrate refs via +/// shelf.getPublicEntry and catalog.getRelease. Design notes: ROADMAP.md +/// "Custom feeds". +query getFeedSkeleton(cursor: String @description("Opaque pagination token."), limit: Int @description("Max rows, capped at 100.")) @main + : { + cursor: String @description("Next-page token; absent at the end.") + items: [feedItem]! + } + +type entryRef { + actor: Did! + entryId: String! +} + +/// entries: one for single, N same-actor for actorBatch/import, one per +/// actor for subjectConverge. +type feedItem { + entries: [entryRef]! + reason: reason! +} + +union reason! = reasonSingle | reasonActorBatch | reasonSubjectConverge | reasonImport + +type reasonSingle { + action: String! @known("owned", "wanted") +} + +/// The span is one collapsed batch as observed; collapse policy is server-side. +type reasonActorBatch { + action: String! @known("owned", "wanted") + windowEnd: Datetime! + windowStart: Datetime! +} + +type reasonSubjectConverge { + action: String! @known("owned", "wanted") + /// The shared pressing, via catalog.getRelease(uri). + subject: dev.mokkenstorm.crate.defs#catalogRef! +} + +/// Always-collapsed bulk import; the entries list carries the rows. +type reasonImport { + source: String @known("discogs") +} diff --git a/lexicons/dev/mokkenstorm/crate/graph/follow.sdl b/lexicons/dev/mokkenstorm/crate/graph/follow.sdl new file mode 100644 index 0000000..9693dd1 --- /dev/null +++ b/lexicons/dev/mokkenstorm/crate/graph/follow.sdl @@ -0,0 +1,6 @@ +/// Crate-native follow in the follower's repo; the Bluesky graph is not +/// the feed graph. +record follow @main { + createdAt: Datetime! + subject: Did! +} diff --git a/shared/manifest.toml b/shared/manifest.toml index 6971071..07d2f28 100644 --- a/shared/manifest.toml +++ b/shared/manifest.toml @@ -9,7 +9,7 @@ packages = [ { name = "argv", version = "1.1.0", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "3277D100448BDB4A29B6D58C0F36F631CBC349E8BDD09766C6309DF202831140" }, { name = "atproto_client", version = "0.1.1", build_tools = ["gleam"], requirements = ["gleam_crypto", "gleam_http", "gleam_json", "gleam_stdlib", "gleam_time", "gose", "kryptos"], otp_app = "atproto_client", source = "hex", outer_checksum = "97A6C830B0CF6F3EB9BA6ECF92C7F4E57366919F417DA35FD325431C03B95E19" }, - { name = "atproto_codegen", version = "0.2.0", build_tools = ["gleam"], requirements = ["argv", "atproto_lexicon", "gleam_erlang", "gleam_stdlib", "justin", "simplifile"], otp_app = "atproto_codegen", source = "hex", outer_checksum = "6AF81EC4A13F56FC9469E8C842741ABDC18AB15C3EC163AB137B9E2EAEA09A3A" }, + { name = "atproto_codegen", version = "0.3.0", build_tools = ["gleam"], requirements = ["argv", "atproto_lexicon", "gleam_erlang", "gleam_stdlib", "justin", "simplifile"], otp_app = "atproto_codegen", source = "hex", outer_checksum = "CA1DA478624BA2E3F7E54627BC1784F5F4093BDA12C50BF45CDD2E802D3BBD9B" }, { name = "atproto_lexicon", version = "0.1.0", build_tools = ["gleam"], requirements = ["gleam_http", "gleam_json", "gleam_stdlib", "simplifile"], otp_app = "atproto_lexicon", source = "hex", outer_checksum = "556D2AE353100AD0CFB279228346C23E8A733FE733250E5F3E9A4634AF574815" }, { name = "atproto_sdl", version = "0.1.1", build_tools = ["gleam"], requirements = ["argv", "atproto_lexicon", "filepath", "gleam_stdlib", "simplifile"], otp_app = "atproto_sdl", source = "hex", outer_checksum = "1217AB1A040DF4CE3C095F700E3C29B19D19DA524389EB28B049C62D264F7D10" }, { name = "bigi", version = "4.1.1", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "bigi", source = "hex", outer_checksum = "44FEDF1DF5C1F426A80B67C32B976D0828D66524E11BDC2DD22B78D37C883BA7" },