@eka-care/medassist-core 1.0.34 → 1.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Synapse.d.ts
CHANGED
package/dist/Synapse.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Synapse.d.ts","sourceRoot":"","sources":["../src/Synapse.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"Synapse.d.ts","sourceRoot":"","sources":["../src/Synapse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH,OAAO,EACL,uBAAuB,EAExB,MAAM,kBAAkB,CAAC;AAsB1B,OAAO,EACL,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,kBAAkB,EAA2C,gBAAgB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIzK,qBAAa,UAAU;IACrB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,eAAe,CAAkB;IAEzC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,mBAAmB,CAAkB;IAC7C,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,eAAe,CAAoC;gBAE/C,MAAM,EAAE,gBAAgB;IAcpC;;;;;;OAMG;IACU,YAAY,CACvB,eAAe,CAAC,EAAE,sBAAsB,GACvC,OAAO,CAAC,eAAe,CAAC;IA6B3B;;OAEG;IACU,WAAW,CAAC,EACvB,OAAO,EACP,KAAK,EACL,KAAK,EACL,aAAa,EACb,OAAO,EACP,eAAe,EAChB,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCrC;;OAEG;IACU,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrG;;OAEG;IACI,EAAE,CACP,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GACrC,IAAI;IAIP;;OAEG;IACI,GAAG,CACR,KAAK,EAAE,uBAAuB,EAC9B,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GACrC,IAAI;IAIP;;OAEG;IACI,gBAAgB,IAAI,eAAe;IAU1C;;OAEG;IACU,QAAQ,CACnB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,IAAI,CAAC;IAyDhB;;SAEK;IACQ,cAAc,CAAC,EAC1B,QAAQ,EACR,OAAO,GACR,EAAE;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;QAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;KAClC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCjB;;OAEG;IACI,YAAY,IAAI,IAAI;IA+Bd,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIpD,WAAW,IAAI,OAAO;IAG7B;;OAEG;IACI,UAAU,IAAI,IAAI;IAUzB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAYtB;;;OAGG;YACW,oBAAoB;IAgDlC;;;OAGG;YACW,aAAa;IAwC3B;;OAEG;YACW,cAAc;IAuB5B;;OAEG;YACW,gBAAgB;IAO9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4C1B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAW/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgD/B;;OAEG;YACW,mBAAmB;IA6CjC,OAAO,CAAC,iBAAiB;CAW1B"}
|
package/dist/Synapse.js
CHANGED
|
@@ -6,11 +6,13 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.SynapseSDK = void 0;
|
|
8
8
|
const ConnectionFactory_1 = require("./connection/ConnectionFactory");
|
|
9
|
+
const types_1 = require("./internal/connection/types");
|
|
9
10
|
const constants_1 = require("./constants");
|
|
10
11
|
const resources_1 = require("./resources");
|
|
11
12
|
// import { type AgentConfig } from "./resources/types";
|
|
12
13
|
const MessageManager_1 = require("./messages/MessageManager");
|
|
13
|
-
const
|
|
14
|
+
const types_2 = require("./messages/types");
|
|
15
|
+
const EventEmitter_1 = require("./internal/events/EventEmitter");
|
|
14
16
|
const Error_1 = require("./utils/Error");
|
|
15
17
|
const Error_2 = require("./internal/Error/Error");
|
|
16
18
|
const Events_1 = require("./events/Events");
|
|
@@ -24,6 +26,8 @@ class SynapseSDK {
|
|
|
24
26
|
config;
|
|
25
27
|
connectionType;
|
|
26
28
|
isRefreshingSession = false;
|
|
29
|
+
connectionAttempts = 0;
|
|
30
|
+
sdkEventEmitter = new EventEmitter_1.EventEmitter();
|
|
27
31
|
constructor(config) {
|
|
28
32
|
this.config = {
|
|
29
33
|
...config,
|
|
@@ -55,7 +59,7 @@ class SynapseSDK {
|
|
|
55
59
|
const userFriendlyMessage = Error_1.ErrorUtils.getUserFriendlyMessage(error);
|
|
56
60
|
const errorDetails = Error_1.ErrorUtils.getErrorDetails(error);
|
|
57
61
|
if (error instanceof Error_2.APIError) {
|
|
58
|
-
if (error.status === 404) {
|
|
62
|
+
if (error.status === 404 || error.status === 403) {
|
|
59
63
|
throw error;
|
|
60
64
|
}
|
|
61
65
|
}
|
|
@@ -131,13 +135,13 @@ class SynapseSDK {
|
|
|
131
135
|
* Register a listener for a specific event
|
|
132
136
|
*/
|
|
133
137
|
on(event, listener) {
|
|
134
|
-
this.
|
|
138
|
+
this.sdkEventEmitter.on(event, listener);
|
|
135
139
|
}
|
|
136
140
|
/**
|
|
137
141
|
* Remove a listener for a specific event
|
|
138
142
|
*/
|
|
139
143
|
off(event, listener) {
|
|
140
|
-
this.
|
|
144
|
+
this.sdkEventEmitter.off(event, listener);
|
|
141
145
|
}
|
|
142
146
|
/**
|
|
143
147
|
* Get the session ID
|
|
@@ -183,7 +187,7 @@ class SynapseSDK {
|
|
|
183
187
|
messageId: response._id,
|
|
184
188
|
timestamp: response.ts,
|
|
185
189
|
};
|
|
186
|
-
this.connection.emit(
|
|
190
|
+
this.connection.emit(types_2.SYNAPSE_REALTIME_EVENTS.TOOL_CALL, cleanedResponse);
|
|
187
191
|
}
|
|
188
192
|
catch (error) {
|
|
189
193
|
if (error instanceof Error_2.APIError && error?.status === 401) {
|
|
@@ -273,10 +277,12 @@ class SynapseSDK {
|
|
|
273
277
|
* End the session
|
|
274
278
|
*/
|
|
275
279
|
endSession() {
|
|
280
|
+
console.log("end sesion called ");
|
|
276
281
|
if (this.connection) {
|
|
277
282
|
this.connection.close();
|
|
278
283
|
this.connection = null;
|
|
279
284
|
}
|
|
285
|
+
this.connectionAttempts = 0;
|
|
280
286
|
this.messageManager?.cleanupMessageServerState?.();
|
|
281
287
|
}
|
|
282
288
|
emitError(error) {
|
|
@@ -320,7 +326,15 @@ class SynapseSDK {
|
|
|
320
326
|
// authorization: this.config?.authorization,
|
|
321
327
|
overrides: this.config.overrides,
|
|
322
328
|
});
|
|
329
|
+
this.connectionAttempts++;
|
|
323
330
|
this.messageManager = new MessageManager_1.MessageManager(this.connection, this.config?.callbacks);
|
|
331
|
+
// Bridge all connection events to the persistent SDK-level emitter so that
|
|
332
|
+
// widget listeners registered via .on() survive internal reconnections.
|
|
333
|
+
const originalEmit = this.connection.emit.bind(this.connection);
|
|
334
|
+
this.connection.emit = (event, ...args) => {
|
|
335
|
+
originalEmit(event, ...args);
|
|
336
|
+
this.sdkEventEmitter.emit(event, ...args);
|
|
337
|
+
};
|
|
324
338
|
}
|
|
325
339
|
/**
|
|
326
340
|
* Resolve the session
|
|
@@ -346,7 +360,7 @@ class SynapseSDK {
|
|
|
346
360
|
catch (error) {
|
|
347
361
|
console.log("error", error, error instanceof Error_2.APIError);
|
|
348
362
|
if (error instanceof Error_2.APIError) {
|
|
349
|
-
if (error.status === 404) {
|
|
363
|
+
if (error.status === 404 || error.status === 403) {
|
|
350
364
|
throw error;
|
|
351
365
|
}
|
|
352
366
|
}
|
|
@@ -402,7 +416,7 @@ class SynapseSDK {
|
|
|
402
416
|
this.connection.onError((error) => {
|
|
403
417
|
this.onSocketConnectionError(error);
|
|
404
418
|
});
|
|
405
|
-
this.connection.on(
|
|
419
|
+
this.connection.on(types_2.SYNAPSE_REALTIME_RESERVED_EVENTS.SESSION_EXPIRED, () => {
|
|
406
420
|
this.handleSessionExpiry();
|
|
407
421
|
});
|
|
408
422
|
break;
|
|
@@ -416,16 +430,22 @@ class SynapseSDK {
|
|
|
416
430
|
});
|
|
417
431
|
}
|
|
418
432
|
//common handler for all connection types
|
|
419
|
-
this.connection.onDisconnect((details) => {
|
|
420
|
-
|
|
421
|
-
|
|
433
|
+
this.connection.onDisconnect(async (details) => {
|
|
434
|
+
if (details.reason === types_1.DisconnectionReason.CLIENT_CLOSED)
|
|
435
|
+
return;
|
|
436
|
+
if (this.connectionAttempts < 3 && this.sessionConfig?.session_id && this.sessionConfig.session_token) {
|
|
437
|
+
await this.startSession({ session_id: this.sessionConfig.session_id, session_token: this.sessionConfig.session_token });
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
this.messageManager.handleDisconnect(details);
|
|
441
|
+
}
|
|
422
442
|
});
|
|
423
443
|
}
|
|
424
444
|
/**
|
|
425
445
|
* Handle socket error
|
|
426
446
|
*/
|
|
427
447
|
onSocketConnectionError(error) {
|
|
428
|
-
this.connection?.emit(
|
|
448
|
+
this.connection?.emit(types_2.SYNAPSE_REALTIME_EVENTS.ERROR, error);
|
|
429
449
|
const connectionError = this.toConnectionError(error, "WebSocket connection error", { stage: "onSocketConnectionError" }, "Verify network connectivity or attempt to reconnect.");
|
|
430
450
|
this.emitError(connectionError);
|
|
431
451
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Websocket.d.ts","sourceRoot":"","sources":["../../src/connection/Websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAO9D,MAAM,WAAW,yBAA0B,SAAQ,aAAa;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Websocket.d.ts","sourceRoot":"","sources":["../../src/connection/Websocket.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AACvE,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAO9D,MAAM,WAAW,yBAA0B,SAAQ,aAAa;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,mBAAoB,SAAQ,cAAc;IACrD,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,aAAa,CAAkB;gBAE3B,MAAM,EAAE,yBAAyB;IAY7C;;OAEG;IACH,OAAO,CAAC,OAAO;IA+Bf;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAQ1B;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,WAAW;IA4CnB;;OAEG;IACI,WAAW,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAyBxD;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACI,WAAW,IAAI,OAAO;IAItB,eAAe,IAAI,IAAI;CAI/B"}
|
|
@@ -11,7 +11,6 @@ class WebSocketConnection extends BaseConnection_1.BaseConnection {
|
|
|
11
11
|
conversationId;
|
|
12
12
|
socket = null;
|
|
13
13
|
config;
|
|
14
|
-
reconnectCount = 0;
|
|
15
14
|
authenticated = false;
|
|
16
15
|
constructor(config) {
|
|
17
16
|
super();
|
|
@@ -88,16 +87,6 @@ class WebSocketConnection extends BaseConnection_1.BaseConnection {
|
|
|
88
87
|
*/
|
|
89
88
|
handleError(event) {
|
|
90
89
|
console.log("handleError", event);
|
|
91
|
-
if (this.reconnectCount < (this.config.reconnectAttempts || 3)) {
|
|
92
|
-
this.reconnectCount++;
|
|
93
|
-
this.connect();
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
const connectionError = new Error_1.ConnectionError("WebSocket error", {
|
|
97
|
-
context: { stage: "handleError" },
|
|
98
|
-
cause: event,
|
|
99
|
-
});
|
|
100
|
-
this.onErrorCallback?.(connectionError);
|
|
101
90
|
}
|
|
102
91
|
/**
|
|
103
92
|
* Handle WebSocket close event
|
|
@@ -140,24 +129,12 @@ class WebSocketConnection extends BaseConnection_1.BaseConnection {
|
|
|
140
129
|
disconnectReason = types_1.DisconnectionReason.CONNECTION_ERROR;
|
|
141
130
|
message = reason || "Connection closed unexpectedly";
|
|
142
131
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
console.log("disconnectevent", event);
|
|
150
|
-
this.reconnectCount++;
|
|
151
|
-
this.connect();
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
this.disconnect({
|
|
155
|
-
reason: disconnectReason,
|
|
156
|
-
message,
|
|
157
|
-
code,
|
|
158
|
-
timestamp: new Date(),
|
|
159
|
-
});
|
|
160
|
-
}
|
|
132
|
+
this.disconnect({
|
|
133
|
+
reason: disconnectReason,
|
|
134
|
+
message,
|
|
135
|
+
code,
|
|
136
|
+
timestamp: new Date(),
|
|
137
|
+
});
|
|
161
138
|
}
|
|
162
139
|
/**
|
|
163
140
|
* Send a message through the WebSocket
|
|
@@ -201,7 +178,6 @@ class WebSocketConnection extends BaseConnection_1.BaseConnection {
|
|
|
201
178
|
handleConnected() {
|
|
202
179
|
this.updateStatus(types_1.ConnectionStatus.CONNECTED);
|
|
203
180
|
this.authenticated = true;
|
|
204
|
-
this.reconnectCount = 0;
|
|
205
181
|
}
|
|
206
182
|
}
|
|
207
183
|
exports.WebSocketConnection = WebSocketConnection;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eka-care/medassist-core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.35",
|
|
4
4
|
"description": "TypeScript SDK for real-time medical chatbot experiences with session management, WebSocket connectivity, and media handling",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|