@awiki/dsh-plugin 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -31
- package/README.zh.md +30 -27
- package/cordis.patch.yml +17 -0
- package/lib/client.js +1269 -272
- package/lib/client.js.map +1 -1
- package/lib/index.js +874 -314
- package/lib/provider.js +52 -16
- package/lib/{sdk-adapter-CDLTgHJA.mjs → sdk-adapter-BeJakxLP.mjs} +142 -4
- package/lib/typert.host.js +419 -89
- package/lib/typert.remote-client.d.ts +19 -3
- package/lib/typert.remote-client.d.ts.map +1 -1
- package/lib/typert.remote-client.js +419 -89
- package/lib/types/client/AwikiDevices.d.ts +28 -0
- package/lib/types/client/AwikiDevices.d.ts.map +1 -0
- package/lib/types/client/AwikiDevices.js +85 -0
- package/lib/types/client/AwikiDevices.js.map +1 -0
- package/lib/types/client/AwikiIdentityAccess.d.ts +6 -5
- package/lib/types/client/AwikiIdentityAccess.d.ts.map +1 -1
- package/lib/types/client/AwikiIdentityAccess.js +88 -27
- package/lib/types/client/AwikiIdentityAccess.js.map +1 -1
- package/lib/types/client/AwikiOverlay.d.ts.map +1 -1
- package/lib/types/client/AwikiOverlay.js +4 -3
- package/lib/types/client/AwikiOverlay.js.map +1 -1
- package/lib/types/client/controller.d.ts +20 -5
- package/lib/types/client/controller.d.ts.map +1 -1
- package/lib/types/client/controller.js +38 -7
- package/lib/types/client/controller.js.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/index.js +8 -0
- package/lib/types/client/index.js.map +1 -1
- package/lib/types/client/slots.d.ts +10 -2
- package/lib/types/client/slots.d.ts.map +1 -1
- package/lib/types/index.d.ts +51 -10
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +675 -174
- package/lib/types/index.js.map +1 -1
- package/lib/types/listener-state.d.ts +5 -3
- package/lib/types/listener-state.d.ts.map +1 -1
- package/lib/types/listener-state.js +28 -13
- package/lib/types/listener-state.js.map +1 -1
- package/lib/types/listener.d.ts +9 -32
- package/lib/types/listener.d.ts.map +1 -1
- package/lib/types/listener.js +11 -127
- package/lib/types/listener.js.map +1 -1
- package/lib/types/provider-api.d.ts +96 -4
- package/lib/types/provider-api.d.ts.map +1 -1
- package/lib/types/provider.d.ts +7 -1
- package/lib/types/provider.d.ts.map +1 -1
- package/lib/types/provider.js +53 -15
- package/lib/types/provider.js.map +1 -1
- package/lib/types/realtime-supervisor.d.ts +43 -0
- package/lib/types/realtime-supervisor.d.ts.map +1 -0
- package/lib/types/realtime-supervisor.js +166 -0
- package/lib/types/realtime-supervisor.js.map +1 -0
- package/lib/types/sdk-adapter.d.ts +28 -2
- package/lib/types/sdk-adapter.d.ts.map +1 -1
- package/lib/types/sdk-adapter.js +132 -3
- package/lib/types/sdk-adapter.js.map +1 -1
- package/lib/types/types.d.ts +76 -6
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/types.js.map +1 -1
- package/package.json +18 -18
- package/lib/types/profile-state.d.ts +0 -11
- package/lib/types/profile-state.d.ts.map +0 -1
- package/lib/types/profile-state.js +0 -48
- package/lib/types/profile-state.js.map +0 -1
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Logger } from '@deepseek-ai/cordis';
|
|
2
|
+
import type { AwikiSdkListenerSyncCause, AwikiSdkRealtimeClient } from './provider-api.ts';
|
|
3
|
+
export interface AwikiRealtimeDiagnostics {
|
|
4
|
+
readonly connected: boolean;
|
|
5
|
+
readonly activeSessionCount: 0 | 1;
|
|
6
|
+
readonly startCount: number;
|
|
7
|
+
readonly stopCount: number;
|
|
8
|
+
readonly lastCommittedSyncCause?: AwikiSdkListenerSyncCause | 'session_start';
|
|
9
|
+
}
|
|
10
|
+
export interface AwikiRealtimeSupervisorConfig {
|
|
11
|
+
readonly onSynchronized?: (cause: AwikiSdkListenerSyncCause | 'session_start') => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/** Own the deployment identity's only WSS without knowing Workspace or Agent policy. */
|
|
14
|
+
export declare class IdentityRealtimeSupervisor {
|
|
15
|
+
private readonly realtime;
|
|
16
|
+
private readonly config;
|
|
17
|
+
private readonly logger;
|
|
18
|
+
private lifecycle;
|
|
19
|
+
private generation;
|
|
20
|
+
private activeSession;
|
|
21
|
+
private readonly stoppedSessions;
|
|
22
|
+
private stopped;
|
|
23
|
+
private connected;
|
|
24
|
+
private startCount;
|
|
25
|
+
private stopCount;
|
|
26
|
+
private lastCommittedSyncCause;
|
|
27
|
+
private retryTimer;
|
|
28
|
+
private resolveRetry;
|
|
29
|
+
constructor(realtime: AwikiSdkRealtimeClient, config?: AwikiRealtimeSupervisorConfig, logger?: Logger);
|
|
30
|
+
/** Start in the background; identity activation must never await connectivity. */
|
|
31
|
+
start(): void;
|
|
32
|
+
diagnostics(): AwikiRealtimeDiagnostics;
|
|
33
|
+
/** Fence late events, wake retry sleep, stop the exact session, and join the lifecycle. */
|
|
34
|
+
dispose(): Promise<void>;
|
|
35
|
+
private current;
|
|
36
|
+
private run;
|
|
37
|
+
private synchronize;
|
|
38
|
+
private observeConnection;
|
|
39
|
+
private stopSession;
|
|
40
|
+
private waitForRetry;
|
|
41
|
+
private wakeRetry;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=realtime-supervisor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-supervisor.d.ts","sourceRoot":"","sources":["../../src/realtime-supervisor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,EAGV,yBAAyB,EAEzB,sBAAsB,EACvB,MAAM,mBAAmB,CAAA;AAK1B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,CAAA;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,yBAAyB,GAAG,eAAe,CAAA;CAC9E;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,KAAK,EAAE,yBAAyB,GAAG,eAAe,KAC/C,OAAO,CAAC,IAAI,CAAC,CAAA;CACnB;AAOD,wFAAwF;AACxF,qBAAa,0BAA0B;IAcnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAfzB,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,aAAa,CAA6C;IAClE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiD;IACjF,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,sBAAsB,CAAyD;IACvF,OAAO,CAAC,UAAU,CAA2C;IAC7D,OAAO,CAAC,YAAY,CAA0B;gBAG3B,QAAQ,EAAE,sBAAsB,EAChC,MAAM,GAAE,6BAAkC,EAC1C,MAAM,GAAE,MAEF;IAGzB,kFAAkF;IAC3E,KAAK,IAAI,IAAI;IAab,WAAW,IAAI,wBAAwB;IAY9C,2FAA2F;IAC9E,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAWrC,OAAO,CAAC,OAAO;YAID,GAAG;YA4CH,WAAW;IAiBzB,OAAO,CAAC,iBAAiB;YAKX,WAAW;IASzB,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,SAAS;CAKlB"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
const RETRY_BASE_DELAY_MS = 1_000;
|
|
2
|
+
const RETRY_MAX_DELAY_MS = 30_000;
|
|
3
|
+
function syncReason(cause) {
|
|
4
|
+
if (cause === 'session_start')
|
|
5
|
+
return 'session_start';
|
|
6
|
+
return cause === 'reconnected' ? 'websocket_reconnect' : 'websocket_hint';
|
|
7
|
+
}
|
|
8
|
+
/** Own the deployment identity's only WSS without knowing Workspace or Agent policy. */
|
|
9
|
+
export class IdentityRealtimeSupervisor {
|
|
10
|
+
realtime;
|
|
11
|
+
config;
|
|
12
|
+
logger;
|
|
13
|
+
lifecycle;
|
|
14
|
+
generation = 0;
|
|
15
|
+
activeSession;
|
|
16
|
+
stoppedSessions = new WeakSet();
|
|
17
|
+
stopped = false;
|
|
18
|
+
connected = false;
|
|
19
|
+
startCount = 0;
|
|
20
|
+
stopCount = 0;
|
|
21
|
+
lastCommittedSyncCause;
|
|
22
|
+
retryTimer;
|
|
23
|
+
resolveRetry;
|
|
24
|
+
constructor(realtime, config = {}, logger = {
|
|
25
|
+
debug() { }, info() { }, warn() { }, error() { }, name: 'awiki-realtime',
|
|
26
|
+
}) {
|
|
27
|
+
this.realtime = realtime;
|
|
28
|
+
this.config = config;
|
|
29
|
+
this.logger = logger;
|
|
30
|
+
}
|
|
31
|
+
/** Start in the background; identity activation must never await connectivity. */
|
|
32
|
+
start() {
|
|
33
|
+
if (this.lifecycle !== undefined || this.stopped)
|
|
34
|
+
return;
|
|
35
|
+
const generation = ++this.generation;
|
|
36
|
+
this.lifecycle = this.run(generation).catch((error) => {
|
|
37
|
+
if (!this.stopped) {
|
|
38
|
+
this.logger.warn('AWiki realtime supervisor stopped unexpectedly: %s', error instanceof Error ? error.message : 'unknown failure');
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
diagnostics() {
|
|
43
|
+
return {
|
|
44
|
+
connected: this.connected,
|
|
45
|
+
activeSessionCount: this.activeSession === undefined ? 0 : 1,
|
|
46
|
+
startCount: this.startCount,
|
|
47
|
+
stopCount: this.stopCount,
|
|
48
|
+
...(this.lastCommittedSyncCause === undefined
|
|
49
|
+
? {}
|
|
50
|
+
: { lastCommittedSyncCause: this.lastCommittedSyncCause }),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/** Fence late events, wake retry sleep, stop the exact session, and join the lifecycle. */
|
|
54
|
+
async dispose() {
|
|
55
|
+
if (this.stopped)
|
|
56
|
+
return;
|
|
57
|
+
this.stopped = true;
|
|
58
|
+
this.generation += 1;
|
|
59
|
+
this.connected = false;
|
|
60
|
+
this.wakeRetry();
|
|
61
|
+
const session = this.activeSession;
|
|
62
|
+
if (session !== undefined)
|
|
63
|
+
await this.stopSession(session).catch(() => undefined);
|
|
64
|
+
await this.lifecycle;
|
|
65
|
+
}
|
|
66
|
+
current(generation) {
|
|
67
|
+
return !this.stopped && this.generation === generation;
|
|
68
|
+
}
|
|
69
|
+
async run(generation) {
|
|
70
|
+
let cause = 'session_start';
|
|
71
|
+
let failures = 0;
|
|
72
|
+
while (this.current(generation)) {
|
|
73
|
+
let session;
|
|
74
|
+
try {
|
|
75
|
+
await this.synchronize(cause, generation);
|
|
76
|
+
if (!this.current(generation))
|
|
77
|
+
return;
|
|
78
|
+
session = await this.realtime.startRealtime();
|
|
79
|
+
if (!this.current(generation)) {
|
|
80
|
+
await this.stopSession(session).catch(() => undefined);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
this.activeSession = session;
|
|
84
|
+
this.startCount += 1;
|
|
85
|
+
this.connected = (await session.getStatus().catch(() => ({ connected: false }))).connected;
|
|
86
|
+
failures = 0;
|
|
87
|
+
while (this.current(generation) && this.activeSession === session) {
|
|
88
|
+
const event = await session.nextEvent();
|
|
89
|
+
if (!this.current(generation) || this.activeSession !== session)
|
|
90
|
+
return;
|
|
91
|
+
if (event === null) {
|
|
92
|
+
await this.stopSession(session);
|
|
93
|
+
cause = 'reconnected';
|
|
94
|
+
break;
|
|
95
|
+
}
|
|
96
|
+
this.observeConnection(event);
|
|
97
|
+
if (event.kind !== 'sync_required')
|
|
98
|
+
continue;
|
|
99
|
+
await this.synchronize(event.cause, generation);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
this.connected = false;
|
|
104
|
+
if (session !== undefined)
|
|
105
|
+
await this.stopSession(session).catch(() => undefined);
|
|
106
|
+
if (!this.current(generation))
|
|
107
|
+
return;
|
|
108
|
+
failures += 1;
|
|
109
|
+
this.logger.warn('AWiki realtime lifecycle failed; retrying: %s', error instanceof Error ? error.message : 'unknown failure');
|
|
110
|
+
await this.waitForRetry(failures, generation);
|
|
111
|
+
cause = cause === 'session_start' ? 'session_start' : 'reconnected';
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
async synchronize(cause, generation) {
|
|
116
|
+
await this.realtime.syncNow(syncReason(cause));
|
|
117
|
+
if (!this.current(generation))
|
|
118
|
+
return;
|
|
119
|
+
this.lastCommittedSyncCause = cause;
|
|
120
|
+
try {
|
|
121
|
+
await this.config.onSynchronized?.(cause);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
this.logger.warn('AWiki realtime post-sync consumer failed: %s', error instanceof Error ? error.message : 'unknown failure');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
observeConnection(event) {
|
|
128
|
+
if (event.kind !== 'connection_state_changed')
|
|
129
|
+
return;
|
|
130
|
+
this.connected = event.state === 'connected';
|
|
131
|
+
}
|
|
132
|
+
async stopSession(session) {
|
|
133
|
+
if (this.stoppedSessions.has(session))
|
|
134
|
+
return;
|
|
135
|
+
this.stoppedSessions.add(session);
|
|
136
|
+
if (this.activeSession === session)
|
|
137
|
+
this.activeSession = undefined;
|
|
138
|
+
this.connected = false;
|
|
139
|
+
this.stopCount += 1;
|
|
140
|
+
await session.stop();
|
|
141
|
+
}
|
|
142
|
+
waitForRetry(failures, generation) {
|
|
143
|
+
if (!this.current(generation))
|
|
144
|
+
return Promise.resolve();
|
|
145
|
+
const delay = Math.min(RETRY_BASE_DELAY_MS * 2 ** Math.min(failures - 1, 10), RETRY_MAX_DELAY_MS);
|
|
146
|
+
return new Promise(resolve => {
|
|
147
|
+
const finish = () => {
|
|
148
|
+
if (this.retryTimer === timer)
|
|
149
|
+
this.retryTimer = undefined;
|
|
150
|
+
if (this.resolveRetry === finish)
|
|
151
|
+
this.resolveRetry = undefined;
|
|
152
|
+
resolve();
|
|
153
|
+
};
|
|
154
|
+
const timer = setTimeout(finish, delay);
|
|
155
|
+
this.retryTimer = timer;
|
|
156
|
+
this.resolveRetry = finish;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
wakeRetry() {
|
|
160
|
+
const timer = this.retryTimer;
|
|
161
|
+
if (timer !== undefined)
|
|
162
|
+
clearTimeout(timer);
|
|
163
|
+
this.resolveRetry?.();
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=realtime-supervisor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"realtime-supervisor.js","sourceRoot":"","sources":["../../src/realtime-supervisor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Rust IM Core adapter that copies native values into Host-owned public DTOs. */
|
|
2
2
|
import type { ImCoreNodeClient } from '@awiki/im-core-node';
|
|
3
3
|
import type { AwikiAttachmentId, AwikiConversation, AwikiConversationId, AwikiDid, AwikiDownloadedAttachment, AwikiFailureCode, AwikiGroupConversation, AwikiGroupMember, AwikiGroupMemberPage, AwikiGroupRebindRecoverySummary, AwikiGroupMembersRequest, AwikiGroupSnapshot, AwikiHistoryRequest, AwikiIdentity, AwikiMessage, AwikiMessageId, AwikiMailAccount, AwikiMailInboxPage, AwikiMailInboxRequest, AwikiMailMarkReadRequest, AwikiMailMarkReadResult, AwikiMailMessage, AwikiMailReadRequest, AwikiMailSendRequest, AwikiMailSendResult, AwikiPage, AwikiPageRequest, AwikiProfile, AwikiRecoveryOperationRequest, AwikiRecoveryOtpRequest, AwikiRecoveryOtpResult, AwikiRecoveryPrepareRequest, AwikiRecoveryProgress, AwikiResolvedPeer, AwikiRegistrationOtpRequest, AwikiRegistrationOtpResult, AwikiRegistrationRequest, AwikiSendTextRequest, AwikiUpdateDisplayNameRequest, AwikiUpdateProfileRequest } from './types.ts';
|
|
4
|
-
import type { AwikiSdkClient, AwikiSdkDownloadedAttachment, AwikiSdkExternalHttpAttempt, AwikiSdkExternalHttpRequest, AwikiSdkListenerClient, AwikiSdkSendAttachmentRequest } from './provider-api.ts';
|
|
4
|
+
import type { AwikiSdkClient, AwikiSdkAdminJoinProgress, AwikiSdkCurrentDeviceSummary, AwikiSdkDownloadedAttachment, AwikiSdkDeviceJoinProgress, AwikiSdkDeviceJoinRequest, AwikiSdkExternalHttpAttempt, AwikiSdkExternalHttpRequest, AwikiSdkAgentInboxClient, AwikiSdkListenerClient, AwikiSdkRealtimeClient, AwikiSdkLocalDeviceJoinSession, AwikiSdkRegistrationResult, AwikiSdkRegistryDevice, AwikiSdkSendAttachmentRequest } from './provider-api.ts';
|
|
5
5
|
/** Closed provider error consumed by the Host's fixed public failure mapping. */
|
|
6
6
|
export declare class AwikiSdkError extends Error {
|
|
7
7
|
readonly code: AwikiFailureCode;
|
|
@@ -13,6 +13,8 @@ export declare class RustSdkAdapter implements AwikiSdkClient {
|
|
|
13
13
|
private readonly client;
|
|
14
14
|
private readonly attachmentConversations;
|
|
15
15
|
private disposal;
|
|
16
|
+
readonly realtime: AwikiSdkRealtimeClient;
|
|
17
|
+
readonly agentInbox: AwikiSdkAgentInboxClient;
|
|
16
18
|
readonly listener: AwikiSdkListenerClient;
|
|
17
19
|
constructor(client: ImCoreNodeClient | Promise<ImCoreNodeClient>);
|
|
18
20
|
private run;
|
|
@@ -39,7 +41,31 @@ export declare class RustSdkAdapter implements AwikiSdkClient {
|
|
|
39
41
|
prepareExternalHttpRequest(request: AwikiSdkExternalHttpRequest): Promise<AwikiSdkExternalHttpAttempt>;
|
|
40
42
|
getIdentity(): Promise<AwikiIdentity | null>;
|
|
41
43
|
sendRegistrationOtp(request: AwikiRegistrationOtpRequest): Promise<AwikiRegistrationOtpResult>;
|
|
42
|
-
registerIdentity(request: AwikiRegistrationRequest): Promise<
|
|
44
|
+
registerIdentity(request: AwikiRegistrationRequest): Promise<AwikiSdkRegistrationResult>;
|
|
45
|
+
beginDeviceJoin(request: {
|
|
46
|
+
readonly continuationId: string;
|
|
47
|
+
readonly operationId: string;
|
|
48
|
+
readonly userPresenceConfirmed: boolean;
|
|
49
|
+
}): Promise<AwikiSdkDeviceJoinProgress>;
|
|
50
|
+
getDeviceJoinStatus(joinSessionId: string): Promise<AwikiSdkDeviceJoinProgress>;
|
|
51
|
+
listLocalDeviceJoinSessions(): Promise<readonly AwikiSdkLocalDeviceJoinSession[]>;
|
|
52
|
+
cancelDeviceJoin(joinSessionId: string): Promise<AwikiSdkLocalDeviceJoinSession>;
|
|
53
|
+
getCurrentDeviceSummary(): Promise<AwikiSdkCurrentDeviceSummary>;
|
|
54
|
+
syncDeviceManagement(): Promise<void>;
|
|
55
|
+
getDeviceRegistry(): Promise<readonly AwikiSdkRegistryDevice[]>;
|
|
56
|
+
listLocalDeviceJoinRequests(): Promise<readonly AwikiSdkDeviceJoinRequest[]>;
|
|
57
|
+
startDeviceJoinVerification(request: {
|
|
58
|
+
readonly joinSessionId: string;
|
|
59
|
+
readonly operationId: string;
|
|
60
|
+
readonly challengeTtlSeconds: number;
|
|
61
|
+
}): Promise<AwikiSdkAdminJoinProgress>;
|
|
62
|
+
getLocalDeviceJoinVerificationProgress(joinSessionId: string): Promise<AwikiSdkAdminJoinProgress>;
|
|
63
|
+
prepareDeviceJoinApproval(joinSessionId: string): Promise<{
|
|
64
|
+
readonly approvalHandle: string;
|
|
65
|
+
}>;
|
|
66
|
+
confirmDeviceJoinApproval(approvalHandle: string): Promise<AwikiSdkAdminJoinProgress>;
|
|
67
|
+
rejectDeviceJoin(joinSessionId: string, reason: 'user_rejected' | 'sas_mismatch'): Promise<AwikiSdkAdminJoinProgress>;
|
|
68
|
+
revokeDevice(deviceId: string): Promise<void>;
|
|
43
69
|
updateDisplayName(request: AwikiUpdateDisplayNameRequest): Promise<AwikiIdentity>;
|
|
44
70
|
getProfile(): Promise<AwikiProfile>;
|
|
45
71
|
updateProfile(request: AwikiUpdateProfileRequest): Promise<AwikiProfile>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sdk-adapter.d.ts","sourceRoot":"","sources":["../../src/sdk-adapter.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,KAAK,EAGV,gBAAgB,EAgBjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EAEnB,QAAQ,EACR,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,+BAA+B,EAE/B,wBAAwB,EACxB,kBAAkB,EAElB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EAGd,gBAAgB,EAEhB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAEhB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EAEnB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,cAAc,EACd,4BAA4B,EAC5B,2BAA2B,EAC3B,2BAA2B,EAG3B,sBAAsB,EAItB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAA;AAkC1B,iFAAiF;AACjF,qBAAa,aAAc,SAAQ,KAAK;aAGH,IAAI,EAAE,gBAAgB;IAFzD,SAAgB,IAAI,mBAAkB;gBAEH,IAAI,EAAE,gBAAgB;CAG1D;
|
|
1
|
+
{"version":3,"file":"sdk-adapter.d.ts","sourceRoot":"","sources":["../../src/sdk-adapter.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAElF,OAAO,KAAK,EAGV,gBAAgB,EAgBjB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAEV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EAEnB,QAAQ,EACR,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,+BAA+B,EAE/B,wBAAwB,EACxB,kBAAkB,EAElB,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EAGd,gBAAgB,EAEhB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,gBAAgB,EAEhB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EAEnB,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,6BAA6B,EAC7B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACV,cAAc,EACd,yBAAyB,EACzB,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,yBAAyB,EACzB,2BAA2B,EAC3B,2BAA2B,EAG3B,wBAAwB,EACxB,sBAAsB,EAItB,sBAAsB,EACtB,8BAA8B,EAC9B,0BAA0B,EAC1B,sBAAsB,EACtB,6BAA6B,EAC9B,MAAM,mBAAmB,CAAA;AAkC1B,iFAAiF;AACjF,qBAAa,aAAc,SAAQ,KAAK;aAGH,IAAI,EAAE,gBAAgB;IAFzD,SAAgB,IAAI,mBAAkB;gBAEH,IAAI,EAAE,gBAAgB;CAG1D;AA0VD,wEAAwE;AACxE,qBAAa,cAAe,YAAW,cAAc;IACnD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA4B;IACpE,OAAO,CAAC,QAAQ,CAA2B;IAC3C,SAAgB,QAAQ,EAAE,sBAAsB,CAAA;IAChD,SAAgB,UAAU,EAAE,wBAAwB,CAAA;IACpD,SAAgB,QAAQ,EAAE,sBAAsB,CAAA;gBAE7B,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;YAezD,GAAG;YAWH,mBAAmB;IA8BjC;;;;OAIG;YACW,wBAAwB;IAyBtC,OAAO,CAAC,OAAO;IAiDf,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,oBAAoB;IAiB5B,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,eAAe;YAgBT,cAAc;IAiBrB,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAStG,WAAW,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAO5C,mBAAmB,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAO9F,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAkBxF,eAAe,CAAC,OAAO,EAAE;QAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;QAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAA;KACxC,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAIhC,mBAAmB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,0BAA0B,CAAC;IAI/E,2BAA2B,IAAI,OAAO,CAAC,SAAS,8BAA8B,EAAE,CAAC;IASjF,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,8BAA8B,CAAC;IAYhF,uBAAuB,IAAI,OAAO,CAAC,4BAA4B,CAAC;IAWhE,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrC,iBAAiB,IAAI,OAAO,CAAC,SAAS,sBAAsB,EAAE,CAAC;IAU/D,2BAA2B,IAAI,OAAO,CAAC,SAAS,yBAAyB,EAAE,CAAC;IAY5E,2BAA2B,CAAC,OAAO,EAAE;QAC1C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAA;KACrC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAI/B,sCAAsC,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAMjG,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAO9F,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAOrF,gBAAgB,CACrB,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,eAAe,GAAG,cAAc,GACvC,OAAO,CAAC,yBAAyB,CAAC;IAI9B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM7C,iBAAiB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,aAAa,CAAC;IAIjF,UAAU,IAAI,OAAO,CAAC,YAAY,CAAC;IAInC,aAAa,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC;IAQ/E,OAAO,CAAC,gBAAgB;IAgBjB,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAYlF,eAAe,CAAC,OAAO,EAAE,2BAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIrF,gBAAgB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIxF,iBAAiB,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIzF,cAAc,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAItF,wBAAwB,CAAC,OAAO,EAAE,6BAA6B;;;;IAU/D,eAAe,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtE,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAYrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1D,cAAc,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAO7E,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAIzD,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI1D,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA+BlF,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAOhF,yBAAyB,IAAI,OAAO,CAAC,+BAA+B,CAAC;IAgDrE,iBAAiB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAUpF,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAe1E,eAAe,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAe/E,oBAAoB,CAAC,cAAc,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1E,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAiC9D,cAAc,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,YAAY,CAAC;IAe7E,kBAAkB,CAAC,OAAO,EAAE;QACjC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAA;QACxC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;KACnC,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAelC,cAAc,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI3C,aAAa,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAS/E,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAIlE,YAAY,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IASjF,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoBrE,cAAc,IAAI,OAAO,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAIxD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAahC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,4BAA4B,GAAG,yBAAyB,CAKnG"}
|
package/lib/types/sdk-adapter.js
CHANGED
|
@@ -19,7 +19,7 @@ const RUST_FAILURE_CODES = {
|
|
|
19
19
|
auth_revoked: 'identity-recovery-required',
|
|
20
20
|
conflict: 'conflict',
|
|
21
21
|
join_required: 'handle-unavailable',
|
|
22
|
-
state_in_use: '
|
|
22
|
+
state_in_use: 'conflict',
|
|
23
23
|
rate_limited: 'rate-limited',
|
|
24
24
|
timeout: 'network',
|
|
25
25
|
transport_unavailable: 'network',
|
|
@@ -236,6 +236,26 @@ function identity(value) {
|
|
|
236
236
|
registeredAt: safeInteger(value.registeredAtMs),
|
|
237
237
|
};
|
|
238
238
|
}
|
|
239
|
+
function joinProgress(value) {
|
|
240
|
+
return {
|
|
241
|
+
joinSessionId: required(value.joinSessionId),
|
|
242
|
+
localPhase: value.localPhase,
|
|
243
|
+
remoteState: value.remoteState,
|
|
244
|
+
expiresAt: required(value.expiresAt),
|
|
245
|
+
...value.sas === undefined ? {} : { sas: required(value.sas) },
|
|
246
|
+
completed: boolean(value.completed),
|
|
247
|
+
...value.identity === undefined ? {} : { identity: identity(value.identity) },
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
function adminJoinProgress(value) {
|
|
251
|
+
return {
|
|
252
|
+
joinSessionId: required(value.joinSessionId),
|
|
253
|
+
localPhase: value.localPhase,
|
|
254
|
+
remoteState: value.remoteState,
|
|
255
|
+
expiresAt: required(value.expiresAt),
|
|
256
|
+
...value.sas === undefined ? {} : { sas: required(value.sas) },
|
|
257
|
+
};
|
|
258
|
+
}
|
|
239
259
|
function profile(value) {
|
|
240
260
|
return {
|
|
241
261
|
did: required(value.did),
|
|
@@ -362,17 +382,22 @@ export class RustSdkAdapter {
|
|
|
362
382
|
client;
|
|
363
383
|
attachmentConversations = new Map();
|
|
364
384
|
disposal;
|
|
385
|
+
realtime;
|
|
386
|
+
agentInbox;
|
|
365
387
|
listener;
|
|
366
388
|
constructor(client) {
|
|
367
389
|
this.client = Promise.resolve(client);
|
|
368
|
-
this.
|
|
390
|
+
this.realtime = {
|
|
369
391
|
syncNow: reason => this.listenerSyncNow(reason),
|
|
370
392
|
startRealtime: () => this.listenerStartRealtime(),
|
|
393
|
+
};
|
|
394
|
+
this.agentInbox = {
|
|
371
395
|
listConversations: request => this.listenerConversations(request),
|
|
372
396
|
getHistory: request => this.listenerHistory(request),
|
|
373
397
|
markConversationRead: conversationId => this.markConversationRead(conversationId),
|
|
374
398
|
sendText: request => this.sendText(request),
|
|
375
399
|
};
|
|
400
|
+
this.listener = { ...this.realtime, ...this.agentInbox };
|
|
376
401
|
}
|
|
377
402
|
async run(operation, ambiguousSend = false) {
|
|
378
403
|
try {
|
|
@@ -602,6 +627,10 @@ export class RustSdkAdapter {
|
|
|
602
627
|
const session = await client.startRealtime();
|
|
603
628
|
return {
|
|
604
629
|
nextEvent: () => this.run(() => session.nextEvent()),
|
|
630
|
+
getStatus: () => this.run(async () => {
|
|
631
|
+
const status = await session.getStatus();
|
|
632
|
+
return { connected: status.connected };
|
|
633
|
+
}),
|
|
605
634
|
stop: () => this.run(() => session.stop()),
|
|
606
635
|
};
|
|
607
636
|
});
|
|
@@ -658,7 +687,107 @@ export class RustSdkAdapter {
|
|
|
658
687
|
});
|
|
659
688
|
}
|
|
660
689
|
registerIdentity(request) {
|
|
661
|
-
return this.run(async (client) =>
|
|
690
|
+
return this.run(async (client) => {
|
|
691
|
+
const value = await client.completeRegistrationWithOutcome(request);
|
|
692
|
+
if (value.status === 'registered') {
|
|
693
|
+
return { status: 'registered', identity: identity(value.identity) };
|
|
694
|
+
}
|
|
695
|
+
return {
|
|
696
|
+
status: 'join-required',
|
|
697
|
+
continuationId: required(value.existingHandle.continuationId),
|
|
698
|
+
fullHandle: required(value.existingHandle.fullHandle),
|
|
699
|
+
mode: value.existingHandle.mode === 'handle_recovery_rebind'
|
|
700
|
+
? 'handle-recovery-rebind'
|
|
701
|
+
: 'ordinary',
|
|
702
|
+
requiresUserPresence: boolean(value.existingHandle.requiresUserPresence),
|
|
703
|
+
};
|
|
704
|
+
});
|
|
705
|
+
}
|
|
706
|
+
beginDeviceJoin(request) {
|
|
707
|
+
return this.run(async (client) => joinProgress(await client.beginPreparedRegistrationJoin(request)));
|
|
708
|
+
}
|
|
709
|
+
getDeviceJoinStatus(joinSessionId) {
|
|
710
|
+
return this.run(async (client) => joinProgress(await client.resumePreparedRegistrationJoin({ joinSessionId })));
|
|
711
|
+
}
|
|
712
|
+
listLocalDeviceJoinSessions() {
|
|
713
|
+
return this.run(async (client) => (await client.listLocalDeviceJoinSessions()).map(value => ({
|
|
714
|
+
joinSessionId: required(value.joinSessionId),
|
|
715
|
+
side: value.side,
|
|
716
|
+
localPhase: value.localPhase,
|
|
717
|
+
expiresAt: required(value.expiresAt),
|
|
718
|
+
})));
|
|
719
|
+
}
|
|
720
|
+
cancelDeviceJoin(joinSessionId) {
|
|
721
|
+
return this.run(async (client) => {
|
|
722
|
+
const value = await client.cancelPreparedRegistrationJoin({ joinSessionId });
|
|
723
|
+
return {
|
|
724
|
+
joinSessionId: required(value.joinSessionId),
|
|
725
|
+
side: value.side,
|
|
726
|
+
localPhase: value.localPhase,
|
|
727
|
+
expiresAt: required(value.expiresAt),
|
|
728
|
+
};
|
|
729
|
+
});
|
|
730
|
+
}
|
|
731
|
+
getCurrentDeviceSummary() {
|
|
732
|
+
return this.run(async (client) => {
|
|
733
|
+
const value = await client.getCurrentDeviceSummary();
|
|
734
|
+
return {
|
|
735
|
+
...value.role === undefined ? {} : { role: value.role },
|
|
736
|
+
readiness: value.readiness,
|
|
737
|
+
canManage: boolean(value.canManage),
|
|
738
|
+
};
|
|
739
|
+
});
|
|
740
|
+
}
|
|
741
|
+
syncDeviceManagement() {
|
|
742
|
+
return this.run(async (client) => {
|
|
743
|
+
await client.syncNow({ reason: 'foreground_reconcile' });
|
|
744
|
+
});
|
|
745
|
+
}
|
|
746
|
+
getDeviceRegistry() {
|
|
747
|
+
return this.run(async (client) => (await client.getDeviceRegistry()).devices.map(value => ({
|
|
748
|
+
deviceId: required(value.protocolDeviceId),
|
|
749
|
+
status: value.status,
|
|
750
|
+
role: value.role,
|
|
751
|
+
managementReady: boolean(value.managementReady),
|
|
752
|
+
isCurrent: boolean(value.isCurrent),
|
|
753
|
+
})));
|
|
754
|
+
}
|
|
755
|
+
listLocalDeviceJoinRequests() {
|
|
756
|
+
return this.run(async (client) => (await client.listLocalDeviceJoinRequests()).map(value => ({
|
|
757
|
+
joinSessionId: required(value.joinSessionId),
|
|
758
|
+
candidateKeyFingerprint: required(value.candidateKeyFingerprint),
|
|
759
|
+
issuedAt: required(value.issuedAt),
|
|
760
|
+
expiresAt: required(value.expiresAt),
|
|
761
|
+
state: value.state,
|
|
762
|
+
claimedByCurrentDevice: boolean(value.claimedByCurrentDevice),
|
|
763
|
+
canStartVerification: boolean(value.canStartVerification),
|
|
764
|
+
})));
|
|
765
|
+
}
|
|
766
|
+
startDeviceJoinVerification(request) {
|
|
767
|
+
return this.run(async (client) => adminJoinProgress(await client.startDeviceJoinVerification(request)));
|
|
768
|
+
}
|
|
769
|
+
getLocalDeviceJoinVerificationProgress(joinSessionId) {
|
|
770
|
+
return this.run(async (client) => adminJoinProgress(await client.getLocalDeviceJoinVerificationProgress({ joinSessionId })));
|
|
771
|
+
}
|
|
772
|
+
prepareDeviceJoinApproval(joinSessionId) {
|
|
773
|
+
return this.run(async (client) => {
|
|
774
|
+
const value = await client.prepareDeviceJoinApproval({ joinSessionId, sasConfirmed: true });
|
|
775
|
+
return { approvalHandle: required(value.approvalHandle) };
|
|
776
|
+
});
|
|
777
|
+
}
|
|
778
|
+
confirmDeviceJoinApproval(approvalHandle) {
|
|
779
|
+
return this.run(async (client) => adminJoinProgress(await client.confirmDeviceJoinApproval({
|
|
780
|
+
approvalHandle,
|
|
781
|
+
userPresenceConfirmed: true,
|
|
782
|
+
})));
|
|
783
|
+
}
|
|
784
|
+
rejectDeviceJoin(joinSessionId, reason) {
|
|
785
|
+
return this.run(async (client) => adminJoinProgress(await client.rejectDeviceJoin({ joinSessionId, reason })));
|
|
786
|
+
}
|
|
787
|
+
revokeDevice(deviceId) {
|
|
788
|
+
return this.run(async (client) => {
|
|
789
|
+
await client.revokeDevice({ targetDeviceId: deviceId, userPresenceConfirmed: true });
|
|
790
|
+
});
|
|
662
791
|
}
|
|
663
792
|
updateDisplayName(request) {
|
|
664
793
|
return this.run(async (client) => identity(await client.updateDisplayName(request.displayName)));
|