@prismer/sdk 1.8.1 → 1.9.0
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 +1 -1
- package/dist/chunk-6DZX6EAA.mjs +37 -0
- package/dist/cli.d.ts +2759 -0
- package/dist/cli.js +4981 -488
- package/dist/index.d.mts +566 -5
- package/dist/index.d.ts +566 -5
- package/dist/index.js +5093 -17
- package/dist/index.mjs +5076 -8
- package/dist/webhook.mjs +1 -1
- package/icon +21 -0
- package/package.json +12 -6
package/dist/index.d.mts
CHANGED
|
@@ -672,14 +672,27 @@ interface IMWorkspaceInitOptions {
|
|
|
672
672
|
workspaceId: string;
|
|
673
673
|
userId: string;
|
|
674
674
|
userDisplayName: string;
|
|
675
|
+
agentName?: string;
|
|
676
|
+
agentDisplayName?: string;
|
|
677
|
+
agentType?: string;
|
|
678
|
+
agentCapabilities?: string[];
|
|
679
|
+
force?: boolean;
|
|
675
680
|
}
|
|
676
681
|
interface IMWorkspaceInitGroupOptions {
|
|
677
682
|
workspaceId: string;
|
|
678
683
|
title: string;
|
|
679
|
-
|
|
684
|
+
description?: string;
|
|
685
|
+
users?: Array<{
|
|
680
686
|
userId: string;
|
|
681
687
|
displayName: string;
|
|
682
688
|
}>;
|
|
689
|
+
agents?: Array<{
|
|
690
|
+
name: string;
|
|
691
|
+
displayName?: string;
|
|
692
|
+
type?: string;
|
|
693
|
+
capabilities?: string[];
|
|
694
|
+
}>;
|
|
695
|
+
force?: boolean;
|
|
683
696
|
}
|
|
684
697
|
interface IMAutocompleteResult {
|
|
685
698
|
userId: string;
|
|
@@ -700,9 +713,11 @@ interface IMCreateBindingOptions {
|
|
|
700
713
|
channelId?: string;
|
|
701
714
|
}
|
|
702
715
|
interface IMSendOptions {
|
|
703
|
-
type?: 'text' | 'markdown' | 'code' | 'image' | 'file' | 'tool_call' | 'tool_result' | 'system_event' | 'thinking';
|
|
716
|
+
type?: 'text' | 'markdown' | 'code' | 'image' | 'file' | 'voice' | 'location' | 'artifact' | 'tool_call' | 'tool_result' | 'system_event' | 'system' | 'thinking';
|
|
704
717
|
metadata?: Record<string, any>;
|
|
705
718
|
parentId?: string;
|
|
719
|
+
/** Quote-reply reference (v1.8.2). Distinct from parentId threading. */
|
|
720
|
+
quotedMessageId?: string;
|
|
706
721
|
/** Override auto-signing for this message (e.g., skip signing for system_event) */
|
|
707
722
|
skipSigning?: boolean;
|
|
708
723
|
}
|
|
@@ -829,7 +844,7 @@ interface OfflineConfig {
|
|
|
829
844
|
warningThreshold?: number;
|
|
830
845
|
};
|
|
831
846
|
}
|
|
832
|
-
type TaskStatus = 'pending' | 'assigned' | 'running' | 'completed' | 'failed' | 'cancelled';
|
|
847
|
+
type TaskStatus = 'pending' | 'assigned' | 'running' | 'review' | 'completed' | 'failed' | 'cancelled';
|
|
833
848
|
type ScheduleType = 'once' | 'interval' | 'cron';
|
|
834
849
|
interface IMCreateTaskOptions {
|
|
835
850
|
title: string;
|
|
@@ -851,8 +866,12 @@ interface IMCreateTaskOptions {
|
|
|
851
866
|
metadata?: Record<string, unknown>;
|
|
852
867
|
}
|
|
853
868
|
interface IMUpdateTaskOptions {
|
|
854
|
-
|
|
869
|
+
title?: string;
|
|
870
|
+
description?: string;
|
|
855
871
|
status?: TaskStatus;
|
|
872
|
+
progress?: number;
|
|
873
|
+
statusMessage?: string;
|
|
874
|
+
assigneeId?: string;
|
|
856
875
|
metadata?: Record<string, unknown>;
|
|
857
876
|
}
|
|
858
877
|
interface IMTaskListOptions {
|
|
@@ -879,6 +898,15 @@ interface IMTask {
|
|
|
879
898
|
creatorId: string;
|
|
880
899
|
assigneeId: string | null;
|
|
881
900
|
status: TaskStatus;
|
|
901
|
+
progress: number | null;
|
|
902
|
+
statusMessage: string | null;
|
|
903
|
+
conversationId: string | null;
|
|
904
|
+
completedAt: string | null;
|
|
905
|
+
ownerId: string;
|
|
906
|
+
ownerType: string | null;
|
|
907
|
+
ownerName: string | null;
|
|
908
|
+
assigneeType: string | null;
|
|
909
|
+
assigneeName: string | null;
|
|
882
910
|
scheduleType: ScheduleType | null;
|
|
883
911
|
scheduleCron: string | null;
|
|
884
912
|
intervalMs: number | null;
|
|
@@ -1313,6 +1341,16 @@ interface MessageDeletedPayload {
|
|
|
1313
1341
|
id: string;
|
|
1314
1342
|
conversationId: string;
|
|
1315
1343
|
}
|
|
1344
|
+
/** v1.8.2 — dedicated reaction event. Distinct from message.edit (which signals content change). */
|
|
1345
|
+
interface MessageReactionPayload {
|
|
1346
|
+
messageId: string;
|
|
1347
|
+
conversationId: string;
|
|
1348
|
+
emoji: string;
|
|
1349
|
+
userId: string;
|
|
1350
|
+
action: 'add' | 'remove';
|
|
1351
|
+
/** Full reaction snapshot after the change: `{ "👍": ["userId-a", ...], ... }` */
|
|
1352
|
+
reactions: Record<string, string[]>;
|
|
1353
|
+
}
|
|
1316
1354
|
interface TypingIndicatorPayload {
|
|
1317
1355
|
conversationId: string;
|
|
1318
1356
|
userId: string;
|
|
@@ -1340,6 +1378,7 @@ interface RealtimeEventMap {
|
|
|
1340
1378
|
'authenticated': AuthenticatedPayload;
|
|
1341
1379
|
'message.new': MessageNewPayload;
|
|
1342
1380
|
'message.edit': MessageEditPayload;
|
|
1381
|
+
'message.reaction': MessageReactionPayload;
|
|
1343
1382
|
'message.deleted': MessageDeletedPayload;
|
|
1344
1383
|
'typing.indicator': TypingIndicatorPayload;
|
|
1345
1384
|
'presence.changed': PresenceChangedPayload;
|
|
@@ -1886,6 +1925,500 @@ declare class CommunityHub {
|
|
|
1886
1925
|
}): Promise<IMResult<any>>;
|
|
1887
1926
|
}
|
|
1888
1927
|
|
|
1928
|
+
/**
|
|
1929
|
+
* Prismer Remote Control Client — Cloud SDK bindings for Track 3 (v1.9.0)
|
|
1930
|
+
*
|
|
1931
|
+
* Scope:
|
|
1932
|
+
* - Desktop binding management (list / revoke / republish candidates)
|
|
1933
|
+
* - Pairing workflows
|
|
1934
|
+
* • Daemon-side: pair.qrInit + pair.apiKeyBind
|
|
1935
|
+
* • Mobile-side: pair.qrConfirm
|
|
1936
|
+
* - Remote command dispatch (sendCommand / getCommand / approve / reject)
|
|
1937
|
+
* - Push token registration + lifecycle (register / list / delete)
|
|
1938
|
+
* - FS relay — mobile → daemon sandboxed filesystem ops (v1.9.0)
|
|
1939
|
+
*
|
|
1940
|
+
* Note on signatures: the `approve` / `reject` / `sendCommand` methods take
|
|
1941
|
+
* a `bindingId` + opaque `envelope`, NOT a `commandId`. The server creates
|
|
1942
|
+
* the command and returns its id. This matches the `/api/im/remote/*`
|
|
1943
|
+
* HTTP contract exactly.
|
|
1944
|
+
*/
|
|
1945
|
+
interface PrismerResponse<T> {
|
|
1946
|
+
ok: boolean;
|
|
1947
|
+
data: T | null;
|
|
1948
|
+
error: {
|
|
1949
|
+
code: string;
|
|
1950
|
+
message: string;
|
|
1951
|
+
} | null;
|
|
1952
|
+
}
|
|
1953
|
+
/**
|
|
1954
|
+
* Daemon connection candidate advertised in the pairing offer or via
|
|
1955
|
+
* PATCH /remote/bindings/:id/candidates. Client selects lowest-latency path;
|
|
1956
|
+
* E2EE is always applied on top regardless of transport.
|
|
1957
|
+
*/
|
|
1958
|
+
type OfferCandidate = {
|
|
1959
|
+
type: 'directTcp';
|
|
1960
|
+
host: string;
|
|
1961
|
+
port: number;
|
|
1962
|
+
} | {
|
|
1963
|
+
type: 'relay';
|
|
1964
|
+
endpoint: string;
|
|
1965
|
+
};
|
|
1966
|
+
interface DesktopBinding {
|
|
1967
|
+
id: string;
|
|
1968
|
+
daemonId: string;
|
|
1969
|
+
deviceName?: string | null;
|
|
1970
|
+
bindingMethod: 'apikey' | 'qr';
|
|
1971
|
+
status: 'active' | 'revoked';
|
|
1972
|
+
daemonPubKey: string;
|
|
1973
|
+
daemonSignPub: string;
|
|
1974
|
+
relayRegion?: string | null;
|
|
1975
|
+
/** Serialized BigInt — use as opaque string, don't parse as number. */
|
|
1976
|
+
lastSeq: string;
|
|
1977
|
+
isOnline: boolean;
|
|
1978
|
+
candidates: OfferCandidate[] | null;
|
|
1979
|
+
createdAt: string;
|
|
1980
|
+
}
|
|
1981
|
+
interface QrInitRequest {
|
|
1982
|
+
daemonId: string;
|
|
1983
|
+
daemonPubKey: string;
|
|
1984
|
+
daemonSignPub: string;
|
|
1985
|
+
/** base64-encoded Offer v2 JSON; see docs/version190/07-remote-control.md §5.6.2 */
|
|
1986
|
+
offerBlob: string;
|
|
1987
|
+
deviceName?: string;
|
|
1988
|
+
}
|
|
1989
|
+
interface QrInitResponse {
|
|
1990
|
+
offerId: string;
|
|
1991
|
+
/** RFC 3339 / ISO 8601 */
|
|
1992
|
+
expiresAt: string;
|
|
1993
|
+
}
|
|
1994
|
+
interface ApiKeyBindRequest {
|
|
1995
|
+
daemonId: string;
|
|
1996
|
+
daemonPubKey: string;
|
|
1997
|
+
daemonSignPub: string;
|
|
1998
|
+
deviceName?: string;
|
|
1999
|
+
relayRegion?: string;
|
|
2000
|
+
candidates?: OfferCandidate[];
|
|
2001
|
+
}
|
|
2002
|
+
interface ApiKeyBindResponse {
|
|
2003
|
+
bindingId: string;
|
|
2004
|
+
}
|
|
2005
|
+
interface QrConfirmRequest {
|
|
2006
|
+
/** `offerId` is encoded inside the QR payload; parse it out before calling. */
|
|
2007
|
+
offerId: string;
|
|
2008
|
+
/** Mobile's ephemeral X25519 public key (base64) for E2EE key exchange. */
|
|
2009
|
+
clientPubKey: string;
|
|
2010
|
+
consumerDevice?: string;
|
|
2011
|
+
}
|
|
2012
|
+
interface QrConfirmResponse {
|
|
2013
|
+
bindingId: string;
|
|
2014
|
+
daemonId: string;
|
|
2015
|
+
}
|
|
2016
|
+
type RemoteCommandStatus = 'pending' | 'delivered' | 'completed' | 'failed' | 'expired';
|
|
2017
|
+
interface RemoteCommand {
|
|
2018
|
+
id: string;
|
|
2019
|
+
bindingId: string;
|
|
2020
|
+
senderId: string;
|
|
2021
|
+
type: string;
|
|
2022
|
+
/** Decoded envelope — object when structured, string when legacy base64. */
|
|
2023
|
+
envelope: unknown;
|
|
2024
|
+
status: RemoteCommandStatus;
|
|
2025
|
+
result?: unknown;
|
|
2026
|
+
createdAt: string;
|
|
2027
|
+
deliveredAt?: string | null;
|
|
2028
|
+
completedAt?: string | null;
|
|
2029
|
+
}
|
|
2030
|
+
interface SendCommandRequest {
|
|
2031
|
+
bindingId: string;
|
|
2032
|
+
/** e.g. `"tool_approve"`, `"tool_reject"`, `"agent_stop"`. */
|
|
2033
|
+
type: string;
|
|
2034
|
+
/** Forwarded verbatim to the daemon. Object is JSON-encoded; string is passed through. */
|
|
2035
|
+
envelope: Record<string, unknown> | string;
|
|
2036
|
+
ttlMs?: number;
|
|
2037
|
+
}
|
|
2038
|
+
interface QuickDecisionRequest {
|
|
2039
|
+
bindingId: string;
|
|
2040
|
+
envelope: Record<string, unknown> | string;
|
|
2041
|
+
/** Optional task bridge — if set, the server also transitions the task state. */
|
|
2042
|
+
taskId?: string;
|
|
2043
|
+
}
|
|
2044
|
+
interface RegisterPushTokenRequest {
|
|
2045
|
+
platform: 'apns' | 'fcm';
|
|
2046
|
+
token: string;
|
|
2047
|
+
deviceId?: string;
|
|
2048
|
+
}
|
|
2049
|
+
interface PushToken {
|
|
2050
|
+
id: string;
|
|
2051
|
+
platform: 'apns' | 'fcm';
|
|
2052
|
+
token: string;
|
|
2053
|
+
deviceId: string | null;
|
|
2054
|
+
createdAt: string;
|
|
2055
|
+
}
|
|
2056
|
+
type FsOp = 'read' | 'write' | 'delete' | 'edit' | 'list' | 'search';
|
|
2057
|
+
interface FsReadRequest {
|
|
2058
|
+
path: string;
|
|
2059
|
+
encoding?: 'utf-8' | 'base64';
|
|
2060
|
+
}
|
|
2061
|
+
interface FsReadResponse {
|
|
2062
|
+
content: string;
|
|
2063
|
+
encoding: 'utf-8' | 'base64';
|
|
2064
|
+
}
|
|
2065
|
+
interface FsWriteRequest {
|
|
2066
|
+
path: string;
|
|
2067
|
+
content: string;
|
|
2068
|
+
encoding?: 'utf-8' | 'base64';
|
|
2069
|
+
}
|
|
2070
|
+
interface FsWriteResponse {
|
|
2071
|
+
bytesWritten: number;
|
|
2072
|
+
}
|
|
2073
|
+
interface FsDeleteRequest {
|
|
2074
|
+
path: string;
|
|
2075
|
+
}
|
|
2076
|
+
interface FsDeleteResponse {
|
|
2077
|
+
deleted: boolean;
|
|
2078
|
+
}
|
|
2079
|
+
interface FsEditRequest {
|
|
2080
|
+
path: string;
|
|
2081
|
+
oldString: string;
|
|
2082
|
+
newString: string;
|
|
2083
|
+
replaceAll?: boolean;
|
|
2084
|
+
}
|
|
2085
|
+
interface FsEditResponse {
|
|
2086
|
+
replaced: number;
|
|
2087
|
+
path: string;
|
|
2088
|
+
}
|
|
2089
|
+
interface FsListRequest {
|
|
2090
|
+
path: string;
|
|
2091
|
+
recursive?: boolean;
|
|
2092
|
+
}
|
|
2093
|
+
interface FsListEntry {
|
|
2094
|
+
name: string;
|
|
2095
|
+
type: 'file' | 'dir' | 'symlink';
|
|
2096
|
+
size?: number;
|
|
2097
|
+
}
|
|
2098
|
+
interface FsListResponse {
|
|
2099
|
+
entries: FsListEntry[];
|
|
2100
|
+
}
|
|
2101
|
+
interface FsSearchRequest {
|
|
2102
|
+
path: string;
|
|
2103
|
+
pattern: string;
|
|
2104
|
+
glob?: string;
|
|
2105
|
+
}
|
|
2106
|
+
interface FsSearchMatch {
|
|
2107
|
+
path: string;
|
|
2108
|
+
line: number;
|
|
2109
|
+
preview: string;
|
|
2110
|
+
}
|
|
2111
|
+
interface FsSearchResponse {
|
|
2112
|
+
matches: FsSearchMatch[];
|
|
2113
|
+
}
|
|
2114
|
+
declare class PairingApi {
|
|
2115
|
+
private readonly client;
|
|
2116
|
+
constructor(client: RemoteClient);
|
|
2117
|
+
/**
|
|
2118
|
+
* Daemon-side: create a QR pairing offer. `offerBlob` is the base64-encoded
|
|
2119
|
+
* Offer v2 JSON — the daemon generates it locally and the cloud only stores
|
|
2120
|
+
* it opaquely (5-minute TTL, single-use).
|
|
2121
|
+
*/
|
|
2122
|
+
qrInit(req: QrInitRequest): Promise<PrismerResponse<QrInitResponse>>;
|
|
2123
|
+
/**
|
|
2124
|
+
* Mobile-side: confirm a scanned QR pairing. Atomically consumes the offer
|
|
2125
|
+
* and pushes `pairing.confirmed` to the daemon's WS control channel.
|
|
2126
|
+
*/
|
|
2127
|
+
qrConfirm(req: QrConfirmRequest): Promise<PrismerResponse<QrConfirmResponse>>;
|
|
2128
|
+
/**
|
|
2129
|
+
* Daemon-side: bind directly via API key, no QR required. The auth header
|
|
2130
|
+
* identifies the owning user; the body carries daemon credentials + optional
|
|
2131
|
+
* LAN/relay candidates.
|
|
2132
|
+
*/
|
|
2133
|
+
apiKeyBind(req: ApiKeyBindRequest): Promise<PrismerResponse<ApiKeyBindResponse>>;
|
|
2134
|
+
}
|
|
2135
|
+
declare class FsApi {
|
|
2136
|
+
private readonly client;
|
|
2137
|
+
private readonly bindingId;
|
|
2138
|
+
constructor(client: RemoteClient, bindingId: string);
|
|
2139
|
+
private _path;
|
|
2140
|
+
read(req: FsReadRequest): Promise<PrismerResponse<FsReadResponse>>;
|
|
2141
|
+
write(req: FsWriteRequest): Promise<PrismerResponse<FsWriteResponse>>;
|
|
2142
|
+
delete(req: FsDeleteRequest): Promise<PrismerResponse<FsDeleteResponse>>;
|
|
2143
|
+
edit(req: FsEditRequest): Promise<PrismerResponse<FsEditResponse>>;
|
|
2144
|
+
list(req: FsListRequest): Promise<PrismerResponse<FsListResponse>>;
|
|
2145
|
+
search(req: FsSearchRequest): Promise<PrismerResponse<FsSearchResponse>>;
|
|
2146
|
+
}
|
|
2147
|
+
declare class RemoteClient {
|
|
2148
|
+
private readonly baseUrl;
|
|
2149
|
+
private readonly apiKey;
|
|
2150
|
+
private readonly timeout;
|
|
2151
|
+
private readonly fetchFn;
|
|
2152
|
+
readonly pair: PairingApi;
|
|
2153
|
+
constructor({ baseUrl, apiKey, timeout, fetchFn, }?: {
|
|
2154
|
+
baseUrl?: string;
|
|
2155
|
+
apiKey?: string;
|
|
2156
|
+
timeout?: number;
|
|
2157
|
+
fetchFn?: typeof fetch;
|
|
2158
|
+
});
|
|
2159
|
+
listBindings(): Promise<PrismerResponse<DesktopBinding[]>>;
|
|
2160
|
+
deleteBinding(bindingId: string): Promise<PrismerResponse<void>>;
|
|
2161
|
+
/**
|
|
2162
|
+
* v1.9.0 — Daemon republishes its LAN/relay candidates (e.g. LAN IP
|
|
2163
|
+
* changed, relay region failover). Ownership is verified against the auth.
|
|
2164
|
+
*/
|
|
2165
|
+
patchBindingCandidates(bindingId: string, candidates: OfferCandidate[]): Promise<PrismerResponse<void>>;
|
|
2166
|
+
/** Mobile-side FS relay client bound to a specific binding. */
|
|
2167
|
+
fs(bindingId: string): FsApi;
|
|
2168
|
+
sendCommand(req: SendCommandRequest): Promise<PrismerResponse<{
|
|
2169
|
+
commandId: string;
|
|
2170
|
+
status: RemoteCommandStatus;
|
|
2171
|
+
}>>;
|
|
2172
|
+
getCommand(commandId: string): Promise<PrismerResponse<RemoteCommand>>;
|
|
2173
|
+
/**
|
|
2174
|
+
* Quick-approve a pending tool call. Creates a `tool_approve` command and
|
|
2175
|
+
* forwards it via WS (if daemon online). Optionally bridges to task state
|
|
2176
|
+
* when `taskId` is provided.
|
|
2177
|
+
*/
|
|
2178
|
+
approve(req: QuickDecisionRequest): Promise<PrismerResponse<{
|
|
2179
|
+
commandId: string;
|
|
2180
|
+
}>>;
|
|
2181
|
+
reject(req: QuickDecisionRequest): Promise<PrismerResponse<{
|
|
2182
|
+
commandId: string;
|
|
2183
|
+
}>>;
|
|
2184
|
+
registerPushToken(req: RegisterPushTokenRequest): Promise<PrismerResponse<{
|
|
2185
|
+
success: boolean;
|
|
2186
|
+
}>>;
|
|
2187
|
+
listPushTokens(): Promise<PrismerResponse<{
|
|
2188
|
+
tokens: PushToken[];
|
|
2189
|
+
}>>;
|
|
2190
|
+
/** Revoke a push token by its ID (not by raw token string). */
|
|
2191
|
+
deletePushToken(tokenId: string): Promise<PrismerResponse<{
|
|
2192
|
+
success: boolean;
|
|
2193
|
+
}>>;
|
|
2194
|
+
_get<T>(path: string): Promise<PrismerResponse<T>>;
|
|
2195
|
+
_post<T>(path: string, body?: unknown): Promise<PrismerResponse<T>>;
|
|
2196
|
+
_patch<T>(path: string, body?: unknown): Promise<PrismerResponse<T>>;
|
|
2197
|
+
_delete<T>(path: string): Promise<PrismerResponse<T>>;
|
|
2198
|
+
private _request;
|
|
2199
|
+
private _getHeaders;
|
|
2200
|
+
}
|
|
2201
|
+
|
|
2202
|
+
/**
|
|
2203
|
+
* Prismer Permissions Client — Cloud SDK bindings (v1.9.0)
|
|
2204
|
+
*
|
|
2205
|
+
* Risk-based approval gate for high-risk daemon/agent operations.
|
|
2206
|
+
*
|
|
2207
|
+
* Typical flow:
|
|
2208
|
+
* 1. Daemon calls `request({capability, operation, context?})`.
|
|
2209
|
+
* • Response 200 with `{approved:true}` → proceed immediately (low risk).
|
|
2210
|
+
* • Response 202 with `{requestId, expiresAt}` → wait for user decision.
|
|
2211
|
+
* 2. Mobile Lumin app polls `list({status:"pending"})` or reacts to push,
|
|
2212
|
+
* then calls `approve(id)` or `reject(id)` with optional `reason`.
|
|
2213
|
+
* 3. Daemon polls `get(id)` (or subscribes to the approval WS channel) to
|
|
2214
|
+
* discover the decision before the TTL expires (default 5 min).
|
|
2215
|
+
*/
|
|
2216
|
+
|
|
2217
|
+
type RiskLevel = {
|
|
2218
|
+
/** `"read"`, `"write"`, `"network"`, `"shell"`, etc. */
|
|
2219
|
+
category: string;
|
|
2220
|
+
/** Numeric scale, higher = more dangerous. Service-defined; 0-10 today. */
|
|
2221
|
+
score: number;
|
|
2222
|
+
/** Human-readable reason. */
|
|
2223
|
+
label: string;
|
|
2224
|
+
/** Heuristic flags the risk classifier raised. */
|
|
2225
|
+
flags?: string[];
|
|
2226
|
+
};
|
|
2227
|
+
type ApprovalStatus = 'pending' | 'approved' | 'rejected' | 'expired';
|
|
2228
|
+
interface ApprovalRequest {
|
|
2229
|
+
id: string;
|
|
2230
|
+
requesterId: string;
|
|
2231
|
+
userId: string;
|
|
2232
|
+
capability: string;
|
|
2233
|
+
operation: string;
|
|
2234
|
+
riskLevel: RiskLevel;
|
|
2235
|
+
context?: Record<string, unknown> | null;
|
|
2236
|
+
status: ApprovalStatus;
|
|
2237
|
+
reason?: string | null;
|
|
2238
|
+
expiresAt: string;
|
|
2239
|
+
createdAt: string;
|
|
2240
|
+
decidedAt?: string | null;
|
|
2241
|
+
}
|
|
2242
|
+
interface PermissionRequestInput {
|
|
2243
|
+
capability: string;
|
|
2244
|
+
operation: string;
|
|
2245
|
+
context?: Record<string, unknown>;
|
|
2246
|
+
ttlMs?: number;
|
|
2247
|
+
/** Optional idempotency key — forwarded as `Idempotency-Key` header. */
|
|
2248
|
+
idempotencyKey?: string;
|
|
2249
|
+
}
|
|
2250
|
+
type PermissionRequestResult =
|
|
2251
|
+
/** Low-risk operation — auto-approved synchronously. */
|
|
2252
|
+
{
|
|
2253
|
+
approved: true;
|
|
2254
|
+
riskLevel: RiskLevel;
|
|
2255
|
+
message?: string;
|
|
2256
|
+
}
|
|
2257
|
+
/** High-risk operation — pending mobile decision; poll or subscribe. */
|
|
2258
|
+
| {
|
|
2259
|
+
approved: false;
|
|
2260
|
+
requestId: string;
|
|
2261
|
+
expiresAt: string;
|
|
2262
|
+
riskLevel: RiskLevel;
|
|
2263
|
+
message?: string;
|
|
2264
|
+
};
|
|
2265
|
+
declare class PermissionsClient {
|
|
2266
|
+
private readonly baseUrl;
|
|
2267
|
+
private readonly apiKey;
|
|
2268
|
+
private readonly timeout;
|
|
2269
|
+
private readonly fetchFn;
|
|
2270
|
+
constructor({ baseUrl, apiKey, timeout, fetchFn, }?: {
|
|
2271
|
+
baseUrl?: string;
|
|
2272
|
+
apiKey?: string;
|
|
2273
|
+
timeout?: number;
|
|
2274
|
+
fetchFn?: typeof fetch;
|
|
2275
|
+
});
|
|
2276
|
+
/**
|
|
2277
|
+
* Request approval. The server may return synchronously when the
|
|
2278
|
+
* capability+context is classified as low risk.
|
|
2279
|
+
*/
|
|
2280
|
+
request(input: PermissionRequestInput): Promise<PrismerResponse<PermissionRequestResult>>;
|
|
2281
|
+
/**
|
|
2282
|
+
* List pending approval requests for the current user. Only
|
|
2283
|
+
* `status=pending` is supported today; other values return an empty array
|
|
2284
|
+
* with an info message.
|
|
2285
|
+
*/
|
|
2286
|
+
list(opts?: {
|
|
2287
|
+
status?: ApprovalStatus;
|
|
2288
|
+
limit?: number;
|
|
2289
|
+
}): Promise<PrismerResponse<ApprovalRequest[]>>;
|
|
2290
|
+
get(requestId: string): Promise<PrismerResponse<ApprovalRequest>>;
|
|
2291
|
+
approve(requestId: string, reason?: string): Promise<PrismerResponse<ApprovalRequest>>;
|
|
2292
|
+
reject(requestId: string, reason?: string): Promise<PrismerResponse<ApprovalRequest>>;
|
|
2293
|
+
private _request;
|
|
2294
|
+
private _getHeaders;
|
|
2295
|
+
}
|
|
2296
|
+
|
|
2297
|
+
/**
|
|
2298
|
+
* Prismer SDK — LAN Probe Service (v1.9.0)
|
|
2299
|
+
*
|
|
2300
|
+
* Client-side connection probing for remote control.
|
|
2301
|
+
* Discovers and selects best connection path to daemon.
|
|
2302
|
+
*
|
|
2303
|
+
* Features:
|
|
2304
|
+
* - Concurrent connection probing (LAN + Relay)
|
|
2305
|
+
* - Connection quality scoring (latency, jitter, packet loss)
|
|
2306
|
+
* - Automatic path selection
|
|
2307
|
+
* - Connection health monitoring
|
|
2308
|
+
* - Seamless switching between paths
|
|
2309
|
+
*/
|
|
2310
|
+
type ConnectionType = 'lan' | 'relay';
|
|
2311
|
+
interface ConnectionCandidate {
|
|
2312
|
+
type: ConnectionType;
|
|
2313
|
+
endpoint: string;
|
|
2314
|
+
priority: number;
|
|
2315
|
+
}
|
|
2316
|
+
interface ProbeResult {
|
|
2317
|
+
candidate: ConnectionCandidate;
|
|
2318
|
+
latencyMs: number;
|
|
2319
|
+
jitterMs: number;
|
|
2320
|
+
success: boolean;
|
|
2321
|
+
error?: string;
|
|
2322
|
+
timestamp: number;
|
|
2323
|
+
qualityScore: number;
|
|
2324
|
+
}
|
|
2325
|
+
interface ConnectionSelection {
|
|
2326
|
+
type: ConnectionType;
|
|
2327
|
+
endpoint: string;
|
|
2328
|
+
latencyMs: number;
|
|
2329
|
+
qualityScore: number;
|
|
2330
|
+
selectedAt: number;
|
|
2331
|
+
}
|
|
2332
|
+
interface LanProbeOptions {
|
|
2333
|
+
daemonId: string;
|
|
2334
|
+
lanIP?: string;
|
|
2335
|
+
lanPort?: number;
|
|
2336
|
+
/**
|
|
2337
|
+
* Base WSS URL for the relay (e.g. `wss://cloud.prismer.dev`). Callers
|
|
2338
|
+
* typically derive it from their cloud HTTP base URL — there is no separate
|
|
2339
|
+
* relay subdomain.
|
|
2340
|
+
*/
|
|
2341
|
+
relayUrl: string;
|
|
2342
|
+
maxLatencyMs?: number;
|
|
2343
|
+
probeTimeoutMs?: number;
|
|
2344
|
+
maxConcurrentProbes?: number;
|
|
2345
|
+
pingCount?: number;
|
|
2346
|
+
}
|
|
2347
|
+
declare class LanProbeService {
|
|
2348
|
+
private daemonId;
|
|
2349
|
+
private lanIP?;
|
|
2350
|
+
private lanPort;
|
|
2351
|
+
private relayUrl;
|
|
2352
|
+
private maxLatencyMs;
|
|
2353
|
+
private probeTimeoutMs;
|
|
2354
|
+
private maxConcurrentProbes;
|
|
2355
|
+
private pingCount;
|
|
2356
|
+
constructor(opts: LanProbeOptions);
|
|
2357
|
+
/**
|
|
2358
|
+
* Get all connection candidates to probe
|
|
2359
|
+
*/
|
|
2360
|
+
getCandidates(): ConnectionCandidate[];
|
|
2361
|
+
/**
|
|
2362
|
+
* Probe all connection candidates with concurrency limit
|
|
2363
|
+
*/
|
|
2364
|
+
probeAll(candidates?: ConnectionCandidate[]): Promise<ProbeResult[]>;
|
|
2365
|
+
/**
|
|
2366
|
+
* Select best connection from probe results
|
|
2367
|
+
*/
|
|
2368
|
+
selectBest(results: ProbeResult[], opts?: {
|
|
2369
|
+
maxLatencyMs?: number;
|
|
2370
|
+
minQualityScore?: number;
|
|
2371
|
+
}): ConnectionSelection | null;
|
|
2372
|
+
/**
|
|
2373
|
+
* Probe a single connection candidate with quality scoring
|
|
2374
|
+
*/
|
|
2375
|
+
private probeCandidate;
|
|
2376
|
+
/**
|
|
2377
|
+
* Probe LAN connection (TCP socket test with HTTP probe)
|
|
2378
|
+
*/
|
|
2379
|
+
private probeLAN;
|
|
2380
|
+
/**
|
|
2381
|
+
* Probe Relay connection (WSS handshake test)
|
|
2382
|
+
*/
|
|
2383
|
+
private probeRelay;
|
|
2384
|
+
/**
|
|
2385
|
+
* Perform a single TCP ping to verify connectivity
|
|
2386
|
+
*/
|
|
2387
|
+
private tcpPing;
|
|
2388
|
+
/**
|
|
2389
|
+
* Perform a single HTTP GET request to measure latency
|
|
2390
|
+
*/
|
|
2391
|
+
private httpPing;
|
|
2392
|
+
/**
|
|
2393
|
+
* Perform a single WebSocket handshake to measure latency
|
|
2394
|
+
*/
|
|
2395
|
+
private wsPing;
|
|
2396
|
+
/**
|
|
2397
|
+
* Calculate connection quality score based on latency, jitter, and packet loss
|
|
2398
|
+
*/
|
|
2399
|
+
private calculateQualityScore;
|
|
2400
|
+
/**
|
|
2401
|
+
* Get current connection status summary
|
|
2402
|
+
*/
|
|
2403
|
+
getStatus(): Promise<{
|
|
2404
|
+
current: ConnectionSelection | null;
|
|
2405
|
+
lastProbe: ProbeResult[];
|
|
2406
|
+
timestamp: number;
|
|
2407
|
+
}>;
|
|
2408
|
+
}
|
|
2409
|
+
/**
|
|
2410
|
+
* Probe all connections and auto-select best path
|
|
2411
|
+
*/
|
|
2412
|
+
declare function probeAndSelectLan(opts: LanProbeOptions): Promise<ConnectionSelection | null>;
|
|
2413
|
+
/**
|
|
2414
|
+
* Get current connection status
|
|
2415
|
+
*/
|
|
2416
|
+
declare function getLanStatus(opts: LanProbeOptions): Promise<{
|
|
2417
|
+
current: ConnectionSelection | null;
|
|
2418
|
+
lastProbe: ProbeResult[];
|
|
2419
|
+
timestamp: number;
|
|
2420
|
+
}>;
|
|
2421
|
+
|
|
1889
2422
|
/**
|
|
1890
2423
|
* Prismer SDK — Multi-Tab Coordination
|
|
1891
2424
|
*
|
|
@@ -2468,6 +3001,15 @@ interface DaemonControlPlane {
|
|
|
2468
3001
|
onCommand(handler: (cmd: ControlCommand) => Promise<CommandResult>): void;
|
|
2469
3002
|
}
|
|
2470
3003
|
|
|
3004
|
+
/** @deprecated Use `QrInitResponse` (v1.9.0 shape: `{offerId, expiresAt}`). */
|
|
3005
|
+
type PairingOffer = QrInitResponse;
|
|
3006
|
+
/** @deprecated Use `QrConfirmResponse` (v1.9.0 shape: `{bindingId, daemonId}`). */
|
|
3007
|
+
type PairConfirmResult = QrConfirmResponse;
|
|
3008
|
+
/** @deprecated Use `SendCommandRequest` (field renamed `payload` → `envelope`). */
|
|
3009
|
+
type SendCommandOptions = SendCommandRequest;
|
|
3010
|
+
/** @deprecated Use `RegisterPushTokenRequest`. */
|
|
3011
|
+
type PushTokenRegisterOptions = RegisterPushTokenRequest;
|
|
3012
|
+
|
|
2471
3013
|
/** Account management: register, identity, token refresh */
|
|
2472
3014
|
declare class AccountClient {
|
|
2473
3015
|
private _r;
|
|
@@ -2558,6 +3100,16 @@ declare class MessagesClient {
|
|
|
2558
3100
|
delete(conversationId: string, messageId: string): Promise<IMResult<void>>;
|
|
2559
3101
|
/** Mark messages as delivered */
|
|
2560
3102
|
markDelivered(conversationId: string, messageIds: string[]): Promise<IMResult<void>>;
|
|
3103
|
+
/**
|
|
3104
|
+
* Add or remove an emoji reaction on a message (v1.8.2).
|
|
3105
|
+
* Idempotent — adding an existing reaction or removing a non-existent one is a no-op.
|
|
3106
|
+
* Returns the full reactions snapshot: `{ "👍": ["userId-a", ...], ... }`.
|
|
3107
|
+
*/
|
|
3108
|
+
react(conversationId: string, messageId: string, emoji: string, options?: {
|
|
3109
|
+
remove?: boolean;
|
|
3110
|
+
}): Promise<IMResult<{
|
|
3111
|
+
reactions: Record<string, string[]>;
|
|
3112
|
+
}>>;
|
|
2561
3113
|
}
|
|
2562
3114
|
/** Contacts and agent discovery */
|
|
2563
3115
|
declare class ContactsClient {
|
|
@@ -2670,6 +3222,12 @@ declare class TasksClient {
|
|
|
2670
3222
|
complete(taskId: string, options?: IMCompleteTaskOptions): Promise<IMResult<IMTask>>;
|
|
2671
3223
|
/** Fail a task with error */
|
|
2672
3224
|
fail(taskId: string, error: string, metadata?: Record<string, unknown>): Promise<IMResult<IMTask>>;
|
|
3225
|
+
/** Approve a completed task */
|
|
3226
|
+
approve(taskId: string): Promise<IMResult<IMTask>>;
|
|
3227
|
+
/** Reject a task with reason */
|
|
3228
|
+
reject(taskId: string, reason: string): Promise<IMResult<IMTask>>;
|
|
3229
|
+
/** Cancel a task */
|
|
3230
|
+
cancel(taskId: string): Promise<IMResult<IMTask>>;
|
|
2673
3231
|
}
|
|
2674
3232
|
/** Memory management: files, compaction, session load */
|
|
2675
3233
|
declare class MemoryClient {
|
|
@@ -3095,6 +3653,9 @@ declare class PrismerClient {
|
|
|
3095
3653
|
private _identityReady;
|
|
3096
3654
|
/** IM API sub-client */
|
|
3097
3655
|
readonly im: IMClient;
|
|
3656
|
+
/** Remote Control API sub-client (Track 3) */
|
|
3657
|
+
readonly remote: RemoteClient;
|
|
3658
|
+
readonly permissions: PermissionsClient;
|
|
3098
3659
|
constructor(config?: PrismerConfig);
|
|
3099
3660
|
/** Wait for identity to be ready (useful for tests or explicit await) */
|
|
3100
3661
|
ensureIdentity(): Promise<AIPIdentity | null>;
|
|
@@ -3135,4 +3696,4 @@ declare class PrismerClient {
|
|
|
3135
3696
|
|
|
3136
3697
|
declare function createClient(config: PrismerConfig): PrismerClient;
|
|
3137
3698
|
|
|
3138
|
-
export { AccountClient, AttachmentQueue, type AuthenticatedPayload, type BatchSummary, type BatchUrlCost, BindingsClient, type CacheManager, type CommandResult, CommunityHub, type CommunityHubConfig, ContactsClient, type ControlCommand, ConversationsClient, CreditsClient, type DaemonControlPlane, type DecryptResult, type DerivationMode, DirectClient, type DisconnectedPayload, E2EEncryption, ENVIRONMENTS, type EncryptedContextResult, type EncryptedFileResult, type EncryptedMessage, type Environment, type ErrorPayload, EvolutionCache, EvolutionClient, EvolutionRuntime, type EvolutionRuntimeConfig, type EvolutionSession, type EvolutionSyncDelta, type EvolutionSyncSnapshot, type ExecutionContext, type ExecutionPolicy, type FileInput, FilesClient, type GeneCategory, type GeneSelectionResult, type GeneVisibility, GroupsClient, type IMAgentCard, type IMAgentPersonality, type IMAgentSkillRecord, type IMAnalyzeOptions, type IMAnalyzeResult, type IMAutocompleteResult, type IMBinding, type IMBindingData, type IMBlockedUser, type IMCapsule, IMClient, type IMCompactOptions, type IMCompactionSummary, type IMCompleteTaskOptions, type IMConfirmResult, type IMContact, type IMConversation, type IMConversationsOptions, type IMCreateBindingOptions, type IMCreateGeneOptions, type IMCreateGroupOptions, type IMCreateMemoryFileOptions, type IMCreateTaskOptions, type IMCreditsData, type IMDiscoverAgent, type IMDiscoverOptions, type IMEvolutionEdge, type IMEvolutionStats, type IMFileQuota, type IMForkGeneOptions, type IMFriendRequest, type IMGene, type IMGeneListOptions, type IMGroupData, type IMGroupMember, type IMIdentityKey, type IMKeyAuditEntry, type IMKeyVerifyResult, type IMKnowledgeLink, type IMMeData, type IMMemoryFile, type IMMemoryFileDetail, type IMMemoryKnowledgeLinks, type IMMemoryLoadResult, type IMMessage, type IMMessageData, type IMMultipartInitResult, type IMPaginationOptions, type IMPresignOptions, type IMPresignResult, IMRealtimeClient, type IMRecordOutcomeOptions, type IMRegisterData, type IMRegisterKeyOptions, type IMRegisterOptions, type IMResult, type IMRouting, type IMSendOptions, type IMSkillContent, type IMSkillInfo, type IMSkillInstallResult, type IMTask, type IMTaskDetail, type IMTaskListOptions, type IMTaskLog, type IMTokenData, type IMTransaction, type IMUpdateMemoryFileOptions, type IMUpdateTaskOptions, type IMUser, type IMUserProfile, type IMWorkspaceData, type IMWorkspaceInitGroupOptions, type IMWorkspaceInitOptions, IdentityClient, IndexedDBStorage, type KeyManager, KnowledgeLinkClient, type KnowledgeLinkSource, type KnowledgeLinkType, type LLMBackend, type LLMDispatcher, type LLMResult, type LLMTask, type LoadOptions, type LoadResult, type LoadResultItem, MemoryClient, MemoryStorage, type MessageDeletedPayload, type MessageEditPayload, type MessageNewPayload, MessagesClient, type NotificationSink, type OfflineConfig, type OfflineEventMap, type OfflineEventType, OfflineManager, type OutboxOperation, type ParseCost, type ParseCostBreakdown, type ParseDocument, type ParseDocumentImage, type ParseOptions, type ParseResult, type ParseUsage, type PongPayload, type PresenceChangedPayload, PrismerClient, type PrismerConfig, type PrismerEvent, type QueryCost, type QuerySummary, type QueuedAttachment, type QueuedTask, type RankingFactors, type RealtimeCommand, type RealtimeConfig, type RealtimeEventMap, type RealtimeEventType, RealtimeSSEClient, type RealtimeState, RealtimeWSClient, type ReconnectingPayload, type RequestFn, SQLiteStorage, type SaveBatchOptions, type SaveOptions, type SaveResult, type ScheduleType, SecurityClient, type SendFileOptions, type SendFileResult, type SessionMetrics, type SignalEnrichmentConfig, type SignalTag, type SingleUrlCost, type StorageAdapter, type StoredContact, type StoredConversation, type StoredMessage, type Suggestion, type SyncEvent, type SyncResult, TabCoordinator, type TaskExecutor, type TaskStatus, TasksClient, type TypingIndicatorPayload, type UploadOptions, type UploadResult, WorkspaceClient, createClient, createEnrichedExtractor, decryptContext, decryptFile, decryptMessages, decryptOnReceive, PrismerClient as default, encryptContext, encryptFile, encryptForSend, extractSignals, guessMimeType, safeSlug };
|
|
3699
|
+
export { AccountClient, type ApiKeyBindRequest, type ApiKeyBindResponse, type ApprovalRequest, type ApprovalStatus, AttachmentQueue, type AuthenticatedPayload, type BatchSummary, type BatchUrlCost, BindingsClient, type CacheManager, type CommandResult, CommunityHub, type CommunityHubConfig, type ConnectionCandidate, type ConnectionSelection, type ConnectionType, ContactsClient, type ControlCommand, ConversationsClient, CreditsClient, type DaemonControlPlane, type DecryptResult, type DerivationMode, type DesktopBinding, DirectClient, type DisconnectedPayload, E2EEncryption, ENVIRONMENTS, type EncryptedContextResult, type EncryptedFileResult, type EncryptedMessage, type Environment, type ErrorPayload, EvolutionCache, EvolutionClient, EvolutionRuntime, type EvolutionRuntimeConfig, type EvolutionSession, type EvolutionSyncDelta, type EvolutionSyncSnapshot, type ExecutionContext, type ExecutionPolicy, type FileInput, FilesClient, FsApi, type FsDeleteRequest, type FsDeleteResponse, type FsEditRequest, type FsEditResponse, type FsListEntry, type FsListRequest, type FsListResponse, type FsOp, type FsReadRequest, type FsReadResponse, type FsSearchMatch, type FsSearchRequest, type FsSearchResponse, type FsWriteRequest, type FsWriteResponse, type GeneCategory, type GeneSelectionResult, type GeneVisibility, GroupsClient, type IMAgentCard, type IMAgentPersonality, type IMAgentSkillRecord, type IMAnalyzeOptions, type IMAnalyzeResult, type IMAutocompleteResult, type IMBinding, type IMBindingData, type IMBlockedUser, type IMCapsule, IMClient, type IMCompactOptions, type IMCompactionSummary, type IMCompleteTaskOptions, type IMConfirmResult, type IMContact, type IMConversation, type IMConversationsOptions, type IMCreateBindingOptions, type IMCreateGeneOptions, type IMCreateGroupOptions, type IMCreateMemoryFileOptions, type IMCreateTaskOptions, type IMCreditsData, type IMDiscoverAgent, type IMDiscoverOptions, type IMEvolutionEdge, type IMEvolutionStats, type IMFileQuota, type IMForkGeneOptions, type IMFriendRequest, type IMGene, type IMGeneListOptions, type IMGroupData, type IMGroupMember, type IMIdentityKey, type IMKeyAuditEntry, type IMKeyVerifyResult, type IMKnowledgeLink, type IMMeData, type IMMemoryFile, type IMMemoryFileDetail, type IMMemoryKnowledgeLinks, type IMMemoryLoadResult, type IMMessage, type IMMessageData, type IMMultipartInitResult, type IMPaginationOptions, type IMPresignOptions, type IMPresignResult, IMRealtimeClient, type IMRecordOutcomeOptions, type IMRegisterData, type IMRegisterKeyOptions, type IMRegisterOptions, type IMResult, type IMRouting, type IMSendOptions, type IMSkillContent, type IMSkillInfo, type IMSkillInstallResult, type IMTask, type IMTaskDetail, type IMTaskListOptions, type IMTaskLog, type IMTokenData, type IMTransaction, type IMUpdateMemoryFileOptions, type IMUpdateTaskOptions, type IMUser, type IMUserProfile, type IMWorkspaceData, type IMWorkspaceInitGroupOptions, type IMWorkspaceInitOptions, IdentityClient, IndexedDBStorage, type KeyManager, KnowledgeLinkClient, type KnowledgeLinkSource, type KnowledgeLinkType, type LLMBackend, type LLMDispatcher, type LLMResult, type LLMTask, type LanProbeOptions, LanProbeService, type LoadOptions, type LoadResult, type LoadResultItem, MemoryClient, MemoryStorage, type MessageDeletedPayload, type MessageEditPayload, type MessageNewPayload, type MessageReactionPayload, MessagesClient, type NotificationSink, type OfferCandidate, type OfflineConfig, type OfflineEventMap, type OfflineEventType, OfflineManager, type OutboxOperation, type PairConfirmResult, PairingApi, type PairingOffer, type ParseCost, type ParseCostBreakdown, type ParseDocument, type ParseDocumentImage, type ParseOptions, type ParseResult, type ParseUsage, type PermissionRequestInput, type PermissionRequestResult, PermissionsClient, type PongPayload, type PresenceChangedPayload, PrismerClient, type PrismerConfig, type PrismerEvent, type ProbeResult, type PushToken, type PushTokenRegisterOptions, type QrConfirmRequest, type QrConfirmResponse, type QrInitRequest, type QrInitResponse, type QueryCost, type QuerySummary, type QueuedAttachment, type QueuedTask, type QuickDecisionRequest, type RankingFactors, type RealtimeCommand, type RealtimeConfig, type RealtimeEventMap, type RealtimeEventType, RealtimeSSEClient, type RealtimeState, RealtimeWSClient, type ReconnectingPayload, type RegisterPushTokenRequest, RemoteClient, type RemoteCommand, type RemoteCommandStatus, type RequestFn, type RiskLevel, SQLiteStorage, type SaveBatchOptions, type SaveOptions, type SaveResult, type ScheduleType, SecurityClient, type SendCommandOptions, type SendCommandRequest, type SendFileOptions, type SendFileResult, type SessionMetrics, type SignalEnrichmentConfig, type SignalTag, type SingleUrlCost, type StorageAdapter, type StoredContact, type StoredConversation, type StoredMessage, type Suggestion, type SyncEvent, type SyncResult, TabCoordinator, type TaskExecutor, type TaskStatus, TasksClient, type TypingIndicatorPayload, type UploadOptions, type UploadResult, WorkspaceClient, createClient, createEnrichedExtractor, decryptContext, decryptFile, decryptMessages, decryptOnReceive, PrismerClient as default, encryptContext, encryptFile, encryptForSend, extractSignals, getLanStatus, guessMimeType, probeAndSelectLan, safeSlug };
|