@atproto/bsky 0.0.213 → 0.0.215

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts +4 -0
  3. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts.map +1 -0
  4. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js +104 -0
  5. package/dist/api/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -0
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/index.js +2 -0
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/feature-gates.d.ts +1 -0
  10. package/dist/feature-gates.d.ts.map +1 -1
  11. package/dist/feature-gates.js +1 -0
  12. package/dist/feature-gates.js.map +1 -1
  13. package/dist/lexicon/index.d.ts +4 -0
  14. package/dist/lexicon/index.d.ts.map +1 -1
  15. package/dist/lexicon/index.js +8 -0
  16. package/dist/lexicon/index.js.map +1 -1
  17. package/dist/lexicon/lexicons.d.ts +236 -16
  18. package/dist/lexicon/lexicons.d.ts.map +1 -1
  19. package/dist/lexicon/lexicons.js +120 -8
  20. package/dist/lexicon/lexicons.js.map +1 -1
  21. package/dist/lexicon/types/app/bsky/draft/defs.d.ts +3 -3
  22. package/dist/lexicon/types/app/bsky/draft/defs.d.ts.map +1 -1
  23. package/dist/lexicon/types/app/bsky/draft/defs.js.map +1 -1
  24. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts +26 -0
  25. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.d.ts.map +1 -0
  26. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.js +7 -0
  27. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.js.map +1 -0
  28. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.d.ts +27 -0
  29. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.d.ts.map +1 -0
  30. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.js +7 -0
  31. package/dist/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.js.map +1 -0
  32. package/dist/lexicon/types/com/germnetwork/declaration.d.ts +7 -1
  33. package/dist/lexicon/types/com/germnetwork/declaration.d.ts.map +1 -1
  34. package/dist/lexicon/types/com/germnetwork/declaration.js.map +1 -1
  35. package/package.json +7 -7
  36. package/src/api/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +176 -0
  37. package/src/api/index.ts +2 -0
  38. package/src/feature-gates.ts +1 -0
  39. package/src/lexicon/index.ts +26 -0
  40. package/src/lexicon/lexicons.ts +133 -8
  41. package/src/lexicon/types/app/bsky/draft/defs.ts +3 -3
  42. package/src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts +44 -0
  43. package/src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.ts +45 -0
  44. package/src/lexicon/types/com/germnetwork/declaration.ts +7 -1
  45. package/tests/views/get-suggested-onboarding-users.test.ts +186 -0
  46. package/tsconfig.build.tsbuildinfo +1 -1
@@ -21,8 +21,8 @@ export interface Draft {
21
21
  $type?: 'app.bsky.draft.defs#draft';
22
22
  /** UUIDv4 identifier of the device that created this draft. */
23
23
  deviceId?: string;
24
- /** Platform on which the draft was created. */
25
- platform?: 'web' | 'ios' | 'android' | (string & {});
24
+ /** The device and/or platform on which the draft was created. */
25
+ deviceName?: string;
26
26
  /** Array of draft posts that compose this draft. */
27
27
  posts: DraftPost[];
28
28
  /** Indicates human language of posts primary text content. */
@@ -41,7 +41,7 @@ export declare function validateDraft<V>(v: V): ValidationResult<Draft & V>;
41
41
  /** One of the posts that compose a draft. */
42
42
  export interface DraftPost {
43
43
  $type?: 'app.bsky.draft.defs#draftPost';
44
- /** The primary post content. */
44
+ /** The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts. */
45
45
  text: string;
46
46
  labels?: $Typed<ComAtprotoLabelDefs.SelfLabels> | {
47
47
  $type: string;
@@ -1 +1 @@
1
- {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/defs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defs.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/defs.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/defs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyFeedPostgate from '../feed/postgate.js'\nimport type * as AppBskyFeedThreadgate from '../feed/threadgate.js'\nimport type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js'\nimport type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.draft.defs'\n\n/** A draft with an identifier, used to store drafts in private storage (stash). */\nexport interface DraftWithId {\n $type?: 'app.bsky.draft.defs#draftWithId'\n /** A TID to be used as a draft identifier. */\n id: string\n draft: Draft\n}\n\nconst hashDraftWithId = 'draftWithId'\n\nexport function isDraftWithId<V>(v: V) {\n return is$typed(v, id, hashDraftWithId)\n}\n\nexport function validateDraftWithId<V>(v: V) {\n return validate<DraftWithId & V>(v, id, hashDraftWithId)\n}\n\n/** A draft containing an array of draft posts. */\nexport interface Draft {\n $type?: 'app.bsky.draft.defs#draft'\n /** UUIDv4 identifier of the device that created this draft. */\n deviceId?: string\n /** Platform on which the draft was created. */\n platform?: 'web' | 'ios' | 'android' | (string & {})\n /** Array of draft posts that compose this draft. */\n posts: DraftPost[]\n /** Indicates human language of posts primary text content. */\n langs?: string[]\n /** Embedding rules for the postgates to be created when this draft is published. */\n postgateEmbeddingRules?: (\n | $Typed<AppBskyFeedPostgate.DisableRule>\n | { $type: string }\n )[]\n /** Allow-rules for the threadgate to be created when this draft is published. */\n threadgateAllow?: (\n | $Typed<AppBskyFeedThreadgate.MentionRule>\n | $Typed<AppBskyFeedThreadgate.FollowerRule>\n | $Typed<AppBskyFeedThreadgate.FollowingRule>\n | $Typed<AppBskyFeedThreadgate.ListRule>\n | { $type: string }\n )[]\n}\n\nconst hashDraft = 'draft'\n\nexport function isDraft<V>(v: V) {\n return is$typed(v, id, hashDraft)\n}\n\nexport function validateDraft<V>(v: V) {\n return validate<Draft & V>(v, id, hashDraft)\n}\n\n/** One of the posts that compose a draft. */\nexport interface DraftPost {\n $type?: 'app.bsky.draft.defs#draftPost'\n /** The primary post content. */\n text: string\n labels?: $Typed<ComAtprotoLabelDefs.SelfLabels> | { $type: string }\n embedImages?: DraftEmbedImage[]\n embedVideos?: DraftEmbedVideo[]\n embedExternals?: DraftEmbedExternal[]\n embedRecords?: DraftEmbedRecord[]\n}\n\nconst hashDraftPost = 'draftPost'\n\nexport function isDraftPost<V>(v: V) {\n return is$typed(v, id, hashDraftPost)\n}\n\nexport function validateDraftPost<V>(v: V) {\n return validate<DraftPost & V>(v, id, hashDraftPost)\n}\n\n/** View to present drafts data to users. */\nexport interface DraftView {\n $type?: 'app.bsky.draft.defs#draftView'\n /** A TID to be used as a draft identifier. */\n id: string\n draft: Draft\n /** The time the draft was created. */\n createdAt: string\n /** The time the draft was last updated. */\n updatedAt: string\n}\n\nconst hashDraftView = 'draftView'\n\nexport function isDraftView<V>(v: V) {\n return is$typed(v, id, hashDraftView)\n}\n\nexport function validateDraftView<V>(v: V) {\n return validate<DraftView & V>(v, id, hashDraftView)\n}\n\nexport interface DraftEmbedLocalRef {\n $type?: 'app.bsky.draft.defs#draftEmbedLocalRef'\n /** Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts. */\n path: string\n}\n\nconst hashDraftEmbedLocalRef = 'draftEmbedLocalRef'\n\nexport function isDraftEmbedLocalRef<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedLocalRef)\n}\n\nexport function validateDraftEmbedLocalRef<V>(v: V) {\n return validate<DraftEmbedLocalRef & V>(v, id, hashDraftEmbedLocalRef)\n}\n\nexport interface DraftEmbedCaption {\n $type?: 'app.bsky.draft.defs#draftEmbedCaption'\n lang: string\n content: string\n}\n\nconst hashDraftEmbedCaption = 'draftEmbedCaption'\n\nexport function isDraftEmbedCaption<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedCaption)\n}\n\nexport function validateDraftEmbedCaption<V>(v: V) {\n return validate<DraftEmbedCaption & V>(v, id, hashDraftEmbedCaption)\n}\n\nexport interface DraftEmbedImage {\n $type?: 'app.bsky.draft.defs#draftEmbedImage'\n localRef: DraftEmbedLocalRef\n alt?: string\n}\n\nconst hashDraftEmbedImage = 'draftEmbedImage'\n\nexport function isDraftEmbedImage<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedImage)\n}\n\nexport function validateDraftEmbedImage<V>(v: V) {\n return validate<DraftEmbedImage & V>(v, id, hashDraftEmbedImage)\n}\n\nexport interface DraftEmbedVideo {\n $type?: 'app.bsky.draft.defs#draftEmbedVideo'\n localRef: DraftEmbedLocalRef\n alt?: string\n captions?: DraftEmbedCaption[]\n}\n\nconst hashDraftEmbedVideo = 'draftEmbedVideo'\n\nexport function isDraftEmbedVideo<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedVideo)\n}\n\nexport function validateDraftEmbedVideo<V>(v: V) {\n return validate<DraftEmbedVideo & V>(v, id, hashDraftEmbedVideo)\n}\n\nexport interface DraftEmbedExternal {\n $type?: 'app.bsky.draft.defs#draftEmbedExternal'\n uri: string\n}\n\nconst hashDraftEmbedExternal = 'draftEmbedExternal'\n\nexport function isDraftEmbedExternal<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedExternal)\n}\n\nexport function validateDraftEmbedExternal<V>(v: V) {\n return validate<DraftEmbedExternal & V>(v, id, hashDraftEmbedExternal)\n}\n\nexport interface DraftEmbedRecord {\n $type?: 'app.bsky.draft.defs#draftEmbedRecord'\n record: ComAtprotoRepoStrongRef.Main\n}\n\nconst hashDraftEmbedRecord = 'draftEmbedRecord'\n\nexport function isDraftEmbedRecord<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedRecord)\n}\n\nexport function validateDraftEmbedRecord<V>(v: V) {\n return validate<DraftEmbedRecord & V>(v, id, hashDraftEmbedRecord)\n}\n"]}
1
+ {"version":3,"file":"defs.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/draft/defs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyFeedPostgate from '../feed/postgate.js'\nimport type * as AppBskyFeedThreadgate from '../feed/threadgate.js'\nimport type * as ComAtprotoLabelDefs from '../../../com/atproto/label/defs.js'\nimport type * as ComAtprotoRepoStrongRef from '../../../com/atproto/repo/strongRef.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.draft.defs'\n\n/** A draft with an identifier, used to store drafts in private storage (stash). */\nexport interface DraftWithId {\n $type?: 'app.bsky.draft.defs#draftWithId'\n /** A TID to be used as a draft identifier. */\n id: string\n draft: Draft\n}\n\nconst hashDraftWithId = 'draftWithId'\n\nexport function isDraftWithId<V>(v: V) {\n return is$typed(v, id, hashDraftWithId)\n}\n\nexport function validateDraftWithId<V>(v: V) {\n return validate<DraftWithId & V>(v, id, hashDraftWithId)\n}\n\n/** A draft containing an array of draft posts. */\nexport interface Draft {\n $type?: 'app.bsky.draft.defs#draft'\n /** UUIDv4 identifier of the device that created this draft. */\n deviceId?: string\n /** The device and/or platform on which the draft was created. */\n deviceName?: string\n /** Array of draft posts that compose this draft. */\n posts: DraftPost[]\n /** Indicates human language of posts primary text content. */\n langs?: string[]\n /** Embedding rules for the postgates to be created when this draft is published. */\n postgateEmbeddingRules?: (\n | $Typed<AppBskyFeedPostgate.DisableRule>\n | { $type: string }\n )[]\n /** Allow-rules for the threadgate to be created when this draft is published. */\n threadgateAllow?: (\n | $Typed<AppBskyFeedThreadgate.MentionRule>\n | $Typed<AppBskyFeedThreadgate.FollowerRule>\n | $Typed<AppBskyFeedThreadgate.FollowingRule>\n | $Typed<AppBskyFeedThreadgate.ListRule>\n | { $type: string }\n )[]\n}\n\nconst hashDraft = 'draft'\n\nexport function isDraft<V>(v: V) {\n return is$typed(v, id, hashDraft)\n}\n\nexport function validateDraft<V>(v: V) {\n return validate<Draft & V>(v, id, hashDraft)\n}\n\n/** One of the posts that compose a draft. */\nexport interface DraftPost {\n $type?: 'app.bsky.draft.defs#draftPost'\n /** The primary post content. It has a higher limit than post contents to allow storing a larger text that can later be refined into smaller posts. */\n text: string\n labels?: $Typed<ComAtprotoLabelDefs.SelfLabels> | { $type: string }\n embedImages?: DraftEmbedImage[]\n embedVideos?: DraftEmbedVideo[]\n embedExternals?: DraftEmbedExternal[]\n embedRecords?: DraftEmbedRecord[]\n}\n\nconst hashDraftPost = 'draftPost'\n\nexport function isDraftPost<V>(v: V) {\n return is$typed(v, id, hashDraftPost)\n}\n\nexport function validateDraftPost<V>(v: V) {\n return validate<DraftPost & V>(v, id, hashDraftPost)\n}\n\n/** View to present drafts data to users. */\nexport interface DraftView {\n $type?: 'app.bsky.draft.defs#draftView'\n /** A TID to be used as a draft identifier. */\n id: string\n draft: Draft\n /** The time the draft was created. */\n createdAt: string\n /** The time the draft was last updated. */\n updatedAt: string\n}\n\nconst hashDraftView = 'draftView'\n\nexport function isDraftView<V>(v: V) {\n return is$typed(v, id, hashDraftView)\n}\n\nexport function validateDraftView<V>(v: V) {\n return validate<DraftView & V>(v, id, hashDraftView)\n}\n\nexport interface DraftEmbedLocalRef {\n $type?: 'app.bsky.draft.defs#draftEmbedLocalRef'\n /** Local, on-device ref to file to be embedded. Embeds are currently device-bound for drafts. */\n path: string\n}\n\nconst hashDraftEmbedLocalRef = 'draftEmbedLocalRef'\n\nexport function isDraftEmbedLocalRef<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedLocalRef)\n}\n\nexport function validateDraftEmbedLocalRef<V>(v: V) {\n return validate<DraftEmbedLocalRef & V>(v, id, hashDraftEmbedLocalRef)\n}\n\nexport interface DraftEmbedCaption {\n $type?: 'app.bsky.draft.defs#draftEmbedCaption'\n lang: string\n content: string\n}\n\nconst hashDraftEmbedCaption = 'draftEmbedCaption'\n\nexport function isDraftEmbedCaption<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedCaption)\n}\n\nexport function validateDraftEmbedCaption<V>(v: V) {\n return validate<DraftEmbedCaption & V>(v, id, hashDraftEmbedCaption)\n}\n\nexport interface DraftEmbedImage {\n $type?: 'app.bsky.draft.defs#draftEmbedImage'\n localRef: DraftEmbedLocalRef\n alt?: string\n}\n\nconst hashDraftEmbedImage = 'draftEmbedImage'\n\nexport function isDraftEmbedImage<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedImage)\n}\n\nexport function validateDraftEmbedImage<V>(v: V) {\n return validate<DraftEmbedImage & V>(v, id, hashDraftEmbedImage)\n}\n\nexport interface DraftEmbedVideo {\n $type?: 'app.bsky.draft.defs#draftEmbedVideo'\n localRef: DraftEmbedLocalRef\n alt?: string\n captions?: DraftEmbedCaption[]\n}\n\nconst hashDraftEmbedVideo = 'draftEmbedVideo'\n\nexport function isDraftEmbedVideo<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedVideo)\n}\n\nexport function validateDraftEmbedVideo<V>(v: V) {\n return validate<DraftEmbedVideo & V>(v, id, hashDraftEmbedVideo)\n}\n\nexport interface DraftEmbedExternal {\n $type?: 'app.bsky.draft.defs#draftEmbedExternal'\n uri: string\n}\n\nconst hashDraftEmbedExternal = 'draftEmbedExternal'\n\nexport function isDraftEmbedExternal<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedExternal)\n}\n\nexport function validateDraftEmbedExternal<V>(v: V) {\n return validate<DraftEmbedExternal & V>(v, id, hashDraftEmbedExternal)\n}\n\nexport interface DraftEmbedRecord {\n $type?: 'app.bsky.draft.defs#draftEmbedRecord'\n record: ComAtprotoRepoStrongRef.Main\n}\n\nconst hashDraftEmbedRecord = 'draftEmbedRecord'\n\nexport function isDraftEmbedRecord<V>(v: V) {\n return is$typed(v, id, hashDraftEmbedRecord)\n}\n\nexport function validateDraftEmbedRecord<V>(v: V) {\n return validate<DraftEmbedRecord & V>(v, id, hashDraftEmbedRecord)\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import type * as AppBskyActorDefs from '../actor/defs.js';
2
+ export type QueryParams = {
3
+ /** Category of users to get suggestions for. */
4
+ category?: string;
5
+ limit: number;
6
+ };
7
+ export type InputSchema = undefined;
8
+ export interface OutputSchema {
9
+ actors: AppBskyActorDefs.ProfileView[];
10
+ /** Snowflake for this recommendation, use when submitting recommendation events. */
11
+ recId?: string;
12
+ }
13
+ export type HandlerInput = void;
14
+ export interface HandlerSuccess {
15
+ encoding: 'application/json';
16
+ body: OutputSchema;
17
+ headers?: {
18
+ [key: string]: string;
19
+ };
20
+ }
21
+ export interface HandlerError {
22
+ status: number;
23
+ message?: string;
24
+ }
25
+ export type HandlerOutput = HandlerError | HandlerSuccess;
26
+ //# sourceMappingURL=getSuggestedOnboardingUsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedOnboardingUsers.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,KAAK,gBAAgB,MAAM,kBAAkB,CAAA;AAMzD,MAAM,MAAM,WAAW,GAAG;IACxB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,gBAAgB,CAAC,WAAW,EAAE,CAAA;IACtC,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.unspecced.getSuggestedOnboardingUsers';
7
+ //# sourceMappingURL=getSuggestedOnboardingUsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedOnboardingUsers.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAGzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,gDAAgD,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\nimport type * as AppBskyActorDefs from '../actor/defs.js'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.unspecced.getSuggestedOnboardingUsers'\n\nexport type QueryParams = {\n /** Category of users to get suggestions for. */\n category?: string\n limit: number\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n actors: AppBskyActorDefs.ProfileView[]\n /** Snowflake for this recommendation, use when submitting recommendation events. */\n recId?: string\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
@@ -0,0 +1,27 @@
1
+ export type QueryParams = {
2
+ /** DID of the account making the request (not included for public/unauthenticated queries). */
3
+ viewer?: string;
4
+ /** Category of users to get suggestions for. */
5
+ category?: string;
6
+ limit: number;
7
+ };
8
+ export type InputSchema = undefined;
9
+ export interface OutputSchema {
10
+ dids: string[];
11
+ /** Snowflake for this recommendation, use when submitting recommendation events. */
12
+ recId?: string;
13
+ }
14
+ export type HandlerInput = void;
15
+ export interface HandlerSuccess {
16
+ encoding: 'application/json';
17
+ body: OutputSchema;
18
+ headers?: {
19
+ [key: string]: string;
20
+ };
21
+ }
22
+ export interface HandlerError {
23
+ status: number;
24
+ message?: string;
25
+ }
26
+ export type HandlerOutput = HandlerError | HandlerSuccess;
27
+ //# sourceMappingURL=getSuggestedOnboardingUsersSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedOnboardingUsersSkeleton.d.ts","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.ts"],"names":[],"mappings":"AAgBA,MAAM,MAAM,WAAW,GAAG;IACxB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAA;AAEnC,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,CAAA;AAE/B,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,kBAAkB,CAAA;IAC5B,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,CAAA"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const lexicons_1 = require("../../../../lexicons");
4
+ const util_1 = require("../../../../util");
5
+ const is$typed = util_1.is$typed, validate = lexicons_1.validate;
6
+ const id = 'app.bsky.unspecced.getSuggestedOnboardingUsersSkeleton';
7
+ //# sourceMappingURL=getSuggestedOnboardingUsersSkeleton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getSuggestedOnboardingUsersSkeleton.js","sourceRoot":"","sources":["../../../../../../src/lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.ts"],"names":[],"mappings":";;AAKA,mDAA4D;AAC5D,2CAIyB;AAEzB,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,wDAAwD,CAAA","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../../lexicons'\nimport {\n type $Typed,\n is$typed as _is$typed,\n type OmitKey,\n} from '../../../../util'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'app.bsky.unspecced.getSuggestedOnboardingUsersSkeleton'\n\nexport type QueryParams = {\n /** DID of the account making the request (not included for public/unauthenticated queries). */\n viewer?: string\n /** Category of users to get suggestions for. */\n category?: string\n limit: number\n}\nexport type InputSchema = undefined\n\nexport interface OutputSchema {\n dids: string[]\n /** Snowflake for this recommendation, use when submitting recommendation events. */\n recId?: string\n}\n\nexport type HandlerInput = void\n\nexport interface HandlerSuccess {\n encoding: 'application/json'\n body: OutputSchema\n headers?: { [key: string]: string }\n}\n\nexport interface HandlerError {\n status: number\n message?: string\n}\n\nexport type HandlerOutput = HandlerError | HandlerSuccess\n"]}
@@ -4,10 +4,14 @@
4
4
  import { type ValidationResult } from '@atproto/lexicon';
5
5
  export interface Main {
6
6
  $type: 'com.germnetwork.declaration';
7
+ /** Semver version number, without pre-release or build information, for the format of opaque content */
7
8
  version: string;
9
+ /** Opaque value, an ed25519 public key prefixed with a byte enum */
8
10
  currentKey: Uint8Array;
9
11
  messageMe?: MessageMe;
12
+ /** Opaque value, contains MLS KeyPackage(s), and other signature data, and is signed by the currentKey */
10
13
  keyPackage?: Uint8Array;
14
+ /** Array of opaque values to allow for key rolling */
11
15
  continuityProofs?: Uint8Array[];
12
16
  [k: string]: unknown;
13
17
  }
@@ -16,8 +20,10 @@ export declare function validateMain<V>(v: V): ValidationResult<Main & V>;
16
20
  export { type Main as Record, isMain as isRecord, validateMain as validateRecord, };
17
21
  export interface MessageMe {
18
22
  $type?: 'com.germnetwork.declaration#messageMe';
23
+ /** A URL to present to an account that does not have its own com.germnetwork.declaration record, must have an empty fragment component, where the app should fill in the fragment component with the DIDs of the two accounts who wish to message each other */
19
24
  messageMeUrl: string;
20
- showButtonTo: 'usersIFollow' | 'everyone' | (string & {});
25
+ /** The policy of who can message the account, this value is included in the keyPackage, but is duplicated here to allow applications to decide if they should show a 'Message on Germ' button to the viewer. */
26
+ showButtonTo: 'none' | 'usersIFollow' | 'everyone' | (string & {});
21
27
  }
22
28
  export declare function isMessageMe<V>(v: V): v is import("../../../util").$TypedObject<V, "com.germnetwork.declaration", "messageMe">;
23
29
  export declare function validateMessageMe<V>(v: V): ValidationResult<MessageMe & V>;
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../../src/lexicon/types/com/germnetwork/declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AASjE,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,6BAA6B,CAAA;IACpC,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAA;IAC/B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC;AAED,OAAO,EACL,KAAK,IAAI,IAAI,MAAM,EACnB,MAAM,IAAI,QAAQ,EAClB,YAAY,IAAI,cAAc,GAC/B,CAAA;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,uCAAuC,CAAA;IAC/C,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,cAAc,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;CAC1D;AAID,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,4FAElC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mCAExC"}
1
+ {"version":3,"file":"declaration.d.ts","sourceRoot":"","sources":["../../../../../src/lexicon/types/com/germnetwork/declaration.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,KAAK,gBAAgB,EAAW,MAAM,kBAAkB,CAAA;AASjE,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,6BAA6B,CAAA;IACpC,wGAAwG;IACxG,OAAO,EAAE,MAAM,CAAA;IACf,oEAAoE;IACpE,UAAU,EAAE,UAAU,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,0GAA0G;IAC1G,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAA;IAC/B,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CACrB;AAID,wBAAgB,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,uFAE7B;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,8BAEnC;AAED,OAAO,EACL,KAAK,IAAI,IAAI,MAAM,EACnB,MAAM,IAAI,QAAQ,EAClB,YAAY,IAAI,cAAc,GAC/B,CAAA;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,CAAC,EAAE,uCAAuC,CAAA;IAC/C,gQAAgQ;IAChQ,YAAY,EAAE,MAAM,CAAA;IACpB,gNAAgN;IAChN,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;CACnE;AAID,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,4FAElC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,mCAExC"}
@@ -1 +1 @@
1
- {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../../../../src/lexicon/types/com/germnetwork/declaration.ts"],"names":[],"mappings":";;AAwBA,wBAEC;AAQW,0BAAQ;AANpB,oCAEC;AAKiB,sCAAc;AAWhC,kCAEC;AAED,8CAEC;AA/CD,gDAAyD;AACzD,wCAAgF;AAEhF,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,6BAA6B,CAAA;AAYxC,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC;AAcD,MAAM,aAAa,GAAG,WAAW,CAAA;AAEjC,SAAgB,WAAW,CAAI,CAAI;IACjC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAAI,CAAI;IACvC,OAAO,QAAQ,CAAgB,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;AACtD,CAAC","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../lexicons'\nimport { type $Typed, is$typed as _is$typed, type OmitKey } from '../../../util'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'com.germnetwork.declaration'\n\nexport interface Main {\n $type: 'com.germnetwork.declaration'\n version: string\n currentKey: Uint8Array\n messageMe?: MessageMe\n keyPackage?: Uint8Array\n continuityProofs?: Uint8Array[]\n [k: string]: unknown\n}\n\nconst hashMain = 'main'\n\nexport function isMain<V>(v: V) {\n return is$typed(v, id, hashMain)\n}\n\nexport function validateMain<V>(v: V) {\n return validate<Main & V>(v, id, hashMain, true)\n}\n\nexport {\n type Main as Record,\n isMain as isRecord,\n validateMain as validateRecord,\n}\n\nexport interface MessageMe {\n $type?: 'com.germnetwork.declaration#messageMe'\n messageMeUrl: string\n showButtonTo: 'usersIFollow' | 'everyone' | (string & {})\n}\n\nconst hashMessageMe = 'messageMe'\n\nexport function isMessageMe<V>(v: V) {\n return is$typed(v, id, hashMessageMe)\n}\n\nexport function validateMessageMe<V>(v: V) {\n return validate<MessageMe & V>(v, id, hashMessageMe)\n}\n"]}
1
+ {"version":3,"file":"declaration.js","sourceRoot":"","sources":["../../../../../src/lexicon/types/com/germnetwork/declaration.ts"],"names":[],"mappings":";;AA4BA,wBAEC;AAQW,0BAAQ;AANpB,oCAEC;AAKiB,sCAAc;AAahC,kCAEC;AAED,8CAEC;AArDD,gDAAyD;AACzD,wCAAgF;AAEhF,MAAM,QAAQ,GAAG,eAAS,EACxB,QAAQ,GAAG,mBAAS,CAAA;AACtB,MAAM,EAAE,GAAG,6BAA6B,CAAA;AAgBxC,MAAM,QAAQ,GAAG,MAAM,CAAA;AAEvB,SAAgB,MAAM,CAAI,CAAI;IAC5B,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,CAAI;IAClC,OAAO,QAAQ,CAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC;AAgBD,MAAM,aAAa,GAAG,WAAW,CAAA;AAEjC,SAAgB,WAAW,CAAI,CAAI;IACjC,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;AACvC,CAAC;AAED,SAAgB,iBAAiB,CAAI,CAAI;IACvC,OAAO,QAAQ,CAAgB,CAAC,EAAE,EAAE,EAAE,aAAa,CAAC,CAAA;AACtD,CAAC","sourcesContent":["/**\n * GENERATED CODE - DO NOT MODIFY\n */\nimport { type ValidationResult, BlobRef } from '@atproto/lexicon'\nimport { CID } from 'multiformats/cid'\nimport { validate as _validate } from '../../../lexicons'\nimport { type $Typed, is$typed as _is$typed, type OmitKey } from '../../../util'\n\nconst is$typed = _is$typed,\n validate = _validate\nconst id = 'com.germnetwork.declaration'\n\nexport interface Main {\n $type: 'com.germnetwork.declaration'\n /** Semver version number, without pre-release or build information, for the format of opaque content */\n version: string\n /** Opaque value, an ed25519 public key prefixed with a byte enum */\n currentKey: Uint8Array\n messageMe?: MessageMe\n /** Opaque value, contains MLS KeyPackage(s), and other signature data, and is signed by the currentKey */\n keyPackage?: Uint8Array\n /** Array of opaque values to allow for key rolling */\n continuityProofs?: Uint8Array[]\n [k: string]: unknown\n}\n\nconst hashMain = 'main'\n\nexport function isMain<V>(v: V) {\n return is$typed(v, id, hashMain)\n}\n\nexport function validateMain<V>(v: V) {\n return validate<Main & V>(v, id, hashMain, true)\n}\n\nexport {\n type Main as Record,\n isMain as isRecord,\n validateMain as validateRecord,\n}\n\nexport interface MessageMe {\n $type?: 'com.germnetwork.declaration#messageMe'\n /** A URL to present to an account that does not have its own com.germnetwork.declaration record, must have an empty fragment component, where the app should fill in the fragment component with the DIDs of the two accounts who wish to message each other */\n messageMeUrl: string\n /** The policy of who can message the account, this value is included in the keyPackage, but is duplicated here to allow applications to decide if they should show a 'Message on Germ' button to the viewer. */\n showButtonTo: 'none' | 'usersIFollow' | 'everyone' | (string & {})\n}\n\nconst hashMessageMe = 'messageMe'\n\nexport function isMessageMe<V>(v: V) {\n return is$typed(v, id, hashMessageMe)\n}\n\nexport function validateMessageMe<V>(v: V) {\n return validate<MessageMe & V>(v, id, hashMessageMe)\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atproto/bsky",
3
- "version": "0.0.213",
3
+ "version": "0.0.215",
4
4
  "license": "MIT",
5
5
  "description": "Reference implementation of app.bsky App View (Bluesky API)",
6
6
  "keywords": [
@@ -53,16 +53,16 @@
53
53
  "zod": "3.23.8",
54
54
  "@atproto-labs/fetch-node": "^0.2.0",
55
55
  "@atproto-labs/xrpc-utils": "^0.0.24",
56
- "@atproto/api": "^0.18.19",
57
- "@atproto/common": "^0.5.10",
56
+ "@atproto/api": "^0.18.21",
57
+ "@atproto/common": "^0.5.11",
58
58
  "@atproto/crypto": "^0.4.5",
59
59
  "@atproto/did": "^0.3.0",
60
- "@atproto/identity": "^0.4.10",
60
+ "@atproto/identity": "^0.4.11",
61
61
  "@atproto/lexicon": "^0.6.1",
62
62
  "@atproto/repo": "^0.8.12",
63
63
  "@atproto/sync": "^0.1.39",
64
64
  "@atproto/syntax": "^0.4.3",
65
- "@atproto/xrpc-server": "^0.10.11"
65
+ "@atproto/xrpc-server": "^0.10.12"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@bufbuild/buf": "^1.28.1",
@@ -78,9 +78,9 @@
78
78
  "jest": "^28.1.2",
79
79
  "ts-node": "^10.8.2",
80
80
  "typescript": "^5.6.3",
81
- "@atproto/api": "^0.18.19",
81
+ "@atproto/api": "^0.18.21",
82
82
  "@atproto/lex-cli": "^0.9.8",
83
- "@atproto/pds": "^0.4.207",
83
+ "@atproto/pds": "^0.4.209",
84
84
  "@atproto/xrpc": "^0.7.7"
85
85
  },
86
86
  "scripts": {
@@ -0,0 +1,176 @@
1
+ import AtpAgent from '@atproto/api'
2
+ import { dedupeStrs, mapDefined, noUndefinedVals } from '@atproto/common'
3
+ import { InternalServerError } from '@atproto/xrpc-server'
4
+ import { AppContext } from '../../../../context'
5
+ import { FeatureGates } from '../../../../feature-gates'
6
+ import {
7
+ HydrateCtx,
8
+ Hydrator,
9
+ mergeManyStates,
10
+ } from '../../../../hydration/hydrator'
11
+ import { Server } from '../../../../lexicon'
12
+ import { QueryParams } from '../../../../lexicon/types/app/bsky/unspecced/getSuggestedOnboardingUsers'
13
+ import {
14
+ HydrationFnInput,
15
+ PresentationFnInput,
16
+ RulesFnInput,
17
+ SkeletonFnInput,
18
+ createPipeline,
19
+ } from '../../../../pipeline'
20
+ import { Views } from '../../../../views'
21
+
22
+ export default function (server: Server, ctx: AppContext) {
23
+ const getSuggestedOnboardingUsers = createPipeline(
24
+ skeleton,
25
+ hydration,
26
+ noBlocksOrFollows,
27
+ presentation,
28
+ )
29
+ server.app.bsky.unspecced.getSuggestedOnboardingUsers({
30
+ auth: ctx.authVerifier.standardOptional,
31
+ handler: async ({ auth, params, req }) => {
32
+ const viewer = auth.credentials.iss
33
+ const labelers = ctx.reqLabelers(req)
34
+ const hydrateCtx = await ctx.hydrator.createContext({ labelers, viewer })
35
+ const headers = noUndefinedVals({
36
+ 'accept-language': req.headers['accept-language'],
37
+ 'x-bsky-topics': Array.isArray(req.headers['x-bsky-topics'])
38
+ ? req.headers['x-bsky-topics'].join(',')
39
+ : req.headers['x-bsky-topics'],
40
+ })
41
+ const result = await getSuggestedOnboardingUsers(
42
+ {
43
+ ...params,
44
+ hydrateCtx,
45
+ headers,
46
+ },
47
+ ctx,
48
+ )
49
+ return {
50
+ encoding: 'application/json',
51
+ body: result,
52
+ }
53
+ },
54
+ })
55
+ }
56
+
57
+ // TODO: rename to `skeleton` once we can fully migrate to Discover
58
+ const skeletonFromDiscover = async (
59
+ input: SkeletonFnInput<Context, Params>,
60
+ ) => {
61
+ const { params, ctx } = input
62
+ if (!ctx.suggestionsAgent)
63
+ throw new InternalServerError('Suggestions agent not available')
64
+
65
+ const res =
66
+ await ctx.suggestionsAgent.app.bsky.unspecced.getSuggestedOnboardingUsersSkeleton(
67
+ {
68
+ limit: params.limit,
69
+ viewer: params.hydrateCtx.viewer ?? undefined,
70
+ category: params.category,
71
+ },
72
+ {
73
+ headers: params.headers,
74
+ },
75
+ )
76
+
77
+ return res.data
78
+ }
79
+
80
+ const skeletonFromTopics = async (input: SkeletonFnInput<Context, Params>) => {
81
+ const { params, ctx } = input
82
+ if (!ctx.topicsAgent)
83
+ throw new InternalServerError('Topics agent not available')
84
+
85
+ // NOTE: This is intentionally using `getSuggestedUsersSkeleton`, not `getSuggestedOnboardingUsersSkeleton`.
86
+ // We won't bother implementing `getSuggestedOnboardingUsersSkeleton` in topics since we're phasing out of it.
87
+ const res =
88
+ await ctx.topicsAgent.app.bsky.unspecced.getSuggestedUsersSkeleton(
89
+ {
90
+ limit: params.limit,
91
+ viewer: params.hydrateCtx.viewer ?? undefined,
92
+ category: params.category,
93
+ },
94
+ {
95
+ headers: params.headers,
96
+ },
97
+ )
98
+
99
+ return res.data
100
+ }
101
+
102
+ const skeleton = async (input: SkeletonFnInput<Context, Params>) => {
103
+ const useDiscover = input.ctx.featureGates.check(
104
+ input.ctx.featureGates.ids.SuggestedOnboardingUsersDiscoverAgentEnable,
105
+ input.ctx.featureGates.userContext({ did: input.params.hydrateCtx.viewer }),
106
+ )
107
+ const skeletonFn = useDiscover ? skeletonFromDiscover : skeletonFromTopics
108
+ return skeletonFn(input)
109
+ }
110
+
111
+ const hydration = async (
112
+ input: HydrationFnInput<Context, Params, SkeletonState>,
113
+ ) => {
114
+ const { ctx, params, skeleton } = input
115
+ const dids = dedupeStrs(skeleton.dids)
116
+ const pairs: Map<string, string[]> = new Map()
117
+ const viewer = params.hydrateCtx.viewer
118
+ if (viewer) {
119
+ pairs.set(viewer, dids)
120
+ }
121
+ const [profilesState, bidirectionalBlocks] = await Promise.all([
122
+ ctx.hydrator.hydrateProfiles(dids, params.hydrateCtx),
123
+ ctx.hydrator.hydrateBidirectionalBlocks(pairs, params.hydrateCtx),
124
+ ])
125
+
126
+ return mergeManyStates(profilesState, { bidirectionalBlocks })
127
+ }
128
+
129
+ const noBlocksOrFollows = (
130
+ input: RulesFnInput<Context, Params, SkeletonState>,
131
+ ) => {
132
+ const { ctx, skeleton, params, hydration } = input
133
+ const viewer = params.hydrateCtx.viewer
134
+ if (!viewer) {
135
+ return skeleton
136
+ }
137
+ const blocks = hydration.bidirectionalBlocks?.get(viewer)
138
+ return {
139
+ ...skeleton,
140
+ dids: skeleton.dids.filter((did) => {
141
+ const viewer = ctx.views.profileViewer(did, hydration)
142
+ return !blocks?.get(did) && !viewer?.following
143
+ }),
144
+ }
145
+ }
146
+
147
+ const presentation = (
148
+ input: PresentationFnInput<Context, Params, SkeletonState>,
149
+ ) => {
150
+ const { ctx, skeleton, hydration } = input
151
+ return {
152
+ recId: skeleton.recId,
153
+ actors: mapDefined(skeleton.dids, (did) =>
154
+ ctx.views.profile(did, hydration),
155
+ ),
156
+ }
157
+ }
158
+
159
+ type Context = {
160
+ hydrator: Hydrator
161
+ views: Views
162
+ topicsAgent: AtpAgent | undefined
163
+ suggestionsAgent: AtpAgent | undefined
164
+ featureGates: FeatureGates
165
+ }
166
+
167
+ type Params = QueryParams & {
168
+ hydrateCtx: HydrateCtx & { viewer: string | null }
169
+ headers: Record<string, string>
170
+ category?: string
171
+ }
172
+
173
+ type SkeletonState = {
174
+ dids: string[]
175
+ recId?: string
176
+ }
package/src/api/index.ts CHANGED
@@ -79,6 +79,7 @@ import getPopularFeedGenerators from './app/bsky/unspecced/getPopularFeedGenerat
79
79
  import getPostThreadOtherV2 from './app/bsky/unspecced/getPostThreadOtherV2'
80
80
  import getPostThreadV2 from './app/bsky/unspecced/getPostThreadV2'
81
81
  import getUnspeccedSuggestedFeeds from './app/bsky/unspecced/getSuggestedFeeds'
82
+ import getSuggestedOnboardingUsers from './app/bsky/unspecced/getSuggestedOnboardingUsers'
82
83
  import getSuggestedStarterPacks from './app/bsky/unspecced/getSuggestedStarterPacks'
83
84
  import getSuggestedUsers from './app/bsky/unspecced/getSuggestedUsers'
84
85
  import getTaggedSuggestions from './app/bsky/unspecced/getTaggedSuggestions'
@@ -165,6 +166,7 @@ export default function (server: Server, ctx: AppContext) {
165
166
  getTrendingTopics(server, ctx)
166
167
  getTrends(server, ctx)
167
168
  getOnboardingSuggestedStarterPacks(server, ctx)
169
+ getSuggestedOnboardingUsers(server, ctx)
168
170
  getSuggestedStarterPacks(server, ctx)
169
171
  getSuggestedUsers(server, ctx)
170
172
  getUnspeccedSuggestedFeeds(server, ctx)
@@ -34,6 +34,7 @@ export enum FeatureGateID {
34
34
  */
35
35
  _ = '',
36
36
  SuggestedUsersDiscoverAgentEnable = 'suggested_users:discover_agent:enable',
37
+ SuggestedOnboardingUsersDiscoverAgentEnable = 'suggested_onboarding_users:discover_agent:enable',
37
38
  ThreadsReplyRankingExplorationEnable = 'threads:reply_ranking_exploration:enable',
38
39
  SearchFilteringExplorationEnable = 'search:filtering_exploration:enable',
39
40
  }
@@ -96,6 +96,8 @@ import * as AppBskyUnspeccedGetPostThreadOtherV2 from './types/app/bsky/unspecce
96
96
  import * as AppBskyUnspeccedGetPostThreadV2 from './types/app/bsky/unspecced/getPostThreadV2.js'
97
97
  import * as AppBskyUnspeccedGetSuggestedFeeds from './types/app/bsky/unspecced/getSuggestedFeeds.js'
98
98
  import * as AppBskyUnspeccedGetSuggestedFeedsSkeleton from './types/app/bsky/unspecced/getSuggestedFeedsSkeleton.js'
99
+ import * as AppBskyUnspeccedGetSuggestedOnboardingUsers from './types/app/bsky/unspecced/getSuggestedOnboardingUsers.js'
100
+ import * as AppBskyUnspeccedGetSuggestedOnboardingUsersSkeleton from './types/app/bsky/unspecced/getSuggestedOnboardingUsersSkeleton.js'
99
101
  import * as AppBskyUnspeccedGetSuggestedStarterPacks from './types/app/bsky/unspecced/getSuggestedStarterPacks.js'
100
102
  import * as AppBskyUnspeccedGetSuggestedStarterPacksSkeleton from './types/app/bsky/unspecced/getSuggestedStarterPacksSkeleton.js'
101
103
  import * as AppBskyUnspeccedGetSuggestedUsers from './types/app/bsky/unspecced/getSuggestedUsers.js'
@@ -1444,6 +1446,30 @@ export class AppBskyUnspeccedNS {
1444
1446
  return this._server.xrpc.method(nsid, cfg)
1445
1447
  }
1446
1448
 
1449
+ getSuggestedOnboardingUsers<A extends Auth = void>(
1450
+ cfg: MethodConfigOrHandler<
1451
+ A,
1452
+ AppBskyUnspeccedGetSuggestedOnboardingUsers.QueryParams,
1453
+ AppBskyUnspeccedGetSuggestedOnboardingUsers.HandlerInput,
1454
+ AppBskyUnspeccedGetSuggestedOnboardingUsers.HandlerOutput
1455
+ >,
1456
+ ) {
1457
+ const nsid = 'app.bsky.unspecced.getSuggestedOnboardingUsers' // @ts-ignore
1458
+ return this._server.xrpc.method(nsid, cfg)
1459
+ }
1460
+
1461
+ getSuggestedOnboardingUsersSkeleton<A extends Auth = void>(
1462
+ cfg: MethodConfigOrHandler<
1463
+ A,
1464
+ AppBskyUnspeccedGetSuggestedOnboardingUsersSkeleton.QueryParams,
1465
+ AppBskyUnspeccedGetSuggestedOnboardingUsersSkeleton.HandlerInput,
1466
+ AppBskyUnspeccedGetSuggestedOnboardingUsersSkeleton.HandlerOutput
1467
+ >,
1468
+ ) {
1469
+ const nsid = 'app.bsky.unspecced.getSuggestedOnboardingUsersSkeleton' // @ts-ignore
1470
+ return this._server.xrpc.method(nsid, cfg)
1471
+ }
1472
+
1447
1473
  getSuggestedStarterPacks<A extends Auth = void>(
1448
1474
  cfg: MethodConfigOrHandler<
1449
1475
  A,