@hashgraphonline/standards-sdk 0.1.187 → 0.1.189
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/browser/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/browser/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/browser/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/browser/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/browser/services/registry-broker/client.d.ts +1 -0
- package/dist/browser/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser/standards-sdk.browser.js +176 -0
- package/dist/browser/standards-sdk.browser.js.map +1 -1
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/browser-root/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/browser-root/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/browser-root/services/registry-broker/client.d.ts +1 -0
- package/dist/browser-root/services/registry-broker/client.d.ts.map +1 -1
- package/dist/browser-root/standards-sdk.root-browser.js +471 -15
- package/dist/browser-root/standards-sdk.root-browser.js.map +1 -1
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/cjs/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/cjs/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/cjs/services/registry-broker/client.d.ts +1 -0
- package/dist/cjs/services/registry-broker/client.d.ts.map +1 -1
- package/dist/cjs/standards-sdk.cjs +2 -2
- package/dist/cjs/standards-sdk.cjs.map +1 -1
- package/dist/es/services/registry-broker/client/agent-network.d.ts +1118 -0
- package/dist/es/services/registry-broker/client/agent-network.d.ts.map +1 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts +4 -0
- package/dist/es/services/registry-broker/client/base-client.d.ts.map +1 -1
- package/dist/es/services/registry-broker/client.d.ts +1 -0
- package/dist/es/services/registry-broker/client.d.ts.map +1 -1
- package/dist/es/standards-sdk.es.js +54 -27
- package/dist/es/standards-sdk.es.js.map +1 -1
- package/dist/es/standards-sdk.es104.js +1 -1
- package/dist/es/standards-sdk.es106.js +1 -1
- package/dist/es/standards-sdk.es108.js +1 -1
- package/dist/es/standards-sdk.es11.js +1 -1
- package/dist/es/standards-sdk.es110.js +1 -1
- package/dist/es/standards-sdk.es116.js +2 -2
- package/dist/es/standards-sdk.es12.js +1 -1
- package/dist/es/standards-sdk.es120.js +4 -4
- package/dist/es/standards-sdk.es121.js +11 -11
- package/dist/es/standards-sdk.es126.js +1 -1
- package/dist/es/standards-sdk.es132.js +3 -2
- package/dist/es/standards-sdk.es132.js.map +1 -1
- package/dist/es/standards-sdk.es147.js +3 -3
- package/dist/es/standards-sdk.es148.js +1 -1
- package/dist/es/standards-sdk.es150.js +24 -15
- package/dist/es/standards-sdk.es150.js.map +1 -1
- package/dist/es/standards-sdk.es152.js +440 -248
- package/dist/es/standards-sdk.es152.js.map +1 -1
- package/dist/es/standards-sdk.es153.js +259 -4
- package/dist/es/standards-sdk.es153.js.map +1 -1
- package/dist/es/standards-sdk.es154.js +4 -81
- package/dist/es/standards-sdk.es154.js.map +1 -1
- package/dist/es/standards-sdk.es155.js +71 -77
- package/dist/es/standards-sdk.es155.js.map +1 -1
- package/dist/es/standards-sdk.es156.js +80 -53
- package/dist/es/standards-sdk.es156.js.map +1 -1
- package/dist/es/standards-sdk.es157.js +59 -2546
- package/dist/es/standards-sdk.es157.js.map +1 -1
- package/dist/es/standards-sdk.es158.js +2547 -159
- package/dist/es/standards-sdk.es158.js.map +1 -1
- package/dist/es/standards-sdk.es159.js +159 -7
- package/dist/es/standards-sdk.es159.js.map +1 -1
- package/dist/es/standards-sdk.es16.js +3 -2
- package/dist/es/standards-sdk.es16.js.map +1 -1
- package/dist/es/standards-sdk.es160.js +7 -86
- package/dist/es/standards-sdk.es160.js.map +1 -1
- package/dist/es/standards-sdk.es161.js +64 -43
- package/dist/es/standards-sdk.es161.js.map +1 -1
- package/dist/es/standards-sdk.es162.js +57 -186
- package/dist/es/standards-sdk.es162.js.map +1 -1
- package/dist/es/standards-sdk.es163.js +188 -20
- package/dist/es/standards-sdk.es163.js.map +1 -1
- package/dist/es/standards-sdk.es164.js +22 -54
- package/dist/es/standards-sdk.es164.js.map +1 -1
- package/dist/es/standards-sdk.es165.js +41 -78
- package/dist/es/standards-sdk.es165.js.map +1 -1
- package/dist/es/standards-sdk.es166.js +81 -35
- package/dist/es/standards-sdk.es166.js.map +1 -1
- package/dist/es/standards-sdk.es167.js +36 -191
- package/dist/es/standards-sdk.es167.js.map +1 -1
- package/dist/es/standards-sdk.es168.js +191 -43
- package/dist/es/standards-sdk.es168.js.map +1 -1
- package/dist/es/standards-sdk.es169.js +46 -39
- package/dist/es/standards-sdk.es169.js.map +1 -1
- package/dist/es/standards-sdk.es170.js +37 -44
- package/dist/es/standards-sdk.es170.js.map +1 -1
- package/dist/es/standards-sdk.es171.js +46 -39
- package/dist/es/standards-sdk.es171.js.map +1 -1
- package/dist/es/standards-sdk.es172.js +29 -102
- package/dist/es/standards-sdk.es172.js.map +1 -1
- package/dist/es/standards-sdk.es173.js +104 -36
- package/dist/es/standards-sdk.es173.js.map +1 -1
- package/dist/es/standards-sdk.es174.js +43 -33
- package/dist/es/standards-sdk.es174.js.map +1 -1
- package/dist/es/standards-sdk.es175.js +44 -72
- package/dist/es/standards-sdk.es175.js.map +1 -1
- package/dist/es/standards-sdk.es176.js +65 -61
- package/dist/es/standards-sdk.es176.js.map +1 -1
- package/dist/es/standards-sdk.es177.js +63 -39
- package/dist/es/standards-sdk.es177.js.map +1 -1
- package/dist/es/standards-sdk.es178.js +44 -36
- package/dist/es/standards-sdk.es178.js.map +1 -1
- package/dist/es/standards-sdk.es179.js +36 -30
- package/dist/es/standards-sdk.es179.js.map +1 -1
- package/dist/es/standards-sdk.es18.js +6 -5
- package/dist/es/standards-sdk.es18.js.map +1 -1
- package/dist/es/standards-sdk.es180.js +30 -34
- package/dist/es/standards-sdk.es180.js.map +1 -1
- package/dist/es/standards-sdk.es181.js +34 -48
- package/dist/es/standards-sdk.es181.js.map +1 -1
- package/dist/es/standards-sdk.es182.js +48 -138
- package/dist/es/standards-sdk.es182.js.map +1 -1
- package/dist/es/standards-sdk.es183.js +133 -37
- package/dist/es/standards-sdk.es183.js.map +1 -1
- package/dist/es/standards-sdk.es184.js +34 -12474
- package/dist/es/standards-sdk.es184.js.map +1 -1
- package/dist/es/standards-sdk.es185.js +12425 -615
- package/dist/es/standards-sdk.es185.js.map +1 -1
- package/dist/es/standards-sdk.es186.js +47 -102
- package/dist/es/standards-sdk.es186.js.map +1 -1
- package/dist/es/standards-sdk.es187.js +96 -58
- package/dist/es/standards-sdk.es187.js.map +1 -1
- package/dist/es/standards-sdk.es188.js +73 -48
- package/dist/es/standards-sdk.es188.js.map +1 -1
- package/dist/es/standards-sdk.es189.js +180 -61
- package/dist/es/standards-sdk.es189.js.map +1 -1
- package/dist/es/standards-sdk.es19.js +4 -3
- package/dist/es/standards-sdk.es19.js.map +1 -1
- package/dist/es/standards-sdk.es190.js +659 -187
- package/dist/es/standards-sdk.es190.js.map +1 -1
- package/dist/es/standards-sdk.es197.js +71 -15
- package/dist/es/standards-sdk.es197.js.map +1 -1
- package/dist/es/standards-sdk.es198.js +14 -136
- package/dist/es/standards-sdk.es198.js.map +1 -1
- package/dist/es/standards-sdk.es199.js +104 -482
- package/dist/es/standards-sdk.es199.js.map +1 -1
- package/dist/es/standards-sdk.es200.js +480 -222
- package/dist/es/standards-sdk.es200.js.map +1 -1
- package/dist/es/standards-sdk.es201.js +239 -176
- package/dist/es/standards-sdk.es201.js.map +1 -1
- package/dist/es/standards-sdk.es202.js +178 -101
- package/dist/es/standards-sdk.es202.js.map +1 -1
- package/dist/es/standards-sdk.es203.js +75 -108
- package/dist/es/standards-sdk.es203.js.map +1 -1
- package/dist/es/standards-sdk.es204.js +116 -148
- package/dist/es/standards-sdk.es204.js.map +1 -1
- package/dist/es/standards-sdk.es205.js +146 -646
- package/dist/es/standards-sdk.es205.js.map +1 -1
- package/dist/es/standards-sdk.es206.js +661 -162
- package/dist/es/standards-sdk.es206.js.map +1 -1
- package/dist/es/standards-sdk.es207.js +156 -206
- package/dist/es/standards-sdk.es207.js.map +1 -1
- package/dist/es/standards-sdk.es208.js +219 -223
- package/dist/es/standards-sdk.es208.js.map +1 -1
- package/dist/es/standards-sdk.es209.js +242 -0
- package/dist/es/standards-sdk.es209.js.map +1 -0
- package/dist/es/standards-sdk.es22.js +1 -1
- package/dist/es/standards-sdk.es27.js +6 -5
- package/dist/es/standards-sdk.es27.js.map +1 -1
- package/dist/es/standards-sdk.es30.js +1 -1
- package/dist/es/standards-sdk.es31.js +1 -1
- package/dist/es/standards-sdk.es35.js +4 -3
- package/dist/es/standards-sdk.es35.js.map +1 -1
- package/dist/es/standards-sdk.es36.js +3 -3
- package/dist/es/standards-sdk.es37.js +1 -1
- package/dist/es/standards-sdk.es4.js +1 -1
- package/dist/es/standards-sdk.es53.js +1 -1
- package/dist/es/standards-sdk.es56.js +1 -1
- package/dist/es/standards-sdk.es59.js +1 -1
- package/dist/es/standards-sdk.es60.js +1 -1
- package/dist/es/standards-sdk.es62.js +1 -1
- package/dist/es/standards-sdk.es63.js +2 -2
- package/dist/es/standards-sdk.es64.js +1 -1
- package/dist/es/standards-sdk.es65.js +1 -1
- package/dist/es/standards-sdk.es66.js +1 -1
- package/dist/es/standards-sdk.es67.js +4 -3
- package/dist/es/standards-sdk.es67.js.map +1 -1
- package/dist/es/standards-sdk.es69.js +1 -1
- package/dist/es/standards-sdk.es7.js +1 -1
- package/dist/es/standards-sdk.es71.js +1 -1
- package/dist/es/standards-sdk.es72.js +2 -2
- package/dist/es/standards-sdk.es75.js +3 -3
- package/dist/es/standards-sdk.es76.js +1 -1
- package/dist/es/standards-sdk.es78.js +1 -1
- package/dist/es/standards-sdk.es83.js +1 -1
- package/dist/es/standards-sdk.es84.js +3 -2
- package/dist/es/standards-sdk.es84.js.map +1 -1
- package/dist/es/standards-sdk.es85.js +1 -1
- package/dist/es/standards-sdk.es88.js +1 -1
- package/dist/es/standards-sdk.es90.js +1 -1
- package/dist/es/standards-sdk.es94.js +3 -3
- package/dist/es/standards-sdk.es98.js +1 -1
- package/dist/es/standards-sdk.es99.js +1 -1
- package/package.json +1 -1
|
@@ -1,520 +1,142 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
start: (options) => client.startChat(options),
|
|
7
|
-
readiness: (payload) => client.checkChatReadiness(payload),
|
|
8
|
-
createSession: (payload) => client.createSession(payload),
|
|
9
|
-
resumeSession: (sessionId) => client.resumeSession(sessionId),
|
|
10
|
-
sendMessage: (payload) => client.sendMessage(payload),
|
|
11
|
-
retryMessage: (messageId, payload) => client.retryMessage(messageId, payload),
|
|
12
|
-
cancelSession: (sessionId) => client.cancelSession(sessionId),
|
|
13
|
-
endSession: (sessionId) => client.endSession(sessionId),
|
|
14
|
-
getHistory: (sessionId, options) => client.fetchHistorySnapshot(sessionId, options),
|
|
15
|
-
compactHistory: (payload) => client.compactHistory(payload),
|
|
16
|
-
getEncryptionStatus: (sessionId) => client.fetchEncryptionStatus(sessionId),
|
|
17
|
-
submitEncryptionHandshake: (sessionId, payload) => client.postEncryptionHandshake(sessionId, payload),
|
|
18
|
-
startConversation: (options) => client.startConversation(options),
|
|
19
|
-
acceptConversation: (options) => client.acceptConversation(options),
|
|
20
|
-
createEncryptedSession: (options) => encryptedManager.startSession(options),
|
|
21
|
-
acceptEncryptedSession: (options) => encryptedManager.acceptSession(options)
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
async function checkChatReadiness(client, payload) {
|
|
25
|
-
const body = {};
|
|
26
|
-
const uaid = "uaid" in payload ? payload.uaid?.trim() : void 0;
|
|
27
|
-
const agentUrl = "agentUrl" in payload ? payload.agentUrl?.trim() : void 0;
|
|
28
|
-
if (!uaid && !agentUrl) {
|
|
29
|
-
throw new Error("uaid or agentUrl is required to check chat readiness");
|
|
30
|
-
}
|
|
31
|
-
if (uaid) {
|
|
32
|
-
body.uaid = uaid;
|
|
33
|
-
}
|
|
34
|
-
if (agentUrl) {
|
|
35
|
-
body.agentUrl = agentUrl;
|
|
36
|
-
}
|
|
37
|
-
if (payload.forceRefresh !== void 0) {
|
|
38
|
-
body.forceRefresh = payload.forceRefresh;
|
|
39
|
-
}
|
|
40
|
-
const raw = await client.requestJson("/chat/readiness", {
|
|
41
|
-
method: "POST",
|
|
42
|
-
body,
|
|
43
|
-
headers: { "content-type": "application/json" }
|
|
44
|
-
});
|
|
45
|
-
return client.parseWithSchema(
|
|
46
|
-
raw,
|
|
47
|
-
chatReadinessResponseSchema,
|
|
48
|
-
"chat readiness response"
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
async function createSession(client, payload, allowHistoryAutoTopUp = true) {
|
|
52
|
-
const body = {};
|
|
53
|
-
if ("uaid" in payload && payload.uaid) {
|
|
54
|
-
body.uaid = payload.uaid;
|
|
55
|
-
}
|
|
56
|
-
if ("agentUrl" in payload && payload.agentUrl) {
|
|
57
|
-
body.agentUrl = payload.agentUrl;
|
|
58
|
-
}
|
|
59
|
-
if (payload.auth) {
|
|
60
|
-
body.auth = serialiseAuthConfig(payload.auth);
|
|
61
|
-
}
|
|
62
|
-
if (payload.historyTtlSeconds !== void 0) {
|
|
63
|
-
body.historyTtlSeconds = payload.historyTtlSeconds;
|
|
64
|
-
}
|
|
65
|
-
if (payload.encryptionRequested !== void 0) {
|
|
66
|
-
body.encryptionRequested = payload.encryptionRequested;
|
|
67
|
-
}
|
|
68
|
-
if (payload.senderUaid) {
|
|
69
|
-
body.senderUaid = payload.senderUaid;
|
|
70
|
-
}
|
|
71
|
-
if (payload.visibility) {
|
|
72
|
-
body.visibility = payload.visibility;
|
|
73
|
-
}
|
|
74
|
-
if (payload.idempotencyKey) {
|
|
75
|
-
body.idempotencyKey = payload.idempotencyKey;
|
|
76
|
-
}
|
|
77
|
-
try {
|
|
78
|
-
const raw = await client.requestJson("/chat/session", {
|
|
79
|
-
method: "POST",
|
|
80
|
-
body,
|
|
81
|
-
headers: { "content-type": "application/json" }
|
|
82
|
-
});
|
|
83
|
-
return client.parseWithSchema(
|
|
84
|
-
raw,
|
|
85
|
-
createSessionResponseSchema,
|
|
86
|
-
"chat session response"
|
|
87
|
-
);
|
|
88
|
-
} catch (error) {
|
|
89
|
-
const maybeError = error instanceof Error ? error : null;
|
|
90
|
-
if (allowHistoryAutoTopUp && client.shouldAutoTopUpHistory(payload, maybeError)) {
|
|
91
|
-
await client.executeHistoryAutoTopUp("chat.session");
|
|
92
|
-
return createSession(client, payload, false);
|
|
93
|
-
}
|
|
94
|
-
throw error;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
async function resumeSession(client, sessionId) {
|
|
98
|
-
const normalized = sessionId.trim();
|
|
99
|
-
if (!normalized) {
|
|
100
|
-
throw new Error("sessionId is required to resume a chat session");
|
|
101
|
-
}
|
|
102
|
-
const raw = await client.requestJson(
|
|
103
|
-
`/chat/session/${encodeURIComponent(normalized)}/resume`,
|
|
104
|
-
{ method: "GET" }
|
|
105
|
-
);
|
|
106
|
-
return client.parseWithSchema(
|
|
107
|
-
raw,
|
|
108
|
-
chatSessionResumeResponseSchema,
|
|
109
|
-
"chat session resume response"
|
|
110
|
-
);
|
|
111
|
-
}
|
|
112
|
-
async function startChat(client, encryptedManager, options) {
|
|
113
|
-
if ("uaid" in options && options.uaid) {
|
|
114
|
-
return startConversation(client, encryptedManager, {
|
|
115
|
-
uaid: options.uaid,
|
|
116
|
-
senderUaid: options.senderUaid,
|
|
117
|
-
historyTtlSeconds: options.historyTtlSeconds,
|
|
118
|
-
auth: options.auth,
|
|
119
|
-
encryption: options.encryption,
|
|
120
|
-
onSessionCreated: options.onSessionCreated
|
|
121
|
-
});
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
import { chatHistorySnapshotResponseSchema } from "./standards-sdk.es158.js";
|
|
3
|
+
function identitiesMatch(a, b) {
|
|
4
|
+
if (!a && !b) {
|
|
5
|
+
return true;
|
|
122
6
|
}
|
|
123
|
-
if (
|
|
124
|
-
|
|
125
|
-
agentUrl: options.agentUrl,
|
|
126
|
-
auth: options.auth,
|
|
127
|
-
historyTtlSeconds: options.historyTtlSeconds,
|
|
128
|
-
senderUaid: options.senderUaid
|
|
129
|
-
});
|
|
130
|
-
options.onSessionCreated?.(session.sessionId);
|
|
131
|
-
return createPlaintextConversationHandle(
|
|
132
|
-
client,
|
|
133
|
-
session.sessionId,
|
|
134
|
-
session.encryption ?? null,
|
|
135
|
-
options.auth,
|
|
136
|
-
{ agentUrl: options.agentUrl, uaid: options.uaid }
|
|
137
|
-
);
|
|
7
|
+
if (!a || !b) {
|
|
8
|
+
return false;
|
|
138
9
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
async function startConversation(client, encryptedManager, options) {
|
|
142
|
-
const preference = options.encryption?.preference ?? "preferred";
|
|
143
|
-
const requestEncryption = preference !== "disabled";
|
|
144
|
-
if (!requestEncryption) {
|
|
145
|
-
const session = await createSession(client, {
|
|
146
|
-
uaid: options.uaid,
|
|
147
|
-
auth: options.auth,
|
|
148
|
-
historyTtlSeconds: options.historyTtlSeconds,
|
|
149
|
-
senderUaid: options.senderUaid,
|
|
150
|
-
encryptionRequested: false
|
|
151
|
-
});
|
|
152
|
-
options.onSessionCreated?.(session.sessionId);
|
|
153
|
-
return createPlaintextConversationHandle(
|
|
154
|
-
client,
|
|
155
|
-
session.sessionId,
|
|
156
|
-
session.encryption ?? null,
|
|
157
|
-
options.auth,
|
|
158
|
-
{ uaid: options.uaid }
|
|
159
|
-
);
|
|
10
|
+
if (a.uaid && b.uaid && a.uaid.toLowerCase() === b.uaid.toLowerCase()) {
|
|
11
|
+
return true;
|
|
160
12
|
}
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
uaid: options.uaid,
|
|
164
|
-
senderUaid: options.senderUaid,
|
|
165
|
-
historyTtlSeconds: options.historyTtlSeconds,
|
|
166
|
-
handshakeTimeoutMs: options.encryption?.handshakeTimeoutMs,
|
|
167
|
-
pollIntervalMs: options.encryption?.pollIntervalMs,
|
|
168
|
-
onSessionCreated: (sessionId) => {
|
|
169
|
-
options.onSessionCreated?.(sessionId);
|
|
170
|
-
},
|
|
171
|
-
auth: options.auth
|
|
172
|
-
});
|
|
173
|
-
return handle;
|
|
174
|
-
} catch (error) {
|
|
175
|
-
if (error instanceof EncryptionUnavailableError) {
|
|
176
|
-
if (preference === "required") {
|
|
177
|
-
throw error;
|
|
178
|
-
}
|
|
179
|
-
return createPlaintextConversationHandle(
|
|
180
|
-
client,
|
|
181
|
-
error.sessionId,
|
|
182
|
-
error.summary ?? null,
|
|
183
|
-
options.auth,
|
|
184
|
-
{ uaid: options.uaid }
|
|
185
|
-
);
|
|
186
|
-
}
|
|
187
|
-
throw error;
|
|
13
|
+
if (a.ledgerAccountId && b.ledgerAccountId && a.ledgerAccountId.toLowerCase() === b.ledgerAccountId.toLowerCase()) {
|
|
14
|
+
return true;
|
|
188
15
|
}
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
const preference = options.encryption?.preference ?? "preferred";
|
|
192
|
-
if (preference === "disabled") {
|
|
193
|
-
return createPlaintextConversationHandle(client, options.sessionId, null);
|
|
194
|
-
}
|
|
195
|
-
try {
|
|
196
|
-
const handle = await encryptedManager.acceptSession({
|
|
197
|
-
sessionId: options.sessionId,
|
|
198
|
-
responderUaid: options.responderUaid,
|
|
199
|
-
handshakeTimeoutMs: options.encryption?.handshakeTimeoutMs,
|
|
200
|
-
pollIntervalMs: options.encryption?.pollIntervalMs
|
|
201
|
-
});
|
|
202
|
-
return handle;
|
|
203
|
-
} catch (error) {
|
|
204
|
-
if (error instanceof EncryptionUnavailableError && preference !== "required") {
|
|
205
|
-
return createPlaintextConversationHandle(
|
|
206
|
-
client,
|
|
207
|
-
options.sessionId,
|
|
208
|
-
null,
|
|
209
|
-
void 0,
|
|
210
|
-
{ uaid: options.responderUaid }
|
|
211
|
-
);
|
|
212
|
-
}
|
|
213
|
-
throw error;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
function createPlaintextConversationHandle(client, sessionId, summary, defaultAuth, context) {
|
|
217
|
-
const uaid = context?.uaid?.trim();
|
|
218
|
-
const agentUrl = context?.agentUrl?.trim();
|
|
219
|
-
const fetchHistory = async (options) => {
|
|
220
|
-
const snapshot = await client.fetchHistorySnapshot(sessionId, options);
|
|
221
|
-
if (snapshot.decryptedHistory) {
|
|
222
|
-
return snapshot.decryptedHistory;
|
|
223
|
-
}
|
|
224
|
-
return snapshot.history.map((entry) => ({
|
|
225
|
-
entry,
|
|
226
|
-
plaintext: entry.content
|
|
227
|
-
}));
|
|
228
|
-
};
|
|
229
|
-
return {
|
|
230
|
-
sessionId,
|
|
231
|
-
mode: "plaintext",
|
|
232
|
-
summary: summary ?? null,
|
|
233
|
-
send: async (options) => {
|
|
234
|
-
const plaintext = options.plaintext;
|
|
235
|
-
if (!plaintext || plaintext.trim().length === 0) {
|
|
236
|
-
throw new Error("plaintext is required for chat messages");
|
|
237
|
-
}
|
|
238
|
-
const message = options.message ?? plaintext;
|
|
239
|
-
return sendMessage(client, {
|
|
240
|
-
sessionId,
|
|
241
|
-
message,
|
|
242
|
-
streaming: options.streaming,
|
|
243
|
-
auth: options.auth ?? defaultAuth,
|
|
244
|
-
uaid,
|
|
245
|
-
agentUrl
|
|
246
|
-
});
|
|
247
|
-
},
|
|
248
|
-
decryptHistoryEntry: (entry) => entry.content,
|
|
249
|
-
fetchHistory
|
|
250
|
-
};
|
|
251
|
-
}
|
|
252
|
-
async function compactHistory(client, payload) {
|
|
253
|
-
if (!payload.sessionId || payload.sessionId.trim().length === 0) {
|
|
254
|
-
throw new Error("sessionId is required to compact chat history");
|
|
16
|
+
if (a.userId && b.userId && a.userId === b.userId) {
|
|
17
|
+
return true;
|
|
255
18
|
}
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
body.preserveEntries = Math.floor(payload.preserveEntries);
|
|
19
|
+
if (a.email && b.email && a.email.toLowerCase() === b.email.toLowerCase()) {
|
|
20
|
+
return true;
|
|
259
21
|
}
|
|
260
|
-
|
|
261
|
-
`/chat/session/${encodeURIComponent(payload.sessionId)}/compact`,
|
|
262
|
-
{
|
|
263
|
-
method: "POST",
|
|
264
|
-
headers: { "content-type": "application/json" },
|
|
265
|
-
body
|
|
266
|
-
}
|
|
267
|
-
);
|
|
268
|
-
return client.parseWithSchema(
|
|
269
|
-
raw,
|
|
270
|
-
chatHistoryCompactionResponseSchema,
|
|
271
|
-
"chat history compaction response"
|
|
272
|
-
);
|
|
22
|
+
return false;
|
|
273
23
|
}
|
|
274
|
-
async function
|
|
24
|
+
async function fetchHistorySnapshot(conversationContexts, client, sessionId, options) {
|
|
275
25
|
if (!sessionId || sessionId.trim().length === 0) {
|
|
276
|
-
throw new Error("sessionId is required
|
|
26
|
+
throw new Error("sessionId is required to fetch chat history");
|
|
277
27
|
}
|
|
278
28
|
const raw = await client.requestJson(
|
|
279
|
-
`/chat/session/${encodeURIComponent(sessionId)}/
|
|
29
|
+
`/chat/session/${encodeURIComponent(sessionId)}/history`,
|
|
280
30
|
{
|
|
281
31
|
method: "GET"
|
|
282
32
|
}
|
|
283
33
|
);
|
|
284
|
-
|
|
34
|
+
const snapshot = client.parseWithSchema(
|
|
285
35
|
raw,
|
|
286
|
-
|
|
287
|
-
"
|
|
36
|
+
chatHistorySnapshotResponseSchema,
|
|
37
|
+
"chat history snapshot response"
|
|
288
38
|
);
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
`/chat/session/${encodeURIComponent(sessionId)}/encryption-handshake`,
|
|
296
|
-
{
|
|
297
|
-
method: "POST",
|
|
298
|
-
headers: { "content-type": "application/json" },
|
|
299
|
-
body: {
|
|
300
|
-
role: payload.role,
|
|
301
|
-
keyType: payload.keyType,
|
|
302
|
-
ephemeralPublicKey: payload.ephemeralPublicKey,
|
|
303
|
-
longTermPublicKey: payload.longTermPublicKey,
|
|
304
|
-
signature: payload.signature,
|
|
305
|
-
uaid: payload.uaid,
|
|
306
|
-
userId: payload.userId,
|
|
307
|
-
ledgerAccountId: payload.ledgerAccountId,
|
|
308
|
-
metadata: payload.metadata
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
);
|
|
312
|
-
const response = client.parseWithSchema(
|
|
313
|
-
raw,
|
|
314
|
-
encryptionHandshakeResponseSchema,
|
|
315
|
-
"encryption handshake response"
|
|
316
|
-
);
|
|
317
|
-
return response.handshake;
|
|
318
|
-
}
|
|
319
|
-
async function sendMessage(client, payload) {
|
|
320
|
-
const body = {
|
|
321
|
-
message: payload.message
|
|
322
|
-
};
|
|
323
|
-
if (payload.streaming !== void 0) {
|
|
324
|
-
body.streaming = payload.streaming;
|
|
325
|
-
}
|
|
326
|
-
if (payload.idempotencyKey) {
|
|
327
|
-
body.idempotencyKey = payload.idempotencyKey;
|
|
328
|
-
}
|
|
329
|
-
if (payload.senderUaid) {
|
|
330
|
-
body.senderUaid = payload.senderUaid;
|
|
331
|
-
}
|
|
332
|
-
if (payload.transport) {
|
|
333
|
-
body.transport = payload.transport;
|
|
334
|
-
}
|
|
335
|
-
if (payload.auth) {
|
|
336
|
-
body.auth = serialiseAuthConfig(payload.auth);
|
|
337
|
-
}
|
|
338
|
-
if ("uaid" in payload) {
|
|
339
|
-
body.uaid = payload.uaid;
|
|
340
|
-
}
|
|
341
|
-
if ("sessionId" in payload && payload.sessionId) {
|
|
342
|
-
body.sessionId = payload.sessionId;
|
|
343
|
-
}
|
|
344
|
-
if ("agentUrl" in payload && payload.agentUrl) {
|
|
345
|
-
body.agentUrl = payload.agentUrl;
|
|
346
|
-
}
|
|
347
|
-
let cipherEnvelope = payload.cipherEnvelope ?? null;
|
|
348
|
-
if (payload.encryption) {
|
|
349
|
-
const sessionIdForEncryption = payload.encryption.sessionId ?? (typeof body.sessionId === "string" ? body.sessionId : void 0);
|
|
350
|
-
if (!sessionIdForEncryption) {
|
|
351
|
-
throw new Error(
|
|
352
|
-
"sessionId is required when using encrypted chat payloads"
|
|
353
|
-
);
|
|
354
|
-
}
|
|
355
|
-
if (!payload.encryption.recipients?.length) {
|
|
356
|
-
throw new Error("recipients are required for encrypted chat payloads");
|
|
357
|
-
}
|
|
358
|
-
cipherEnvelope = client.encryption.encryptCipherEnvelope({
|
|
359
|
-
...payload.encryption,
|
|
360
|
-
sessionId: sessionIdForEncryption
|
|
361
|
-
});
|
|
362
|
-
}
|
|
363
|
-
if (cipherEnvelope) {
|
|
364
|
-
body.cipherEnvelope = toJsonObject(cipherEnvelope);
|
|
365
|
-
}
|
|
366
|
-
const raw = await client.requestJson("/chat/message", {
|
|
367
|
-
method: "POST",
|
|
368
|
-
body,
|
|
369
|
-
headers: { "content-type": "application/json" }
|
|
370
|
-
});
|
|
371
|
-
return client.parseWithSchema(
|
|
372
|
-
raw,
|
|
373
|
-
sendMessageResponseSchema,
|
|
374
|
-
"chat message response"
|
|
39
|
+
return attachDecryptedHistory(
|
|
40
|
+
conversationContexts,
|
|
41
|
+
client,
|
|
42
|
+
sessionId,
|
|
43
|
+
snapshot,
|
|
44
|
+
options
|
|
375
45
|
);
|
|
376
46
|
}
|
|
377
|
-
|
|
378
|
-
const
|
|
379
|
-
if (!
|
|
380
|
-
|
|
47
|
+
function attachDecryptedHistory(conversationContexts, client, sessionId, snapshot, options) {
|
|
48
|
+
const shouldDecrypt = options?.decrypt !== void 0 ? options.decrypt : client.encryptionOptions?.autoDecryptHistory === true;
|
|
49
|
+
if (!shouldDecrypt) {
|
|
50
|
+
return snapshot;
|
|
381
51
|
}
|
|
382
|
-
const
|
|
383
|
-
|
|
384
|
-
{ method: "DELETE" }
|
|
52
|
+
const requiresContext = snapshot.history.some(
|
|
53
|
+
(entry) => Boolean(entry.cipherEnvelope)
|
|
385
54
|
);
|
|
386
|
-
if (
|
|
55
|
+
if (!requiresContext) {
|
|
387
56
|
return {
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
57
|
+
...snapshot,
|
|
58
|
+
decryptedHistory: snapshot.history.map((entry) => ({
|
|
59
|
+
entry,
|
|
60
|
+
plaintext: entry.content
|
|
61
|
+
}))
|
|
391
62
|
};
|
|
392
63
|
}
|
|
393
|
-
const
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
sessionId: normalizedSessionId,
|
|
399
|
-
state: "ended"
|
|
400
|
-
};
|
|
401
|
-
}
|
|
402
|
-
const responseBody = await response.text();
|
|
403
|
-
if (responseBody.trim().length === 0) {
|
|
404
|
-
return {
|
|
405
|
-
message: "Session ended",
|
|
406
|
-
sessionId: normalizedSessionId,
|
|
407
|
-
state: "ended"
|
|
408
|
-
};
|
|
409
|
-
}
|
|
410
|
-
const raw = JSON.parse(responseBody);
|
|
411
|
-
return client.parseWithSchema(
|
|
412
|
-
raw,
|
|
413
|
-
chatSessionEndResponseSchema,
|
|
414
|
-
"chat session end response"
|
|
64
|
+
const context = resolveDecryptionContext(
|
|
65
|
+
conversationContexts,
|
|
66
|
+
client,
|
|
67
|
+
sessionId,
|
|
68
|
+
options
|
|
415
69
|
);
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
throw new Error("sessionId is required to cancel a chat session");
|
|
70
|
+
if (!context) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
"Unable to decrypt chat history: encryption context unavailable"
|
|
73
|
+
);
|
|
421
74
|
}
|
|
422
|
-
const
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
);
|
|
428
|
-
return client.parseWithSchema(
|
|
429
|
-
raw,
|
|
430
|
-
chatSessionEndResponseSchema,
|
|
431
|
-
"chat session cancel response"
|
|
432
|
-
);
|
|
75
|
+
const decryptedHistory = snapshot.history.map((entry) => ({
|
|
76
|
+
entry,
|
|
77
|
+
plaintext: decryptHistoryEntryFromContext(client, entry, context)
|
|
78
|
+
}));
|
|
79
|
+
return { ...snapshot, decryptedHistory };
|
|
433
80
|
}
|
|
434
|
-
|
|
435
|
-
const
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
throw new Error("messageId is required to retry a message");
|
|
440
|
-
}
|
|
441
|
-
if (!normalizedSessionId) {
|
|
442
|
-
throw new Error("sessionId is required to retry a message");
|
|
443
|
-
}
|
|
444
|
-
if (!normalizedMessage) {
|
|
445
|
-
throw new Error("message is required to retry a message");
|
|
446
|
-
}
|
|
447
|
-
const body = {
|
|
448
|
-
sessionId: normalizedSessionId,
|
|
449
|
-
message: payload.message
|
|
81
|
+
function registerConversationContextForEncryption(conversationContexts, context) {
|
|
82
|
+
const normalized = {
|
|
83
|
+
sessionId: context.sessionId,
|
|
84
|
+
sharedSecret: Buffer.from(context.sharedSecret),
|
|
85
|
+
identity: context.identity ? { ...context.identity } : void 0
|
|
450
86
|
};
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
const idempotencyKey = payload.idempotencyKey?.trim();
|
|
460
|
-
const senderUaid = payload.senderUaid?.trim();
|
|
461
|
-
if (uaid) {
|
|
462
|
-
body.uaid = uaid;
|
|
87
|
+
const entries = conversationContexts.get(context.sessionId) ?? [];
|
|
88
|
+
const existingIndex = entries.findIndex(
|
|
89
|
+
(existing) => identitiesMatch(existing.identity, normalized.identity)
|
|
90
|
+
);
|
|
91
|
+
if (existingIndex >= 0) {
|
|
92
|
+
entries[existingIndex] = normalized;
|
|
93
|
+
} else {
|
|
94
|
+
entries.push(normalized);
|
|
463
95
|
}
|
|
464
|
-
|
|
465
|
-
|
|
96
|
+
conversationContexts.set(context.sessionId, entries);
|
|
97
|
+
}
|
|
98
|
+
function resolveDecryptionContext(conversationContexts, client, sessionId, options) {
|
|
99
|
+
if (options?.sharedSecret) {
|
|
100
|
+
return {
|
|
101
|
+
sessionId,
|
|
102
|
+
sharedSecret: client.normalizeSharedSecret(options.sharedSecret),
|
|
103
|
+
identity: options.identity
|
|
104
|
+
};
|
|
466
105
|
}
|
|
467
|
-
|
|
468
|
-
|
|
106
|
+
const contexts = conversationContexts.get(sessionId);
|
|
107
|
+
if (!contexts || contexts.length === 0) {
|
|
108
|
+
return null;
|
|
469
109
|
}
|
|
470
|
-
if (
|
|
471
|
-
|
|
110
|
+
if (options?.identity) {
|
|
111
|
+
const match = contexts.find(
|
|
112
|
+
(context) => identitiesMatch(context.identity, options.identity)
|
|
113
|
+
);
|
|
114
|
+
if (match) {
|
|
115
|
+
return match;
|
|
116
|
+
}
|
|
472
117
|
}
|
|
473
|
-
|
|
474
|
-
|
|
118
|
+
return contexts[0];
|
|
119
|
+
}
|
|
120
|
+
function decryptHistoryEntryFromContext(client, entry, context) {
|
|
121
|
+
const envelope = entry.cipherEnvelope;
|
|
122
|
+
if (!envelope) {
|
|
123
|
+
return entry.content;
|
|
475
124
|
}
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
cipherEnvelope = client.encryption.encryptCipherEnvelope({
|
|
482
|
-
...payload.encryption,
|
|
483
|
-
sessionId: payload.encryption.sessionId ?? normalizedSessionId
|
|
125
|
+
const secret = Buffer.from(context.sharedSecret);
|
|
126
|
+
try {
|
|
127
|
+
return client.encryption.decryptCipherEnvelope({
|
|
128
|
+
envelope,
|
|
129
|
+
sharedSecret: secret
|
|
484
130
|
});
|
|
131
|
+
} catch (_error) {
|
|
132
|
+
return null;
|
|
485
133
|
}
|
|
486
|
-
if (cipherEnvelope) {
|
|
487
|
-
body.cipherEnvelope = toJsonObject(cipherEnvelope);
|
|
488
|
-
}
|
|
489
|
-
const raw = await client.requestJson(
|
|
490
|
-
`/chat/message/${encodeURIComponent(normalizedMessageId)}/retry`,
|
|
491
|
-
{
|
|
492
|
-
method: "POST",
|
|
493
|
-
body,
|
|
494
|
-
headers: { "content-type": "application/json" }
|
|
495
|
-
}
|
|
496
|
-
);
|
|
497
|
-
return client.parseWithSchema(
|
|
498
|
-
raw,
|
|
499
|
-
sendMessageResponseSchema,
|
|
500
|
-
"chat retry response"
|
|
501
|
-
);
|
|
502
134
|
}
|
|
503
135
|
export {
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
createPlaintextConversationHandle,
|
|
510
|
-
createSession,
|
|
511
|
-
endSession,
|
|
512
|
-
fetchEncryptionStatus,
|
|
513
|
-
postEncryptionHandshake,
|
|
514
|
-
resumeSession,
|
|
515
|
-
retryMessage,
|
|
516
|
-
sendMessage,
|
|
517
|
-
startChat,
|
|
518
|
-
startConversation
|
|
136
|
+
attachDecryptedHistory,
|
|
137
|
+
decryptHistoryEntryFromContext,
|
|
138
|
+
fetchHistorySnapshot,
|
|
139
|
+
registerConversationContextForEncryption,
|
|
140
|
+
resolveDecryptionContext
|
|
519
141
|
};
|
|
520
142
|
//# sourceMappingURL=standards-sdk.es199.js.map
|