@singi-labs/sifa-sdk 0.18.1 → 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
@@ -1141,6 +1141,13 @@ var APP_CATEGORY_MAP = {
1141
1141
  // Onboard from the tijs.org profile audit.
1142
1142
  dropanchor: "Places",
1143
1143
  // app.dropanchor.checkin — location check-ins (place, geo, optional review text)
1144
+ // Onboard from the angrydutchman.houseofmadness.org profile audit.
1145
+ askeverything: "Q&A",
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)
1144
1151
  // Web-only (rendered in pills/cards via sifa-web atproto-apps.ts;
1145
1152
  // no backend scan collection yet)
1146
1153
  linkat: "Links",
@@ -1276,6 +1283,21 @@ var activity_tiers_default = {
1276
1283
  app: "dropanchor",
1277
1284
  notes: "A location check-in (place, geo, category, optional review text). Authored, so creation. app.dropanchor.like is excluded backend-side."
1278
1285
  },
1286
+ "app.askeverything.feed.answer": {
1287
+ tier: "creation",
1288
+ app: "askeverything",
1289
+ notes: "An authored answer to a community question (opinion with body text). app.askeverything.actor.* and graph.follow are excluded backend-side."
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
+ },
1279
1301
  "app.mcp.server": {
1280
1302
  tier: "creation",
1281
1303
  app: "mcp"
@@ -3444,6 +3466,25 @@ var APP_URL_PATTERNS = Object.freeze({
3444
3466
  // the record's own rkey, no did/handle needed. Documented as the OG-tagged
3445
3467
  // share URL in the dropanchorapp repos. A self-permalink for this record.
3446
3468
  urlPattern: "https://dropanchor.app/checkin/{rkey}"
3469
+ },
3470
+ askeverything: {
3471
+ // Ask Everything (askeverything.app) keys its public answer route
3472
+ // (/answer/{id}) on an internal DB id, not the atproto rkey, so there's no
3473
+ // per-record permalink we can build from {did, rkey}. Its profile route
3474
+ // /profile/{handle} does resolve by atproto handle, so fall back to that.
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"
3447
3488
  }
3448
3489
  });
3449
3490
  var COLLECTION_TO_APP = [
@@ -3527,7 +3568,11 @@ var COLLECTION_TO_APP = [
3527
3568
  ["org.impactindexer.", "impactindexer"],
3528
3569
  ["com.shinolabs.pinksea.", "pinksea"],
3529
3570
  // Onboard from tijs.org profile audit.
3530
- ["app.dropanchor.", "dropanchor"]
3571
+ ["app.dropanchor.", "dropanchor"],
3572
+ // Onboard from angrydutchman.houseofmadness.org profile audit.
3573
+ ["app.askeverything.", "askeverything"],
3574
+ ["app.greengale.", "greengale"],
3575
+ ["social.kut.", "kut"]
3531
3576
  ];
3532
3577
 
3533
3578
  // src/cards/resolve-card-url.ts
@@ -3668,6 +3713,22 @@ function resolveCardHealth(item) {
3668
3713
  }
3669
3714
  return { url: null, strategy: "none" };
3670
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
+ }
3671
3732
  if (collection === "fyi.atstore.listing.review") {
3672
3733
  const listingMeta = record.listingMeta;
3673
3734
  if (listingMeta != null && typeof listingMeta === "object") {
@@ -6083,7 +6144,7 @@ function describeSifaRecord(collection, value) {
6083
6144
  }
6084
6145
 
6085
6146
  // src/index.ts
6086
- var SIFA_SDK_VERSION = "0.18.1";
6147
+ var SIFA_SDK_VERSION = "0.18.3";
6087
6148
 
6088
6149
  exports.ACTIVITY_TIERS = ACTIVITY_TIERS;
6089
6150
  exports.ACTIVITY_VERBS = ACTIVITY_VERBS;