@openclaw/nostr 2026.7.1-beta.2 → 2026.7.1-beta.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.
Files changed (114) hide show
  1. package/dist/api.js +5 -16
  2. package/dist/{channel-CV0aX1uq.js → channel-B2Y66pl3.js} +11 -4
  3. package/dist/channel-plugin-api.js +1 -1
  4. package/dist/doctor-contract-api.js +3 -22
  5. package/dist/setup-api.js +1 -1
  6. package/dist/setup-plugin-api.js +1 -1
  7. package/dist/{setup-surface-BqBa2C0K.js → setup-surface-CKamwGa3.js} +1 -1
  8. package/node_modules/nostr-tools/README.md +37 -15
  9. package/node_modules/nostr-tools/lib/cjs/abstract-pool.js +134 -6
  10. package/node_modules/nostr-tools/lib/cjs/abstract-pool.js.map +4 -4
  11. package/node_modules/nostr-tools/lib/cjs/abstract-relay.js +35 -6
  12. package/node_modules/nostr-tools/lib/cjs/abstract-relay.js.map +2 -2
  13. package/node_modules/nostr-tools/lib/cjs/filter.js.map +1 -1
  14. package/node_modules/nostr-tools/lib/cjs/index.js +401 -72
  15. package/node_modules/nostr-tools/lib/cjs/index.js.map +4 -4
  16. package/node_modules/nostr-tools/lib/cjs/kinds.js +196 -4
  17. package/node_modules/nostr-tools/lib/cjs/kinds.js.map +2 -2
  18. package/node_modules/nostr-tools/lib/cjs/nip10.js +5 -4
  19. package/node_modules/nostr-tools/lib/cjs/nip10.js.map +2 -2
  20. package/node_modules/nostr-tools/lib/cjs/nip17.js.map +2 -2
  21. package/node_modules/nostr-tools/lib/cjs/nip18.js.map +2 -2
  22. package/node_modules/nostr-tools/lib/cjs/nip19.js +2 -0
  23. package/node_modules/nostr-tools/lib/cjs/nip19.js.map +2 -2
  24. package/node_modules/nostr-tools/lib/cjs/nip21.js +2 -0
  25. package/node_modules/nostr-tools/lib/cjs/nip21.js.map +2 -2
  26. package/node_modules/nostr-tools/lib/cjs/nip22.js +11 -5
  27. package/node_modules/nostr-tools/lib/cjs/nip22.js.map +2 -2
  28. package/node_modules/nostr-tools/lib/cjs/nip25.js.map +1 -1
  29. package/node_modules/nostr-tools/lib/cjs/nip27.js +2 -0
  30. package/node_modules/nostr-tools/lib/cjs/nip27.js.map +2 -2
  31. package/node_modules/nostr-tools/lib/cjs/nip28.js.map +2 -2
  32. package/node_modules/nostr-tools/lib/cjs/nip29.js +2 -0
  33. package/node_modules/nostr-tools/lib/cjs/nip29.js.map +2 -2
  34. package/node_modules/nostr-tools/lib/cjs/nip42.js.map +2 -2
  35. package/node_modules/nostr-tools/lib/cjs/nip45.js +183 -0
  36. package/node_modules/nostr-tools/lib/cjs/nip45.js.map +7 -0
  37. package/node_modules/nostr-tools/lib/cjs/nip46.js +149 -9
  38. package/node_modules/nostr-tools/lib/cjs/nip46.js.map +4 -4
  39. package/node_modules/nostr-tools/lib/cjs/nip47.js.map +2 -2
  40. package/node_modules/nostr-tools/lib/cjs/nip49.js.map +2 -2
  41. package/node_modules/nostr-tools/lib/cjs/nip57.js.map +1 -1
  42. package/node_modules/nostr-tools/lib/cjs/nip58.js.map +2 -2
  43. package/node_modules/nostr-tools/lib/cjs/nip59.js.map +2 -2
  44. package/node_modules/nostr-tools/lib/cjs/nip75.js.map +2 -2
  45. package/node_modules/nostr-tools/lib/cjs/nip94.js.map +2 -2
  46. package/node_modules/nostr-tools/lib/cjs/nip98.js.map +2 -2
  47. package/node_modules/nostr-tools/lib/cjs/nip99.js.map +2 -2
  48. package/node_modules/nostr-tools/lib/cjs/nipb0.js +1064 -0
  49. package/node_modules/nostr-tools/lib/cjs/nipb0.js.map +7 -0
  50. package/node_modules/nostr-tools/lib/cjs/pool.js +134 -6
  51. package/node_modules/nostr-tools/lib/cjs/pool.js.map +4 -4
  52. package/node_modules/nostr-tools/lib/cjs/references.js +2 -0
  53. package/node_modules/nostr-tools/lib/cjs/references.js.map +2 -2
  54. package/node_modules/nostr-tools/lib/cjs/relay.js +35 -6
  55. package/node_modules/nostr-tools/lib/cjs/relay.js.map +2 -2
  56. package/node_modules/nostr-tools/lib/esm/abstract-pool.js +134 -6
  57. package/node_modules/nostr-tools/lib/esm/abstract-pool.js.map +4 -4
  58. package/node_modules/nostr-tools/lib/esm/abstract-relay.js +35 -6
  59. package/node_modules/nostr-tools/lib/esm/abstract-relay.js.map +2 -2
  60. package/node_modules/nostr-tools/lib/esm/filter.js.map +1 -1
  61. package/node_modules/nostr-tools/lib/esm/index.js +377 -48
  62. package/node_modules/nostr-tools/lib/esm/index.js.map +4 -4
  63. package/node_modules/nostr-tools/lib/esm/kinds.js +196 -4
  64. package/node_modules/nostr-tools/lib/esm/kinds.js.map +2 -2
  65. package/node_modules/nostr-tools/lib/esm/nip10.js +5 -4
  66. package/node_modules/nostr-tools/lib/esm/nip10.js.map +2 -2
  67. package/node_modules/nostr-tools/lib/esm/nip17.js.map +2 -2
  68. package/node_modules/nostr-tools/lib/esm/nip18.js.map +2 -2
  69. package/node_modules/nostr-tools/lib/esm/nip19.js +2 -0
  70. package/node_modules/nostr-tools/lib/esm/nip19.js.map +2 -2
  71. package/node_modules/nostr-tools/lib/esm/nip21.js +2 -0
  72. package/node_modules/nostr-tools/lib/esm/nip21.js.map +2 -2
  73. package/node_modules/nostr-tools/lib/esm/nip22.js +11 -5
  74. package/node_modules/nostr-tools/lib/esm/nip22.js.map +2 -2
  75. package/node_modules/nostr-tools/lib/esm/nip25.js.map +1 -1
  76. package/node_modules/nostr-tools/lib/esm/nip27.js +2 -0
  77. package/node_modules/nostr-tools/lib/esm/nip27.js.map +2 -2
  78. package/node_modules/nostr-tools/lib/esm/nip28.js.map +2 -2
  79. package/node_modules/nostr-tools/lib/esm/nip29.js +2 -0
  80. package/node_modules/nostr-tools/lib/esm/nip29.js.map +2 -2
  81. package/node_modules/nostr-tools/lib/esm/nip42.js.map +2 -2
  82. package/node_modules/nostr-tools/lib/esm/nip45.js +162 -0
  83. package/node_modules/nostr-tools/lib/esm/nip45.js.map +7 -0
  84. package/node_modules/nostr-tools/lib/esm/nip46.js +149 -9
  85. package/node_modules/nostr-tools/lib/esm/nip46.js.map +4 -4
  86. package/node_modules/nostr-tools/lib/esm/nip47.js.map +2 -2
  87. package/node_modules/nostr-tools/lib/esm/nip49.js.map +2 -2
  88. package/node_modules/nostr-tools/lib/esm/nip57.js.map +1 -1
  89. package/node_modules/nostr-tools/lib/esm/nip58.js.map +2 -2
  90. package/node_modules/nostr-tools/lib/esm/nip59.js.map +2 -2
  91. package/node_modules/nostr-tools/lib/esm/nip75.js.map +2 -2
  92. package/node_modules/nostr-tools/lib/esm/nip94.js.map +2 -2
  93. package/node_modules/nostr-tools/lib/esm/nip98.js.map +2 -2
  94. package/node_modules/nostr-tools/lib/esm/nip99.js.map +2 -2
  95. package/node_modules/nostr-tools/lib/esm/nipb0.js +1049 -0
  96. package/node_modules/nostr-tools/lib/esm/nipb0.js.map +7 -0
  97. package/node_modules/nostr-tools/lib/esm/pool.js +134 -6
  98. package/node_modules/nostr-tools/lib/esm/pool.js.map +4 -4
  99. package/node_modules/nostr-tools/lib/esm/references.js +2 -0
  100. package/node_modules/nostr-tools/lib/esm/references.js.map +2 -2
  101. package/node_modules/nostr-tools/lib/esm/relay.js +35 -6
  102. package/node_modules/nostr-tools/lib/esm/relay.js.map +2 -2
  103. package/node_modules/nostr-tools/lib/nostr.bundle.js +350 -23
  104. package/node_modules/nostr-tools/lib/nostr.bundle.js.map +4 -4
  105. package/node_modules/nostr-tools/lib/types/abstract-pool.d.ts +9 -0
  106. package/node_modules/nostr-tools/lib/types/abstract-relay.d.ts +10 -1
  107. package/node_modules/nostr-tools/lib/types/kinds.d.ts +200 -8
  108. package/node_modules/nostr-tools/lib/types/nip45.d.ts +13 -0
  109. package/node_modules/nostr-tools/lib/types/nip45.test.d.ts +1 -0
  110. package/node_modules/nostr-tools/lib/types/nip46.d.ts +12 -5
  111. package/node_modules/nostr-tools/lib/types/nipb0.d.ts +129 -0
  112. package/node_modules/nostr-tools/package.json +13 -1
  113. package/npm-shrinkwrap.json +7 -7
  114. package/package.json +5 -5
@@ -711,7 +711,7 @@ var NostrTools = (() => {
711
711
  return n;
712
712
  if (FpLegendre(Fp, n) !== 1)
713
713
  throw new Error("Cannot find square root");
714
- let M = S;
714
+ let M2 = S;
715
715
  let c = Fp.mul(Fp.ONE, cc);
716
716
  let t = Fp.pow(n, Q);
717
717
  let R = Fp.pow(n, Q1div2);
@@ -723,12 +723,12 @@ var NostrTools = (() => {
723
723
  while (!Fp.eql(t_tmp, Fp.ONE)) {
724
724
  i2++;
725
725
  t_tmp = Fp.sqr(t_tmp);
726
- if (i2 === M)
726
+ if (i2 === M2)
727
727
  throw new Error("Cannot find square root");
728
728
  }
729
- const exponent = _1n2 << BigInt(M - i2 - 1);
729
+ const exponent = _1n2 << BigInt(M2 - i2 - 1);
730
730
  const b = Fp.pow(c, exponent);
731
- M = i2;
731
+ M2 = i2;
732
732
  c = Fp.sqr(b);
733
733
  t = Fp.mul(t, c);
734
734
  R = Fp.mul(R, b);
@@ -2448,39 +2448,61 @@ var NostrTools = (() => {
2448
2448
  // kinds.ts
2449
2449
  var kinds_exports = {};
2450
2450
  __export(kinds_exports, {
2451
+ AIEmbeddings: () => AIEmbeddings,
2452
+ AppCurationSet: () => AppCurationSet,
2451
2453
  Application: () => Application,
2454
+ AuthoredPodcasts: () => AuthoredPodcasts,
2452
2455
  BadgeAward: () => BadgeAward,
2453
2456
  BadgeDefinition: () => BadgeDefinition,
2457
+ Bid: () => Bid,
2458
+ BidConfirmation: () => BidConfirmation,
2459
+ BlobsAuth: () => BlobsAuth,
2454
2460
  BlockedRelaysList: () => BlockedRelaysList,
2455
2461
  BlossomServerList: () => BlossomServerList,
2456
2462
  BookmarkList: () => BookmarkList,
2457
2463
  Bookmarksets: () => Bookmarksets,
2458
2464
  Calendar: () => Calendar,
2459
2465
  CalendarEventRSVP: () => CalendarEventRSVP,
2466
+ CashuMintAnnouncement: () => CashuMintAnnouncement,
2467
+ CashuWalletEvent: () => CashuWalletEvent,
2468
+ CashuWalletHistory: () => CashuWalletHistory,
2469
+ CashuWalletTokens: () => CashuWalletTokens,
2460
2470
  ChannelCreation: () => ChannelCreation,
2461
2471
  ChannelHideMessage: () => ChannelHideMessage,
2462
2472
  ChannelMessage: () => ChannelMessage,
2463
2473
  ChannelMetadata: () => ChannelMetadata,
2464
2474
  ChannelMuteUser: () => ChannelMuteUser,
2465
2475
  ChatMessage: () => ChatMessage,
2476
+ Chess: () => Chess,
2466
2477
  ClassifiedListing: () => ClassifiedListing,
2467
2478
  ClientAuth: () => ClientAuth,
2479
+ CodeSnippet: () => CodeSnippet,
2480
+ CoinjoinPool: () => CoinjoinPool,
2468
2481
  Comment: () => Comment,
2469
2482
  CommunitiesList: () => CommunitiesList,
2470
2483
  CommunityDefinition: () => CommunityDefinition,
2471
2484
  CommunityPostApproval: () => CommunityPostApproval,
2485
+ ConferenceEvent: () => ConferenceEvent,
2472
2486
  Contacts: () => Contacts,
2473
2487
  CreateOrUpdateProduct: () => CreateOrUpdateProduct,
2474
2488
  CreateOrUpdateStall: () => CreateOrUpdateStall,
2489
+ CuratedVideoSets: () => CuratedVideoSets,
2475
2490
  Curationsets: () => Curationsets,
2476
2491
  Date: () => Date2,
2492
+ DecoupledEncryptionKeyDistribution: () => DecoupledEncryptionKeyDistribution,
2493
+ DecoupledKeyAnnouncement: () => DecoupledKeyAnnouncement,
2494
+ DecoupledKeyClientAnnouncement: () => DecoupledKeyClientAnnouncement,
2477
2495
  DirectMessageRelaysList: () => DirectMessageRelaysList,
2478
2496
  DraftClassifiedListing: () => DraftClassifiedListing,
2497
+ DraftEvent: () => DraftEvent,
2479
2498
  DraftLong: () => DraftLong,
2480
2499
  Emojisets: () => Emojisets,
2481
2500
  EncryptedDirectMessage: () => EncryptedDirectMessage,
2482
2501
  EventDeletion: () => EventDeletion,
2502
+ FavoritePodcasts: () => FavoritePodcasts,
2483
2503
  FavoriteRelays: () => FavoriteRelays,
2504
+ FedimintAnnouncement: () => FedimintAnnouncement,
2505
+ Feed: () => Feed,
2484
2506
  FileMessage: () => FileMessage,
2485
2507
  FileMetadata: () => FileMetadata,
2486
2508
  FileServerPreference: () => FileServerPreference,
@@ -2488,55 +2510,129 @@ var NostrTools = (() => {
2488
2510
  ForumThread: () => ForumThread,
2489
2511
  GenericRepost: () => GenericRepost,
2490
2512
  Genericlists: () => Genericlists,
2513
+ GeocacheListing: () => GeocacheListing,
2514
+ GeocacheLog: () => GeocacheLog,
2515
+ GeocacheLogEntry: () => GeocacheLogEntry,
2516
+ GeocacheProofOfFind: () => GeocacheProofOfFind,
2491
2517
  GiftWrap: () => GiftWrap,
2518
+ GitPullRequest: () => GitPullRequest,
2519
+ GitPullRequestUpdate: () => GitPullRequestUpdate,
2520
+ GoodWikiAuthorList: () => GoodWikiAuthorList,
2521
+ GoodWikiRelayList: () => GoodWikiRelayList,
2492
2522
  GroupMetadata: () => GroupMetadata,
2493
2523
  HTTPAuth: () => HTTPAuth,
2494
2524
  Handlerinformation: () => Handlerinformation,
2495
2525
  Handlerrecommendation: () => Handlerrecommendation,
2496
2526
  Highlights: () => Highlights,
2527
+ InteractiveRoom: () => InteractiveRoom,
2497
2528
  InterestsList: () => InterestsList,
2498
2529
  Interestsets: () => Interestsets,
2530
+ Issue: () => Issue,
2499
2531
  JobFeedback: () => JobFeedback,
2500
2532
  JobRequest: () => JobRequest,
2501
2533
  JobResult: () => JobResult,
2502
2534
  Label: () => Label,
2535
+ LegacyNsiteFile: () => LegacyNsiteFile,
2503
2536
  LightningPubRPC: () => LightningPubRPC,
2537
+ LinkSet: () => LinkSet,
2504
2538
  LiveChatMessage: () => LiveChatMessage,
2505
2539
  LiveEvent: () => LiveEvent,
2506
2540
  LongFormArticle: () => LongFormArticle,
2541
+ MarketplaceUI: () => MarketplaceUI,
2542
+ MediaFollows: () => MediaFollows,
2543
+ MediaStarterPacks: () => MediaStarterPacks,
2544
+ MergeRequests: () => MergeRequests,
2507
2545
  Metadata: () => Metadata,
2546
+ ModularArticleContent: () => ModularArticleContent,
2547
+ ModularArticleHeader: () => ModularArticleHeader,
2548
+ MuteSets: () => MuteSets,
2508
2549
  Mutelist: () => Mutelist,
2509
2550
  NWCWalletInfo: () => NWCWalletInfo,
2510
2551
  NWCWalletRequest: () => NWCWalletRequest,
2511
2552
  NWCWalletResponse: () => NWCWalletResponse,
2512
2553
  NormalVideo: () => NormalVideo,
2513
2554
  NostrConnect: () => NostrConnect,
2555
+ NsiteNamed: () => NsiteNamed,
2556
+ NsiteRoot: () => NsiteRoot,
2557
+ NutZap: () => NutZap,
2558
+ NutZapInfo: () => NutZapInfo,
2514
2559
  OpenTimestamps: () => OpenTimestamps,
2560
+ Patch: () => Patch,
2561
+ PeerToPeerOrderEvents: () => PeerToPeerOrderEvents,
2515
2562
  Photo: () => Photo,
2516
2563
  Pinlist: () => Pinlist,
2564
+ PodcastEpisode: () => PodcastEpisode,
2565
+ PodcastMetadata: () => PodcastMetadata,
2517
2566
  Poll: () => Poll,
2518
2567
  PollResponse: () => PollResponse,
2519
2568
  PrivateDirectMessage: () => PrivateDirectMessage,
2569
+ PrivateEventRelayList: () => PrivateEventRelayList,
2520
2570
  ProblemTracker: () => ProblemTracker,
2571
+ ProductSoldAsAuction: () => ProductSoldAsAuction,
2521
2572
  ProfileBadges: () => ProfileBadges,
2573
+ ProxyAnnouncement: () => ProxyAnnouncement,
2522
2574
  PublicChatsList: () => PublicChatsList,
2575
+ PublicMessage: () => PublicMessage,
2523
2576
  Reaction: () => Reaction,
2577
+ ReactionToWebsite: () => ReactionToWebsite,
2524
2578
  RecommendRelay: () => RecommendRelay,
2579
+ Redirects: () => Redirects,
2580
+ RelayDiscovery: () => RelayDiscovery,
2525
2581
  RelayList: () => RelayList,
2582
+ RelayMonitorAnnouncement: () => RelayMonitorAnnouncement,
2526
2583
  RelayReview: () => RelayReview,
2584
+ RelayReviews: () => RelayReviews,
2527
2585
  Relaysets: () => Relaysets,
2586
+ ReleaseArtifactSets: () => ReleaseArtifactSets,
2587
+ Reply: () => Reply,
2528
2588
  Report: () => Report,
2529
2589
  Reporting: () => Reporting,
2590
+ RepositoryAnnouncement: () => RepositoryAnnouncement,
2591
+ RepositoryState: () => RepositoryState,
2530
2592
  Repost: () => Repost,
2593
+ ReservedCashuWalletTokens: () => ReservedCashuWalletTokens,
2594
+ RoomPresence: () => RoomPresence,
2595
+ Scroll: () => Scroll,
2531
2596
  Seal: () => Seal,
2532
2597
  SearchRelaysList: () => SearchRelaysList,
2533
2598
  ShortTextNote: () => ShortTextNote,
2534
2599
  ShortVideo: () => ShortVideo,
2600
+ SimpleGroupAdmins: () => SimpleGroupAdmins,
2601
+ SimpleGroupCreateGroup: () => SimpleGroupCreateGroup,
2602
+ SimpleGroupCreateInvite: () => SimpleGroupCreateInvite,
2603
+ SimpleGroupDeleteEvent: () => SimpleGroupDeleteEvent,
2604
+ SimpleGroupDeleteGroup: () => SimpleGroupDeleteGroup,
2605
+ SimpleGroupEditMetadata: () => SimpleGroupEditMetadata,
2606
+ SimpleGroupJoinRequest: () => SimpleGroupJoinRequest,
2607
+ SimpleGroupLeaveRequest: () => SimpleGroupLeaveRequest,
2608
+ SimpleGroupList: () => SimpleGroupList,
2609
+ SimpleGroupLiveKitParticipants: () => SimpleGroupLiveKitParticipants,
2610
+ SimpleGroupMembers: () => SimpleGroupMembers,
2611
+ SimpleGroupPutUser: () => SimpleGroupPutUser,
2612
+ SimpleGroupRemoveUser: () => SimpleGroupRemoveUser,
2613
+ SimpleGroupReply: () => SimpleGroupReply,
2614
+ SimpleGroupRoles: () => SimpleGroupRoles,
2615
+ SimpleGroupThreadedReply: () => SimpleGroupThreadedReply,
2616
+ SlideSet: () => SlideSet,
2617
+ SoftwareApplication: () => SoftwareApplication,
2618
+ StarterPacks: () => StarterPacks,
2619
+ StatusApplied: () => StatusApplied,
2620
+ StatusClosed: () => StatusClosed,
2621
+ StatusDraft: () => StatusDraft,
2622
+ StatusOpen: () => StatusOpen,
2623
+ TidalLogin: () => TidalLogin,
2535
2624
  Time: () => Time,
2625
+ Torrent: () => Torrent,
2626
+ TorrentComment: () => TorrentComment,
2627
+ TransportMethodAnnouncement: () => TransportMethodAnnouncement,
2536
2628
  UserEmojiList: () => UserEmojiList,
2629
+ UserGraspList: () => UserGraspList,
2537
2630
  UserStatuses: () => UserStatuses,
2631
+ VideoViewEvent: () => VideoViewEvent,
2538
2632
  Voice: () => Voice,
2539
2633
  VoiceComment: () => VoiceComment,
2634
+ WebBookmarks: () => WebBookmarks,
2635
+ WikiArticle: () => WikiArticle,
2540
2636
  Zap: () => Zap,
2541
2637
  ZapGoal: () => ZapGoal,
2542
2638
  ZapRequest: () => ZapRequest,
@@ -2584,40 +2680,83 @@ var NostrTools = (() => {
2584
2680
  var Reaction = 7;
2585
2681
  var BadgeAward = 8;
2586
2682
  var ChatMessage = 9;
2683
+ var SimpleGroupThreadedReply = 10;
2587
2684
  var ForumThread = 11;
2685
+ var SimpleGroupReply = 12;
2588
2686
  var Seal = 13;
2589
2687
  var PrivateDirectMessage = 14;
2590
2688
  var FileMessage = 15;
2591
2689
  var GenericRepost = 16;
2690
+ var ReactionToWebsite = 17;
2592
2691
  var Photo = 20;
2593
2692
  var NormalVideo = 21;
2594
2693
  var ShortVideo = 22;
2694
+ var PublicMessage = 24;
2595
2695
  var ChannelCreation = 40;
2596
2696
  var ChannelMetadata = 41;
2597
2697
  var ChannelMessage = 42;
2598
2698
  var ChannelHideMessage = 43;
2599
2699
  var ChannelMuteUser = 44;
2700
+ var PodcastEpisode = 54;
2701
+ var Chess = 64;
2702
+ var MergeRequests = 818;
2703
+ var PollResponse = 1018;
2704
+ var Bid = 1021;
2705
+ var BidConfirmation = 1022;
2600
2706
  var OpenTimestamps = 1040;
2601
2707
  var GiftWrap = 1059;
2602
- var Poll = 1068;
2603
2708
  var FileMetadata = 1063;
2709
+ var Poll = 1068;
2604
2710
  var Comment = 1111;
2605
- var LiveChatMessage = 1311;
2606
2711
  var Voice = 1222;
2712
+ var Scroll = 1227;
2607
2713
  var VoiceComment = 1244;
2714
+ var LiveChatMessage = 1311;
2715
+ var CodeSnippet = 1337;
2716
+ var Patch = 1617;
2717
+ var GitPullRequest = 1618;
2718
+ var GitPullRequestUpdate = 1619;
2719
+ var Issue = 1621;
2720
+ var Reply = 1622;
2721
+ var StatusOpen = 1630;
2722
+ var StatusApplied = 1631;
2723
+ var StatusClosed = 1632;
2724
+ var StatusDraft = 1633;
2608
2725
  var ProblemTracker = 1971;
2609
2726
  var Report = 1984;
2610
2727
  var Reporting = 1984;
2611
2728
  var Label = 1985;
2729
+ var RelayReviews = 1986;
2730
+ var AIEmbeddings = 1987;
2731
+ var Torrent = 2003;
2732
+ var TorrentComment = 2004;
2733
+ var CoinjoinPool = 2022;
2734
+ var DecoupledKeyClientAnnouncement = 4454;
2735
+ var DecoupledEncryptionKeyDistribution = 4455;
2612
2736
  var CommunityPostApproval = 4550;
2613
2737
  var JobRequest = 5999;
2614
2738
  var JobResult = 6999;
2615
2739
  var JobFeedback = 7e3;
2740
+ var ReservedCashuWalletTokens = 7374;
2741
+ var CashuWalletTokens = 7375;
2742
+ var CashuWalletHistory = 7376;
2743
+ var GeocacheLog = 7516;
2744
+ var GeocacheProofOfFind = 7517;
2745
+ var SimpleGroupPutUser = 9e3;
2746
+ var SimpleGroupRemoveUser = 9001;
2747
+ var SimpleGroupEditMetadata = 9002;
2748
+ var SimpleGroupDeleteEvent = 9005;
2749
+ var SimpleGroupCreateGroup = 9007;
2750
+ var SimpleGroupDeleteGroup = 9008;
2751
+ var SimpleGroupCreateInvite = 9009;
2752
+ var SimpleGroupJoinRequest = 9021;
2753
+ var SimpleGroupLeaveRequest = 9022;
2616
2754
  var ZapGoal = 9041;
2755
+ var NutZap = 9321;
2756
+ var TidalLogin = 9467;
2617
2757
  var ZapRequest = 9734;
2618
2758
  var Zap = 9735;
2619
2759
  var Highlights = 9802;
2620
- var PollResponse = 1018;
2621
2760
  var Mutelist = 1e4;
2622
2761
  var Pinlist = 10001;
2623
2762
  var RelayList = 10002;
@@ -2626,37 +2765,74 @@ var NostrTools = (() => {
2626
2765
  var PublicChatsList = 10005;
2627
2766
  var BlockedRelaysList = 10006;
2628
2767
  var SearchRelaysList = 10007;
2768
+ var SimpleGroupList = 10009;
2629
2769
  var FavoriteRelays = 10012;
2770
+ var PrivateEventRelayList = 10013;
2630
2771
  var InterestsList = 10015;
2772
+ var NutZapInfo = 10019;
2773
+ var MediaFollows = 10020;
2631
2774
  var UserEmojiList = 10030;
2775
+ var DecoupledKeyAnnouncement = 10044;
2632
2776
  var DirectMessageRelaysList = 10050;
2633
- var FileServerPreference = 10096;
2777
+ var FavoritePodcasts = 10054;
2634
2778
  var BlossomServerList = 10063;
2779
+ var FileServerPreference = 10096;
2780
+ var GoodWikiAuthorList = 10101;
2781
+ var GoodWikiRelayList = 10102;
2782
+ var PodcastMetadata = 10154;
2783
+ var AuthoredPodcasts = 10164;
2784
+ var RelayMonitorAnnouncement = 10166;
2785
+ var RoomPresence = 10312;
2786
+ var UserGraspList = 10317;
2787
+ var ProxyAnnouncement = 10377;
2788
+ var TransportMethodAnnouncement = 11111;
2635
2789
  var NWCWalletInfo = 13194;
2790
+ var NsiteRoot = 15128;
2791
+ var CashuWalletEvent = 17375;
2636
2792
  var LightningPubRPC = 21e3;
2637
2793
  var ClientAuth = 22242;
2638
2794
  var NWCWalletRequest = 23194;
2639
2795
  var NWCWalletResponse = 23195;
2640
2796
  var NostrConnect = 24133;
2797
+ var BlobsAuth = 24242;
2641
2798
  var HTTPAuth = 27235;
2642
2799
  var Followsets = 3e4;
2643
2800
  var Genericlists = 30001;
2644
2801
  var Relaysets = 30002;
2645
2802
  var Bookmarksets = 30003;
2646
2803
  var Curationsets = 30004;
2804
+ var CuratedVideoSets = 30005;
2805
+ var MuteSets = 30007;
2647
2806
  var ProfileBadges = 30008;
2648
2807
  var BadgeDefinition = 30009;
2649
2808
  var Interestsets = 30015;
2650
2809
  var CreateOrUpdateStall = 30017;
2651
2810
  var CreateOrUpdateProduct = 30018;
2811
+ var MarketplaceUI = 30019;
2812
+ var ProductSoldAsAuction = 30020;
2652
2813
  var LongFormArticle = 30023;
2653
2814
  var DraftLong = 30024;
2654
2815
  var Emojisets = 30030;
2816
+ var ModularArticleHeader = 30040;
2817
+ var ModularArticleContent = 30041;
2818
+ var ReleaseArtifactSets = 30063;
2655
2819
  var Application = 30078;
2820
+ var RelayDiscovery = 30166;
2821
+ var AppCurationSet = 30267;
2656
2822
  var LiveEvent = 30311;
2823
+ var InteractiveRoom = 30312;
2824
+ var ConferenceEvent = 30313;
2657
2825
  var UserStatuses = 30315;
2826
+ var SlideSet = 30388;
2658
2827
  var ClassifiedListing = 30402;
2659
2828
  var DraftClassifiedListing = 30403;
2829
+ var RepositoryAnnouncement = 30617;
2830
+ var RepositoryState = 30618;
2831
+ var WikiArticle = 30818;
2832
+ var Redirects = 30819;
2833
+ var DraftEvent = 31234;
2834
+ var LinkSet = 31388;
2835
+ var Feed = 31890;
2660
2836
  var Date2 = 31922;
2661
2837
  var Time = 31923;
2662
2838
  var Calendar = 31924;
@@ -2664,8 +2840,24 @@ var NostrTools = (() => {
2664
2840
  var RelayReview = 31987;
2665
2841
  var Handlerrecommendation = 31989;
2666
2842
  var Handlerinformation = 31990;
2843
+ var SoftwareApplication = 32267;
2844
+ var LegacyNsiteFile = 34128;
2845
+ var VideoViewEvent = 34237;
2667
2846
  var CommunityDefinition = 34550;
2847
+ var NsiteNamed = 35128;
2848
+ var GeocacheListing = 37515;
2849
+ var GeocacheLogEntry = 37516;
2850
+ var CashuMintAnnouncement = 38172;
2851
+ var FedimintAnnouncement = 38173;
2852
+ var PeerToPeerOrderEvents = 38383;
2668
2853
  var GroupMetadata = 39e3;
2854
+ var SimpleGroupAdmins = 39001;
2855
+ var SimpleGroupMembers = 39002;
2856
+ var SimpleGroupRoles = 39003;
2857
+ var SimpleGroupLiveKitParticipants = 39004;
2858
+ var StarterPacks = 39089;
2859
+ var MediaStarterPacks = 39092;
2860
+ var WebBookmarks = 39701;
2669
2861
 
2670
2862
  // filter.ts
2671
2863
  function matchFilter(filter, event) {
@@ -2908,7 +3100,9 @@ var NostrTools = (() => {
2908
3100
  connectionTimeoutHandle = setTimeout(() => {
2909
3101
  reject("connection timed out");
2910
3102
  this.connectionPromise = void 0;
2911
- this.skipReconnection = true;
3103
+ if (this.reconnectAttempts === 0) {
3104
+ this.skipReconnection = true;
3105
+ }
2912
3106
  this.onclose?.();
2913
3107
  this.handleHardClose("relay connection timed out");
2914
3108
  }, opts.timeout);
@@ -2952,7 +3146,9 @@ var NostrTools = (() => {
2952
3146
  clearTimeout(connectionTimeoutHandle);
2953
3147
  reject("connection failed");
2954
3148
  this.connectionPromise = void 0;
2955
- this.skipReconnection = true;
3149
+ if (this.reconnectAttempts === 0) {
3150
+ this.skipReconnection = true;
3151
+ }
2956
3152
  this.onclose?.();
2957
3153
  this.handleHardClose("relay connection failed");
2958
3154
  };
@@ -3053,19 +3249,38 @@ var NostrTools = (() => {
3053
3249
  }, this.publishTimeout);
3054
3250
  this.openEventPublishes.set(event.id, { resolve, reject, timeout });
3055
3251
  });
3056
- this.send('["EVENT",' + JSON.stringify(event) + "]");
3252
+ try {
3253
+ await this.send('["EVENT",' + JSON.stringify(event) + "]");
3254
+ } catch (err) {
3255
+ const ep = this.openEventPublishes.get(event.id);
3256
+ if (ep) {
3257
+ ep.reject(err);
3258
+ this.openEventPublishes.delete(event.id);
3259
+ }
3260
+ }
3057
3261
  this.ongoingOperations--;
3058
3262
  if (this.ongoingOperations === 0)
3059
3263
  this.idleSince = Date.now();
3060
3264
  return ret;
3061
3265
  }
3062
3266
  async count(filters, params) {
3267
+ return (await this.countWithHLL(filters, params)).count;
3268
+ }
3269
+ async countWithHLL(filters, params) {
3063
3270
  this.serial++;
3064
3271
  const id = params?.id || "count:" + this.serial;
3065
3272
  const ret = new Promise((resolve, reject) => {
3066
3273
  this.openCountRequests.set(id, { resolve, reject });
3067
3274
  });
3068
- this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
3275
+ try {
3276
+ await this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
3277
+ } catch (err) {
3278
+ const cr = this.openCountRequests.get(id);
3279
+ if (cr) {
3280
+ cr.reject(err);
3281
+ this.openCountRequests.delete(id);
3282
+ }
3283
+ }
3069
3284
  return ret;
3070
3285
  }
3071
3286
  subscribe(filters, params) {
@@ -3143,7 +3358,7 @@ var NostrTools = (() => {
3143
3358
  const payload = data[2];
3144
3359
  const cr = this.openCountRequests.get(id);
3145
3360
  if (cr) {
3146
- cr.resolve(payload.count);
3361
+ cr.resolve(payload);
3147
3362
  this.openCountRequests.delete(id);
3148
3363
  }
3149
3364
  return;
@@ -3173,8 +3388,14 @@ var NostrTools = (() => {
3173
3388
  case "CLOSED": {
3174
3389
  const id = data[1];
3175
3390
  const so = this.openSubs.get(id);
3176
- if (!so)
3391
+ if (!so) {
3392
+ const cr = this.openCountRequests.get(id);
3393
+ if (cr) {
3394
+ cr.reject(new Error(data[2]));
3395
+ this.openCountRequests.delete(id);
3396
+ }
3177
3397
  return;
3398
+ }
3178
3399
  so.closed = true;
3179
3400
  so.close(data[2]);
3180
3401
  return;
@@ -3300,6 +3521,61 @@ var NostrTools = (() => {
3300
3521
  return true;
3301
3522
  };
3302
3523
 
3524
+ // nip45.ts
3525
+ var M = 256;
3526
+ var HLL_HEX_LENGTH = M * 2;
3527
+ var utf8Encoder2 = new TextEncoder();
3528
+ function getCountManyFilter(target, directive) {
3529
+ switch (directive) {
3530
+ case "reactions":
3531
+ return { "#e": [target], kinds: [7] };
3532
+ case "reposts":
3533
+ return { "#e": [target], kinds: [6] };
3534
+ case "quotes":
3535
+ return { "#q": [target], kinds: [1, 1111] };
3536
+ case "replies":
3537
+ return { "#e": [target], kinds: [1] };
3538
+ case "comments":
3539
+ return { "#E": [target], kinds: [1111] };
3540
+ case "followers":
3541
+ return { "#p": [target], kinds: [3] };
3542
+ }
3543
+ }
3544
+ function newHll() {
3545
+ return new Uint8Array(M);
3546
+ }
3547
+ function hllDecode(hex2) {
3548
+ if (hex2.length !== HLL_HEX_LENGTH || !/^[0-9a-fA-F]+$/.test(hex2))
3549
+ return void 0;
3550
+ const registers = new Uint8Array(M);
3551
+ for (let i2 = 0; i2 < M; i2++) {
3552
+ registers[i2] = parseInt(hex2.slice(i2 * 2, i2 * 2 + 2), 16);
3553
+ }
3554
+ return registers;
3555
+ }
3556
+ function hllEncode(registers) {
3557
+ if (registers.length !== M)
3558
+ throw new Error(`invalid number of registers ${registers.length}`);
3559
+ let hex2 = "";
3560
+ for (let i2 = 0; i2 < M; i2++) {
3561
+ hex2 += registers[i2].toString(16).padStart(2, "0");
3562
+ }
3563
+ return hex2;
3564
+ }
3565
+ function mergeHll(target, source) {
3566
+ if (target.length === 0)
3567
+ target = newHll();
3568
+ if (target.length !== M)
3569
+ throw new Error(`invalid number of registers ${target.length}`);
3570
+ if (source.length !== M)
3571
+ throw new Error(`invalid number of registers ${source.length}`);
3572
+ for (let i2 = 0; i2 < M; i2++) {
3573
+ if (source[i2] > target[i2])
3574
+ target[i2] = source[i2];
3575
+ }
3576
+ return target;
3577
+ }
3578
+
3303
3579
  // abstract-pool.ts
3304
3580
  var AbstractSimplePool = class {
3305
3581
  relays = /* @__PURE__ */ new Map();
@@ -3527,6 +3803,48 @@ var NostrTools = (() => {
3527
3803
  events.sort((a, b) => b.created_at - a.created_at);
3528
3804
  return events[0] || null;
3529
3805
  }
3806
+ async countMany(relays, target, directive, params) {
3807
+ const filter = getCountManyFilter(target, directive);
3808
+ const urls = [];
3809
+ for (let i2 = 0; i2 < relays.length; i2++) {
3810
+ const url = normalizeURL(relays[i2]);
3811
+ if (urls.indexOf(url) === -1)
3812
+ urls.push(url);
3813
+ }
3814
+ const responses = await Promise.all(
3815
+ urls.map(async (url) => {
3816
+ if (this.allowConnectingToRelay?.(url, ["read", [filter]]) === false)
3817
+ return null;
3818
+ let relay;
3819
+ try {
3820
+ relay = await this.ensureRelay(url, {
3821
+ connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,
3822
+ abort: params?.abort
3823
+ });
3824
+ } catch (err) {
3825
+ this.onRelayConnectionFailure?.(url);
3826
+ return null;
3827
+ }
3828
+ this.onRelayConnectionSuccess?.(url);
3829
+ return relay.countWithHLL([filter], { id: params?.id }).catch(() => null);
3830
+ })
3831
+ );
3832
+ let count = 0;
3833
+ let hll;
3834
+ for (const response of responses) {
3835
+ if (!response)
3836
+ continue;
3837
+ if (response.count > count)
3838
+ count = response.count;
3839
+ if (!response.hll || response.hll.length !== 512)
3840
+ continue;
3841
+ const registers = hllDecode(response.hll);
3842
+ if (!registers)
3843
+ continue;
3844
+ hll = mergeHll(hll || new Uint8Array(0), registers);
3845
+ }
3846
+ return hll ? { count, hll: hllEncode(hll) } : { count };
3847
+ }
3530
3848
  publish(relays, event, params) {
3531
3849
  return relays.map(normalizeURL).map(async (url, i2, arr) => {
3532
3850
  if (arr.indexOf(url) !== i2) {
@@ -4122,6 +4440,8 @@ var NostrTools = (() => {
4122
4440
  let result = {};
4123
4441
  let rest = data;
4124
4442
  while (rest.length > 0) {
4443
+ if (rest.length < 2)
4444
+ throw new Error("not enough data to read TLV");
4125
4445
  let t = rest[0];
4126
4446
  let l = rest[1];
4127
4447
  let v = rest.slice(2, 2 + l);
@@ -4871,6 +5191,7 @@ var NostrTools = (() => {
4871
5191
  __export(nip10_exports, {
4872
5192
  parse: () => parse
4873
5193
  });
5194
+ var HEX64 = /^[0-9a-fA-F]{64}$/;
4874
5195
  function parse(event) {
4875
5196
  const result = {
4876
5197
  reply: void 0,
@@ -4883,12 +5204,12 @@ var NostrTools = (() => {
4883
5204
  let maybeRoot;
4884
5205
  for (let i2 = event.tags.length - 1; i2 >= 0; i2--) {
4885
5206
  const tag = event.tags[i2];
4886
- if (tag[0] === "e" && tag[1]) {
5207
+ if (tag[0] === "e" && tag[1] && HEX64.test(tag[1])) {
4887
5208
  const [_, eTagEventId, eTagRelayUrl, eTagMarker, eTagAuthor] = tag;
4888
5209
  const eventPointer = {
4889
5210
  id: eTagEventId,
4890
5211
  relays: eTagRelayUrl ? [eTagRelayUrl] : [],
4891
- author: eTagAuthor
5212
+ author: eTagAuthor && HEX64.test(eTagAuthor) ? eTagAuthor : void 0
4892
5213
  };
4893
5214
  if (eTagMarker === "root") {
4894
5215
  result.root = eventPointer;
@@ -4910,14 +5231,14 @@ var NostrTools = (() => {
4910
5231
  result.mentions.push(eventPointer);
4911
5232
  continue;
4912
5233
  }
4913
- if (tag[0] === "q" && tag[1]) {
5234
+ if (tag[0] === "q" && tag[1] && HEX64.test(tag[1])) {
4914
5235
  const [_, eTagEventId, eTagRelayUrl] = tag;
4915
5236
  result.quotes.push({
4916
5237
  id: eTagEventId,
4917
5238
  relays: eTagRelayUrl ? [eTagRelayUrl] : []
4918
5239
  });
4919
5240
  }
4920
- if (tag[0] === "p" && tag[1]) {
5241
+ if (tag[0] === "p" && tag[1] && HEX64.test(tag[1])) {
4921
5242
  result.profiles.push({
4922
5243
  pubkey: tag[1],
4923
5244
  relays: tag[2] ? [tag[2]] : []
@@ -6037,6 +6358,7 @@ var NostrTools = (() => {
6037
6358
  __export(nip22_exports, {
6038
6359
  parse: () => parse3
6039
6360
  });
6361
+ var HEX642 = /^[0-9a-fA-F]{64}$/;
6040
6362
  function parseKind(kind) {
6041
6363
  if (!kind)
6042
6364
  return void 0;
@@ -6050,9 +6372,12 @@ var NostrTools = (() => {
6050
6372
  const kind = parseInt(value.slice(0, idx), 10);
6051
6373
  if (Number.isNaN(kind))
6052
6374
  return void 0;
6375
+ const pubkey = value.slice(idx + 1, idx2);
6376
+ if (!HEX642.test(pubkey))
6377
+ return void 0;
6053
6378
  return {
6054
6379
  kind,
6055
- pubkey: value.slice(idx + 1, idx2),
6380
+ pubkey,
6056
6381
  identifier: value.slice(idx2 + 1),
6057
6382
  relays: relayUrl ? [relayUrl] : []
6058
6383
  };
@@ -6061,12 +6386,12 @@ var NostrTools = (() => {
6061
6386
  switch (tag[0]) {
6062
6387
  case "E":
6063
6388
  case "e":
6064
- if (!tag[1])
6389
+ if (!tag[1] || !HEX642.test(tag[1]))
6065
6390
  return void 0;
6066
6391
  return {
6067
6392
  id: tag[1],
6068
6393
  relays: tag[2] ? [tag[2]] : [],
6069
- author: tag[3]
6394
+ author: tag[3] && HEX642.test(tag[3]) ? tag[3] : void 0
6070
6395
  };
6071
6396
  case "A":
6072
6397
  case "a":
@@ -6089,10 +6414,12 @@ var NostrTools = (() => {
6089
6414
  if (tag[1].includes(":")) {
6090
6415
  return parseAddressPointer(tag[1], tag[2]);
6091
6416
  }
6417
+ if (!HEX642.test(tag[1]))
6418
+ return void 0;
6092
6419
  return {
6093
6420
  id: tag[1],
6094
6421
  relays: tag[2] ? [tag[2]] : [],
6095
- author: tag[3]
6422
+ author: tag[3] && HEX642.test(tag[3]) ? tag[3] : void 0
6096
6423
  };
6097
6424
  }
6098
6425
  function choosePointer(candidates) {
@@ -6152,7 +6479,7 @@ var NostrTools = (() => {
6152
6479
  result.quotes.push(pointer);
6153
6480
  continue;
6154
6481
  }
6155
- if ((tag[0] === "P" || tag[0] === "p") && tag[1]) {
6482
+ if ((tag[0] === "P" || tag[0] === "p") && tag[1] && HEX642.test(tag[1])) {
6156
6483
  result.profiles.push({
6157
6484
  pubkey: tag[1],
6158
6485
  relays: tag[2] ? [tag[2]] : []