@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.
- package/dist/api.js +5 -16
- package/dist/{channel-CV0aX1uq.js → channel-B2Y66pl3.js} +11 -4
- package/dist/channel-plugin-api.js +1 -1
- package/dist/doctor-contract-api.js +3 -22
- package/dist/setup-api.js +1 -1
- package/dist/setup-plugin-api.js +1 -1
- package/dist/{setup-surface-BqBa2C0K.js → setup-surface-CKamwGa3.js} +1 -1
- package/node_modules/nostr-tools/README.md +37 -15
- package/node_modules/nostr-tools/lib/cjs/abstract-pool.js +134 -6
- package/node_modules/nostr-tools/lib/cjs/abstract-pool.js.map +4 -4
- package/node_modules/nostr-tools/lib/cjs/abstract-relay.js +35 -6
- package/node_modules/nostr-tools/lib/cjs/abstract-relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/filter.js.map +1 -1
- package/node_modules/nostr-tools/lib/cjs/index.js +401 -72
- package/node_modules/nostr-tools/lib/cjs/index.js.map +4 -4
- package/node_modules/nostr-tools/lib/cjs/kinds.js +196 -4
- package/node_modules/nostr-tools/lib/cjs/kinds.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip10.js +5 -4
- package/node_modules/nostr-tools/lib/cjs/nip10.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip17.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip18.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip19.js +2 -0
- package/node_modules/nostr-tools/lib/cjs/nip19.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip21.js +2 -0
- package/node_modules/nostr-tools/lib/cjs/nip21.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip22.js +11 -5
- package/node_modules/nostr-tools/lib/cjs/nip22.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip25.js.map +1 -1
- package/node_modules/nostr-tools/lib/cjs/nip27.js +2 -0
- package/node_modules/nostr-tools/lib/cjs/nip27.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip28.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip29.js +2 -0
- package/node_modules/nostr-tools/lib/cjs/nip29.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip42.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip45.js +183 -0
- package/node_modules/nostr-tools/lib/cjs/nip45.js.map +7 -0
- package/node_modules/nostr-tools/lib/cjs/nip46.js +149 -9
- package/node_modules/nostr-tools/lib/cjs/nip46.js.map +4 -4
- package/node_modules/nostr-tools/lib/cjs/nip47.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip49.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip57.js.map +1 -1
- package/node_modules/nostr-tools/lib/cjs/nip58.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip59.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip75.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip94.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip98.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nip99.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/nipb0.js +1064 -0
- package/node_modules/nostr-tools/lib/cjs/nipb0.js.map +7 -0
- package/node_modules/nostr-tools/lib/cjs/pool.js +134 -6
- package/node_modules/nostr-tools/lib/cjs/pool.js.map +4 -4
- package/node_modules/nostr-tools/lib/cjs/references.js +2 -0
- package/node_modules/nostr-tools/lib/cjs/references.js.map +2 -2
- package/node_modules/nostr-tools/lib/cjs/relay.js +35 -6
- package/node_modules/nostr-tools/lib/cjs/relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/abstract-pool.js +134 -6
- package/node_modules/nostr-tools/lib/esm/abstract-pool.js.map +4 -4
- package/node_modules/nostr-tools/lib/esm/abstract-relay.js +35 -6
- package/node_modules/nostr-tools/lib/esm/abstract-relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/filter.js.map +1 -1
- package/node_modules/nostr-tools/lib/esm/index.js +377 -48
- package/node_modules/nostr-tools/lib/esm/index.js.map +4 -4
- package/node_modules/nostr-tools/lib/esm/kinds.js +196 -4
- package/node_modules/nostr-tools/lib/esm/kinds.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip10.js +5 -4
- package/node_modules/nostr-tools/lib/esm/nip10.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip17.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip18.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip19.js +2 -0
- package/node_modules/nostr-tools/lib/esm/nip19.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip21.js +2 -0
- package/node_modules/nostr-tools/lib/esm/nip21.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip22.js +11 -5
- package/node_modules/nostr-tools/lib/esm/nip22.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip25.js.map +1 -1
- package/node_modules/nostr-tools/lib/esm/nip27.js +2 -0
- package/node_modules/nostr-tools/lib/esm/nip27.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip28.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip29.js +2 -0
- package/node_modules/nostr-tools/lib/esm/nip29.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip42.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip45.js +162 -0
- package/node_modules/nostr-tools/lib/esm/nip45.js.map +7 -0
- package/node_modules/nostr-tools/lib/esm/nip46.js +149 -9
- package/node_modules/nostr-tools/lib/esm/nip46.js.map +4 -4
- package/node_modules/nostr-tools/lib/esm/nip47.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip49.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip57.js.map +1 -1
- package/node_modules/nostr-tools/lib/esm/nip58.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip59.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip75.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip94.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip98.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nip99.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/nipb0.js +1049 -0
- package/node_modules/nostr-tools/lib/esm/nipb0.js.map +7 -0
- package/node_modules/nostr-tools/lib/esm/pool.js +134 -6
- package/node_modules/nostr-tools/lib/esm/pool.js.map +4 -4
- package/node_modules/nostr-tools/lib/esm/references.js +2 -0
- package/node_modules/nostr-tools/lib/esm/references.js.map +2 -2
- package/node_modules/nostr-tools/lib/esm/relay.js +35 -6
- package/node_modules/nostr-tools/lib/esm/relay.js.map +2 -2
- package/node_modules/nostr-tools/lib/nostr.bundle.js +350 -23
- package/node_modules/nostr-tools/lib/nostr.bundle.js.map +4 -4
- package/node_modules/nostr-tools/lib/types/abstract-pool.d.ts +9 -0
- package/node_modules/nostr-tools/lib/types/abstract-relay.d.ts +10 -1
- package/node_modules/nostr-tools/lib/types/kinds.d.ts +200 -8
- package/node_modules/nostr-tools/lib/types/nip45.d.ts +13 -0
- package/node_modules/nostr-tools/lib/types/nip45.test.d.ts +1 -0
- package/node_modules/nostr-tools/lib/types/nip46.d.ts +12 -5
- package/node_modules/nostr-tools/lib/types/nipb0.d.ts +129 -0
- package/node_modules/nostr-tools/package.json +13 -1
- package/npm-shrinkwrap.json +7 -7
- package/package.json +5 -5
|
@@ -419,7 +419,9 @@ var AbstractRelay = class {
|
|
|
419
419
|
connectionTimeoutHandle = setTimeout(() => {
|
|
420
420
|
reject("connection timed out");
|
|
421
421
|
this.connectionPromise = void 0;
|
|
422
|
-
this.
|
|
422
|
+
if (this.reconnectAttempts === 0) {
|
|
423
|
+
this.skipReconnection = true;
|
|
424
|
+
}
|
|
423
425
|
this.onclose?.();
|
|
424
426
|
this.handleHardClose("relay connection timed out");
|
|
425
427
|
}, opts.timeout);
|
|
@@ -463,7 +465,9 @@ var AbstractRelay = class {
|
|
|
463
465
|
clearTimeout(connectionTimeoutHandle);
|
|
464
466
|
reject("connection failed");
|
|
465
467
|
this.connectionPromise = void 0;
|
|
466
|
-
this.
|
|
468
|
+
if (this.reconnectAttempts === 0) {
|
|
469
|
+
this.skipReconnection = true;
|
|
470
|
+
}
|
|
467
471
|
this.onclose?.();
|
|
468
472
|
this.handleHardClose("relay connection failed");
|
|
469
473
|
};
|
|
@@ -564,19 +568,38 @@ var AbstractRelay = class {
|
|
|
564
568
|
}, this.publishTimeout);
|
|
565
569
|
this.openEventPublishes.set(event.id, { resolve, reject, timeout });
|
|
566
570
|
});
|
|
567
|
-
|
|
571
|
+
try {
|
|
572
|
+
await this.send('["EVENT",' + JSON.stringify(event) + "]");
|
|
573
|
+
} catch (err) {
|
|
574
|
+
const ep = this.openEventPublishes.get(event.id);
|
|
575
|
+
if (ep) {
|
|
576
|
+
ep.reject(err);
|
|
577
|
+
this.openEventPublishes.delete(event.id);
|
|
578
|
+
}
|
|
579
|
+
}
|
|
568
580
|
this.ongoingOperations--;
|
|
569
581
|
if (this.ongoingOperations === 0)
|
|
570
582
|
this.idleSince = Date.now();
|
|
571
583
|
return ret;
|
|
572
584
|
}
|
|
573
585
|
async count(filters, params) {
|
|
586
|
+
return (await this.countWithHLL(filters, params)).count;
|
|
587
|
+
}
|
|
588
|
+
async countWithHLL(filters, params) {
|
|
574
589
|
this.serial++;
|
|
575
590
|
const id = params?.id || "count:" + this.serial;
|
|
576
591
|
const ret = new Promise((resolve, reject) => {
|
|
577
592
|
this.openCountRequests.set(id, { resolve, reject });
|
|
578
593
|
});
|
|
579
|
-
|
|
594
|
+
try {
|
|
595
|
+
await this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
|
|
596
|
+
} catch (err) {
|
|
597
|
+
const cr = this.openCountRequests.get(id);
|
|
598
|
+
if (cr) {
|
|
599
|
+
cr.reject(err);
|
|
600
|
+
this.openCountRequests.delete(id);
|
|
601
|
+
}
|
|
602
|
+
}
|
|
580
603
|
return ret;
|
|
581
604
|
}
|
|
582
605
|
subscribe(filters, params) {
|
|
@@ -654,7 +677,7 @@ var AbstractRelay = class {
|
|
|
654
677
|
const payload = data[2];
|
|
655
678
|
const cr = this.openCountRequests.get(id);
|
|
656
679
|
if (cr) {
|
|
657
|
-
cr.resolve(payload
|
|
680
|
+
cr.resolve(payload);
|
|
658
681
|
this.openCountRequests.delete(id);
|
|
659
682
|
}
|
|
660
683
|
return;
|
|
@@ -684,8 +707,14 @@ var AbstractRelay = class {
|
|
|
684
707
|
case "CLOSED": {
|
|
685
708
|
const id = data[1];
|
|
686
709
|
const so = this.openSubs.get(id);
|
|
687
|
-
if (!so)
|
|
710
|
+
if (!so) {
|
|
711
|
+
const cr = this.openCountRequests.get(id);
|
|
712
|
+
if (cr) {
|
|
713
|
+
cr.reject(new Error(data[2]));
|
|
714
|
+
this.openCountRequests.delete(id);
|
|
715
|
+
}
|
|
688
716
|
return;
|
|
717
|
+
}
|
|
689
718
|
so.closed = true;
|
|
690
719
|
so.close(data[2]);
|
|
691
720
|
return;
|
|
@@ -794,6 +823,63 @@ var alwaysTrue = (t) => {
|
|
|
794
823
|
return true;
|
|
795
824
|
};
|
|
796
825
|
|
|
826
|
+
// nip45.ts
|
|
827
|
+
import { sha256 as sha2563 } from "@noble/hashes/sha2.js";
|
|
828
|
+
import { bytesToHex as bytesToHex3 } from "@noble/hashes/utils.js";
|
|
829
|
+
var M = 256;
|
|
830
|
+
var HLL_HEX_LENGTH = M * 2;
|
|
831
|
+
var utf8Encoder2 = new TextEncoder();
|
|
832
|
+
function getCountManyFilter(target, directive) {
|
|
833
|
+
switch (directive) {
|
|
834
|
+
case "reactions":
|
|
835
|
+
return { "#e": [target], kinds: [7] };
|
|
836
|
+
case "reposts":
|
|
837
|
+
return { "#e": [target], kinds: [6] };
|
|
838
|
+
case "quotes":
|
|
839
|
+
return { "#q": [target], kinds: [1, 1111] };
|
|
840
|
+
case "replies":
|
|
841
|
+
return { "#e": [target], kinds: [1] };
|
|
842
|
+
case "comments":
|
|
843
|
+
return { "#E": [target], kinds: [1111] };
|
|
844
|
+
case "followers":
|
|
845
|
+
return { "#p": [target], kinds: [3] };
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
function newHll() {
|
|
849
|
+
return new Uint8Array(M);
|
|
850
|
+
}
|
|
851
|
+
function hllDecode(hex) {
|
|
852
|
+
if (hex.length !== HLL_HEX_LENGTH || !/^[0-9a-fA-F]+$/.test(hex))
|
|
853
|
+
return void 0;
|
|
854
|
+
const registers = new Uint8Array(M);
|
|
855
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
856
|
+
registers[i2] = parseInt(hex.slice(i2 * 2, i2 * 2 + 2), 16);
|
|
857
|
+
}
|
|
858
|
+
return registers;
|
|
859
|
+
}
|
|
860
|
+
function hllEncode(registers) {
|
|
861
|
+
if (registers.length !== M)
|
|
862
|
+
throw new Error(`invalid number of registers ${registers.length}`);
|
|
863
|
+
let hex = "";
|
|
864
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
865
|
+
hex += registers[i2].toString(16).padStart(2, "0");
|
|
866
|
+
}
|
|
867
|
+
return hex;
|
|
868
|
+
}
|
|
869
|
+
function mergeHll(target, source) {
|
|
870
|
+
if (target.length === 0)
|
|
871
|
+
target = newHll();
|
|
872
|
+
if (target.length !== M)
|
|
873
|
+
throw new Error(`invalid number of registers ${target.length}`);
|
|
874
|
+
if (source.length !== M)
|
|
875
|
+
throw new Error(`invalid number of registers ${source.length}`);
|
|
876
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
877
|
+
if (source[i2] > target[i2])
|
|
878
|
+
target[i2] = source[i2];
|
|
879
|
+
}
|
|
880
|
+
return target;
|
|
881
|
+
}
|
|
882
|
+
|
|
797
883
|
// abstract-pool.ts
|
|
798
884
|
var AbstractSimplePool = class {
|
|
799
885
|
relays = /* @__PURE__ */ new Map();
|
|
@@ -1021,6 +1107,48 @@ var AbstractSimplePool = class {
|
|
|
1021
1107
|
events.sort((a, b) => b.created_at - a.created_at);
|
|
1022
1108
|
return events[0] || null;
|
|
1023
1109
|
}
|
|
1110
|
+
async countMany(relays, target, directive, params) {
|
|
1111
|
+
const filter = getCountManyFilter(target, directive);
|
|
1112
|
+
const urls = [];
|
|
1113
|
+
for (let i2 = 0; i2 < relays.length; i2++) {
|
|
1114
|
+
const url = normalizeURL(relays[i2]);
|
|
1115
|
+
if (urls.indexOf(url) === -1)
|
|
1116
|
+
urls.push(url);
|
|
1117
|
+
}
|
|
1118
|
+
const responses = await Promise.all(
|
|
1119
|
+
urls.map(async (url) => {
|
|
1120
|
+
if (this.allowConnectingToRelay?.(url, ["read", [filter]]) === false)
|
|
1121
|
+
return null;
|
|
1122
|
+
let relay;
|
|
1123
|
+
try {
|
|
1124
|
+
relay = await this.ensureRelay(url, {
|
|
1125
|
+
connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,
|
|
1126
|
+
abort: params?.abort
|
|
1127
|
+
});
|
|
1128
|
+
} catch (err) {
|
|
1129
|
+
this.onRelayConnectionFailure?.(url);
|
|
1130
|
+
return null;
|
|
1131
|
+
}
|
|
1132
|
+
this.onRelayConnectionSuccess?.(url);
|
|
1133
|
+
return relay.countWithHLL([filter], { id: params?.id }).catch(() => null);
|
|
1134
|
+
})
|
|
1135
|
+
);
|
|
1136
|
+
let count = 0;
|
|
1137
|
+
let hll;
|
|
1138
|
+
for (const response of responses) {
|
|
1139
|
+
if (!response)
|
|
1140
|
+
continue;
|
|
1141
|
+
if (response.count > count)
|
|
1142
|
+
count = response.count;
|
|
1143
|
+
if (!response.hll || response.hll.length !== 512)
|
|
1144
|
+
continue;
|
|
1145
|
+
const registers = hllDecode(response.hll);
|
|
1146
|
+
if (!registers)
|
|
1147
|
+
continue;
|
|
1148
|
+
hll = mergeHll(hll || new Uint8Array(0), registers);
|
|
1149
|
+
}
|
|
1150
|
+
return hll ? { count, hll: hllEncode(hll) } : { count };
|
|
1151
|
+
}
|
|
1024
1152
|
publish(relays, event, params) {
|
|
1025
1153
|
return relays.map(normalizeURL).map(async (url, i2, arr) => {
|
|
1026
1154
|
if (arr.indexOf(url) !== i2) {
|
|
@@ -1310,7 +1438,8 @@ var BunkerSigner = class {
|
|
|
1310
1438
|
}
|
|
1311
1439
|
async close() {
|
|
1312
1440
|
this.isOpen = false;
|
|
1313
|
-
this.subCloser
|
|
1441
|
+
this.subCloser?.close();
|
|
1442
|
+
this.subCloser = void 0;
|
|
1314
1443
|
}
|
|
1315
1444
|
async sendRequest(method, params) {
|
|
1316
1445
|
return new Promise(async (resolve, reject) => {
|
|
@@ -1344,8 +1473,19 @@ var BunkerSigner = class {
|
|
|
1344
1473
|
if (resp !== "pong")
|
|
1345
1474
|
throw new Error(`result is not pong: ${resp}`);
|
|
1346
1475
|
}
|
|
1347
|
-
async connect() {
|
|
1348
|
-
|
|
1476
|
+
async connect(clientMetadata) {
|
|
1477
|
+
const params = [this.bp.pubkey, this.bp.secret || ""];
|
|
1478
|
+
if (clientMetadata) {
|
|
1479
|
+
params.push("");
|
|
1480
|
+
params.push(JSON.stringify(clientMetadata));
|
|
1481
|
+
}
|
|
1482
|
+
await this.sendRequest("connect", params);
|
|
1483
|
+
}
|
|
1484
|
+
async logout() {
|
|
1485
|
+
let resp = await this.sendRequest("logout", []);
|
|
1486
|
+
if (resp !== "ack")
|
|
1487
|
+
throw new Error(`result is not ack: ${resp}`);
|
|
1488
|
+
await this.close();
|
|
1349
1489
|
}
|
|
1350
1490
|
async getPublicKey() {
|
|
1351
1491
|
if (!this.cachedPubKey) {
|