@beeperbot/sdk 0.2.3 → 0.2.4

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
@@ -710,6 +710,48 @@ var FILTER_SCHEMA = [
710
710
  }
711
711
  ]
712
712
  },
713
+ {
714
+ name: "Cast Engagement",
715
+ description: "Target users who engaged with a specific Farcaster cast",
716
+ filters: [
717
+ {
718
+ name: "castEngagement",
719
+ description: "Users who liked and/or recasted a specific cast. If require is omitted, any engagement counts.",
720
+ type: "object",
721
+ example: {
722
+ castUrl: "https://warpcast.com/username/0xabc123",
723
+ require: ["like", "recast"]
724
+ },
725
+ properties: {
726
+ castUrl: {
727
+ name: "castUrl",
728
+ description: "Farcaster cast URL (warpcast.com, farcaster.xyz, base.app)",
729
+ type: "string",
730
+ example: "https://warpcast.com/username/0xabc123"
731
+ },
732
+ castHash: {
733
+ name: "castHash",
734
+ description: "Cast hash (0x...) if you already have it",
735
+ type: "string",
736
+ example: "0xabc123"
737
+ },
738
+ require: {
739
+ name: "require",
740
+ description: "Required engagement types. Use ['like','recast'] to require both.",
741
+ type: "array",
742
+ items: {
743
+ name: "engagement",
744
+ description: "Engagement type",
745
+ type: "string",
746
+ enum: ["like", "recast"],
747
+ example: "like"
748
+ },
749
+ example: ["like", "recast"]
750
+ }
751
+ }
752
+ }
753
+ ]
754
+ },
713
755
  {
714
756
  name: "Token Filters",
715
757
  description: "Filter by token preferences or holdings. IMPORTANT: Signal tokens and token holders are different concepts.",
@@ -1256,7 +1298,7 @@ var CHAIN_ID_MAP = {
1256
1298
  optimism: 10
1257
1299
  };
1258
1300
  function hasSubstantiveFilters(filters) {
1259
- return !!(filters.platform || filters.minFollowers || filters.maxFollowers || filters.fids?.length || filters.userIds?.length || filters.activeInLastDays || filters.countries?.length || filters.neynarScoreMin || filters.tokenHolders?.length || filters.maxAttentionPriceUsd || filters.hasBaseWallet || filters.spamLabel);
1301
+ return !!(filters.platform || filters.minFollowers || filters.maxFollowers || filters.fids?.length || filters.userIds?.length || filters.castEngagement?.castHash || filters.castEngagement?.castUrl || filters.activeInLastDays || filters.countries?.length || filters.neynarScoreMin || filters.tokenHolders?.length || filters.maxAttentionPriceUsd || filters.hasBaseWallet || filters.spamLabel);
1260
1302
  }
1261
1303
  function normalizeAgentFilters(filters) {
1262
1304
  const normalized = { ...filters };
@@ -1307,6 +1349,17 @@ function normalizeAgentFilters(filters) {
1307
1349
  stripEmptyArray("countries");
1308
1350
  stripEmptyArray("fids");
1309
1351
  stripEmptyArray("userIds");
1352
+ if (normalized.castEngagement) {
1353
+ const { castHash, castUrl, require: require2 } = normalized.castEngagement;
1354
+ if (!castHash && !castUrl) {
1355
+ delete normalized.castEngagement;
1356
+ } else if (Array.isArray(require2) && require2.length === 0) {
1357
+ normalized.castEngagement = {
1358
+ ...castHash != null && { castHash },
1359
+ ...castUrl != null && { castUrl }
1360
+ };
1361
+ }
1362
+ }
1310
1363
  if (normalized.neynarScoreMin === 0) delete normalized.neynarScoreMin;
1311
1364
  if (normalized.neynarScoreMax === 1) delete normalized.neynarScoreMax;
1312
1365
  if (normalized.quotientScoreMin === 0) delete normalized.quotientScoreMin;