@eka-care/medassist-core 1.0.34 → 1.0.36

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
@@ -14,6 +14,8 @@ export declare class SynapseSDK {
14
14
  private config;
15
15
  private connectionType;
16
16
  private isRefreshingSession;
17
+ private connectionAttempts;
18
+ private sdkEventEmitter;
17
19
  constructor(config: SynapseSDKConfig);
18
20
  /**
19
21
  * Start the session
@@ -1 +1 @@
1
- {"version":3,"file":"Synapse.d.ts","sourceRoot":"","sources":["../src/Synapse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,OAAO,EACL,uBAAuB,EAExB,MAAM,kBAAkB,CAAC;AAqB1B,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;gBAEjC,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;IAQzB,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,cAAc;IAYtB;;;OAGG;YACW,oBAAoB;IAwClC;;;OAGG;YACW,aAAa;IAwC3B;;OAEG;YACW,cAAc;IAuB5B;;OAEG;YACW,gBAAgB;IAO9B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAwC1B;;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"}
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 types_1 = require("./messages/types");
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.connection?.on(event, listener);
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.connection?.off(event, listener);
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(types_1.SYNAPSE_REALTIME_EVENTS.TOOL_CALL, cleanedResponse);
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(types_1.SYNAPSE_REALTIME_RESERVED_EVENTS.SESSION_EXPIRED, () => {
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
- this.messageManager.handleDisconnect(details);
421
- // this.endSession();
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(types_1.SYNAPSE_REALTIME_EVENTS.ERROR, error);
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
  }
@@ -18,7 +18,6 @@ export declare class WebSocketConnection extends BaseConnection {
18
18
  readonly conversationId: string;
19
19
  private socket;
20
20
  private config;
21
- private reconnectCount;
22
21
  private authenticated;
23
22
  constructor(config: WebSocketConnectionConfig);
24
23
  /**
@@ -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,cAAc,CAAa;IACnC,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;IAcnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAyDnB;;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;CAK/B"}
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
- // Attempt reconnection if enabled
144
- if (this.config.reconnect &&
145
- disconnectReason !== types_1.DisconnectionReason.AUTHENTICATION_ERROR &&
146
- disconnectReason !== types_1.DisconnectionReason.CLIENT_CLOSED &&
147
- this.reconnectCount < (this.config.reconnectAttempts || 3)) {
148
- console.log("Reconnecting..", this.reconnectCount, disconnectReason, message);
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.34",
3
+ "version": "1.0.36",
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",