@hashgraphonline/standards-sdk 0.1.160 → 0.1.161
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/cjs/hcs-14/resolvers/registry.d.ts +18 -1
- package/dist/cjs/hcs-14/resolvers/registry.d.ts.map +1 -1
- package/dist/cjs/hcs-14/resolvers/types.d.ts +17 -0
- package/dist/cjs/hcs-14/resolvers/types.d.ts.map +1 -1
- package/dist/cjs/hcs-14/sdk.d.ts +24 -13
- package/dist/cjs/hcs-14/sdk.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +3 -3
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/hcs-14/resolvers/registry.d.ts +18 -1
- package/dist/es/hcs-14/resolvers/registry.d.ts.map +1 -1
- package/dist/es/hcs-14/resolvers/types.d.ts +17 -0
- package/dist/es/hcs-14/resolvers/types.d.ts.map +1 -1
- package/dist/es/hcs-14/sdk.d.ts +24 -13
- package/dist/es/hcs-14/sdk.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +94 -90
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es100.js +138 -42
- package/dist/es/standards-sdk.es100.js.map +1 -1
- package/dist/es/standards-sdk.es101.js +43 -259
- package/dist/es/standards-sdk.es101.js.map +1 -1
- package/dist/es/standards-sdk.es102.js +245 -82
- package/dist/es/standards-sdk.es102.js.map +1 -1
- package/dist/es/standards-sdk.es103.js +50 -49
- package/dist/es/standards-sdk.es103.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +100 -29
- package/dist/es/standards-sdk.es104.js.map +1 -1
- package/dist/es/standards-sdk.es105.js +27 -229
- package/dist/es/standards-sdk.es105.js.map +1 -1
- package/dist/es/standards-sdk.es106.js +228 -109
- package/dist/es/standards-sdk.es106.js.map +1 -1
- package/dist/es/standards-sdk.es107.js +94 -15
- package/dist/es/standards-sdk.es107.js.map +1 -1
- package/dist/es/standards-sdk.es108.js +30 -80
- package/dist/es/standards-sdk.es108.js.map +1 -1
- package/dist/es/standards-sdk.es109.js +80 -27
- package/dist/es/standards-sdk.es109.js.map +1 -1
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +27 -248
- package/dist/es/standards-sdk.es110.js.map +1 -1
- package/dist/es/standards-sdk.es111.js +246 -472
- package/dist/es/standards-sdk.es111.js.map +1 -1
- package/dist/es/standards-sdk.es112.js +458 -85
- package/dist/es/standards-sdk.es112.js.map +1 -1
- package/dist/es/standards-sdk.es113.js +96 -151
- package/dist/es/standards-sdk.es113.js.map +1 -1
- package/dist/es/standards-sdk.es114.js +155 -29
- package/dist/es/standards-sdk.es114.js.map +1 -1
- package/dist/es/standards-sdk.es115.js +26 -4
- package/dist/es/standards-sdk.es115.js.map +1 -1
- package/dist/es/standards-sdk.es116.js +10 -140
- package/dist/es/standards-sdk.es116.js.map +1 -1
- package/dist/es/standards-sdk.es117.js +140 -27
- package/dist/es/standards-sdk.es117.js.map +1 -1
- package/dist/es/standards-sdk.es118.js +27 -20
- package/dist/es/standards-sdk.es118.js.map +1 -1
- package/dist/es/standards-sdk.es119.js +18 -156
- package/dist/es/standards-sdk.es119.js.map +1 -1
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +148 -191
- package/dist/es/standards-sdk.es120.js.map +1 -1
- package/dist/es/standards-sdk.es121.js +160 -747
- package/dist/es/standards-sdk.es121.js.map +1 -1
- package/dist/es/standards-sdk.es122.js +786 -9
- package/dist/es/standards-sdk.es122.js.map +1 -1
- package/dist/es/standards-sdk.es123.js +13 -567
- package/dist/es/standards-sdk.es123.js.map +1 -1
- package/dist/es/standards-sdk.es124.js +541 -576
- package/dist/es/standards-sdk.es124.js.map +1 -1
- package/dist/es/standards-sdk.es125.js +601 -12
- package/dist/es/standards-sdk.es125.js.map +1 -1
- package/dist/es/standards-sdk.es126.js +13 -2
- package/dist/es/standards-sdk.es126.js.map +1 -1
- package/dist/es/standards-sdk.es127.js +2 -87
- package/dist/es/standards-sdk.es127.js.map +1 -1
- package/dist/es/standards-sdk.es128.js +84 -37
- package/dist/es/standards-sdk.es128.js.map +1 -1
- package/dist/es/standards-sdk.es129.js +40 -2
- package/dist/es/standards-sdk.es129.js.map +1 -1
- package/dist/es/standards-sdk.es13.js +1 -1
- package/dist/es/standards-sdk.es130.js +2 -235
- package/dist/es/standards-sdk.es130.js.map +1 -1
- package/dist/es/standards-sdk.es131.js +204 -1109
- package/dist/es/standards-sdk.es131.js.map +1 -1
- package/dist/es/standards-sdk.es132.js +1059 -225
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es133.js +303 -419
- package/dist/es/standards-sdk.es133.js.map +1 -1
- package/dist/es/standards-sdk.es134.js +418 -351
- package/dist/es/standards-sdk.es134.js.map +1 -1
- package/dist/es/standards-sdk.es135.js +347 -1108
- package/dist/es/standards-sdk.es135.js.map +1 -1
- package/dist/es/standards-sdk.es136.js +1088 -180
- package/dist/es/standards-sdk.es136.js.map +1 -1
- package/dist/es/standards-sdk.es137.js +153 -1512
- package/dist/es/standards-sdk.es137.js.map +1 -1
- package/dist/es/standards-sdk.es138.js +1567 -1255
- package/dist/es/standards-sdk.es138.js.map +1 -1
- package/dist/es/standards-sdk.es139.js +1255 -17
- package/dist/es/standards-sdk.es139.js.map +1 -1
- package/dist/es/standards-sdk.es14.js +1 -1
- package/dist/es/standards-sdk.es140.js +15 -85
- package/dist/es/standards-sdk.es140.js.map +1 -1
- package/dist/es/standards-sdk.es141.js +77 -71
- package/dist/es/standards-sdk.es141.js.map +1 -1
- package/dist/es/standards-sdk.es142.js +79 -891
- package/dist/es/standards-sdk.es142.js.map +1 -1
- package/dist/es/standards-sdk.es143.js +886 -53
- package/dist/es/standards-sdk.es143.js.map +1 -1
- package/dist/es/standards-sdk.es144.js +53 -152
- package/dist/es/standards-sdk.es144.js.map +1 -1
- package/dist/es/standards-sdk.es145.js +159 -7
- package/dist/es/standards-sdk.es145.js.map +1 -1
- package/dist/es/standards-sdk.es146.js +7 -86
- package/dist/es/standards-sdk.es146.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +65 -44
- package/dist/es/standards-sdk.es147.js.map +1 -1
- package/dist/es/standards-sdk.es148.js +65 -30
- package/dist/es/standards-sdk.es148.js.map +1 -1
- package/dist/es/standards-sdk.es149.js +30 -34
- package/dist/es/standards-sdk.es149.js.map +1 -1
- package/dist/es/standards-sdk.es15.js +1 -1
- package/dist/es/standards-sdk.es150.js +34 -41
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es151.js +45 -138
- package/dist/es/standards-sdk.es151.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +133 -37
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +34 -12474
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +12444 -134
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +13 -318
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +55 -345
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +68 -437
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +71 -321
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +63 -66
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +5 -5
- package/dist/es/standards-sdk.es160.js +168 -13
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +312 -232
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +345 -55
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +437 -68
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +321 -71
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +66 -63
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +220 -150
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +152 -202
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +206 -223
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +227 -107
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +98 -105
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +105 -140
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +140 -164
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +165 -119
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +111 -303
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +297 -225
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +253 -110
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +119 -0
- package/dist/es/standards-sdk.es177.js.map +1 -0
- package/dist/es/standards-sdk.es18.js +12 -12
- package/dist/es/standards-sdk.es19.js +9 -9
- package/dist/es/standards-sdk.es2.js +2 -2
- package/dist/es/standards-sdk.es20.js +1 -1
- package/dist/es/standards-sdk.es21.js +1 -1
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es23.js +1 -1
- package/dist/es/standards-sdk.es24.js +1 -1
- package/dist/es/standards-sdk.es25.js +1 -1
- package/dist/es/standards-sdk.es26.js +1 -1
- package/dist/es/standards-sdk.es27.js +12 -12
- package/dist/es/standards-sdk.es30.js +2 -2
- package/dist/es/standards-sdk.es31.js +4 -4
- package/dist/es/standards-sdk.es32.js +1 -1
- package/dist/es/standards-sdk.es35.js +6 -6
- package/dist/es/standards-sdk.es36.js +4 -4
- package/dist/es/standards-sdk.es37.js +2 -2
- package/dist/es/standards-sdk.es38.js +2 -2
- package/dist/es/standards-sdk.es39.js +1 -1
- package/dist/es/standards-sdk.es4.js +2 -2
- package/dist/es/standards-sdk.es40.js +1 -1
- package/dist/es/standards-sdk.es41.js +2 -2
- package/dist/es/standards-sdk.es46.js +1 -1
- package/dist/es/standards-sdk.es5.js +2 -2
- package/dist/es/standards-sdk.es51.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +2 -2
- package/dist/es/standards-sdk.es58.js +11 -236
- package/dist/es/standards-sdk.es58.js.map +1 -1
- package/dist/es/standards-sdk.es59.js +321 -35
- package/dist/es/standards-sdk.es59.js.map +1 -1
- package/dist/es/standards-sdk.es6.js +2 -2
- package/dist/es/standards-sdk.es60.js +32 -101
- package/dist/es/standards-sdk.es60.js.map +1 -1
- package/dist/es/standards-sdk.es61.js +86 -156
- package/dist/es/standards-sdk.es61.js.map +1 -1
- package/dist/es/standards-sdk.es62.js +112 -153
- package/dist/es/standards-sdk.es62.js.map +1 -1
- package/dist/es/standards-sdk.es63.js +179 -87
- package/dist/es/standards-sdk.es63.js.map +1 -1
- package/dist/es/standards-sdk.es64.js +124 -40
- package/dist/es/standards-sdk.es64.js.map +1 -1
- package/dist/es/standards-sdk.es65.js +41 -251
- package/dist/es/standards-sdk.es65.js.map +1 -1
- package/dist/es/standards-sdk.es66.js +257 -24
- package/dist/es/standards-sdk.es66.js.map +1 -1
- package/dist/es/standards-sdk.es67.js +25 -87
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es68.js +95 -3
- package/dist/es/standards-sdk.es68.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +3 -100
- package/dist/es/standards-sdk.es69.js.map +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es70.js +62 -61
- package/dist/es/standards-sdk.es70.js.map +1 -1
- package/dist/es/standards-sdk.es71.js +98 -17
- package/dist/es/standards-sdk.es71.js.map +1 -1
- package/dist/es/standards-sdk.es72.js +19 -77
- package/dist/es/standards-sdk.es72.js.map +1 -1
- package/dist/es/standards-sdk.es73.js +77 -458
- package/dist/es/standards-sdk.es73.js.map +1 -1
- package/dist/es/standards-sdk.es74.js +240 -106
- package/dist/es/standards-sdk.es74.js.map +1 -1
- package/dist/es/standards-sdk.es75.js +286 -170
- package/dist/es/standards-sdk.es75.js.map +1 -1
- package/dist/es/standards-sdk.es76.js +207 -71
- package/dist/es/standards-sdk.es76.js.map +1 -1
- package/dist/es/standards-sdk.es77.js +72 -71
- package/dist/es/standards-sdk.es77.js.map +1 -1
- package/dist/es/standards-sdk.es78.js +71 -143
- package/dist/es/standards-sdk.es78.js.map +1 -1
- package/dist/es/standards-sdk.es79.js +136 -62
- package/dist/es/standards-sdk.es79.js.map +1 -1
- package/dist/es/standards-sdk.es80.js +45 -380
- package/dist/es/standards-sdk.es80.js.map +1 -1
- package/dist/es/standards-sdk.es81.js +130 -222
- package/dist/es/standards-sdk.es81.js.map +1 -1
- package/dist/es/standards-sdk.es82.js +444 -313
- package/dist/es/standards-sdk.es82.js.map +1 -1
- package/dist/es/standards-sdk.es83.js +364 -88
- package/dist/es/standards-sdk.es83.js.map +1 -1
- package/dist/es/standards-sdk.es84.js +89 -125
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +125 -8
- package/dist/es/standards-sdk.es85.js.map +1 -1
- package/dist/es/standards-sdk.es86.js +6 -45
- package/dist/es/standards-sdk.es86.js.map +1 -1
- package/dist/es/standards-sdk.es87.js +44 -98
- package/dist/es/standards-sdk.es87.js.map +1 -1
- package/dist/es/standards-sdk.es88.js +84 -331
- package/dist/es/standards-sdk.es88.js.map +1 -1
- package/dist/es/standards-sdk.es89.js +160 -93
- package/dist/es/standards-sdk.es89.js.map +1 -1
- package/dist/es/standards-sdk.es9.js +2 -2
- package/dist/es/standards-sdk.es90.js +275 -55
- package/dist/es/standards-sdk.es90.js.map +1 -1
- package/dist/es/standards-sdk.es91.js +55 -43
- package/dist/es/standards-sdk.es91.js.map +1 -1
- package/dist/es/standards-sdk.es92.js +44 -145
- package/dist/es/standards-sdk.es92.js.map +1 -1
- package/dist/es/standards-sdk.es93.js +113 -30
- package/dist/es/standards-sdk.es93.js.map +1 -1
- package/dist/es/standards-sdk.es94.js +59 -22
- package/dist/es/standards-sdk.es94.js.map +1 -1
- package/dist/es/standards-sdk.es95.js +28 -23
- package/dist/es/standards-sdk.es95.js.map +1 -1
- package/dist/es/standards-sdk.es96.js +23 -238
- package/dist/es/standards-sdk.es96.js.map +1 -1
- package/dist/es/standards-sdk.es97.js +225 -267
- package/dist/es/standards-sdk.es97.js.map +1 -1
- package/dist/es/standards-sdk.es98.js +220 -95
- package/dist/es/standards-sdk.es98.js.map +1 -1
- package/dist/es/standards-sdk.es99.js +136 -124
- package/dist/es/standards-sdk.es99.js.map +1 -1
- package/package.json +4 -1
|
@@ -1,119 +1,262 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return client.parseWithSchema(
|
|
8
|
-
raw,
|
|
9
|
-
verificationStatusResponseSchema,
|
|
10
|
-
"verification status response"
|
|
11
|
-
);
|
|
1
|
+
class EncryptionUnavailableError extends Error {
|
|
2
|
+
constructor(sessionId, summary) {
|
|
3
|
+
super("Encryption is not enabled for this session");
|
|
4
|
+
this.sessionId = sessionId;
|
|
5
|
+
this.summary = summary;
|
|
6
|
+
}
|
|
12
7
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
async function verifyVerificationChallenge(client, params) {
|
|
37
|
-
const raw = await client.requestJson("/verification/verify", {
|
|
38
|
-
method: "POST",
|
|
39
|
-
headers: { "content-type": "application/json" },
|
|
40
|
-
body: {
|
|
41
|
-
challengeId: params.challengeId,
|
|
42
|
-
method: params.method ?? "moltbook-post"
|
|
8
|
+
class EncryptedChatManager {
|
|
9
|
+
constructor(client) {
|
|
10
|
+
this.client = client;
|
|
11
|
+
}
|
|
12
|
+
registerConversationContext(context) {
|
|
13
|
+
this.client.registerConversationContextForEncryption(context);
|
|
14
|
+
}
|
|
15
|
+
async startSession(options) {
|
|
16
|
+
await this.client.encryptionReady();
|
|
17
|
+
const session = await this.client.chat.createSession({
|
|
18
|
+
uaid: options.uaid,
|
|
19
|
+
senderUaid: options.senderUaid,
|
|
20
|
+
encryptionRequested: true,
|
|
21
|
+
historyTtlSeconds: options.historyTtlSeconds,
|
|
22
|
+
auth: options.auth
|
|
23
|
+
});
|
|
24
|
+
options.onSessionCreated?.(session.sessionId);
|
|
25
|
+
const summary = session.encryption;
|
|
26
|
+
if (!summary?.enabled) {
|
|
27
|
+
throw new EncryptionUnavailableError(
|
|
28
|
+
session.sessionId,
|
|
29
|
+
session.encryption ?? null
|
|
30
|
+
);
|
|
43
31
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
32
|
+
const handle = await this.establishRequesterContext({
|
|
33
|
+
sessionId: session.sessionId,
|
|
34
|
+
summary,
|
|
35
|
+
senderUaid: options.senderUaid,
|
|
36
|
+
handshakeTimeoutMs: options.handshakeTimeoutMs,
|
|
37
|
+
pollIntervalMs: options.pollIntervalMs
|
|
38
|
+
});
|
|
39
|
+
return handle;
|
|
40
|
+
}
|
|
41
|
+
async acceptSession(options) {
|
|
42
|
+
await this.client.encryptionReady();
|
|
43
|
+
const summary = await this.waitForEncryptionSummary(
|
|
44
|
+
options.sessionId,
|
|
45
|
+
options.handshakeTimeoutMs,
|
|
46
|
+
options.pollIntervalMs
|
|
47
|
+
);
|
|
48
|
+
const handle = await this.establishResponderContext({
|
|
49
|
+
sessionId: options.sessionId,
|
|
50
|
+
summary,
|
|
51
|
+
responderUaid: options.responderUaid,
|
|
52
|
+
handshakeTimeoutMs: options.handshakeTimeoutMs,
|
|
53
|
+
pollIntervalMs: options.pollIntervalMs
|
|
54
|
+
});
|
|
55
|
+
return handle;
|
|
56
|
+
}
|
|
57
|
+
async establishRequesterContext(params) {
|
|
58
|
+
const keyPair = this.client.encryption.generateEphemeralKeyPair();
|
|
59
|
+
await this.client.chat.submitEncryptionHandshake(params.sessionId, {
|
|
60
|
+
role: "requester",
|
|
61
|
+
keyType: "secp256k1",
|
|
62
|
+
ephemeralPublicKey: keyPair.publicKey,
|
|
63
|
+
uaid: params.senderUaid ?? params.summary.requester?.uaid ?? void 0
|
|
64
|
+
});
|
|
65
|
+
const { summary, record } = await this.waitForHandshakeCompletion(
|
|
66
|
+
params.sessionId,
|
|
67
|
+
params.handshakeTimeoutMs,
|
|
68
|
+
params.pollIntervalMs
|
|
69
|
+
);
|
|
70
|
+
const responderKey = record.responder?.ephemeralPublicKey;
|
|
71
|
+
if (!responderKey) {
|
|
72
|
+
throw new Error("Responder handshake was not completed in time");
|
|
69
73
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
{
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
74
|
+
const sharedSecret = this.client.encryption.deriveSharedSecret({
|
|
75
|
+
privateKey: keyPair.privateKey,
|
|
76
|
+
peerPublicKey: responderKey
|
|
77
|
+
}).subarray();
|
|
78
|
+
const recipients = this.buildRecipients(summary);
|
|
79
|
+
return this.createHandle({
|
|
80
|
+
sessionId: params.sessionId,
|
|
81
|
+
sharedSecret,
|
|
82
|
+
summary,
|
|
83
|
+
recipients,
|
|
84
|
+
identity: summary.requester ?? void 0
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
async establishResponderContext(params) {
|
|
88
|
+
const keyPair = this.client.encryption.generateEphemeralKeyPair();
|
|
89
|
+
await this.client.chat.submitEncryptionHandshake(params.sessionId, {
|
|
90
|
+
role: "responder",
|
|
91
|
+
keyType: "secp256k1",
|
|
92
|
+
ephemeralPublicKey: keyPair.publicKey,
|
|
93
|
+
uaid: params.responderUaid ?? params.summary.responder?.uaid ?? void 0
|
|
94
|
+
});
|
|
95
|
+
const { summary, record } = await this.waitForHandshakeCompletion(
|
|
96
|
+
params.sessionId,
|
|
97
|
+
params.handshakeTimeoutMs,
|
|
98
|
+
params.pollIntervalMs
|
|
99
|
+
);
|
|
100
|
+
const requesterKey = record.requester?.ephemeralPublicKey;
|
|
101
|
+
if (!requesterKey) {
|
|
102
|
+
throw new Error("Requester handshake was not detected in time");
|
|
103
|
+
}
|
|
104
|
+
const sharedSecret = this.client.encryption.deriveSharedSecret({
|
|
105
|
+
privateKey: keyPair.privateKey,
|
|
106
|
+
peerPublicKey: requesterKey
|
|
107
|
+
}).subarray();
|
|
108
|
+
const recipients = this.buildRecipients(summary);
|
|
109
|
+
return this.createHandle({
|
|
110
|
+
sessionId: params.sessionId,
|
|
111
|
+
sharedSecret,
|
|
112
|
+
summary,
|
|
113
|
+
recipients,
|
|
114
|
+
identity: summary.responder ?? void 0
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async waitForHandshakeCompletion(sessionId, timeoutMs = 3e4, pollIntervalMs = 1e3) {
|
|
118
|
+
const deadline = Date.now() + timeoutMs;
|
|
119
|
+
while (true) {
|
|
120
|
+
const status = await this.client.chat.getEncryptionStatus(sessionId);
|
|
121
|
+
const summary = status.encryption;
|
|
122
|
+
const record = summary?.handshake;
|
|
123
|
+
if (summary && record && record.status === "complete") {
|
|
124
|
+
return { summary, record };
|
|
125
|
+
}
|
|
126
|
+
if (Date.now() >= deadline) {
|
|
127
|
+
throw new Error("Timed out waiting for encrypted handshake completion");
|
|
128
|
+
}
|
|
129
|
+
await this.delay(pollIntervalMs);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
async waitForEncryptionSummary(sessionId, _timeoutMs = 3e4, _pollIntervalMs = 1e3) {
|
|
133
|
+
const status = await this.client.chat.getEncryptionStatus(sessionId);
|
|
134
|
+
if (!status.encryption?.enabled) {
|
|
135
|
+
throw new EncryptionUnavailableError(
|
|
136
|
+
sessionId,
|
|
137
|
+
status.encryption ?? null
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
return status.encryption;
|
|
141
|
+
}
|
|
142
|
+
buildRecipients(summary) {
|
|
143
|
+
const candidates = [summary.requester, summary.responder].filter(Boolean);
|
|
144
|
+
const normalized = candidates.map((candidate) => {
|
|
145
|
+
if (!candidate) {
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
const recipient = {};
|
|
149
|
+
if (candidate.uaid) {
|
|
150
|
+
recipient.uaid = candidate.uaid;
|
|
100
151
|
}
|
|
152
|
+
if (candidate.ledgerAccountId) {
|
|
153
|
+
recipient.ledgerAccountId = candidate.ledgerAccountId;
|
|
154
|
+
}
|
|
155
|
+
if (candidate.userId) {
|
|
156
|
+
recipient.userId = candidate.userId;
|
|
157
|
+
}
|
|
158
|
+
if (candidate.email) {
|
|
159
|
+
recipient.email = candidate.email;
|
|
160
|
+
}
|
|
161
|
+
return recipient;
|
|
162
|
+
}).filter(
|
|
163
|
+
(entry) => Boolean(
|
|
164
|
+
entry?.uaid || entry?.ledgerAccountId || entry?.userId || entry?.email
|
|
165
|
+
)
|
|
166
|
+
);
|
|
167
|
+
if (normalized.length > 0) {
|
|
168
|
+
return normalized;
|
|
169
|
+
}
|
|
170
|
+
if (summary.responder?.uaid) {
|
|
171
|
+
return [{ uaid: summary.responder.uaid }];
|
|
172
|
+
}
|
|
173
|
+
return [];
|
|
174
|
+
}
|
|
175
|
+
createHandle(context) {
|
|
176
|
+
const sharedSecret = context.sharedSecret;
|
|
177
|
+
const uaid = context.summary.requester?.uaid ?? context.summary.responder?.uaid ?? context.identity?.uaid;
|
|
178
|
+
const decryptHistoryEntry = (entry) => this.decryptEntry(entry, context.identity, sharedSecret);
|
|
179
|
+
const fetchHistory = async (options) => {
|
|
180
|
+
const snapshot = await this.client.fetchHistorySnapshot(
|
|
181
|
+
context.sessionId,
|
|
182
|
+
options
|
|
183
|
+
);
|
|
184
|
+
if (snapshot.decryptedHistory) {
|
|
185
|
+
return snapshot.decryptedHistory;
|
|
186
|
+
}
|
|
187
|
+
return snapshot.history.map((entry) => ({
|
|
188
|
+
entry,
|
|
189
|
+
plaintext: decryptHistoryEntry(entry)
|
|
190
|
+
}));
|
|
191
|
+
};
|
|
192
|
+
const handle = {
|
|
193
|
+
sessionId: context.sessionId,
|
|
194
|
+
mode: "encrypted",
|
|
195
|
+
summary: context.summary,
|
|
196
|
+
send: async (options) => {
|
|
197
|
+
const recipients = options.recipients ?? context.recipients;
|
|
198
|
+
return this.client.chat.sendMessage({
|
|
199
|
+
sessionId: context.sessionId,
|
|
200
|
+
message: options.message ?? "[ciphertext omitted]",
|
|
201
|
+
streaming: options.streaming,
|
|
202
|
+
auth: options.auth,
|
|
203
|
+
uaid,
|
|
204
|
+
encryption: {
|
|
205
|
+
plaintext: options.plaintext,
|
|
206
|
+
sharedSecret: Buffer.from(sharedSecret),
|
|
207
|
+
recipients
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
},
|
|
211
|
+
decryptHistoryEntry,
|
|
212
|
+
fetchHistory
|
|
213
|
+
};
|
|
214
|
+
this.registerConversationContext({
|
|
215
|
+
sessionId: context.sessionId,
|
|
216
|
+
sharedSecret,
|
|
217
|
+
identity: context.identity
|
|
218
|
+
});
|
|
219
|
+
return handle;
|
|
220
|
+
}
|
|
221
|
+
decryptEntry(entry, identity, fallbackSecret) {
|
|
222
|
+
const envelope = entry.cipherEnvelope;
|
|
223
|
+
if (!envelope) {
|
|
224
|
+
return null;
|
|
225
|
+
}
|
|
226
|
+
const secret = Buffer.from(fallbackSecret);
|
|
227
|
+
try {
|
|
228
|
+
return this.client.encryption.decryptCipherEnvelope({
|
|
229
|
+
envelope,
|
|
230
|
+
sharedSecret: secret
|
|
231
|
+
});
|
|
232
|
+
} catch (_error) {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
recipientMatches(candidate, target) {
|
|
237
|
+
if (target.uaid && candidate.uaid?.toLowerCase() === target.uaid.toLowerCase()) {
|
|
238
|
+
return true;
|
|
239
|
+
}
|
|
240
|
+
if (target.ledgerAccountId && candidate.ledgerAccountId?.toLowerCase() === target.ledgerAccountId.toLowerCase()) {
|
|
241
|
+
return true;
|
|
242
|
+
}
|
|
243
|
+
if (target.userId && candidate.userId === target.userId) {
|
|
244
|
+
return true;
|
|
245
|
+
}
|
|
246
|
+
if (target.email && candidate.email?.toLowerCase() === target.email.toLowerCase()) {
|
|
247
|
+
return true;
|
|
248
|
+
}
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
async delay(ms) {
|
|
252
|
+
if (ms <= 0) {
|
|
253
|
+
return;
|
|
101
254
|
}
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
raw,
|
|
105
|
-
moltbookOwnerRegistrationUpdateResponseSchema,
|
|
106
|
-
"moltbook owner registration update response"
|
|
107
|
-
);
|
|
255
|
+
await new Promise((resolve) => setTimeout(resolve, ms));
|
|
256
|
+
}
|
|
108
257
|
}
|
|
109
258
|
export {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
getVerificationChallenge,
|
|
113
|
-
getVerificationOwnership,
|
|
114
|
-
getVerificationStatus,
|
|
115
|
-
registerOwnedMoltbookAgent,
|
|
116
|
-
verifySenderOwnership,
|
|
117
|
-
verifyVerificationChallenge
|
|
259
|
+
EncryptedChatManager,
|
|
260
|
+
EncryptionUnavailableError
|
|
118
261
|
};
|
|
119
262
|
//# sourceMappingURL=standards-sdk.es176.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standards-sdk.es176.js","sources":["../../src/services/registry-broker/client/verification.ts"],"sourcesContent":["import type {\n JsonValue,\n MoltbookOwnerRegistrationUpdateRequest,\n MoltbookOwnerRegistrationUpdateResponse,\n RegisterStatusResponse,\n VerificationChallengeDetailsResponse,\n VerificationChallengeResponse,\n VerificationOwnershipResponse,\n VerificationStatusResponse,\n VerificationVerifyResponse,\n VerificationVerifySenderResponse,\n} from '../types';\nimport {\n moltbookOwnerRegistrationUpdateResponseSchema,\n registerStatusResponseSchema,\n verificationChallengeDetailsResponseSchema,\n verificationChallengeResponseSchema,\n verificationOwnershipResponseSchema,\n verificationStatusResponseSchema,\n verificationVerifyResponseSchema,\n verificationVerifySenderResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\n\nexport async function getVerificationStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationStatusResponseSchema,\n 'verification status response',\n );\n}\n\nexport async function createVerificationChallenge(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationChallengeResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/challenge', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n });\n return client.parseWithSchema(\n raw,\n verificationChallengeResponseSchema,\n 'verification challenge response',\n );\n}\n\nexport async function getVerificationChallenge(\n client: RegistryBrokerClient,\n challengeId: string,\n): Promise<VerificationChallengeDetailsResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/challenge/${encodeURIComponent(challengeId)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationChallengeDetailsResponseSchema,\n 'verification challenge details response',\n );\n}\n\nexport async function verifyVerificationChallenge(\n client: RegistryBrokerClient,\n params: { challengeId: string; method?: 'moltbook-post' | string },\n): Promise<VerificationVerifyResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n challengeId: params.challengeId,\n method: params.method ?? 'moltbook-post',\n },\n });\n return client.parseWithSchema(\n raw,\n verificationVerifyResponseSchema,\n 'verification verify response',\n );\n}\n\nexport async function getVerificationOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationOwnershipResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/ownership/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationOwnershipResponseSchema,\n 'verification ownership response',\n );\n}\n\nexport async function verifySenderOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationVerifySenderResponse> {\n const raw = await client.requestJson<JsonValue>(\n '/verification/verify-sender',\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n },\n );\n return client.parseWithSchema(\n raw,\n verificationVerifySenderResponseSchema,\n 'verification sender response',\n );\n}\n\nexport async function getRegisterStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<RegisterStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n registerStatusResponseSchema,\n 'register status response',\n );\n}\n\nexport async function registerOwnedMoltbookAgent(\n client: RegistryBrokerClient,\n uaid: string,\n request: MoltbookOwnerRegistrationUpdateRequest,\n): Promise<MoltbookOwnerRegistrationUpdateResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/${encodeURIComponent(uaid)}`,\n {\n method: 'PUT',\n headers: { 'content-type': 'application/json' },\n body: {\n registered: request.registered ?? true,\n ...(request.name ? { name: request.name } : {}),\n ...(request.description ? { description: request.description } : {}),\n ...(request.endpoint ? { endpoint: request.endpoint } : {}),\n ...(request.metadata ? { metadata: request.metadata } : {}),\n },\n },\n );\n return client.parseWithSchema(\n raw,\n moltbookOwnerRegistrationUpdateResponseSchema,\n 'moltbook owner registration update response',\n );\n}\n"],"names":[],"mappings":";AAwBA,eAAsB,sBACpB,QACA,MACqC;AACrC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,wBAAwB,mBAAmB,IAAI,CAAC;AAAA,IAChD,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,4BACpB,QACA,MACwC;AACxC,QAAM,MAAM,MAAM,OAAO,YAAuB,2BAA2B;AAAA,IACzE,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,EAAE,KAAA;AAAA,EAAK,CACd;AACD,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,yBACpB,QACA,aAC+C;AAC/C,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,2BAA2B,mBAAmB,WAAW,CAAC;AAAA,IAC1D,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,4BACpB,QACA,QACqC;AACrC,QAAM,MAAM,MAAM,OAAO,YAAuB,wBAAwB;AAAA,IACtE,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM;AAAA,MACJ,aAAa,OAAO;AAAA,MACpB,QAAQ,OAAO,UAAU;AAAA,IAAA;AAAA,EAC3B,CACD;AACD,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,yBACpB,QACA,MACwC;AACxC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,2BAA2B,mBAAmB,IAAI,CAAC;AAAA,IACnD,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,sBACpB,QACA,MAC2C;AAC3C,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM,EAAE,KAAA;AAAA,IAAK;AAAA,EACf;AAEF,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,kBACpB,QACA,MACiC;AACjC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,oBAAoB,mBAAmB,IAAI,CAAC;AAAA,IAC5C,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,2BACpB,QACA,MACA,SACkD;AAClD,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,aAAa,mBAAmB,IAAI,CAAC;AAAA,IACrC;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM;AAAA,QACJ,YAAY,QAAQ,cAAc;AAAA,QAClC,GAAI,QAAQ,OAAO,EAAE,MAAM,QAAQ,KAAA,IAAS,CAAA;AAAA,QAC5C,GAAI,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAA,IAAgB,CAAA;AAAA,QACjE,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA;AAAA,QACxD,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA;AAAA,MAAC;AAAA,IAC3D;AAAA,EACF;AAEF,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|
|
1
|
+
{"version":3,"file":"standards-sdk.es176.js","sources":["../../src/services/registry-broker/client/encrypted-chat-manager.ts"],"sourcesContent":["import type {\n AcceptEncryptedChatSessionOptions,\n ChatHistoryEntry,\n ChatHistoryFetchOptions,\n CipherEnvelopeRecipient,\n DecryptedHistoryEntry,\n EncryptedChatSessionHandle,\n EncryptionHandshakeRecord,\n RecipientIdentity,\n SessionEncryptionSummary,\n SharedSecretInput,\n StartEncryptedChatSessionOptions,\n} from '../types';\nimport type { RegistryBrokerClient } from './base-client';\n\ninterface EncryptedSessionContext {\n sessionId: string;\n sharedSecret: Uint8Array;\n summary: SessionEncryptionSummary;\n recipients: RecipientIdentity[];\n identity?: RecipientIdentity;\n}\n\ninterface ConversationContextInput {\n sessionId: string;\n sharedSecret: Uint8Array | Buffer;\n identity?: RecipientIdentity;\n}\n\nexport class EncryptionUnavailableError extends Error {\n constructor(\n readonly sessionId: string,\n readonly summary?: SessionEncryptionSummary | null,\n ) {\n super('Encryption is not enabled for this session');\n }\n}\n\nexport class EncryptedChatManager {\n constructor(private readonly client: RegistryBrokerClient) {}\n\n registerConversationContext(context: ConversationContextInput): void {\n this.client.registerConversationContextForEncryption(context);\n }\n\n async startSession(\n options: StartEncryptedChatSessionOptions,\n ): Promise<EncryptedChatSessionHandle> {\n await this.client.encryptionReady();\n const session = await this.client.chat.createSession({\n uaid: options.uaid,\n senderUaid: options.senderUaid,\n encryptionRequested: true,\n historyTtlSeconds: options.historyTtlSeconds,\n auth: options.auth,\n });\n options.onSessionCreated?.(session.sessionId);\n const summary = session.encryption;\n if (!summary?.enabled) {\n throw new EncryptionUnavailableError(\n session.sessionId,\n session.encryption ?? null,\n );\n }\n const handle = await this.establishRequesterContext({\n sessionId: session.sessionId,\n summary,\n senderUaid: options.senderUaid,\n handshakeTimeoutMs: options.handshakeTimeoutMs,\n pollIntervalMs: options.pollIntervalMs,\n });\n return handle;\n }\n\n async acceptSession(\n options: AcceptEncryptedChatSessionOptions,\n ): Promise<EncryptedChatSessionHandle> {\n await this.client.encryptionReady();\n const summary = await this.waitForEncryptionSummary(\n options.sessionId,\n options.handshakeTimeoutMs,\n options.pollIntervalMs,\n );\n const handle = await this.establishResponderContext({\n sessionId: options.sessionId,\n summary,\n responderUaid: options.responderUaid,\n handshakeTimeoutMs: options.handshakeTimeoutMs,\n pollIntervalMs: options.pollIntervalMs,\n });\n return handle;\n }\n\n private async establishRequesterContext(params: {\n sessionId: string;\n summary: SessionEncryptionSummary;\n senderUaid?: string;\n handshakeTimeoutMs?: number;\n pollIntervalMs?: number;\n }): Promise<EncryptedChatSessionHandle> {\n const keyPair = this.client.encryption.generateEphemeralKeyPair();\n await this.client.chat.submitEncryptionHandshake(params.sessionId, {\n role: 'requester',\n keyType: 'secp256k1',\n ephemeralPublicKey: keyPair.publicKey,\n uaid: params.senderUaid ?? params.summary.requester?.uaid ?? undefined,\n });\n const { summary, record } = await this.waitForHandshakeCompletion(\n params.sessionId,\n params.handshakeTimeoutMs,\n params.pollIntervalMs,\n );\n const responderKey = record.responder?.ephemeralPublicKey;\n if (!responderKey) {\n throw new Error('Responder handshake was not completed in time');\n }\n const sharedSecret = this.client.encryption\n .deriveSharedSecret({\n privateKey: keyPair.privateKey,\n peerPublicKey: responderKey,\n })\n .subarray();\n const recipients = this.buildRecipients(summary);\n return this.createHandle({\n sessionId: params.sessionId,\n sharedSecret,\n summary,\n recipients,\n identity: summary.requester ?? undefined,\n });\n }\n\n private async establishResponderContext(params: {\n sessionId: string;\n summary: SessionEncryptionSummary;\n responderUaid?: string;\n handshakeTimeoutMs?: number;\n pollIntervalMs?: number;\n }): Promise<EncryptedChatSessionHandle> {\n const keyPair = this.client.encryption.generateEphemeralKeyPair();\n await this.client.chat.submitEncryptionHandshake(params.sessionId, {\n role: 'responder',\n keyType: 'secp256k1',\n ephemeralPublicKey: keyPair.publicKey,\n uaid: params.responderUaid ?? params.summary.responder?.uaid ?? undefined,\n });\n const { summary, record } = await this.waitForHandshakeCompletion(\n params.sessionId,\n params.handshakeTimeoutMs,\n params.pollIntervalMs,\n );\n const requesterKey = record.requester?.ephemeralPublicKey;\n if (!requesterKey) {\n throw new Error('Requester handshake was not detected in time');\n }\n const sharedSecret = this.client.encryption\n .deriveSharedSecret({\n privateKey: keyPair.privateKey,\n peerPublicKey: requesterKey,\n })\n .subarray();\n const recipients = this.buildRecipients(summary);\n return this.createHandle({\n sessionId: params.sessionId,\n sharedSecret,\n summary,\n recipients,\n identity: summary.responder ?? undefined,\n });\n }\n\n private async waitForHandshakeCompletion(\n sessionId: string,\n timeoutMs = 30_000,\n pollIntervalMs = 1_000,\n ): Promise<{\n summary: SessionEncryptionSummary;\n record: EncryptionHandshakeRecord;\n }> {\n const deadline = Date.now() + timeoutMs;\n while (true) {\n const status = await this.client.chat.getEncryptionStatus(sessionId);\n const summary = status.encryption;\n const record = summary?.handshake;\n if (summary && record && record.status === 'complete') {\n return { summary, record };\n }\n if (Date.now() >= deadline) {\n throw new Error('Timed out waiting for encrypted handshake completion');\n }\n await this.delay(pollIntervalMs);\n }\n }\n\n private async waitForEncryptionSummary(\n sessionId: string,\n _timeoutMs = 30_000,\n _pollIntervalMs = 1_000,\n ): Promise<SessionEncryptionSummary> {\n const status = await this.client.chat.getEncryptionStatus(sessionId);\n if (!status.encryption?.enabled) {\n throw new EncryptionUnavailableError(\n sessionId,\n status.encryption ?? null,\n );\n }\n return status.encryption;\n }\n\n private buildRecipients(\n summary: SessionEncryptionSummary,\n ): RecipientIdentity[] {\n const candidates = [summary.requester, summary.responder].filter(Boolean);\n const normalized = candidates\n .map(candidate => {\n if (!candidate) {\n return null;\n }\n const recipient: RecipientIdentity = {};\n if (candidate.uaid) {\n recipient.uaid = candidate.uaid;\n }\n if (candidate.ledgerAccountId) {\n recipient.ledgerAccountId = candidate.ledgerAccountId;\n }\n if (candidate.userId) {\n recipient.userId = candidate.userId;\n }\n if (candidate.email) {\n recipient.email = candidate.email;\n }\n return recipient;\n })\n .filter((entry): entry is RecipientIdentity =>\n Boolean(\n entry?.uaid ||\n entry?.ledgerAccountId ||\n entry?.userId ||\n entry?.email,\n ),\n );\n if (normalized.length > 0) {\n return normalized;\n }\n if (summary.responder?.uaid) {\n return [{ uaid: summary.responder.uaid }];\n }\n return [];\n }\n\n private createHandle(\n context: EncryptedSessionContext,\n ): EncryptedChatSessionHandle {\n const sharedSecret = context.sharedSecret;\n const uaid =\n context.summary.requester?.uaid ??\n context.summary.responder?.uaid ??\n context.identity?.uaid;\n const decryptHistoryEntry = (entry: ChatHistoryEntry): string | null =>\n this.decryptEntry(entry, context.identity, sharedSecret);\n const fetchHistory = async (\n options?: ChatHistoryFetchOptions,\n ): Promise<DecryptedHistoryEntry[]> => {\n const snapshot = await this.client.fetchHistorySnapshot(\n context.sessionId,\n options,\n );\n if (snapshot.decryptedHistory) {\n return snapshot.decryptedHistory;\n }\n return snapshot.history.map(entry => ({\n entry,\n plaintext: decryptHistoryEntry(entry),\n }));\n };\n const handle: EncryptedChatSessionHandle = {\n sessionId: context.sessionId,\n mode: 'encrypted',\n summary: context.summary,\n send: async options => {\n const recipients = options.recipients ?? context.recipients;\n return this.client.chat.sendMessage({\n sessionId: context.sessionId,\n message: options.message ?? '[ciphertext omitted]',\n streaming: options.streaming,\n auth: options.auth,\n uaid,\n encryption: {\n plaintext: options.plaintext,\n sharedSecret: Buffer.from(sharedSecret),\n recipients,\n },\n });\n },\n decryptHistoryEntry,\n fetchHistory,\n };\n this.registerConversationContext({\n sessionId: context.sessionId,\n sharedSecret,\n identity: context.identity,\n });\n return handle;\n }\n\n private decryptEntry(\n entry: ChatHistoryEntry,\n identity: RecipientIdentity | undefined,\n fallbackSecret: Uint8Array,\n ): string | null {\n const envelope = entry.cipherEnvelope;\n if (!envelope) {\n return null;\n }\n const secret: SharedSecretInput = Buffer.from(fallbackSecret);\n try {\n return this.client.encryption.decryptCipherEnvelope({\n envelope,\n sharedSecret: secret,\n });\n } catch (_error) {\n return null;\n }\n }\n\n private recipientMatches(\n candidate: CipherEnvelopeRecipient,\n target: RecipientIdentity,\n ): boolean {\n if (\n target.uaid &&\n candidate.uaid?.toLowerCase() === target.uaid.toLowerCase()\n ) {\n return true;\n }\n if (\n target.ledgerAccountId &&\n candidate.ledgerAccountId?.toLowerCase() ===\n target.ledgerAccountId.toLowerCase()\n ) {\n return true;\n }\n if (target.userId && candidate.userId === target.userId) {\n return true;\n }\n if (\n target.email &&\n candidate.email?.toLowerCase() === target.email.toLowerCase()\n ) {\n return true;\n }\n return false;\n }\n\n private async delay(ms: number): Promise<void> {\n if (ms <= 0) {\n return;\n }\n await new Promise(resolve => setTimeout(resolve, ms));\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { registerStatusResponseSchema, moltbookOwnerRegistrationUpdateResponseSchema, verificationStatusResponseSchema, verificationChallengeResponseSchema, verificationChallengeDetailsResponseSchema, verificationVerifyResponseSchema, verificationOwnershipResponseSchema, verificationVerifySenderResponseSchema } from "./standards-sdk.es139.js";
|
|
2
|
+
async function getVerificationStatus(client, uaid) {
|
|
3
|
+
const raw = await client.requestJson(
|
|
4
|
+
`/verification/status/${encodeURIComponent(uaid)}`,
|
|
5
|
+
{ method: "GET" }
|
|
6
|
+
);
|
|
7
|
+
return client.parseWithSchema(
|
|
8
|
+
raw,
|
|
9
|
+
verificationStatusResponseSchema,
|
|
10
|
+
"verification status response"
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
async function createVerificationChallenge(client, uaid) {
|
|
14
|
+
const raw = await client.requestJson("/verification/challenge", {
|
|
15
|
+
method: "POST",
|
|
16
|
+
headers: { "content-type": "application/json" },
|
|
17
|
+
body: { uaid }
|
|
18
|
+
});
|
|
19
|
+
return client.parseWithSchema(
|
|
20
|
+
raw,
|
|
21
|
+
verificationChallengeResponseSchema,
|
|
22
|
+
"verification challenge response"
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
async function getVerificationChallenge(client, challengeId) {
|
|
26
|
+
const raw = await client.requestJson(
|
|
27
|
+
`/verification/challenge/${encodeURIComponent(challengeId)}`,
|
|
28
|
+
{ method: "GET" }
|
|
29
|
+
);
|
|
30
|
+
return client.parseWithSchema(
|
|
31
|
+
raw,
|
|
32
|
+
verificationChallengeDetailsResponseSchema,
|
|
33
|
+
"verification challenge details response"
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
async function verifyVerificationChallenge(client, params) {
|
|
37
|
+
const raw = await client.requestJson("/verification/verify", {
|
|
38
|
+
method: "POST",
|
|
39
|
+
headers: { "content-type": "application/json" },
|
|
40
|
+
body: {
|
|
41
|
+
challengeId: params.challengeId,
|
|
42
|
+
method: params.method ?? "moltbook-post"
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
return client.parseWithSchema(
|
|
46
|
+
raw,
|
|
47
|
+
verificationVerifyResponseSchema,
|
|
48
|
+
"verification verify response"
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
async function getVerificationOwnership(client, uaid) {
|
|
52
|
+
const raw = await client.requestJson(
|
|
53
|
+
`/verification/ownership/${encodeURIComponent(uaid)}`,
|
|
54
|
+
{ method: "GET" }
|
|
55
|
+
);
|
|
56
|
+
return client.parseWithSchema(
|
|
57
|
+
raw,
|
|
58
|
+
verificationOwnershipResponseSchema,
|
|
59
|
+
"verification ownership response"
|
|
60
|
+
);
|
|
61
|
+
}
|
|
62
|
+
async function verifySenderOwnership(client, uaid) {
|
|
63
|
+
const raw = await client.requestJson(
|
|
64
|
+
"/verification/verify-sender",
|
|
65
|
+
{
|
|
66
|
+
method: "POST",
|
|
67
|
+
headers: { "content-type": "application/json" },
|
|
68
|
+
body: { uaid }
|
|
69
|
+
}
|
|
70
|
+
);
|
|
71
|
+
return client.parseWithSchema(
|
|
72
|
+
raw,
|
|
73
|
+
verificationVerifySenderResponseSchema,
|
|
74
|
+
"verification sender response"
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
async function getRegisterStatus(client, uaid) {
|
|
78
|
+
const raw = await client.requestJson(
|
|
79
|
+
`/register/status/${encodeURIComponent(uaid)}`,
|
|
80
|
+
{ method: "GET" }
|
|
81
|
+
);
|
|
82
|
+
return client.parseWithSchema(
|
|
83
|
+
raw,
|
|
84
|
+
registerStatusResponseSchema,
|
|
85
|
+
"register status response"
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
async function registerOwnedMoltbookAgent(client, uaid, request) {
|
|
89
|
+
const raw = await client.requestJson(
|
|
90
|
+
`/register/${encodeURIComponent(uaid)}`,
|
|
91
|
+
{
|
|
92
|
+
method: "PUT",
|
|
93
|
+
headers: { "content-type": "application/json" },
|
|
94
|
+
body: {
|
|
95
|
+
registered: request.registered ?? true,
|
|
96
|
+
...request.name ? { name: request.name } : {},
|
|
97
|
+
...request.description ? { description: request.description } : {},
|
|
98
|
+
...request.endpoint ? { endpoint: request.endpoint } : {},
|
|
99
|
+
...request.metadata ? { metadata: request.metadata } : {}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
);
|
|
103
|
+
return client.parseWithSchema(
|
|
104
|
+
raw,
|
|
105
|
+
moltbookOwnerRegistrationUpdateResponseSchema,
|
|
106
|
+
"moltbook owner registration update response"
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
export {
|
|
110
|
+
createVerificationChallenge,
|
|
111
|
+
getRegisterStatus,
|
|
112
|
+
getVerificationChallenge,
|
|
113
|
+
getVerificationOwnership,
|
|
114
|
+
getVerificationStatus,
|
|
115
|
+
registerOwnedMoltbookAgent,
|
|
116
|
+
verifySenderOwnership,
|
|
117
|
+
verifyVerificationChallenge
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=standards-sdk.es177.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"standards-sdk.es177.js","sources":["../../src/services/registry-broker/client/verification.ts"],"sourcesContent":["import type {\n JsonValue,\n MoltbookOwnerRegistrationUpdateRequest,\n MoltbookOwnerRegistrationUpdateResponse,\n RegisterStatusResponse,\n VerificationChallengeDetailsResponse,\n VerificationChallengeResponse,\n VerificationOwnershipResponse,\n VerificationStatusResponse,\n VerificationVerifyResponse,\n VerificationVerifySenderResponse,\n} from '../types';\nimport {\n moltbookOwnerRegistrationUpdateResponseSchema,\n registerStatusResponseSchema,\n verificationChallengeDetailsResponseSchema,\n verificationChallengeResponseSchema,\n verificationOwnershipResponseSchema,\n verificationStatusResponseSchema,\n verificationVerifyResponseSchema,\n verificationVerifySenderResponseSchema,\n} from '../schemas';\nimport type { RegistryBrokerClient } from './base-client';\n\nexport async function getVerificationStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationStatusResponseSchema,\n 'verification status response',\n );\n}\n\nexport async function createVerificationChallenge(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationChallengeResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/challenge', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n });\n return client.parseWithSchema(\n raw,\n verificationChallengeResponseSchema,\n 'verification challenge response',\n );\n}\n\nexport async function getVerificationChallenge(\n client: RegistryBrokerClient,\n challengeId: string,\n): Promise<VerificationChallengeDetailsResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/challenge/${encodeURIComponent(challengeId)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationChallengeDetailsResponseSchema,\n 'verification challenge details response',\n );\n}\n\nexport async function verifyVerificationChallenge(\n client: RegistryBrokerClient,\n params: { challengeId: string; method?: 'moltbook-post' | string },\n): Promise<VerificationVerifyResponse> {\n const raw = await client.requestJson<JsonValue>('/verification/verify', {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: {\n challengeId: params.challengeId,\n method: params.method ?? 'moltbook-post',\n },\n });\n return client.parseWithSchema(\n raw,\n verificationVerifyResponseSchema,\n 'verification verify response',\n );\n}\n\nexport async function getVerificationOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationOwnershipResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/verification/ownership/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n verificationOwnershipResponseSchema,\n 'verification ownership response',\n );\n}\n\nexport async function verifySenderOwnership(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<VerificationVerifySenderResponse> {\n const raw = await client.requestJson<JsonValue>(\n '/verification/verify-sender',\n {\n method: 'POST',\n headers: { 'content-type': 'application/json' },\n body: { uaid },\n },\n );\n return client.parseWithSchema(\n raw,\n verificationVerifySenderResponseSchema,\n 'verification sender response',\n );\n}\n\nexport async function getRegisterStatus(\n client: RegistryBrokerClient,\n uaid: string,\n): Promise<RegisterStatusResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/status/${encodeURIComponent(uaid)}`,\n { method: 'GET' },\n );\n return client.parseWithSchema(\n raw,\n registerStatusResponseSchema,\n 'register status response',\n );\n}\n\nexport async function registerOwnedMoltbookAgent(\n client: RegistryBrokerClient,\n uaid: string,\n request: MoltbookOwnerRegistrationUpdateRequest,\n): Promise<MoltbookOwnerRegistrationUpdateResponse> {\n const raw = await client.requestJson<JsonValue>(\n `/register/${encodeURIComponent(uaid)}`,\n {\n method: 'PUT',\n headers: { 'content-type': 'application/json' },\n body: {\n registered: request.registered ?? true,\n ...(request.name ? { name: request.name } : {}),\n ...(request.description ? { description: request.description } : {}),\n ...(request.endpoint ? { endpoint: request.endpoint } : {}),\n ...(request.metadata ? { metadata: request.metadata } : {}),\n },\n },\n );\n return client.parseWithSchema(\n raw,\n moltbookOwnerRegistrationUpdateResponseSchema,\n 'moltbook owner registration update response',\n );\n}\n"],"names":[],"mappings":";AAwBA,eAAsB,sBACpB,QACA,MACqC;AACrC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,wBAAwB,mBAAmB,IAAI,CAAC;AAAA,IAChD,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,4BACpB,QACA,MACwC;AACxC,QAAM,MAAM,MAAM,OAAO,YAAuB,2BAA2B;AAAA,IACzE,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM,EAAE,KAAA;AAAA,EAAK,CACd;AACD,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,yBACpB,QACA,aAC+C;AAC/C,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,2BAA2B,mBAAmB,WAAW,CAAC;AAAA,IAC1D,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,4BACpB,QACA,QACqC;AACrC,QAAM,MAAM,MAAM,OAAO,YAAuB,wBAAwB;AAAA,IACtE,QAAQ;AAAA,IACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,IAC3B,MAAM;AAAA,MACJ,aAAa,OAAO;AAAA,MACpB,QAAQ,OAAO,UAAU;AAAA,IAAA;AAAA,EAC3B,CACD;AACD,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,yBACpB,QACA,MACwC;AACxC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,2BAA2B,mBAAmB,IAAI,CAAC;AAAA,IACnD,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,sBACpB,QACA,MAC2C;AAC3C,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB;AAAA,IACA;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM,EAAE,KAAA;AAAA,IAAK;AAAA,EACf;AAEF,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,kBACpB,QACA,MACiC;AACjC,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,oBAAoB,mBAAmB,IAAI,CAAC;AAAA,IAC5C,EAAE,QAAQ,MAAA;AAAA,EAAM;AAElB,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEA,eAAsB,2BACpB,QACA,MACA,SACkD;AAClD,QAAM,MAAM,MAAM,OAAO;AAAA,IACvB,aAAa,mBAAmB,IAAI,CAAC;AAAA,IACrC;AAAA,MACE,QAAQ;AAAA,MACR,SAAS,EAAE,gBAAgB,mBAAA;AAAA,MAC3B,MAAM;AAAA,QACJ,YAAY,QAAQ,cAAc;AAAA,QAClC,GAAI,QAAQ,OAAO,EAAE,MAAM,QAAQ,KAAA,IAAS,CAAA;AAAA,QAC5C,GAAI,QAAQ,cAAc,EAAE,aAAa,QAAQ,YAAA,IAAgB,CAAA;AAAA,QACjE,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA;AAAA,QACxD,GAAI,QAAQ,WAAW,EAAE,UAAU,QAAQ,SAAA,IAAa,CAAA;AAAA,MAAC;AAAA,IAC3D;AAAA,EACF;AAEF,SAAO,OAAO;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
import { Client, PrivateKey, AccountCreateTransaction, Hbar, CustomFixedFee, AccountId, TokenId, KeyList, TopicMessageSubmitTransaction, Transaction, ScheduleCreateTransaction, Timestamp } from "@hashgraph/sdk";
|
|
2
2
|
import { AccountCreationError, TopicCreationError, ConnectionConfirmationError, PayloadSizeError } from "./standards-sdk.es17.js";
|
|
3
|
-
import { InscriptionSDK } from "./standards-sdk.
|
|
4
|
-
import { Logger } from "./standards-sdk.
|
|
5
|
-
import { accountIdsToExemptKeys } from "./standards-sdk.
|
|
6
|
-
import { ProgressReporter } from "./standards-sdk.
|
|
3
|
+
import { InscriptionSDK } from "./standards-sdk.es154.js";
|
|
4
|
+
import { Logger } from "./standards-sdk.es117.js";
|
|
5
|
+
import { accountIdsToExemptKeys } from "./standards-sdk.es119.js";
|
|
6
|
+
import { ProgressReporter } from "./standards-sdk.es120.js";
|
|
7
7
|
import "axios";
|
|
8
8
|
import "@hashgraph/proto";
|
|
9
9
|
import "path";
|
|
10
10
|
import "buffer";
|
|
11
11
|
import "crypto";
|
|
12
12
|
import "@noble/curves/secp256k1.js";
|
|
13
|
-
import "./standards-sdk.
|
|
14
|
-
import "./standards-sdk.
|
|
13
|
+
import "./standards-sdk.es139.js";
|
|
14
|
+
import "./standards-sdk.es141.js";
|
|
15
15
|
import "zod";
|
|
16
16
|
import "ethers";
|
|
17
|
-
import "./standards-sdk.
|
|
18
|
-
import { detectKeyTypeFromString } from "./standards-sdk.
|
|
19
|
-
import { getTopicId } from "./standards-sdk.
|
|
20
|
-
import { createNodeOperatorContext, NodeOperatorResolver } from "./standards-sdk.
|
|
17
|
+
import "./standards-sdk.es134.js";
|
|
18
|
+
import { detectKeyTypeFromString } from "./standards-sdk.es125.js";
|
|
19
|
+
import { getTopicId } from "./standards-sdk.es126.js";
|
|
20
|
+
import { createNodeOperatorContext, NodeOperatorResolver } from "./standards-sdk.es152.js";
|
|
21
21
|
import { HCS10BaseClient, Hcs10MemoType } from "./standards-sdk.es16.js";
|
|
22
22
|
import * as mime from "mime-types";
|
|
23
23
|
import { AgentBuilder } from "./standards-sdk.es23.js";
|
|
24
24
|
import { InboundTopicType } from "./standards-sdk.es28.js";
|
|
25
25
|
import { HCS11Client } from "./standards-sdk.es27.js";
|
|
26
|
-
import { inscribe } from "./standards-sdk.
|
|
26
|
+
import { inscribe } from "./standards-sdk.es136.js";
|
|
27
27
|
import { addSeconds } from "date-fns";
|
|
28
|
-
import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.
|
|
28
|
+
import { buildTopicCreateTx, buildMessageTx } from "./standards-sdk.es153.js";
|
|
29
29
|
import { buildHcs10CreateInboundTopicTx, buildHcs10CreateConnectionTopicTx, buildHcs10ConfirmConnectionTx, buildHcs10SendMessageTx, buildHcs10RegistryRegisterTx, buildHcs10CreateOutboundTopicTx, buildHcs10CreateRegistryTopicTx } from "./standards-sdk.es22.js";
|
|
30
30
|
class HCS10Client extends HCS10BaseClient {
|
|
31
31
|
constructor(config) {
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { KeyList, TopicCreateTransaction, AccountId, Transaction, TopicMessageSubmitTransaction, Hbar } from "@hashgraph/sdk";
|
|
2
|
-
import { Logger } from "./standards-sdk.
|
|
2
|
+
import { Logger } from "./standards-sdk.es117.js";
|
|
3
3
|
import "axios";
|
|
4
4
|
import "@hashgraph/proto";
|
|
5
|
-
import { ProgressReporter } from "./standards-sdk.
|
|
5
|
+
import { ProgressReporter } from "./standards-sdk.es120.js";
|
|
6
6
|
import "path";
|
|
7
7
|
import "buffer";
|
|
8
8
|
import "crypto";
|
|
9
9
|
import "@noble/curves/secp256k1.js";
|
|
10
|
-
import "./standards-sdk.
|
|
11
|
-
import "./standards-sdk.
|
|
10
|
+
import "./standards-sdk.es139.js";
|
|
11
|
+
import "./standards-sdk.es141.js";
|
|
12
12
|
import "zod";
|
|
13
13
|
import "ethers";
|
|
14
|
-
import "./standards-sdk.
|
|
15
|
-
import "./standards-sdk.
|
|
16
|
-
import { getTopicId } from "./standards-sdk.
|
|
17
|
-
import { InscriptionSDK } from "./standards-sdk.
|
|
14
|
+
import "./standards-sdk.es134.js";
|
|
15
|
+
import "./standards-sdk.es125.js";
|
|
16
|
+
import { getTopicId } from "./standards-sdk.es126.js";
|
|
17
|
+
import { InscriptionSDK } from "./standards-sdk.es154.js";
|
|
18
18
|
import { HCS10BaseClient, Hcs10MemoType } from "./standards-sdk.es16.js";
|
|
19
19
|
import * as mime from "mime-types";
|
|
20
20
|
import { AgentBuilder } from "./standards-sdk.es23.js";
|
|
21
21
|
import { HCS11Client } from "./standards-sdk.es27.js";
|
|
22
|
-
import { inscribeWithSigner } from "./standards-sdk.
|
|
22
|
+
import { inscribeWithSigner } from "./standards-sdk.es136.js";
|
|
23
23
|
const isBrowser = typeof window !== "undefined";
|
|
24
24
|
class BrowserHCSClient extends HCS10BaseClient {
|
|
25
25
|
constructor(config) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger } from "./standards-sdk.
|
|
2
|
-
import { sleep } from "./standards-sdk.
|
|
1
|
+
import { Logger } from "./standards-sdk.es117.js";
|
|
2
|
+
import { sleep } from "./standards-sdk.es127.js";
|
|
3
3
|
class HCS {
|
|
4
4
|
constructor() {
|
|
5
5
|
this.modelViewerLoaded = false;
|