@sogni-ai/sogni-client 4.0.0-alpha.15 → 4.0.0-alpha.17
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 +14 -0
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.js +5 -2
- package/dist/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.js.map +1 -1
- package/dist/ApiClient/index.d.ts +2 -1
- package/dist/ApiClient/index.js +6 -5
- package/dist/ApiClient/index.js.map +1 -1
- package/dist/index.d.ts +8 -0
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.ts +5 -2
- package/src/ApiClient/index.ts +8 -5
- package/src/index.ts +10 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# [4.0.0-alpha.17](https://github.com/Sogni-AI/sogni-client/compare/v4.0.0-alpha.16...v4.0.0-alpha.17) (2025-12-02)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* Initialization bug ([42b4e26](https://github.com/Sogni-AI/sogni-client/commit/42b4e26dad8f634eb6c17d172081d6c3d03a3d41))
|
|
7
|
+
|
|
8
|
+
# [4.0.0-alpha.16](https://github.com/Sogni-AI/sogni-client/compare/v4.0.0-alpha.15...v4.0.0-alpha.16) (2025-12-02)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Make shared socket connection optional ([7ee2311](https://github.com/Sogni-AI/sogni-client/commit/7ee2311354071bbcc3087cad0a8c321cea28cd25))
|
|
14
|
+
|
|
1
15
|
# [4.0.0-alpha.15](https://github.com/Sogni-AI/sogni-client/compare/v4.0.0-alpha.14...v4.0.0-alpha.15) (2025-12-02)
|
|
2
16
|
|
|
3
17
|
|
|
@@ -50,6 +50,7 @@ class WSCoordinator {
|
|
|
50
50
|
if (this.initialized) {
|
|
51
51
|
return this._isPrimary;
|
|
52
52
|
}
|
|
53
|
+
this.initialized = true;
|
|
53
54
|
this.logger.info(`WSCoordinator ${this.id} initializing...`);
|
|
54
55
|
// Announce our presence
|
|
55
56
|
this.broadcast({
|
|
@@ -63,6 +64,7 @@ class WSCoordinator {
|
|
|
63
64
|
}
|
|
64
65
|
else {
|
|
65
66
|
this.logger.info(`Client ${this.id} becoming primary`);
|
|
67
|
+
this.stopPrimaryCheck();
|
|
66
68
|
this.becomePrimary();
|
|
67
69
|
}
|
|
68
70
|
return this._isPrimary;
|
|
@@ -147,8 +149,9 @@ class WSCoordinator {
|
|
|
147
149
|
* Start sending heartbeat messages as primary
|
|
148
150
|
*/
|
|
149
151
|
startHeartbeat() {
|
|
150
|
-
if (this.heartbeatInterval)
|
|
152
|
+
if (this.heartbeatInterval) {
|
|
151
153
|
throw new Error('Heartbeat interval already started. This should never happen.');
|
|
154
|
+
}
|
|
152
155
|
this.heartbeatInterval = setInterval(() => {
|
|
153
156
|
this.broadcast({
|
|
154
157
|
type: 'primary-present',
|
|
@@ -356,7 +359,7 @@ class WSCoordinator {
|
|
|
356
359
|
}
|
|
357
360
|
}
|
|
358
361
|
WSCoordinator.HEARTBEAT_INTERVAL = 2000;
|
|
359
|
-
WSCoordinator.PRIMARY_TIMEOUT =
|
|
362
|
+
WSCoordinator.PRIMARY_TIMEOUT = 5000;
|
|
360
363
|
WSCoordinator.CHANNEL_NAME = 'sogni-websocket-clients';
|
|
361
364
|
WSCoordinator.ACK_TIMEOUT = 5000;
|
|
362
365
|
exports.default = WSCoordinator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WSCoordinator.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AACA,mEAA2C;AA8C3C,MAAM,aAAa;IAmBjB,YAAY,SAAiC,EAAE,MAAc;QATrD,iBAAY,GAAG,KAAK,CAAC;QACrB,yBAAoB,GAAW,CAAC,CAAC;QAEjC,sBAAiB,GAA0B,IAAI,CAAC;QAChD,yBAAoB,GAA0B,IAAI,CAAC;QACnD,mBAAc,GAAmB,EAAE,CAAC;QACpC,iBAAY,GAA0C,EAAE,CAAC;QACzD,gBAAW,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"WSCoordinator.js","sourceRoot":"","sources":["../../../../src/ApiClient/WebSocketClient/BrowserWebSocketClient/WSCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,6 +29,7 @@ export interface ApiClientOptions {
|
|
|
29
29
|
logger: Logger;
|
|
30
30
|
authType: 'token' | 'cookies';
|
|
31
31
|
disableSocket?: boolean;
|
|
32
|
+
multiInstance?: boolean;
|
|
32
33
|
}
|
|
33
34
|
declare class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
34
35
|
readonly appId: string;
|
|
@@ -38,7 +39,7 @@ declare class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
|
38
39
|
private _auth;
|
|
39
40
|
private _reconnectAttempts;
|
|
40
41
|
private _disableSocket;
|
|
41
|
-
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket }: ApiClientOptions);
|
|
42
|
+
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket, multiInstance }: ApiClientOptions);
|
|
42
43
|
get isAuthenticated(): boolean;
|
|
43
44
|
get auth(): AuthManager;
|
|
44
45
|
get socket(): IWebSocketClient;
|
package/dist/ApiClient/index.js
CHANGED
|
@@ -22,7 +22,7 @@ class ApiError extends Error {
|
|
|
22
22
|
}
|
|
23
23
|
exports.ApiError = ApiError;
|
|
24
24
|
class ApiClient extends TypedEventEmitter_1.default {
|
|
25
|
-
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket = false }) {
|
|
25
|
+
constructor({ baseUrl, socketUrl, appId, networkType, authType, logger, disableSocket = false, multiInstance = false }) {
|
|
26
26
|
super();
|
|
27
27
|
this._reconnectAttempts = WS_RECONNECT_ATTEMPTS;
|
|
28
28
|
this._disableSocket = false;
|
|
@@ -31,12 +31,13 @@ class ApiClient extends TypedEventEmitter_1.default {
|
|
|
31
31
|
this._auth =
|
|
32
32
|
authType === 'token' ? new AuthManager_1.TokenAuthManager(baseUrl, logger) : new CookieAuthManager_1.default(logger);
|
|
33
33
|
this._rest = new RestClient_1.default(baseUrl, this._auth, logger);
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
|
|
34
|
+
const supportMultiInstance = !isNodejs_1.default && this._auth instanceof CookieAuthManager_1.default;
|
|
35
|
+
if (supportMultiInstance && multiInstance) {
|
|
36
|
+
// Use coordinated WebSocket client to share single connection between tabs
|
|
37
|
+
this._socket = new BrowserWebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
|
|
37
38
|
}
|
|
38
39
|
else {
|
|
39
|
-
this._socket = new
|
|
40
|
+
this._socket = new WebSocketClient_1.default(socketUrl, this._auth, appId, networkType, logger);
|
|
40
41
|
}
|
|
41
42
|
this._disableSocket = disableSocket;
|
|
42
43
|
this._auth.on('updated', this.handleAuthUpdated.bind(this));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiClient/index.ts"],"names":[],"mappings":";;;;;;AAAA,mEAA2C;AAC3C,wEAAgD;AAChD,iFAAyD;AAGzD,2DAA0E;AAI1E,6FAAqE;AACrE,oDAAmE;AACnE,+DAAuC;AACvC,sGAA8E;AAE9E,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAchC,MAAa,QAAS,SAAQ,KAAK;IAGjC,YAAY,MAAc,EAAE,OAAyB;QACnD,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AARD,4BAQC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ApiClient/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -62,6 +62,14 @@ export interface SogniClientConfig {
|
|
|
62
62
|
* @experimental
|
|
63
63
|
*/
|
|
64
64
|
authType?: 'token' | 'cookies';
|
|
65
|
+
/**
|
|
66
|
+
* Browser only. If true, the client will use a single WebSocket connection shared across multiple
|
|
67
|
+
* tabs. This is useful for browser apps that need to process multiple projects at the same time.
|
|
68
|
+
* Only works in browser environment and with cookie authentication.
|
|
69
|
+
* @default false
|
|
70
|
+
* @experimental
|
|
71
|
+
*/
|
|
72
|
+
multiInstance?: boolean;
|
|
65
73
|
}
|
|
66
74
|
export declare class SogniClient {
|
|
67
75
|
account: AccountApi;
|
package/dist/index.js
CHANGED
|
@@ -128,7 +128,8 @@ class SogniClient {
|
|
|
128
128
|
networkType: network,
|
|
129
129
|
logger,
|
|
130
130
|
authType: config.authType || 'token',
|
|
131
|
-
disableSocket: config.disableSocket
|
|
131
|
+
disableSocket: config.disableSocket,
|
|
132
|
+
multiInstance: config.multiInstance
|
|
132
133
|
});
|
|
133
134
|
const eip712 = new EIP712Helper_1.default({
|
|
134
135
|
name: isTestnet ? 'Sogni-testnet' : 'Sogni AI',
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,cAAc;AACd,wDAAmC;AACnC,8EAAsD;AA4CnC,yBA5CZ,wBAAc,CA4CY;AA3CjC,YAAY;AACZ,yDAA+D;AA0CtD,yFA1CW,oBAAQ,OA0CX;AAvCjB,QAAQ;AACR,uDAAsE;AACtE,sEAA8C;AAC9C,eAAe;AACf,0DAAqC;AACrC,yDAAgD;AAkCb,cAlC5B,aAAG,CAkC4B;AAjCtC,iEAA4D;AAiCpB,kBAjCjC,iBAAO,CAiCiC;AAhC/C,4CAQ0B;AAwBuB,kGA1B/C,yBAAiB,OA0B+C;AAAE,oGAzBlE,2BAAmB,OAyBkE;AAvBvF,YAAY;AACZ,oDAA+B;AAI/B,mDAAuF;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -47,7 +47,7 @@ interface WSCoordinatorCallbacks {
|
|
|
47
47
|
|
|
48
48
|
class WSCoordinator {
|
|
49
49
|
private static readonly HEARTBEAT_INTERVAL = 2000;
|
|
50
|
-
private static readonly PRIMARY_TIMEOUT =
|
|
50
|
+
private static readonly PRIMARY_TIMEOUT = 5000;
|
|
51
51
|
private static readonly CHANNEL_NAME = 'sogni-websocket-clients';
|
|
52
52
|
private static readonly ACK_TIMEOUT = 5000;
|
|
53
53
|
|
|
@@ -85,6 +85,7 @@ class WSCoordinator {
|
|
|
85
85
|
if (this.initialized) {
|
|
86
86
|
return this._isPrimary;
|
|
87
87
|
}
|
|
88
|
+
this.initialized = true;
|
|
88
89
|
this.logger.info(`WSCoordinator ${this.id} initializing...`);
|
|
89
90
|
// Announce our presence
|
|
90
91
|
this.broadcast({
|
|
@@ -98,6 +99,7 @@ class WSCoordinator {
|
|
|
98
99
|
this.startPrimaryCheck();
|
|
99
100
|
} else {
|
|
100
101
|
this.logger.info(`Client ${this.id} becoming primary`);
|
|
102
|
+
this.stopPrimaryCheck();
|
|
101
103
|
this.becomePrimary();
|
|
102
104
|
}
|
|
103
105
|
|
|
@@ -191,8 +193,9 @@ class WSCoordinator {
|
|
|
191
193
|
* Start sending heartbeat messages as primary
|
|
192
194
|
*/
|
|
193
195
|
private startHeartbeat() {
|
|
194
|
-
if (this.heartbeatInterval)
|
|
196
|
+
if (this.heartbeatInterval) {
|
|
195
197
|
throw new Error('Heartbeat interval already started. This should never happen.');
|
|
198
|
+
}
|
|
196
199
|
this.heartbeatInterval = setInterval(() => {
|
|
197
200
|
this.broadcast({
|
|
198
201
|
type: 'primary-present',
|
package/src/ApiClient/index.ts
CHANGED
|
@@ -44,6 +44,7 @@ export interface ApiClientOptions {
|
|
|
44
44
|
logger: Logger;
|
|
45
45
|
authType: 'token' | 'cookies';
|
|
46
46
|
disableSocket?: boolean;
|
|
47
|
+
multiInstance?: boolean;
|
|
47
48
|
}
|
|
48
49
|
|
|
49
50
|
class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
@@ -62,7 +63,8 @@ class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
|
62
63
|
networkType,
|
|
63
64
|
authType,
|
|
64
65
|
logger,
|
|
65
|
-
disableSocket = false
|
|
66
|
+
disableSocket = false,
|
|
67
|
+
multiInstance = false
|
|
66
68
|
}: ApiClientOptions) {
|
|
67
69
|
super();
|
|
68
70
|
this.appId = appId;
|
|
@@ -70,11 +72,12 @@ class ApiClient extends TypedEventEmitter<ApiClientEvents> {
|
|
|
70
72
|
this._auth =
|
|
71
73
|
authType === 'token' ? new TokenAuthManager(baseUrl, logger) : new CookieAuthManager(logger);
|
|
72
74
|
this._rest = new RestClient(baseUrl, this._auth, logger);
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
} else {
|
|
75
|
+
const supportMultiInstance = !isNodejs && this._auth instanceof CookieAuthManager;
|
|
76
|
+
if (supportMultiInstance && multiInstance) {
|
|
77
|
+
// Use coordinated WebSocket client to share single connection between tabs
|
|
77
78
|
this._socket = new BrowserWebSocketClient(socketUrl, this._auth, appId, networkType, logger);
|
|
79
|
+
} else {
|
|
80
|
+
this._socket = new WebSocketClient(socketUrl, this._auth, appId, networkType, logger);
|
|
78
81
|
}
|
|
79
82
|
this._disableSocket = disableSocket;
|
|
80
83
|
this._auth.on('updated', this.handleAuthUpdated.bind(this));
|
package/src/index.ts
CHANGED
|
@@ -95,6 +95,14 @@ export interface SogniClientConfig {
|
|
|
95
95
|
* @experimental
|
|
96
96
|
*/
|
|
97
97
|
authType?: 'token' | 'cookies';
|
|
98
|
+
/**
|
|
99
|
+
* Browser only. If true, the client will use a single WebSocket connection shared across multiple
|
|
100
|
+
* tabs. This is useful for browser apps that need to process multiple projects at the same time.
|
|
101
|
+
* Only works in browser environment and with cookie authentication.
|
|
102
|
+
* @default false
|
|
103
|
+
* @experimental
|
|
104
|
+
*/
|
|
105
|
+
multiInstance?: boolean;
|
|
98
106
|
}
|
|
99
107
|
|
|
100
108
|
export class SogniClient {
|
|
@@ -173,7 +181,8 @@ export class SogniClient {
|
|
|
173
181
|
networkType: network,
|
|
174
182
|
logger,
|
|
175
183
|
authType: config.authType || 'token',
|
|
176
|
-
disableSocket: config.disableSocket
|
|
184
|
+
disableSocket: config.disableSocket,
|
|
185
|
+
multiInstance: config.multiInstance
|
|
177
186
|
});
|
|
178
187
|
const eip712 = new EIP712Helper({
|
|
179
188
|
name: isTestnet ? 'Sogni-testnet' : 'Sogni AI',
|