@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
|
@@ -453,7 +453,9 @@ var AbstractRelay = class {
|
|
|
453
453
|
connectionTimeoutHandle = setTimeout(() => {
|
|
454
454
|
reject("connection timed out");
|
|
455
455
|
this.connectionPromise = void 0;
|
|
456
|
-
this.
|
|
456
|
+
if (this.reconnectAttempts === 0) {
|
|
457
|
+
this.skipReconnection = true;
|
|
458
|
+
}
|
|
457
459
|
this.onclose?.();
|
|
458
460
|
this.handleHardClose("relay connection timed out");
|
|
459
461
|
}, opts.timeout);
|
|
@@ -497,7 +499,9 @@ var AbstractRelay = class {
|
|
|
497
499
|
clearTimeout(connectionTimeoutHandle);
|
|
498
500
|
reject("connection failed");
|
|
499
501
|
this.connectionPromise = void 0;
|
|
500
|
-
this.
|
|
502
|
+
if (this.reconnectAttempts === 0) {
|
|
503
|
+
this.skipReconnection = true;
|
|
504
|
+
}
|
|
501
505
|
this.onclose?.();
|
|
502
506
|
this.handleHardClose("relay connection failed");
|
|
503
507
|
};
|
|
@@ -598,19 +602,38 @@ var AbstractRelay = class {
|
|
|
598
602
|
}, this.publishTimeout);
|
|
599
603
|
this.openEventPublishes.set(event.id, { resolve, reject, timeout });
|
|
600
604
|
});
|
|
601
|
-
|
|
605
|
+
try {
|
|
606
|
+
await this.send('["EVENT",' + JSON.stringify(event) + "]");
|
|
607
|
+
} catch (err) {
|
|
608
|
+
const ep = this.openEventPublishes.get(event.id);
|
|
609
|
+
if (ep) {
|
|
610
|
+
ep.reject(err);
|
|
611
|
+
this.openEventPublishes.delete(event.id);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
602
614
|
this.ongoingOperations--;
|
|
603
615
|
if (this.ongoingOperations === 0)
|
|
604
616
|
this.idleSince = Date.now();
|
|
605
617
|
return ret;
|
|
606
618
|
}
|
|
607
619
|
async count(filters, params) {
|
|
620
|
+
return (await this.countWithHLL(filters, params)).count;
|
|
621
|
+
}
|
|
622
|
+
async countWithHLL(filters, params) {
|
|
608
623
|
this.serial++;
|
|
609
624
|
const id = params?.id || "count:" + this.serial;
|
|
610
625
|
const ret = new Promise((resolve, reject) => {
|
|
611
626
|
this.openCountRequests.set(id, { resolve, reject });
|
|
612
627
|
});
|
|
613
|
-
|
|
628
|
+
try {
|
|
629
|
+
await this.send('["COUNT","' + id + '",' + JSON.stringify(filters).substring(1));
|
|
630
|
+
} catch (err) {
|
|
631
|
+
const cr = this.openCountRequests.get(id);
|
|
632
|
+
if (cr) {
|
|
633
|
+
cr.reject(err);
|
|
634
|
+
this.openCountRequests.delete(id);
|
|
635
|
+
}
|
|
636
|
+
}
|
|
614
637
|
return ret;
|
|
615
638
|
}
|
|
616
639
|
subscribe(filters, params) {
|
|
@@ -688,7 +711,7 @@ var AbstractRelay = class {
|
|
|
688
711
|
const payload = data[2];
|
|
689
712
|
const cr = this.openCountRequests.get(id);
|
|
690
713
|
if (cr) {
|
|
691
|
-
cr.resolve(payload
|
|
714
|
+
cr.resolve(payload);
|
|
692
715
|
this.openCountRequests.delete(id);
|
|
693
716
|
}
|
|
694
717
|
return;
|
|
@@ -718,8 +741,14 @@ var AbstractRelay = class {
|
|
|
718
741
|
case "CLOSED": {
|
|
719
742
|
const id = data[1];
|
|
720
743
|
const so = this.openSubs.get(id);
|
|
721
|
-
if (!so)
|
|
744
|
+
if (!so) {
|
|
745
|
+
const cr = this.openCountRequests.get(id);
|
|
746
|
+
if (cr) {
|
|
747
|
+
cr.reject(new Error(data[2]));
|
|
748
|
+
this.openCountRequests.delete(id);
|
|
749
|
+
}
|
|
722
750
|
return;
|
|
751
|
+
}
|
|
723
752
|
so.closed = true;
|
|
724
753
|
so.close(data[2]);
|
|
725
754
|
return;
|
|
@@ -828,6 +857,63 @@ var alwaysTrue = (t) => {
|
|
|
828
857
|
return true;
|
|
829
858
|
};
|
|
830
859
|
|
|
860
|
+
// nip45.ts
|
|
861
|
+
var import_sha23 = require("@noble/hashes/sha2.js");
|
|
862
|
+
var import_utils8 = require("@noble/hashes/utils.js");
|
|
863
|
+
var M = 256;
|
|
864
|
+
var HLL_HEX_LENGTH = M * 2;
|
|
865
|
+
var utf8Encoder2 = new TextEncoder();
|
|
866
|
+
function getCountManyFilter(target, directive) {
|
|
867
|
+
switch (directive) {
|
|
868
|
+
case "reactions":
|
|
869
|
+
return { "#e": [target], kinds: [7] };
|
|
870
|
+
case "reposts":
|
|
871
|
+
return { "#e": [target], kinds: [6] };
|
|
872
|
+
case "quotes":
|
|
873
|
+
return { "#q": [target], kinds: [1, 1111] };
|
|
874
|
+
case "replies":
|
|
875
|
+
return { "#e": [target], kinds: [1] };
|
|
876
|
+
case "comments":
|
|
877
|
+
return { "#E": [target], kinds: [1111] };
|
|
878
|
+
case "followers":
|
|
879
|
+
return { "#p": [target], kinds: [3] };
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
function newHll() {
|
|
883
|
+
return new Uint8Array(M);
|
|
884
|
+
}
|
|
885
|
+
function hllDecode(hex) {
|
|
886
|
+
if (hex.length !== HLL_HEX_LENGTH || !/^[0-9a-fA-F]+$/.test(hex))
|
|
887
|
+
return void 0;
|
|
888
|
+
const registers = new Uint8Array(M);
|
|
889
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
890
|
+
registers[i2] = parseInt(hex.slice(i2 * 2, i2 * 2 + 2), 16);
|
|
891
|
+
}
|
|
892
|
+
return registers;
|
|
893
|
+
}
|
|
894
|
+
function hllEncode(registers) {
|
|
895
|
+
if (registers.length !== M)
|
|
896
|
+
throw new Error(`invalid number of registers ${registers.length}`);
|
|
897
|
+
let hex = "";
|
|
898
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
899
|
+
hex += registers[i2].toString(16).padStart(2, "0");
|
|
900
|
+
}
|
|
901
|
+
return hex;
|
|
902
|
+
}
|
|
903
|
+
function mergeHll(target, source) {
|
|
904
|
+
if (target.length === 0)
|
|
905
|
+
target = newHll();
|
|
906
|
+
if (target.length !== M)
|
|
907
|
+
throw new Error(`invalid number of registers ${target.length}`);
|
|
908
|
+
if (source.length !== M)
|
|
909
|
+
throw new Error(`invalid number of registers ${source.length}`);
|
|
910
|
+
for (let i2 = 0; i2 < M; i2++) {
|
|
911
|
+
if (source[i2] > target[i2])
|
|
912
|
+
target[i2] = source[i2];
|
|
913
|
+
}
|
|
914
|
+
return target;
|
|
915
|
+
}
|
|
916
|
+
|
|
831
917
|
// abstract-pool.ts
|
|
832
918
|
var AbstractSimplePool = class {
|
|
833
919
|
relays = /* @__PURE__ */ new Map();
|
|
@@ -1055,6 +1141,48 @@ var AbstractSimplePool = class {
|
|
|
1055
1141
|
events.sort((a, b) => b.created_at - a.created_at);
|
|
1056
1142
|
return events[0] || null;
|
|
1057
1143
|
}
|
|
1144
|
+
async countMany(relays, target, directive, params) {
|
|
1145
|
+
const filter = getCountManyFilter(target, directive);
|
|
1146
|
+
const urls = [];
|
|
1147
|
+
for (let i2 = 0; i2 < relays.length; i2++) {
|
|
1148
|
+
const url = normalizeURL(relays[i2]);
|
|
1149
|
+
if (urls.indexOf(url) === -1)
|
|
1150
|
+
urls.push(url);
|
|
1151
|
+
}
|
|
1152
|
+
const responses = await Promise.all(
|
|
1153
|
+
urls.map(async (url) => {
|
|
1154
|
+
if (this.allowConnectingToRelay?.(url, ["read", [filter]]) === false)
|
|
1155
|
+
return null;
|
|
1156
|
+
let relay;
|
|
1157
|
+
try {
|
|
1158
|
+
relay = await this.ensureRelay(url, {
|
|
1159
|
+
connectionTimeout: this.maxWaitForConnection < (params?.maxWait || 0) ? Math.max(params.maxWait * 0.8, params.maxWait - 1e3) : this.maxWaitForConnection,
|
|
1160
|
+
abort: params?.abort
|
|
1161
|
+
});
|
|
1162
|
+
} catch (err) {
|
|
1163
|
+
this.onRelayConnectionFailure?.(url);
|
|
1164
|
+
return null;
|
|
1165
|
+
}
|
|
1166
|
+
this.onRelayConnectionSuccess?.(url);
|
|
1167
|
+
return relay.countWithHLL([filter], { id: params?.id }).catch(() => null);
|
|
1168
|
+
})
|
|
1169
|
+
);
|
|
1170
|
+
let count = 0;
|
|
1171
|
+
let hll;
|
|
1172
|
+
for (const response of responses) {
|
|
1173
|
+
if (!response)
|
|
1174
|
+
continue;
|
|
1175
|
+
if (response.count > count)
|
|
1176
|
+
count = response.count;
|
|
1177
|
+
if (!response.hll || response.hll.length !== 512)
|
|
1178
|
+
continue;
|
|
1179
|
+
const registers = hllDecode(response.hll);
|
|
1180
|
+
if (!registers)
|
|
1181
|
+
continue;
|
|
1182
|
+
hll = mergeHll(hll || new Uint8Array(0), registers);
|
|
1183
|
+
}
|
|
1184
|
+
return hll ? { count, hll: hllEncode(hll) } : { count };
|
|
1185
|
+
}
|
|
1058
1186
|
publish(relays, event, params) {
|
|
1059
1187
|
return relays.map(normalizeURL).map(async (url, i2, arr) => {
|
|
1060
1188
|
if (arr.indexOf(url) !== i2) {
|
|
@@ -1344,7 +1472,8 @@ var BunkerSigner = class {
|
|
|
1344
1472
|
}
|
|
1345
1473
|
async close() {
|
|
1346
1474
|
this.isOpen = false;
|
|
1347
|
-
this.subCloser
|
|
1475
|
+
this.subCloser?.close();
|
|
1476
|
+
this.subCloser = void 0;
|
|
1348
1477
|
}
|
|
1349
1478
|
async sendRequest(method, params) {
|
|
1350
1479
|
return new Promise(async (resolve, reject) => {
|
|
@@ -1378,8 +1507,19 @@ var BunkerSigner = class {
|
|
|
1378
1507
|
if (resp !== "pong")
|
|
1379
1508
|
throw new Error(`result is not pong: ${resp}`);
|
|
1380
1509
|
}
|
|
1381
|
-
async connect() {
|
|
1382
|
-
|
|
1510
|
+
async connect(clientMetadata) {
|
|
1511
|
+
const params = [this.bp.pubkey, this.bp.secret || ""];
|
|
1512
|
+
if (clientMetadata) {
|
|
1513
|
+
params.push("");
|
|
1514
|
+
params.push(JSON.stringify(clientMetadata));
|
|
1515
|
+
}
|
|
1516
|
+
await this.sendRequest("connect", params);
|
|
1517
|
+
}
|
|
1518
|
+
async logout() {
|
|
1519
|
+
let resp = await this.sendRequest("logout", []);
|
|
1520
|
+
if (resp !== "ack")
|
|
1521
|
+
throw new Error(`result is not ack: ${resp}`);
|
|
1522
|
+
await this.close();
|
|
1383
1523
|
}
|
|
1384
1524
|
async getPublicKey() {
|
|
1385
1525
|
if (!this.cachedPubKey) {
|