@singi-labs/sifa-sdk 0.18.2 → 0.18.3

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.
package/dist/index.cjs CHANGED
@@ -1144,6 +1144,10 @@ var APP_CATEGORY_MAP = {
1144
1144
  // Onboard from the angrydutchman.houseofmadness.org profile audit.
1145
1145
  askeverything: "Q&A",
1146
1146
  // app.askeverything.feed.answer — authored answers to community questions
1147
+ greengale: "Articles",
1148
+ // app.greengale.blog.entry — authored blog posts (title, subtitle, Markdown body)
1149
+ kut: "Social",
1150
+ // social.kut.community.membership — joining a Kut community (a commitment)
1147
1151
  // Web-only (rendered in pills/cards via sifa-web atproto-apps.ts;
1148
1152
  // no backend scan collection yet)
1149
1153
  linkat: "Links",
@@ -1284,6 +1288,16 @@ var activity_tiers_default = {
1284
1288
  app: "askeverything",
1285
1289
  notes: "An authored answer to a community question (opinion with body text). app.askeverything.actor.* and graph.follow are excluded backend-side."
1286
1290
  },
1291
+ "app.greengale.blog.entry": {
1292
+ tier: "creation",
1293
+ app: "greengale",
1294
+ notes: "An authored blog post (title, subtitle, Markdown body, visibility). app.greengale.document and app.greengale.publication (drafts/containers) are excluded backend-side."
1295
+ },
1296
+ "social.kut.community.membership": {
1297
+ tier: "creation",
1298
+ app: "kut",
1299
+ notes: "Joining a Kut community, a commitment. Mirrors Colibri/OpenSocial memberships, which are creation-tier."
1300
+ },
1287
1301
  "app.mcp.server": {
1288
1302
  tier: "creation",
1289
1303
  app: "mcp"
@@ -3459,6 +3473,18 @@ var APP_URL_PATTERNS = Object.freeze({
3459
3473
  // per-record permalink we can build from {did, rkey}. Its profile route
3460
3474
  // /profile/{handle} does resolve by atproto handle, so fall back to that.
3461
3475
  profileUrlPattern: "https://askeverything.app/profile/{handle}"
3476
+ },
3477
+ greengale: {
3478
+ // GreenGale (greengale.app) renders each blog entry at /{handle}/{rkey}.
3479
+ // Verified live against a real post. Self-permalink for this record.
3480
+ urlPattern: "https://greengale.app/{handle}/{rkey}",
3481
+ profileUrlPattern: "https://greengale.app/{handle}"
3482
+ },
3483
+ kut: {
3484
+ // Kut (kut.social) is a community app. A membership record has no page of
3485
+ // its own; the card links to the community it joined, built from the
3486
+ // membership's community.uri in resolve-card-url. Homepage fallback only.
3487
+ profileUrlPattern: "https://kut.social"
3462
3488
  }
3463
3489
  });
3464
3490
  var COLLECTION_TO_APP = [
@@ -3544,7 +3570,9 @@ var COLLECTION_TO_APP = [
3544
3570
  // Onboard from tijs.org profile audit.
3545
3571
  ["app.dropanchor.", "dropanchor"],
3546
3572
  // Onboard from angrydutchman.houseofmadness.org profile audit.
3547
- ["app.askeverything.", "askeverything"]
3573
+ ["app.askeverything.", "askeverything"],
3574
+ ["app.greengale.", "greengale"],
3575
+ ["social.kut.", "kut"]
3548
3576
  ];
3549
3577
 
3550
3578
  // src/cards/resolve-card-url.ts
@@ -3685,6 +3713,22 @@ function resolveCardHealth(item) {
3685
3713
  }
3686
3714
  return { url: null, strategy: "none" };
3687
3715
  }
3716
+ if (collection === "social.kut.community.membership") {
3717
+ const community = record.community;
3718
+ const communityUri = typeof community === "string" ? community : (
3719
+ // Narrow the object branch to read an optional `uri`. The membership
3720
+ // lexicon carries `community` as a bare at-uri string today; the cast
3721
+ // tolerates a future strongRef `{ uri, cid }` shape without assuming it.
3722
+ community != null && typeof community === "object" ? stringOrNull(community.uri) : null
3723
+ );
3724
+ if (communityUri) {
3725
+ const parsed3 = parseAtUri(communityUri);
3726
+ if (parsed3) {
3727
+ return urlHealth(`https://kut.social/community/${encodeURIComponent(parsed3.rkey)}`);
3728
+ }
3729
+ }
3730
+ return urlHealth(APP_URL_PATTERNS.kut?.profileUrlPattern ?? null);
3731
+ }
3688
3732
  if (collection === "fyi.atstore.listing.review") {
3689
3733
  const listingMeta = record.listingMeta;
3690
3734
  if (listingMeta != null && typeof listingMeta === "object") {
@@ -6100,7 +6144,7 @@ function describeSifaRecord(collection, value) {
6100
6144
  }
6101
6145
 
6102
6146
  // src/index.ts
6103
- var SIFA_SDK_VERSION = "0.18.2";
6147
+ var SIFA_SDK_VERSION = "0.18.3";
6104
6148
 
6105
6149
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
6106
6150
  exports.ACTIVITY_VERBS = ACTIVITY_VERBS;