@sogni-ai/expo-client 1.0.0-alpha.10
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/CHANGELOG.md +69 -0
- package/README.md +411 -0
- package/dist/cjs/Account/index.d.ts +60 -0
- package/dist/cjs/Account/index.d.ts.map +1 -0
- package/dist/cjs/Account/index.js +188 -0
- package/dist/cjs/Account/index.js.map +1 -0
- package/dist/cjs/Account/types.d.ts +43 -0
- package/dist/cjs/Account/types.d.ts.map +1 -0
- package/dist/cjs/Account/types.js +18 -0
- package/dist/cjs/Account/types.js.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/events.d.ts +139 -0
- package/dist/cjs/ApiClient/WebSocketClient/events.d.ts.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/events.js +3 -0
- package/dist/cjs/ApiClient/WebSocketClient/events.js.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/index.d.ts +45 -0
- package/dist/cjs/ApiClient/WebSocketClient/index.d.ts.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/index.js +283 -0
- package/dist/cjs/ApiClient/WebSocketClient/index.js.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/normalize.d.ts +45 -0
- package/dist/cjs/ApiClient/WebSocketClient/normalize.d.ts.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/normalize.js +245 -0
- package/dist/cjs/ApiClient/WebSocketClient/normalize.js.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/types.d.ts +9 -0
- package/dist/cjs/ApiClient/WebSocketClient/types.d.ts.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/types.js +3 -0
- package/dist/cjs/ApiClient/WebSocketClient/types.js.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/wireTypes.d.ts +161 -0
- package/dist/cjs/ApiClient/WebSocketClient/wireTypes.d.ts.map +1 -0
- package/dist/cjs/ApiClient/WebSocketClient/wireTypes.js +11 -0
- package/dist/cjs/ApiClient/WebSocketClient/wireTypes.js.map +1 -0
- package/dist/cjs/ApiClient/index.d.ts +60 -0
- package/dist/cjs/ApiClient/index.d.ts.map +1 -0
- package/dist/cjs/ApiClient/index.js +87 -0
- package/dist/cjs/ApiClient/index.js.map +1 -0
- package/dist/cjs/Chat/ChatStream.d.ts +42 -0
- package/dist/cjs/Chat/ChatStream.d.ts.map +1 -0
- package/dist/cjs/Chat/ChatStream.js +146 -0
- package/dist/cjs/Chat/ChatStream.js.map +1 -0
- package/dist/cjs/Chat/index.d.ts +61 -0
- package/dist/cjs/Chat/index.d.ts.map +1 -0
- package/dist/cjs/Chat/index.js +179 -0
- package/dist/cjs/Chat/index.js.map +1 -0
- package/dist/cjs/Chat/tools.d.ts +13 -0
- package/dist/cjs/Chat/tools.d.ts.map +1 -0
- package/dist/cjs/Chat/tools.js +22 -0
- package/dist/cjs/Chat/tools.js.map +1 -0
- package/dist/cjs/Chat/types.d.ts +153 -0
- package/dist/cjs/Chat/types.d.ts.map +1 -0
- package/dist/cjs/Chat/types.js +3 -0
- package/dist/cjs/Chat/types.js.map +1 -0
- package/dist/cjs/Projects/ControlNet.d.ts +30 -0
- package/dist/cjs/Projects/ControlNet.d.ts.map +1 -0
- package/dist/cjs/Projects/ControlNet.js +45 -0
- package/dist/cjs/Projects/ControlNet.js.map +1 -0
- package/dist/cjs/Projects/createJobRequestMessage.d.ts +11 -0
- package/dist/cjs/Projects/createJobRequestMessage.d.ts.map +1 -0
- package/dist/cjs/Projects/createJobRequestMessage.js +239 -0
- package/dist/cjs/Projects/createJobRequestMessage.js.map +1 -0
- package/dist/cjs/Projects/index.d.ts +96 -0
- package/dist/cjs/Projects/index.d.ts.map +1 -0
- package/dist/cjs/Projects/index.js +536 -0
- package/dist/cjs/Projects/index.js.map +1 -0
- package/dist/cjs/Projects/restNormalize.d.ts +60 -0
- package/dist/cjs/Projects/restNormalize.d.ts.map +1 -0
- package/dist/cjs/Projects/restNormalize.js +89 -0
- package/dist/cjs/Projects/restNormalize.js.map +1 -0
- package/dist/cjs/Projects/types.d.ts +233 -0
- package/dist/cjs/Projects/types.d.ts.map +1 -0
- package/dist/cjs/Projects/types.js +3 -0
- package/dist/cjs/Projects/types.js.map +1 -0
- package/dist/cjs/Projects/utils.d.ts +23 -0
- package/dist/cjs/Projects/utils.d.ts.map +1 -0
- package/dist/cjs/Projects/utils.js +65 -0
- package/dist/cjs/Projects/utils.js.map +1 -0
- package/dist/cjs/index.d.ts +63 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +116 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/lib/AuthManager/ApiKeyAuthManager.d.ts +15 -0
- package/dist/cjs/lib/AuthManager/ApiKeyAuthManager.d.ts.map +1 -0
- package/dist/cjs/lib/AuthManager/ApiKeyAuthManager.js +47 -0
- package/dist/cjs/lib/AuthManager/ApiKeyAuthManager.js.map +1 -0
- package/dist/cjs/lib/AuthManager/AuthManagerBase.d.ts +23 -0
- package/dist/cjs/lib/AuthManager/AuthManagerBase.d.ts.map +1 -0
- package/dist/cjs/lib/AuthManager/AuthManagerBase.js +14 -0
- package/dist/cjs/lib/AuthManager/AuthManagerBase.js.map +1 -0
- package/dist/cjs/lib/AuthManager/AuthStorage.d.ts +11 -0
- package/dist/cjs/lib/AuthManager/AuthStorage.d.ts.map +1 -0
- package/dist/cjs/lib/AuthManager/AuthStorage.js +50 -0
- package/dist/cjs/lib/AuthManager/AuthStorage.js.map +1 -0
- package/dist/cjs/lib/AuthManager/TokenAuthManager.d.ts +35 -0
- package/dist/cjs/lib/AuthManager/TokenAuthManager.d.ts.map +1 -0
- package/dist/cjs/lib/AuthManager/TokenAuthManager.js +164 -0
- package/dist/cjs/lib/AuthManager/TokenAuthManager.js.map +1 -0
- package/dist/cjs/lib/AuthManager/index.d.ts +7 -0
- package/dist/cjs/lib/AuthManager/index.d.ts.map +1 -0
- package/dist/cjs/lib/AuthManager/index.js +13 -0
- package/dist/cjs/lib/AuthManager/index.js.map +1 -0
- package/dist/cjs/lib/Cache.d.ts +12 -0
- package/dist/cjs/lib/Cache.d.ts.map +1 -0
- package/dist/cjs/lib/Cache.js +36 -0
- package/dist/cjs/lib/Cache.js.map +1 -0
- package/dist/cjs/lib/DefaultLogger.d.ts +17 -0
- package/dist/cjs/lib/DefaultLogger.d.ts.map +1 -0
- package/dist/cjs/lib/DefaultLogger.js +36 -0
- package/dist/cjs/lib/DefaultLogger.js.map +1 -0
- package/dist/cjs/lib/RestClient.d.ts +18 -0
- package/dist/cjs/lib/RestClient.d.ts.map +1 -0
- package/dist/cjs/lib/RestClient.js +67 -0
- package/dist/cjs/lib/RestClient.js.map +1 -0
- package/dist/cjs/lib/TypedEventEmitter.d.ts +16 -0
- package/dist/cjs/lib/TypedEventEmitter.d.ts.map +1 -0
- package/dist/cjs/lib/TypedEventEmitter.js +46 -0
- package/dist/cjs/lib/TypedEventEmitter.js.map +1 -0
- package/dist/cjs/lib/base64.d.ts +3 -0
- package/dist/cjs/lib/base64.d.ts.map +1 -0
- package/dist/cjs/lib/base64.js +21 -0
- package/dist/cjs/lib/base64.js.map +1 -0
- package/dist/cjs/lib/getUUID.d.ts +12 -0
- package/dist/cjs/lib/getUUID.d.ts.map +1 -0
- package/dist/cjs/lib/getUUID.js +29 -0
- package/dist/cjs/lib/getUUID.js.map +1 -0
- package/dist/cjs/lib/mediaInput.d.ts +33 -0
- package/dist/cjs/lib/mediaInput.d.ts.map +1 -0
- package/dist/cjs/lib/mediaInput.js +32 -0
- package/dist/cjs/lib/mediaInput.js.map +1 -0
- package/dist/cjs/lib/utils.d.ts +10 -0
- package/dist/cjs/lib/utils.d.ts.map +1 -0
- package/dist/cjs/lib/utils.js +24 -0
- package/dist/cjs/lib/utils.js.map +1 -0
- package/dist/cjs/types/ErrorData.d.ts +7 -0
- package/dist/cjs/types/ErrorData.d.ts.map +1 -0
- package/dist/cjs/types/ErrorData.js +3 -0
- package/dist/cjs/types/ErrorData.js.map +1 -0
- package/dist/cjs/types/json.d.ts +6 -0
- package/dist/cjs/types/json.d.ts.map +1 -0
- package/dist/cjs/types/json.js +3 -0
- package/dist/cjs/types/json.js.map +1 -0
- package/dist/cjs/types/token.d.ts +2 -0
- package/dist/cjs/types/token.d.ts.map +1 -0
- package/dist/cjs/types/token.js +3 -0
- package/dist/cjs/types/token.js.map +1 -0
- package/dist/cjs/version.d.ts +2 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/cjs/wallet.d.ts +59 -0
- package/dist/cjs/wallet.d.ts.map +1 -0
- package/dist/cjs/wallet.js +125 -0
- package/dist/cjs/wallet.js.map +1 -0
- package/dist/esm/Account/index.js +183 -0
- package/dist/esm/Account/index.js.map +1 -0
- package/dist/esm/Account/types.js +15 -0
- package/dist/esm/Account/types.js.map +1 -0
- package/dist/esm/ApiClient/WebSocketClient/events.js +2 -0
- package/dist/esm/ApiClient/WebSocketClient/events.js.map +1 -0
- package/dist/esm/ApiClient/WebSocketClient/index.js +278 -0
- package/dist/esm/ApiClient/WebSocketClient/index.js.map +1 -0
- package/dist/esm/ApiClient/WebSocketClient/normalize.js +229 -0
- package/dist/esm/ApiClient/WebSocketClient/normalize.js.map +1 -0
- package/dist/esm/ApiClient/WebSocketClient/types.js +2 -0
- package/dist/esm/ApiClient/WebSocketClient/types.js.map +1 -0
- package/dist/esm/ApiClient/WebSocketClient/wireTypes.js +10 -0
- package/dist/esm/ApiClient/WebSocketClient/wireTypes.js.map +1 -0
- package/dist/esm/ApiClient/index.js +80 -0
- package/dist/esm/ApiClient/index.js.map +1 -0
- package/dist/esm/Chat/ChatStream.js +144 -0
- package/dist/esm/Chat/ChatStream.js.map +1 -0
- package/dist/esm/Chat/index.js +174 -0
- package/dist/esm/Chat/index.js.map +1 -0
- package/dist/esm/Chat/tools.js +19 -0
- package/dist/esm/Chat/tools.js.map +1 -0
- package/dist/esm/Chat/types.js +2 -0
- package/dist/esm/Chat/types.js.map +1 -0
- package/dist/esm/Projects/ControlNet.js +41 -0
- package/dist/esm/Projects/ControlNet.js.map +1 -0
- package/dist/esm/Projects/createJobRequestMessage.js +236 -0
- package/dist/esm/Projects/createJobRequestMessage.js.map +1 -0
- package/dist/esm/Projects/index.js +531 -0
- package/dist/esm/Projects/index.js.map +1 -0
- package/dist/esm/Projects/restNormalize.js +86 -0
- package/dist/esm/Projects/restNormalize.js.map +1 -0
- package/dist/esm/Projects/types.js +2 -0
- package/dist/esm/Projects/types.js.map +1 -0
- package/dist/esm/Projects/utils.js +55 -0
- package/dist/esm/Projects/utils.js.map +1 -0
- package/dist/esm/index.js +72 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/lib/AuthManager/ApiKeyAuthManager.js +42 -0
- package/dist/esm/lib/AuthManager/ApiKeyAuthManager.js.map +1 -0
- package/dist/esm/lib/AuthManager/AuthManagerBase.js +9 -0
- package/dist/esm/lib/AuthManager/AuthManagerBase.js.map +1 -0
- package/dist/esm/lib/AuthManager/AuthStorage.js +13 -0
- package/dist/esm/lib/AuthManager/AuthStorage.js.map +1 -0
- package/dist/esm/lib/AuthManager/TokenAuthManager.js +159 -0
- package/dist/esm/lib/AuthManager/TokenAuthManager.js.map +1 -0
- package/dist/esm/lib/AuthManager/index.js +5 -0
- package/dist/esm/lib/AuthManager/index.js.map +1 -0
- package/dist/esm/lib/Cache.js +33 -0
- package/dist/esm/lib/Cache.js.map +1 -0
- package/dist/esm/lib/DefaultLogger.js +32 -0
- package/dist/esm/lib/DefaultLogger.js.map +1 -0
- package/dist/esm/lib/RestClient.js +62 -0
- package/dist/esm/lib/RestClient.js.map +1 -0
- package/dist/esm/lib/TypedEventEmitter.js +44 -0
- package/dist/esm/lib/TypedEventEmitter.js.map +1 -0
- package/dist/esm/lib/base64.js +17 -0
- package/dist/esm/lib/base64.js.map +1 -0
- package/dist/esm/lib/getUUID.js +26 -0
- package/dist/esm/lib/getUUID.js.map +1 -0
- package/dist/esm/lib/mediaInput.js +28 -0
- package/dist/esm/lib/mediaInput.js.map +1 -0
- package/dist/esm/lib/utils.js +19 -0
- package/dist/esm/lib/utils.js.map +1 -0
- package/dist/esm/types/ErrorData.js +2 -0
- package/dist/esm/types/ErrorData.js.map +1 -0
- package/dist/esm/types/json.js +2 -0
- package/dist/esm/types/json.js.map +1 -0
- package/dist/esm/types/token.js +2 -0
- package/dist/esm/types/token.js.map +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/esm/wallet.js +117 -0
- package/dist/esm/wallet.js.map +1 -0
- package/package.json +92 -0
- package/src/Account/index.ts +214 -0
- package/src/Account/types.ts +61 -0
- package/src/ApiClient/WebSocketClient/events.ts +168 -0
- package/src/ApiClient/WebSocketClient/index.ts +345 -0
- package/src/ApiClient/WebSocketClient/normalize.ts +287 -0
- package/src/ApiClient/WebSocketClient/types.ts +10 -0
- package/src/ApiClient/WebSocketClient/wireTypes.ts +183 -0
- package/src/ApiClient/index.ts +147 -0
- package/src/Chat/ChatStream.ts +164 -0
- package/src/Chat/index.ts +224 -0
- package/src/Chat/tools.ts +23 -0
- package/src/Chat/types.ts +165 -0
- package/src/Projects/ControlNet.ts +84 -0
- package/src/Projects/createJobRequestMessage.ts +241 -0
- package/src/Projects/index.ts +608 -0
- package/src/Projects/restNormalize.ts +154 -0
- package/src/Projects/types.ts +266 -0
- package/src/Projects/utils.ts +60 -0
- package/src/index.ts +217 -0
- package/src/lib/AuthManager/ApiKeyAuthManager.ts +52 -0
- package/src/lib/AuthManager/AuthManagerBase.ts +35 -0
- package/src/lib/AuthManager/AuthStorage.ts +21 -0
- package/src/lib/AuthManager/TokenAuthManager.ts +179 -0
- package/src/lib/AuthManager/index.ts +8 -0
- package/src/lib/Cache.ts +45 -0
- package/src/lib/DefaultLogger.ts +47 -0
- package/src/lib/RestClient.ts +77 -0
- package/src/lib/TypedEventEmitter.ts +52 -0
- package/src/lib/base64.ts +17 -0
- package/src/lib/getUUID.ts +27 -0
- package/src/lib/mediaInput.ts +54 -0
- package/src/lib/utils.ts +21 -0
- package/src/types/ErrorData.ts +7 -0
- package/src/types/json.ts +5 -0
- package/src/types/token.ts +1 -0
- package/src/version.ts +1 -0
- package/src/wallet.ts +158 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire-level message shapes as the sogni-socket server sends them.
|
|
3
|
+
* These are NOT exposed to consumers. They are translated into clean public
|
|
4
|
+
* types by `normalize.ts`.
|
|
5
|
+
*
|
|
6
|
+
* Authoritative source: ../sogni-socket/controllers/jobsController.js and
|
|
7
|
+
* ../sogni-socket/controllers/websocketsController.js.
|
|
8
|
+
*/
|
|
9
|
+
/** Envelope wrapping all socket messages in both directions. */
|
|
10
|
+
export interface RawSocketEnvelope {
|
|
11
|
+
type: string;
|
|
12
|
+
/** base64-encoded JSON.stringify(payload) */
|
|
13
|
+
data: string;
|
|
14
|
+
}
|
|
15
|
+
/** `authenticated` event — sent right after the server upgrades a connection. */
|
|
16
|
+
export interface RawAuthenticated {
|
|
17
|
+
id: string;
|
|
18
|
+
clientType: string;
|
|
19
|
+
username: string;
|
|
20
|
+
address: string;
|
|
21
|
+
SID: number;
|
|
22
|
+
clientSID: number;
|
|
23
|
+
addressSID: number;
|
|
24
|
+
balanceVersion?: 1 | 2;
|
|
25
|
+
/** v1: BigNumber/string; v2: { sogni, spark } */
|
|
26
|
+
tokens: RawBalanceV1Tokens | RawBalanceV2Tokens;
|
|
27
|
+
activeProjects: string[];
|
|
28
|
+
unclaimedCompletedProjects: string[];
|
|
29
|
+
isMainnet: boolean;
|
|
30
|
+
accountWasMigrated: boolean;
|
|
31
|
+
hasUnclaimedAirdrop: boolean;
|
|
32
|
+
firstLoginAfterMigration: boolean;
|
|
33
|
+
}
|
|
34
|
+
export interface RawBalanceV1Tokens {
|
|
35
|
+
settled: string;
|
|
36
|
+
credit: string;
|
|
37
|
+
debit: string;
|
|
38
|
+
net: string;
|
|
39
|
+
}
|
|
40
|
+
export interface RawBalanceV2Tokens {
|
|
41
|
+
sogni: RawBalanceV1Tokens & {
|
|
42
|
+
premiumCredit?: string;
|
|
43
|
+
};
|
|
44
|
+
spark: RawBalanceV1Tokens & {
|
|
45
|
+
premiumCredit?: string;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** `balanceUpdate` event — fired when the user's balance changes. */
|
|
49
|
+
export type RawBalanceUpdate = RawBalanceV1Tokens | RawBalanceV2Tokens;
|
|
50
|
+
/** `changeNetwork` event — confirms a network switch. */
|
|
51
|
+
export interface RawChangeNetwork {
|
|
52
|
+
network: 'fast' | 'relaxed';
|
|
53
|
+
}
|
|
54
|
+
/** `toastMessage` event — server-initiated UI message. */
|
|
55
|
+
export interface RawToastMessage {
|
|
56
|
+
type: 'info' | 'success' | 'warning' | 'error';
|
|
57
|
+
message: string;
|
|
58
|
+
autoClose?: number;
|
|
59
|
+
stickyID?: string;
|
|
60
|
+
}
|
|
61
|
+
/** `jobState` event — composite. `type` field carries the actual sub-state. */
|
|
62
|
+
export interface RawJobState {
|
|
63
|
+
jobID: string;
|
|
64
|
+
imgID?: string;
|
|
65
|
+
type: 'jobStarted' | 'initiatingModel' | 'jobCompleted';
|
|
66
|
+
workerName?: string;
|
|
67
|
+
queuePosition?: number;
|
|
68
|
+
}
|
|
69
|
+
/** `jobProgress` event — fine-grained step/stepCount progress. */
|
|
70
|
+
export interface RawJobProgress {
|
|
71
|
+
jobID: string;
|
|
72
|
+
imgID: string;
|
|
73
|
+
step: number;
|
|
74
|
+
stepCount: number;
|
|
75
|
+
/** Optional preview image bytes — ignored in this SDK. */
|
|
76
|
+
currentImages?: unknown[];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* `jobResult` event — terminal result for one job in a project.
|
|
80
|
+
* Note that `userCanceled` and `triggeredNSFWFilter` flags signal failure paths
|
|
81
|
+
* even though the message type is "result". Normalize splits these out.
|
|
82
|
+
*/
|
|
83
|
+
export interface RawJobResult {
|
|
84
|
+
jobID: string;
|
|
85
|
+
imgID: string;
|
|
86
|
+
lastSeed: number;
|
|
87
|
+
userCanceled: boolean;
|
|
88
|
+
triggeredNSFWFilter: boolean;
|
|
89
|
+
performedStepCount: number;
|
|
90
|
+
interval?: number;
|
|
91
|
+
itsPerSecond?: number;
|
|
92
|
+
timings?: Record<string, number>;
|
|
93
|
+
}
|
|
94
|
+
/** `jobError` event. */
|
|
95
|
+
export interface RawJobError {
|
|
96
|
+
jobID: string;
|
|
97
|
+
imgID?: string;
|
|
98
|
+
error: string;
|
|
99
|
+
error_message: string;
|
|
100
|
+
isFromWorker: boolean;
|
|
101
|
+
}
|
|
102
|
+
/** `jobETA` event — server's running estimate of remaining seconds. */
|
|
103
|
+
export interface RawJobETA {
|
|
104
|
+
jobID: string;
|
|
105
|
+
imgID: string;
|
|
106
|
+
etaSeconds: number;
|
|
107
|
+
}
|
|
108
|
+
/** `artistCancelConfirmation` — sent after the artist requests a project cancel. */
|
|
109
|
+
export interface RawArtistCancelConfirmation {
|
|
110
|
+
jobID: string;
|
|
111
|
+
didCancel: boolean;
|
|
112
|
+
error_message?: string;
|
|
113
|
+
}
|
|
114
|
+
export interface RawToolCallDelta {
|
|
115
|
+
index: number;
|
|
116
|
+
id?: string;
|
|
117
|
+
type?: 'function';
|
|
118
|
+
function?: {
|
|
119
|
+
name?: string;
|
|
120
|
+
arguments?: string;
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
/** `jobTokens` — streaming chunk from an LLM completion. */
|
|
124
|
+
export interface RawJobTokens {
|
|
125
|
+
jobID: string;
|
|
126
|
+
content?: string;
|
|
127
|
+
role?: string;
|
|
128
|
+
finishReason?: string | null;
|
|
129
|
+
usage?: {
|
|
130
|
+
prompt_tokens: number;
|
|
131
|
+
completion_tokens: number;
|
|
132
|
+
total_tokens?: number;
|
|
133
|
+
};
|
|
134
|
+
tool_calls?: RawToolCallDelta[];
|
|
135
|
+
}
|
|
136
|
+
/** `llmJobResult` — terminal result for an LLM completion. */
|
|
137
|
+
export interface RawLLMJobResult {
|
|
138
|
+
jobID: string;
|
|
139
|
+
usage: {
|
|
140
|
+
prompt_tokens: number;
|
|
141
|
+
completion_tokens: number;
|
|
142
|
+
total_tokens?: number;
|
|
143
|
+
};
|
|
144
|
+
timeTaken: number;
|
|
145
|
+
workerName?: string;
|
|
146
|
+
cost?: unknown;
|
|
147
|
+
}
|
|
148
|
+
/** `llmJobError` — terminal error for an LLM completion. */
|
|
149
|
+
export interface RawLLMJobError {
|
|
150
|
+
jobID: string;
|
|
151
|
+
error: string;
|
|
152
|
+
error_message: string;
|
|
153
|
+
workerName?: string;
|
|
154
|
+
}
|
|
155
|
+
/** `swarmLLMModels` — available LLM models on the active network. */
|
|
156
|
+
export type RawSwarmLLMModels = Record<string, number | {
|
|
157
|
+
workers: number;
|
|
158
|
+
displayName?: string;
|
|
159
|
+
contextLength?: number;
|
|
160
|
+
}>;
|
|
161
|
+
//# sourceMappingURL=wireTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wireTypes.d.ts","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/wireTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,gEAAgE;AAChE,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACvB,iDAAiD;IACjD,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;IAChD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,0BAA0B,EAAE,MAAM,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvD,KAAK,EAAE,kBAAkB,GAAG;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CACxD;AAED,qEAAqE;AACrE,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,kBAAkB,CAAC;AAEvE,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AASD,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,GAAG,iBAAiB,GAAG,cAAc,CAAC;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wBAAwB;AACxB,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,uEAAuE;AACvE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oFAAoF;AACpF,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAQD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,4DAA4D;AAC5D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qEAAqE;AACrE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CACpC,MAAM,EACN,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,CAC3E,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Wire-level message shapes as the sogni-socket server sends them.
|
|
4
|
+
* These are NOT exposed to consumers. They are translated into clean public
|
|
5
|
+
* types by `normalize.ts`.
|
|
6
|
+
*
|
|
7
|
+
* Authoritative source: ../sogni-socket/controllers/jobsController.js and
|
|
8
|
+
* ../sogni-socket/controllers/websocketsController.js.
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
//# sourceMappingURL=wireTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wireTypes.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/wireTypes.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import RestClient from '../lib/RestClient';
|
|
2
|
+
import TypedEventEmitter from '../lib/TypedEventEmitter';
|
|
3
|
+
import { JSONValue } from '../types/json';
|
|
4
|
+
import { Logger } from '../lib/DefaultLogger';
|
|
5
|
+
import { AuthManager, AuthStorage } from '../lib/AuthManager';
|
|
6
|
+
import WebSocketClient from './WebSocketClient';
|
|
7
|
+
import { SupernetType } from './WebSocketClient/types';
|
|
8
|
+
import { ConnectedEvent, DisconnectedEvent } from './WebSocketClient/events';
|
|
9
|
+
export interface ApiResponse<D = JSONValue> {
|
|
10
|
+
status: 'success';
|
|
11
|
+
data: D;
|
|
12
|
+
}
|
|
13
|
+
export interface ApiErrorResponse {
|
|
14
|
+
status: 'error';
|
|
15
|
+
message: string;
|
|
16
|
+
errorCode: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class ApiError extends Error {
|
|
19
|
+
status: number;
|
|
20
|
+
payload: ApiErrorResponse;
|
|
21
|
+
constructor(status: number, payload: ApiErrorResponse);
|
|
22
|
+
}
|
|
23
|
+
interface ApiClientEvents {
|
|
24
|
+
authUpdated: boolean;
|
|
25
|
+
connected: ConnectedEvent;
|
|
26
|
+
disconnected: DisconnectedEvent;
|
|
27
|
+
}
|
|
28
|
+
export interface ApiClientOptions {
|
|
29
|
+
baseUrl: string;
|
|
30
|
+
socketUrl: string;
|
|
31
|
+
appId: string;
|
|
32
|
+
appSource?: string;
|
|
33
|
+
networkType: SupernetType;
|
|
34
|
+
logger: Logger;
|
|
35
|
+
authType: 'token' | 'apiKey';
|
|
36
|
+
authStorage?: AuthStorage;
|
|
37
|
+
disableSocket?: boolean;
|
|
38
|
+
}
|
|
39
|
+
declare class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
40
|
+
readonly appId: string;
|
|
41
|
+
readonly appSource?: string;
|
|
42
|
+
readonly logger: Logger;
|
|
43
|
+
private _rest;
|
|
44
|
+
private _socketRest;
|
|
45
|
+
private _auth;
|
|
46
|
+
private _socket;
|
|
47
|
+
private _disableSocket;
|
|
48
|
+
constructor({ baseUrl, socketUrl, appId, appSource, networkType, authType, logger, authStorage, disableSocket }: ApiClientOptions);
|
|
49
|
+
get isAuthenticated(): boolean;
|
|
50
|
+
get auth(): AuthManager;
|
|
51
|
+
get rest(): RestClient;
|
|
52
|
+
/** REST client bound to the socket server URL (used for model lists, image upload/download URLs, etc.). */
|
|
53
|
+
get socketRest(): RestClient;
|
|
54
|
+
get socket(): WebSocketClient;
|
|
55
|
+
get socketEnabled(): boolean;
|
|
56
|
+
private _handleAuthUpdated;
|
|
57
|
+
dispose(): void;
|
|
58
|
+
}
|
|
59
|
+
export default ApiClient;
|
|
60
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ApiClient/index.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAqB,WAAW,EAAE,WAAW,EAAoB,MAAM,oBAAoB,CAAC;AACnG,OAAO,eAAe,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7E,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,SAAS;IACxC,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,CAAC;gBACd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB;CAKtD;AAED,UAAU,eAAe;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,cAAc,CAAC;IAC1B,YAAY,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,YAAY,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,cAAM,SAAU,SAAQ,iBAAiB,CAAC,eAAe,CAAC;IACxD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,KAAK,CAAa;IAC1B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,cAAc,CAAU;gBAEpB,EACV,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAS,EACT,WAAW,EACX,QAAQ,EACR,MAAM,EACN,WAAW,EACX,aAAqB,EACtB,EAAE,gBAAgB;IA6BnB,IAAI,eAAe,IAAI,OAAO,CAE7B;IAED,IAAI,IAAI,IAAI,WAAW,CAEtB;IAED,IAAI,IAAI,IAAI,UAAU,CAErB;IAED,2GAA2G;IAC3G,IAAI,UAAU,IAAI,UAAU,CAE3B;IAED,IAAI,MAAM,IAAI,eAAe,CAE5B;IAED,IAAI,aAAa,IAAI,OAAO,CAE3B;IAED,OAAO,CAAC,kBAAkB;IAS1B,OAAO;CAMR;AASD,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ApiError = void 0;
|
|
7
|
+
const RestClient_1 = __importDefault(require("../lib/RestClient"));
|
|
8
|
+
const TypedEventEmitter_1 = __importDefault(require("../lib/TypedEventEmitter"));
|
|
9
|
+
const AuthManager_1 = require("../lib/AuthManager");
|
|
10
|
+
const WebSocketClient_1 = __importDefault(require("./WebSocketClient"));
|
|
11
|
+
class ApiError extends Error {
|
|
12
|
+
constructor(status, payload) {
|
|
13
|
+
super(payload.message);
|
|
14
|
+
this.status = status;
|
|
15
|
+
this.payload = payload;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.ApiError = ApiError;
|
|
19
|
+
class ApiClient extends TypedEventEmitter_1.default {
|
|
20
|
+
constructor({ baseUrl, socketUrl, appId, appSource, networkType, authType, logger, authStorage, disableSocket = false }) {
|
|
21
|
+
super();
|
|
22
|
+
this.appId = appId;
|
|
23
|
+
this.appSource = appSource?.trim() || undefined;
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this._disableSocket = disableSocket;
|
|
26
|
+
if (authType === 'apiKey') {
|
|
27
|
+
this._auth = new AuthManager_1.ApiKeyAuthManager(logger);
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
this._auth = new AuthManager_1.TokenAuthManager(baseUrl, logger, authStorage);
|
|
31
|
+
}
|
|
32
|
+
this._rest = new RestClient_1.default(baseUrl, this._auth, logger);
|
|
33
|
+
this._socketRest = new RestClient_1.default(normalizeHttpUrl(socketUrl), this._auth, logger);
|
|
34
|
+
this._socket = new WebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger, this.appSource);
|
|
35
|
+
this._auth.on('updated', (isAuthenticated) => {
|
|
36
|
+
this.emit('authUpdated', isAuthenticated);
|
|
37
|
+
this._handleAuthUpdated(isAuthenticated);
|
|
38
|
+
});
|
|
39
|
+
this._socket.on('connected', (e) => this.emit('connected', e));
|
|
40
|
+
this._socket.on('disconnected', (e) => this.emit('disconnected', e));
|
|
41
|
+
}
|
|
42
|
+
get isAuthenticated() {
|
|
43
|
+
return this._auth.isAuthenticated;
|
|
44
|
+
}
|
|
45
|
+
get auth() {
|
|
46
|
+
return this._auth;
|
|
47
|
+
}
|
|
48
|
+
get rest() {
|
|
49
|
+
return this._rest;
|
|
50
|
+
}
|
|
51
|
+
/** REST client bound to the socket server URL (used for model lists, image upload/download URLs, etc.). */
|
|
52
|
+
get socketRest() {
|
|
53
|
+
return this._socketRest;
|
|
54
|
+
}
|
|
55
|
+
get socket() {
|
|
56
|
+
return this._socket;
|
|
57
|
+
}
|
|
58
|
+
get socketEnabled() {
|
|
59
|
+
return !this._disableSocket;
|
|
60
|
+
}
|
|
61
|
+
_handleAuthUpdated(isAuthenticated) {
|
|
62
|
+
if (this._disableSocket)
|
|
63
|
+
return;
|
|
64
|
+
if (isAuthenticated && !this._socket.isConnected) {
|
|
65
|
+
void this._socket.connect();
|
|
66
|
+
}
|
|
67
|
+
else if (!isAuthenticated && this._socket.isConnected) {
|
|
68
|
+
this._socket.disconnect();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
dispose() {
|
|
72
|
+
this._socket.dispose();
|
|
73
|
+
this._auth.removeAllListeners();
|
|
74
|
+
this.removeAllListeners();
|
|
75
|
+
this._auth.clear();
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function normalizeHttpUrl(url) {
|
|
79
|
+
const u = new URL(url);
|
|
80
|
+
if (u.protocol === 'http:' || u.protocol === 'ws:')
|
|
81
|
+
u.protocol = 'http:';
|
|
82
|
+
else
|
|
83
|
+
u.protocol = 'https:';
|
|
84
|
+
return u.toString();
|
|
85
|
+
}
|
|
86
|
+
exports.default = ApiClient;
|
|
87
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ApiClient/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import ErrorData from '../types/ErrorData';
|
|
2
|
+
import { ChatCompletionChunk, ChatCompletionResult, TokenUsage } from './types';
|
|
3
|
+
/**
|
|
4
|
+
* Async iterable representing a streaming chat completion.
|
|
5
|
+
*
|
|
6
|
+
* Iterate with `for await (const chunk of stream)`. Each chunk has `content`
|
|
7
|
+
* (token text) and may carry a `finishReason` on the final chunk. After the
|
|
8
|
+
* stream completes, `stream.result` resolves to the full ChatCompletionResult.
|
|
9
|
+
*
|
|
10
|
+
* Cancel mid-stream with `stream.cancel()` (sends a server-side abort).
|
|
11
|
+
*/
|
|
12
|
+
declare class ChatStream implements AsyncIterable<ChatCompletionChunk> {
|
|
13
|
+
readonly jobId: string;
|
|
14
|
+
private _queue;
|
|
15
|
+
private _pendingResolver;
|
|
16
|
+
private _pendingRejecter;
|
|
17
|
+
private _content;
|
|
18
|
+
private _role;
|
|
19
|
+
private _finishReason;
|
|
20
|
+
private _usage;
|
|
21
|
+
private _timeTaken;
|
|
22
|
+
private _workerName;
|
|
23
|
+
private _toolCallAccumulator;
|
|
24
|
+
private _done;
|
|
25
|
+
private _error;
|
|
26
|
+
private _resultPromise;
|
|
27
|
+
private _resultResolve;
|
|
28
|
+
private _resultReject;
|
|
29
|
+
private _onCancel;
|
|
30
|
+
constructor(jobId: string, onCancel: () => Promise<void>);
|
|
31
|
+
/** Resolves to the full result after the stream completes. */
|
|
32
|
+
get result(): Promise<ChatCompletionResult>;
|
|
33
|
+
cancel(): Promise<void>;
|
|
34
|
+
[Symbol.asyncIterator](): AsyncIterator<ChatCompletionChunk>;
|
|
35
|
+
private _next;
|
|
36
|
+
_pushChunk(chunk: ChatCompletionChunk): void;
|
|
37
|
+
_complete(timeTaken: number, usage?: TokenUsage, workerName?: string): void;
|
|
38
|
+
_fail(error: ErrorData): void;
|
|
39
|
+
private _accumulateToolCalls;
|
|
40
|
+
}
|
|
41
|
+
export default ChatStream;
|
|
42
|
+
//# sourceMappingURL=ChatStream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatStream.d.ts","sourceRoot":"","sources":["../../../src/Chat/ChatStream.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EAGpB,UAAU,EACX,MAAM,SAAS,CAAC;AAKjB;;;;;;;;GAQG;AACH,cAAM,UAAW,YAAW,aAAa,CAAC,mBAAmB,CAAC;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAA0D;IACxE,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,oBAAoB,CAA+B;IAC3D,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,cAAc,CAAgC;IACtD,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,SAAS,CAAsB;gBAE3B,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC;IASxD,8DAA8D;IAC9D,IAAI,MAAM,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAE1C;IAEK,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,mBAAmB,CAAC;IAM5D,OAAO,CAAC,KAAK;IAmBb,UAAU,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAmB5C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI;IA8B3E,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAgB7B,OAAO,CAAC,oBAAoB;CAa7B;AAED,eAAe,UAAU,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Async iterable representing a streaming chat completion.
|
|
5
|
+
*
|
|
6
|
+
* Iterate with `for await (const chunk of stream)`. Each chunk has `content`
|
|
7
|
+
* (token text) and may carry a `finishReason` on the final chunk. After the
|
|
8
|
+
* stream completes, `stream.result` resolves to the full ChatCompletionResult.
|
|
9
|
+
*
|
|
10
|
+
* Cancel mid-stream with `stream.cancel()` (sends a server-side abort).
|
|
11
|
+
*/
|
|
12
|
+
class ChatStream {
|
|
13
|
+
constructor(jobId, onCancel) {
|
|
14
|
+
this._queue = [];
|
|
15
|
+
this._pendingResolver = null;
|
|
16
|
+
this._pendingRejecter = null;
|
|
17
|
+
this._content = '';
|
|
18
|
+
this._role = 'assistant';
|
|
19
|
+
this._finishReason = null;
|
|
20
|
+
this._usage = { prompt_tokens: 0, completion_tokens: 0 };
|
|
21
|
+
this._timeTaken = 0;
|
|
22
|
+
this._toolCallAccumulator = new Map();
|
|
23
|
+
this._done = false;
|
|
24
|
+
this._error = null;
|
|
25
|
+
this.jobId = jobId;
|
|
26
|
+
this._onCancel = onCancel;
|
|
27
|
+
this._resultPromise = new Promise((resolve, reject) => {
|
|
28
|
+
this._resultResolve = resolve;
|
|
29
|
+
this._resultReject = reject;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
/** Resolves to the full result after the stream completes. */
|
|
33
|
+
get result() {
|
|
34
|
+
return this._resultPromise;
|
|
35
|
+
}
|
|
36
|
+
async cancel() {
|
|
37
|
+
await this._onCancel();
|
|
38
|
+
}
|
|
39
|
+
[Symbol.asyncIterator]() {
|
|
40
|
+
return {
|
|
41
|
+
next: () => this._next()
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
_next() {
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
if (this._error) {
|
|
47
|
+
reject(this._error);
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (this._queue.length > 0) {
|
|
51
|
+
resolve({ value: this._queue.shift(), done: false });
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
if (this._done) {
|
|
55
|
+
resolve({ value: undefined, done: true });
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
this._pendingResolver = resolve;
|
|
59
|
+
this._pendingRejecter = reject;
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
_pushChunk(chunk) {
|
|
63
|
+
if (chunk.content)
|
|
64
|
+
this._content += chunk.content;
|
|
65
|
+
if (chunk.role)
|
|
66
|
+
this._role = chunk.role;
|
|
67
|
+
if (chunk.finishReason !== undefined && chunk.finishReason !== null) {
|
|
68
|
+
this._finishReason = chunk.finishReason;
|
|
69
|
+
}
|
|
70
|
+
if (chunk.usage)
|
|
71
|
+
this._usage = chunk.usage;
|
|
72
|
+
if (chunk.tool_calls)
|
|
73
|
+
this._accumulateToolCalls(chunk.tool_calls);
|
|
74
|
+
if (this._pendingResolver) {
|
|
75
|
+
const resolve = this._pendingResolver;
|
|
76
|
+
this._pendingResolver = null;
|
|
77
|
+
this._pendingRejecter = null;
|
|
78
|
+
resolve({ value: chunk, done: false });
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this._queue.push(chunk);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
_complete(timeTaken, usage, workerName) {
|
|
85
|
+
if (this._done)
|
|
86
|
+
return;
|
|
87
|
+
if (usage)
|
|
88
|
+
this._usage = usage;
|
|
89
|
+
this._timeTaken = timeTaken;
|
|
90
|
+
if (workerName)
|
|
91
|
+
this._workerName = workerName;
|
|
92
|
+
this._done = true;
|
|
93
|
+
const toolCalls = Array.from(this._toolCallAccumulator.values()).filter((tc) => tc.id && tc.function.name);
|
|
94
|
+
const result = {
|
|
95
|
+
jobId: this.jobId,
|
|
96
|
+
content: this._content,
|
|
97
|
+
role: this._role,
|
|
98
|
+
finishReason: this._finishReason,
|
|
99
|
+
usage: this._usage,
|
|
100
|
+
timeTaken: this._timeTaken,
|
|
101
|
+
...(this._workerName ? { workerName: this._workerName } : {}),
|
|
102
|
+
...(toolCalls.length ? { tool_calls: toolCalls } : {})
|
|
103
|
+
};
|
|
104
|
+
this._resultResolve(result);
|
|
105
|
+
if (this._pendingResolver) {
|
|
106
|
+
const resolve = this._pendingResolver;
|
|
107
|
+
this._pendingResolver = null;
|
|
108
|
+
this._pendingRejecter = null;
|
|
109
|
+
resolve({ value: undefined, done: true });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
_fail(error) {
|
|
113
|
+
if (this._done)
|
|
114
|
+
return;
|
|
115
|
+
this._done = true;
|
|
116
|
+
const err = new Error(error.message || 'Chat completion failed');
|
|
117
|
+
err.code = error.code;
|
|
118
|
+
err.rawCode = error.originalCode;
|
|
119
|
+
this._error = err;
|
|
120
|
+
this._resultReject(err);
|
|
121
|
+
if (this._pendingRejecter) {
|
|
122
|
+
const reject = this._pendingRejecter;
|
|
123
|
+
this._pendingResolver = null;
|
|
124
|
+
this._pendingRejecter = null;
|
|
125
|
+
reject(err);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
_accumulateToolCalls(deltas) {
|
|
129
|
+
for (const delta of deltas) {
|
|
130
|
+
const existing = this._toolCallAccumulator.get(delta.index) ?? {
|
|
131
|
+
id: delta.id ?? '',
|
|
132
|
+
type: 'function',
|
|
133
|
+
function: { name: '', arguments: '' }
|
|
134
|
+
};
|
|
135
|
+
if (delta.id)
|
|
136
|
+
existing.id = delta.id;
|
|
137
|
+
if (delta.function?.name)
|
|
138
|
+
existing.function.name += delta.function.name;
|
|
139
|
+
if (delta.function?.arguments)
|
|
140
|
+
existing.function.arguments += delta.function.arguments;
|
|
141
|
+
this._toolCallAccumulator.set(delta.index, existing);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.default = ChatStream;
|
|
146
|
+
//# sourceMappingURL=ChatStream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatStream.js","sourceRoot":"","sources":["../../../src/Chat/ChatStream.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import ApiClient from '../ApiClient';
|
|
2
|
+
import TypedEventEmitter from '../lib/TypedEventEmitter';
|
|
3
|
+
import ChatStream from './ChatStream';
|
|
4
|
+
import { ChatCompletionChunk, ChatCompletionParams, ChatCompletionResult, LLMModelInfo } from './types';
|
|
5
|
+
interface ChatApiEvents {
|
|
6
|
+
/** Fired for each streaming chunk on any active completion. */
|
|
7
|
+
token: ChatCompletionChunk;
|
|
8
|
+
/** Fired when any completion finishes successfully. */
|
|
9
|
+
completed: ChatCompletionResult;
|
|
10
|
+
/** Fired when any completion fails. */
|
|
11
|
+
failed: {
|
|
12
|
+
jobId: string;
|
|
13
|
+
error: Error;
|
|
14
|
+
};
|
|
15
|
+
/** Fired when the server pushes an updated LLM model list. */
|
|
16
|
+
modelsUpdated: Record<string, LLMModelInfo>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Chat / LLM API — OpenAI-compatible completions over WebSocket.
|
|
20
|
+
*
|
|
21
|
+
* Phase 4b MVP: streaming + non-streaming text and multimodal (vision)
|
|
22
|
+
* completions. Tool-calling deltas are exposed on chunks/results for apps
|
|
23
|
+
* that drive their own tool loops, but the auto-execution loop and Sogni
|
|
24
|
+
* hosted tools are not yet wired up.
|
|
25
|
+
*/
|
|
26
|
+
declare class ChatApi extends TypedEventEmitter<ChatApiEvents> {
|
|
27
|
+
private _client;
|
|
28
|
+
private _streams;
|
|
29
|
+
private _availableModels;
|
|
30
|
+
constructor(client: ApiClient);
|
|
31
|
+
/** Snapshot of the latest LLM model list pushed by the server. */
|
|
32
|
+
getAvailableModels(): Record<string, LLMModelInfo>;
|
|
33
|
+
/** Subscribe to model-list updates. Returns an unsubscribe function. */
|
|
34
|
+
onModelsUpdated(listener: (models: Record<string, LLMModelInfo>) => void): () => void;
|
|
35
|
+
completions: {
|
|
36
|
+
create: {
|
|
37
|
+
(params: ChatCompletionParams & {
|
|
38
|
+
stream: true;
|
|
39
|
+
}): Promise<ChatStream>;
|
|
40
|
+
(params: ChatCompletionParams & {
|
|
41
|
+
stream?: false;
|
|
42
|
+
}): Promise<ChatCompletionResult>;
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
private _create;
|
|
46
|
+
private _dispatchCompletion;
|
|
47
|
+
/**
|
|
48
|
+
* Multi-round tool-calling loop. Each round sends a completion, then
|
|
49
|
+
* executes any returned tool_calls via the user's onToolCall handler and
|
|
50
|
+
* appends the results to the conversation. Stops when the model returns a
|
|
51
|
+
* normal completion (no tool calls) or when maxToolRounds is reached.
|
|
52
|
+
*/
|
|
53
|
+
private _runAutoToolLoop;
|
|
54
|
+
private _onTokens;
|
|
55
|
+
private _onResult;
|
|
56
|
+
private _onError;
|
|
57
|
+
private _onModels;
|
|
58
|
+
private _cancelStream;
|
|
59
|
+
}
|
|
60
|
+
export default ChatApi;
|
|
61
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Chat/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAC;AAOrC,OAAO,iBAAiB,MAAM,0BAA0B,CAAC;AAEzD,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EAEpB,YAAY,EAEb,MAAM,SAAS,CAAC;AAEjB,UAAU,aAAa;IACrB,+DAA+D;IAC/D,KAAK,EAAE,mBAAmB,CAAC;IAC3B,uDAAuD;IACvD,SAAS,EAAE,oBAAoB,CAAC;IAChC,uCAAuC;IACvC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,CAAC;IACxC,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED;;;;;;;GAOG;AACH,cAAM,OAAQ,SAAQ,iBAAiB,CAAC,aAAa,CAAC;IACpD,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAiC;IACjD,OAAO,CAAC,gBAAgB,CAAoC;gBAEhD,MAAM,EAAE,SAAS;IAS7B,kEAAkE;IAClE,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC;IAIlD,wEAAwE;IACxE,eAAe,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAIrF,WAAW;gBAC2D;YAClE,CAAC,MAAM,EAAE,oBAAoB,GAAG;gBAAE,MAAM,EAAE,IAAI,CAAA;aAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YACvE,CAAC,MAAM,EAAE,oBAAoB,GAAG;gBAAE,MAAM,CAAC,EAAE,KAAK,CAAA;aAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;SACpF;MACD;YAEY,OAAO;YAuBP,mBAAmB;IA6BjC;;;;;OAKG;YACW,gBAAgB;IAgD9B,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,SAAS;IAQjB,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,SAAS;YAKH,aAAa;CAO5B;AAED,eAAe,OAAO,CAAC"}
|