@eka-care/medassist-core 1.0.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.
Files changed (98) hide show
  1. package/README.md +32 -0
  2. package/dist/Synapse.d.ts +131 -0
  3. package/dist/Synapse.d.ts.map +1 -0
  4. package/dist/Synapse.js +479 -0
  5. package/dist/connection/ConnectionFactory.d.ts +17 -0
  6. package/dist/connection/ConnectionFactory.d.ts.map +1 -0
  7. package/dist/connection/ConnectionFactory.js +28 -0
  8. package/dist/connection/Websocket.d.ts +61 -0
  9. package/dist/connection/Websocket.d.ts.map +1 -0
  10. package/dist/connection/Websocket.js +184 -0
  11. package/dist/constants/index.d.ts +17 -0
  12. package/dist/constants/index.d.ts.map +1 -0
  13. package/dist/constants/index.js +28 -0
  14. package/dist/constants/types.d.ts +2 -0
  15. package/dist/constants/types.d.ts.map +1 -0
  16. package/dist/constants/types.js +2 -0
  17. package/dist/events/Events.d.ts +47 -0
  18. package/dist/events/Events.d.ts.map +1 -0
  19. package/dist/events/Events.js +46 -0
  20. package/dist/events/Incoming.d.ts +2 -0
  21. package/dist/events/Incoming.d.ts.map +1 -0
  22. package/dist/events/Incoming.js +2 -0
  23. package/dist/events/Outgoing.d.ts +2 -0
  24. package/dist/events/Outgoing.d.ts.map +1 -0
  25. package/dist/events/Outgoing.js +2 -0
  26. package/dist/events/index.d.ts +3 -0
  27. package/dist/events/index.d.ts.map +1 -0
  28. package/dist/events/index.js +38 -0
  29. package/dist/events/types.d.ts +86 -0
  30. package/dist/events/types.d.ts.map +1 -0
  31. package/dist/events/types.js +6 -0
  32. package/dist/index.d.ts +27 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +69 -0
  35. package/dist/internal/Api/BaseResource.d.ts +35 -0
  36. package/dist/internal/Api/BaseResource.d.ts.map +1 -0
  37. package/dist/internal/Api/BaseResource.js +54 -0
  38. package/dist/internal/Api/HttpClient.d.ts +25 -0
  39. package/dist/internal/Api/HttpClient.d.ts.map +1 -0
  40. package/dist/internal/Api/HttpClient.js +131 -0
  41. package/dist/internal/Api/types.d.ts +7 -0
  42. package/dist/internal/Api/types.d.ts.map +1 -0
  43. package/dist/internal/Api/types.js +2 -0
  44. package/dist/internal/Error/Error.d.ts +97 -0
  45. package/dist/internal/Error/Error.d.ts.map +1 -0
  46. package/dist/internal/Error/Error.js +243 -0
  47. package/dist/internal/Error/types.d.ts +17 -0
  48. package/dist/internal/Error/types.d.ts.map +1 -0
  49. package/dist/internal/Error/types.js +12 -0
  50. package/dist/internal/connection/BaseConnection.d.ts +100 -0
  51. package/dist/internal/connection/BaseConnection.d.ts.map +1 -0
  52. package/dist/internal/connection/BaseConnection.js +138 -0
  53. package/dist/internal/connection/types.d.ts +43 -0
  54. package/dist/internal/connection/types.d.ts.map +1 -0
  55. package/dist/internal/connection/types.js +20 -0
  56. package/dist/internal/events/EventEmitter.d.ts +7 -0
  57. package/dist/internal/events/EventEmitter.d.ts.map +1 -0
  58. package/dist/internal/events/EventEmitter.js +27 -0
  59. package/dist/internal/store/index.d.ts +10 -0
  60. package/dist/internal/store/index.d.ts.map +1 -0
  61. package/dist/internal/store/index.js +9 -0
  62. package/dist/media/audio/Audio.d.ts +37 -0
  63. package/dist/media/audio/Audio.d.ts.map +1 -0
  64. package/dist/media/audio/Audio.js +310 -0
  65. package/dist/media/audio/types.d.ts +25 -0
  66. package/dist/media/audio/types.d.ts.map +1 -0
  67. package/dist/media/audio/types.js +10 -0
  68. package/dist/media/file/File.d.ts +54 -0
  69. package/dist/media/file/File.d.ts.map +1 -0
  70. package/dist/media/file/File.js +159 -0
  71. package/dist/messages/MessageManager.d.ts +79 -0
  72. package/dist/messages/MessageManager.d.ts.map +1 -0
  73. package/dist/messages/MessageManager.js +420 -0
  74. package/dist/messages/types.d.ts +74 -0
  75. package/dist/messages/types.d.ts.map +1 -0
  76. package/dist/messages/types.js +34 -0
  77. package/dist/resources/config/Config.d.ts +5 -0
  78. package/dist/resources/config/Config.d.ts.map +1 -0
  79. package/dist/resources/config/Config.js +5 -0
  80. package/dist/resources/index.d.ts +34 -0
  81. package/dist/resources/index.d.ts.map +1 -0
  82. package/dist/resources/index.js +108 -0
  83. package/dist/resources/session/Session.d.ts +21 -0
  84. package/dist/resources/session/Session.d.ts.map +1 -0
  85. package/dist/resources/session/Session.js +39 -0
  86. package/dist/resources/session/types.d.ts +17 -0
  87. package/dist/resources/session/types.d.ts.map +1 -0
  88. package/dist/resources/session/types.js +8 -0
  89. package/dist/resources/types.d.ts +22 -0
  90. package/dist/resources/types.d.ts.map +1 -0
  91. package/dist/resources/types.js +5 -0
  92. package/dist/types/index.d.ts +8 -0
  93. package/dist/types/index.d.ts.map +1 -0
  94. package/dist/types/index.js +24 -0
  95. package/dist/utils/Error.d.ts +45 -0
  96. package/dist/utils/Error.d.ts.map +1 -0
  97. package/dist/utils/Error.js +114 -0
  98. package/package.json +41 -0
@@ -0,0 +1,243 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidationError = exports.ConfigurationError = exports.StoreError = exports.MessageError = exports.SessionError = exports.FileError = exports.RecordingError = exports.ConnectionError = exports.InternalServerError = exports.RateLimitError = exports.MethodNotAllowedError = exports.NotFoundError = exports.PermissionDeniedError = exports.UnauthorizedError = exports.BadRequestError = exports.APIConnectionTimeoutError = exports.APIUserAbortError = exports.APIError = exports.SynapseError = exports.SynapseErrorCode = void 0;
4
+ exports.normalizeError = normalizeError;
5
+ exports.SynapseErrorCode = {
6
+ API: "API_ERROR",
7
+ CONNECTION: "CONNECTION_ERROR",
8
+ RECORDING: "RECORDING_ERROR",
9
+ FILE: "FILE_ERROR",
10
+ SESSION: "SESSION_ERROR",
11
+ MESSAGE: "MESSAGE_ERROR",
12
+ STORE: "STORE_ERROR",
13
+ CONFIGURATION: "CONFIGURATION_ERROR",
14
+ VALIDATION: "VALIDATION_ERROR",
15
+ AUTH: "AUTH_ERROR",
16
+ UNKNOWN: "UNKNOWN_ERROR",
17
+ };
18
+ class SynapseError extends Error {
19
+ code;
20
+ timestamp;
21
+ cause;
22
+ context;
23
+ hint;
24
+ constructor(message, code = exports.SynapseErrorCode.UNKNOWN, options = {}) {
25
+ super(message);
26
+ this.name = "SynapseError";
27
+ this.code = code;
28
+ this.timestamp = new Date();
29
+ this.cause = options.cause;
30
+ this.context = options.context;
31
+ this.hint = options.hint;
32
+ if (Error.captureStackTrace) {
33
+ Error.captureStackTrace(this, this.constructor);
34
+ }
35
+ }
36
+ }
37
+ exports.SynapseError = SynapseError;
38
+ class APIError extends SynapseError {
39
+ /** HTTP status code */
40
+ status;
41
+ /** JSON body of the error response or custom error object */
42
+ error;
43
+ /** HTTP response headers */
44
+ headers;
45
+ constructor(message, status, error, headers) {
46
+ const errorMessage = APIError.makeMessage(status, error, message);
47
+ super(errorMessage, exports.SynapseErrorCode.API, {
48
+ cause: error,
49
+ context: {
50
+ status,
51
+ hasBody: Boolean(error),
52
+ },
53
+ hint: status && status >= 500
54
+ ? "Retry the request or contact support if the issue persists."
55
+ : undefined,
56
+ });
57
+ this.name = "APIError";
58
+ this.status = status;
59
+ this.error = error;
60
+ this.headers = headers;
61
+ }
62
+ static makeMessage(status, error, message) {
63
+ const msg = error instanceof Error ? error.message : message;
64
+ if (status && msg) {
65
+ return `HTTP ${status}: ${msg}`;
66
+ }
67
+ if (status) {
68
+ return `${status} status code (no body)`;
69
+ }
70
+ if (msg) {
71
+ return msg;
72
+ }
73
+ return "(no status code or body)";
74
+ }
75
+ static generate(status, errorResponse, message, headers) {
76
+ if (!status) {
77
+ return new APIUserAbortError({ message });
78
+ }
79
+ const extractedError = errorResponse?.["error"];
80
+ const error = extractedError &&
81
+ typeof extractedError === "object" &&
82
+ !Array.isArray(extractedError)
83
+ ? extractedError
84
+ : undefined;
85
+ switch (status) {
86
+ case 400:
87
+ return new BadRequestError(message || "Bad Request", status, error, headers);
88
+ case 401:
89
+ return new UnauthorizedError(message || "Unauthorized", status, error, headers);
90
+ case 403:
91
+ return new PermissionDeniedError(message || "Permission Denied", status, error, headers);
92
+ case 404:
93
+ return new NotFoundError(message || "Not Found", status, error, headers);
94
+ case 405:
95
+ return new MethodNotAllowedError(message || "Method Not Allowed", status, error, headers);
96
+ case 429:
97
+ return new RateLimitError(message || "Rate Limit Exceeded", status, error, headers);
98
+ case 500:
99
+ return new InternalServerError(message || "Internal Server Error", status, error, headers);
100
+ default:
101
+ return new APIError(message || "API Error", status, error, headers);
102
+ }
103
+ }
104
+ }
105
+ exports.APIError = APIError;
106
+ class APIUserAbortError extends APIError {
107
+ constructor({ message } = {}) {
108
+ super(message || "Request was aborted.", undefined, undefined, undefined);
109
+ this.name = "APIUserAbortError";
110
+ }
111
+ }
112
+ exports.APIUserAbortError = APIUserAbortError;
113
+ class APIConnectionTimeoutError extends APIError {
114
+ constructor({ message } = {}) {
115
+ super(message || "Request timed out.", undefined, undefined, undefined);
116
+ this.name = "APIConnectionTimeoutError";
117
+ }
118
+ }
119
+ exports.APIConnectionTimeoutError = APIConnectionTimeoutError;
120
+ class BadRequestError extends APIError {
121
+ constructor(message, status, error, headers) {
122
+ super(message, status, error, headers);
123
+ this.name = "BadRequestError";
124
+ }
125
+ }
126
+ exports.BadRequestError = BadRequestError;
127
+ class UnauthorizedError extends APIError {
128
+ constructor(message, status, error, headers) {
129
+ super(message, status, error, headers);
130
+ this.name = "UnauthorizedError";
131
+ }
132
+ }
133
+ exports.UnauthorizedError = UnauthorizedError;
134
+ class PermissionDeniedError extends APIError {
135
+ constructor(message, status, error, headers) {
136
+ super(message, status, error, headers);
137
+ this.name = "PermissionDeniedError";
138
+ }
139
+ }
140
+ exports.PermissionDeniedError = PermissionDeniedError;
141
+ class NotFoundError extends APIError {
142
+ constructor(message, status, error, headers) {
143
+ super(message, status, error, headers);
144
+ this.name = "NotFoundError";
145
+ }
146
+ }
147
+ exports.NotFoundError = NotFoundError;
148
+ class MethodNotAllowedError extends APIError {
149
+ constructor(message, status, error, headers) {
150
+ super(message, status, error, headers);
151
+ this.name = "MethodNotAllowedError";
152
+ }
153
+ }
154
+ exports.MethodNotAllowedError = MethodNotAllowedError;
155
+ class RateLimitError extends APIError {
156
+ constructor(message, status, error, headers) {
157
+ super(message, status, error, headers);
158
+ this.name = "RateLimitError";
159
+ }
160
+ }
161
+ exports.RateLimitError = RateLimitError;
162
+ class InternalServerError extends APIError {
163
+ constructor(message, status, error, headers) {
164
+ super(message, status, error, headers);
165
+ this.name = "InternalServerError";
166
+ }
167
+ }
168
+ exports.InternalServerError = InternalServerError;
169
+ class ConnectionError extends SynapseError {
170
+ constructor(message, options = {}) {
171
+ super(message, exports.SynapseErrorCode.CONNECTION, options);
172
+ this.name = "ConnectionError";
173
+ }
174
+ }
175
+ exports.ConnectionError = ConnectionError;
176
+ class RecordingError extends SynapseError {
177
+ constructor(message, options = {}) {
178
+ super(message, exports.SynapseErrorCode.RECORDING, options);
179
+ this.name = "RecordingError";
180
+ }
181
+ }
182
+ exports.RecordingError = RecordingError;
183
+ class FileError extends SynapseError {
184
+ constructor(message, options = {}) {
185
+ super(message, exports.SynapseErrorCode.FILE, options);
186
+ this.name = "FileError";
187
+ }
188
+ }
189
+ exports.FileError = FileError;
190
+ class SessionError extends SynapseError {
191
+ constructor(message, options = {}) {
192
+ super(message, exports.SynapseErrorCode.SESSION, options);
193
+ this.name = "SessionError";
194
+ }
195
+ }
196
+ exports.SessionError = SessionError;
197
+ class MessageError extends SynapseError {
198
+ constructor(message, options = {}) {
199
+ super(message, exports.SynapseErrorCode.MESSAGE, options);
200
+ this.name = "MessageError";
201
+ }
202
+ }
203
+ exports.MessageError = MessageError;
204
+ class StoreError extends SynapseError {
205
+ constructor(message, options = {}) {
206
+ super(message, exports.SynapseErrorCode.STORE, options);
207
+ this.name = "StoreError";
208
+ }
209
+ }
210
+ exports.StoreError = StoreError;
211
+ class ConfigurationError extends SynapseError {
212
+ constructor(message, options = {}) {
213
+ super(message, exports.SynapseErrorCode.CONFIGURATION, options);
214
+ this.name = "ConfigurationError";
215
+ }
216
+ }
217
+ exports.ConfigurationError = ConfigurationError;
218
+ class ValidationError extends SynapseError {
219
+ constructor(message, options = {}) {
220
+ super(message, exports.SynapseErrorCode.VALIDATION, options);
221
+ this.name = "ValidationError";
222
+ }
223
+ }
224
+ exports.ValidationError = ValidationError;
225
+ function normalizeError(error, ctor, fallbackMessage, options = {}) {
226
+ if (error instanceof ctor) {
227
+ return error;
228
+ }
229
+ const baseOptions = {
230
+ ...options,
231
+ context: {
232
+ ...(error instanceof SynapseError ? error.context : undefined),
233
+ ...options.context,
234
+ },
235
+ hint: options.hint ?? (error instanceof SynapseError ? error.hint : undefined),
236
+ cause: options.cause ?? error,
237
+ };
238
+ if (error instanceof SynapseError) {
239
+ return new ctor(error.message, baseOptions);
240
+ }
241
+ const message = error instanceof Error && error.message ? error.message : fallbackMessage;
242
+ return new ctor(message, baseOptions);
243
+ }
@@ -0,0 +1,17 @@
1
+ export declare const ErrorType: {
2
+ readonly NETWORK_ERROR: "NETWORK_ERROR";
3
+ readonly TIMEOUT_ERROR: "TIMEOUT_ERROR";
4
+ readonly API_ERROR: "API_ERROR";
5
+ readonly RATE_LIMIT_ERROR: "RATE_LIMIT_ERROR";
6
+ readonly SERVER_ERROR: "SERVER_ERROR";
7
+ readonly PARSE_ERROR: "PARSE_ERROR";
8
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
9
+ };
10
+ export type ErrorType = (typeof ErrorType)[keyof typeof ErrorType];
11
+ export interface ErrorContext {
12
+ operation: string;
13
+ agentId: string;
14
+ sessionId: string;
15
+ timestamp: string;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/internal/Error/types.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS;;;;;;;;CAQZ,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEnE,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ErrorType = void 0;
4
+ exports.ErrorType = {
5
+ NETWORK_ERROR: "NETWORK_ERROR",
6
+ TIMEOUT_ERROR: "TIMEOUT_ERROR",
7
+ API_ERROR: "API_ERROR",
8
+ RATE_LIMIT_ERROR: "RATE_LIMIT_ERROR",
9
+ SERVER_ERROR: "SERVER_ERROR",
10
+ PARSE_ERROR: "PARSE_ERROR",
11
+ UNKNOWN_ERROR: "UNKNOWN_ERROR",
12
+ };
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Abstract base class for all connection types
3
+ */
4
+ import { type IncomingMessage, type OutgoingMessage } from "../../messages/types";
5
+ import { ConnectionStatus, type DisconnectionDetails, type OnDisconnectCallback, type OnMessageCallback, type OnStatusChangeCallback, type OnOpenCallback, type OnErrorCallback } from "./types";
6
+ export declare abstract class BaseConnection {
7
+ /**
8
+ * Unique identifier for the current conversation
9
+ */
10
+ abstract readonly conversationId: string;
11
+ /**
12
+ * Current connection status
13
+ */
14
+ protected status: ConnectionStatus;
15
+ /**
16
+ * Queue to store messages received before callback is registered
17
+ */
18
+ protected queue: IncomingMessage[];
19
+ /**
20
+ * Event emitter to handle events
21
+ */
22
+ private eventEmitter;
23
+ /**
24
+ * Disconnection details (null if still connected)
25
+ */
26
+ protected disconnectionDetails: DisconnectionDetails | null;
27
+ protected onErrorCallback: OnErrorCallback | null;
28
+ protected onDisconnectCallback: OnDisconnectCallback | null;
29
+ protected onMessageCallback: OnMessageCallback | null;
30
+ protected onOpenCallback: OnOpenCallback | null;
31
+ protected onStatusChangeCallback: OnStatusChangeCallback | null;
32
+ /**
33
+ * Close the connection
34
+ */
35
+ abstract close(): void;
36
+ /**
37
+ * Send a message through the connection
38
+ */
39
+ abstract sendMessage(message: OutgoingMessage): void;
40
+ /**
41
+ * Get current connection status
42
+ */
43
+ getStatus(): ConnectionStatus;
44
+ /**
45
+ * Register callback for connection open events
46
+ */
47
+ onOpen(callback: OnOpenCallback): void;
48
+ /**
49
+ * Register callback for incoming messages
50
+ */
51
+ onMessage(callback: OnMessageCallback): void;
52
+ /**
53
+ * Register callback for disconnection events
54
+ */
55
+ onDisconnect(callback: OnDisconnectCallback): void;
56
+ /**
57
+ * Register callback for error events
58
+ */
59
+ onError(callback: OnErrorCallback): void;
60
+ /**
61
+ * Register a listener for a specific event
62
+ */
63
+ on(event: string, listener: (...args: unknown[]) => void): void;
64
+ /**
65
+ * Remove a listener for a specific event
66
+ */
67
+ off(event: string, listener: (...args: unknown[]) => void): void;
68
+ /**
69
+ * Emit an event
70
+ */
71
+ emit(event: string, ...args: unknown[]): void;
72
+ /**
73
+ * Register callback for status changes
74
+ */
75
+ onStatusChange(callback: OnStatusChangeCallback): void;
76
+ /**
77
+ * Protected method to handle disconnection
78
+ * Ensures disconnect callback is only invoked once
79
+ */
80
+ protected disconnect(details: DisconnectionDetails): void;
81
+ /**
82
+ * Protected method to handle incoming messages
83
+ * Queues messages if no callback is registered yet
84
+ * message type can be extended to include more types of messages
85
+ */
86
+ protected handleMessage(message: IncomingMessage): void;
87
+ /**
88
+ * Protected method to update connection status
89
+ */
90
+ protected updateStatus(status: ConnectionStatus): void;
91
+ /**
92
+ * Check if the connection is connected
93
+ */
94
+ abstract isConnected(): boolean;
95
+ /**
96
+ * handle connection established event
97
+ */
98
+ abstract handleConnected(): void;
99
+ }
100
+ //# sourceMappingURL=BaseConnection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConnection.d.ts","sourceRoot":"","sources":["../../../src/internal/connection/BaseConnection.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAElF,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EAEtB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACnB,KAAK,eAAe,EACrB,MAAM,SAAS,CAAC;AAEjB,8BAAsB,cAAc;IAClC;;OAEG;IACH,kBAAyB,cAAc,EAAE,MAAM,CAAC;IAEhD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,gBAAgB,CAA+B;IAEjE;;OAEG;IACH,SAAS,CAAC,KAAK,EAAE,eAAe,EAAE,CAAM;IAExC;;OAEG;IACH,OAAO,CAAC,YAAY,CAAoC;IACxD;;OAEG;IACH,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACnE,SAAS,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAQ;IACzD,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,GAAG,IAAI,CAAQ;IACnE,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAQ;IAC7D,SAAS,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IACvD,SAAS,CAAC,sBAAsB,EAAE,sBAAsB,GAAG,IAAI,CAAQ;IACvE;;OAEG;aACa,KAAK,IAAI,IAAI;IAE7B;;OAEG;aACa,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAE3D;;OAEG;IACI,SAAS,IAAI,gBAAgB;IAIpC;;OAEG;IACI,MAAM,CAAC,QAAQ,EAAE,cAAc,GAAG,IAAI;IAI7C;;OAEG;IACI,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAYnD;;OAEG;IACI,YAAY,CAAC,QAAQ,EAAE,oBAAoB,GAAG,IAAI;IASzD;;OAEG;IACI,OAAO,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI;IAG/C;;OAEG;IACI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAItE;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAIvE;;OAEG;IACI,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIpD;;OAEG;IACI,cAAc,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI;IAS7D;;;OAGG;IACH,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;IAQzD;;;;OAIG;IACH,SAAS,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAQvD;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAOtD;;OAEG;aACa,WAAW,IAAI,OAAO;IACtC;;OAEG;aACa,eAAe,IAAI,IAAI;CACxC"}
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ /**
3
+ * Abstract base class for all connection types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BaseConnection = void 0;
7
+ const EventEmitter_1 = require("../events/EventEmitter");
8
+ const types_1 = require("./types");
9
+ class BaseConnection {
10
+ /**
11
+ * Current connection status
12
+ */
13
+ status = types_1.ConnectionStatus.CONNECTING;
14
+ /**
15
+ * Queue to store messages received before callback is registered
16
+ */
17
+ queue = [];
18
+ /**
19
+ * Event emitter to handle events
20
+ */
21
+ eventEmitter = new EventEmitter_1.EventEmitter();
22
+ /**
23
+ * Disconnection details (null if still connected)
24
+ */
25
+ disconnectionDetails = null;
26
+ onErrorCallback = null;
27
+ onDisconnectCallback = null;
28
+ onMessageCallback = null;
29
+ onOpenCallback = null;
30
+ onStatusChangeCallback = null;
31
+ /**
32
+ * Get current connection status
33
+ */
34
+ getStatus() {
35
+ return this.status;
36
+ }
37
+ /**
38
+ * Register callback for connection open events
39
+ */
40
+ onOpen(callback) {
41
+ this.onOpenCallback = callback;
42
+ }
43
+ /**
44
+ * Register callback for incoming messages
45
+ */
46
+ onMessage(callback) {
47
+ this.onMessageCallback = callback;
48
+ if (this.queue.length > 0) {
49
+ const pendingMessages = [...this.queue];
50
+ this.queue.length = 0;
51
+ queueMicrotask(() => {
52
+ pendingMessages.forEach((message) => {
53
+ this.onMessageCallback?.(message);
54
+ });
55
+ });
56
+ }
57
+ }
58
+ /**
59
+ * Register callback for disconnection events
60
+ */
61
+ onDisconnect(callback) {
62
+ this.onDisconnectCallback = callback;
63
+ const details = this.disconnectionDetails;
64
+ if (details) {
65
+ queueMicrotask(() => {
66
+ this.onDisconnectCallback?.(details);
67
+ });
68
+ }
69
+ }
70
+ /**
71
+ * Register callback for error events
72
+ */
73
+ onError(callback) {
74
+ this.onErrorCallback = callback;
75
+ }
76
+ /**
77
+ * Register a listener for a specific event
78
+ */
79
+ on(event, listener) {
80
+ this.eventEmitter.on(event, listener);
81
+ }
82
+ /**
83
+ * Remove a listener for a specific event
84
+ */
85
+ off(event, listener) {
86
+ this.eventEmitter.off(event, listener);
87
+ }
88
+ /**
89
+ * Emit an event
90
+ */
91
+ emit(event, ...args) {
92
+ this.eventEmitter.emit(event, ...args);
93
+ }
94
+ /**
95
+ * Register callback for status changes
96
+ */
97
+ onStatusChange(callback) {
98
+ this.onStatusChangeCallback = callback;
99
+ // Immediately invoke with current status
100
+ queueMicrotask(() => {
101
+ callback(this.status);
102
+ });
103
+ }
104
+ /**
105
+ * Protected method to handle disconnection
106
+ * Ensures disconnect callback is only invoked once
107
+ */
108
+ disconnect(details) {
109
+ if (!this.disconnectionDetails) {
110
+ this.disconnectionDetails = details;
111
+ this.updateStatus(types_1.ConnectionStatus.NOT_CONNECTED);
112
+ this.onDisconnectCallback?.(details);
113
+ }
114
+ }
115
+ /**
116
+ * Protected method to handle incoming messages
117
+ * Queues messages if no callback is registered yet
118
+ * message type can be extended to include more types of messages
119
+ */
120
+ handleMessage(message) {
121
+ if (this.onMessageCallback) {
122
+ this.onMessageCallback(message);
123
+ }
124
+ else {
125
+ this.queue.push(message);
126
+ }
127
+ }
128
+ /**
129
+ * Protected method to update connection status
130
+ */
131
+ updateStatus(status) {
132
+ if (this.status !== status) {
133
+ this.status = status;
134
+ this.onStatusChangeCallback?.(status);
135
+ }
136
+ }
137
+ }
138
+ exports.BaseConnection = BaseConnection;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Connection types and interfaces for the Synapse SDK
3
+ */
4
+ import { type IncomingMessage } from "../../messages/types";
5
+ export declare const ConnectionStatus: {
6
+ readonly CONNECTING: "connecting";
7
+ readonly CONNECTED: "connected";
8
+ readonly NOT_CONNECTED: "not_connected";
9
+ };
10
+ export type ConnectionStatus = (typeof ConnectionStatus)[keyof typeof ConnectionStatus];
11
+ export declare const DisconnectionReason: {
12
+ readonly CLIENT_CLOSED: "client_closed";
13
+ readonly SERVER_CLOSED: "server_closed";
14
+ readonly CONNECTION_ERROR: "connection_error";
15
+ readonly AUTHENTICATION_ERROR: "authentication_error";
16
+ readonly MAX_RECONNECT_ATTEMPTS: "max_reconnect_attempts";
17
+ readonly TIMEOUT: "timeout";
18
+ readonly NETWORK_ERROR: "network_error";
19
+ };
20
+ export type DisconnectionReason = (typeof DisconnectionReason)[keyof typeof DisconnectionReason];
21
+ export interface DisconnectionDetails {
22
+ reason: DisconnectionReason;
23
+ message?: string;
24
+ code?: number;
25
+ timestamp: Date;
26
+ }
27
+ export interface SessionConfig {
28
+ agentId: string;
29
+ authorization?: string;
30
+ overrides?: {
31
+ prompt?: string;
32
+ firstMessage?: string;
33
+ language?: string;
34
+ voiceId?: string;
35
+ };
36
+ userId?: string;
37
+ }
38
+ export type OnDisconnectCallback = (details: DisconnectionDetails) => void;
39
+ export type OnMessageCallback = (event: IncomingMessage) => void;
40
+ export type OnStatusChangeCallback = (status: ConnectionStatus) => void;
41
+ export type OnOpenCallback = () => void;
42
+ export type OnErrorCallback = (error: Error) => void;
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/internal/connection/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,eAAO,MAAM,gBAAgB;;;;CAInB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,OAAO,gBAAgB,CAAC,CAAC;AAE3D,eAAO,MAAM,mBAAmB;;;;;;;;CAQtB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAC7B,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,IAAI,CAAC;CACjB;AAeD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE;QACV,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAC3E,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;AACjE,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAExE,MAAM,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC;AACxC,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ /**
3
+ * Connection types and interfaces for the Synapse SDK
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DisconnectionReason = exports.ConnectionStatus = void 0;
7
+ exports.ConnectionStatus = {
8
+ CONNECTING: "connecting",
9
+ CONNECTED: "connected",
10
+ NOT_CONNECTED: "not_connected",
11
+ };
12
+ exports.DisconnectionReason = {
13
+ CLIENT_CLOSED: "client_closed",
14
+ SERVER_CLOSED: "server_closed",
15
+ CONNECTION_ERROR: "connection_error",
16
+ AUTHENTICATION_ERROR: "authentication_error",
17
+ MAX_RECONNECT_ATTEMPTS: "max_reconnect_attempts",
18
+ TIMEOUT: "timeout",
19
+ NETWORK_ERROR: "network_error",
20
+ };
@@ -0,0 +1,7 @@
1
+ export declare class EventEmitter {
2
+ private eventListeners;
3
+ on(event: string, listener: (...args: unknown[]) => void): void;
4
+ off(event: string, listener: (...args: unknown[]) => void): void;
5
+ emit(event: string, ...args: unknown[]): void;
6
+ }
7
+ //# sourceMappingURL=EventEmitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EventEmitter.d.ts","sourceRoot":"","sources":["../../../src/internal/events/EventEmitter.ts"],"names":[],"mappings":"AAAA,qBAAa,YAAY;IACvB,OAAO,CAAC,cAAc,CACV;IAEL,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAM/D,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAUhE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAMrD"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EventEmitter = void 0;
4
+ class EventEmitter {
5
+ eventListeners = new Map();
6
+ on(event, listener) {
7
+ const listeners = this.eventListeners.get(event) || new Set();
8
+ listeners.add(listener);
9
+ this.eventListeners.set(event, listeners);
10
+ }
11
+ off(event, listener) {
12
+ const listeners = this.eventListeners.get(event);
13
+ if (listeners) {
14
+ listeners.delete(listener);
15
+ if (listeners.size === 0) {
16
+ this.eventListeners.delete(event);
17
+ }
18
+ }
19
+ }
20
+ emit(event, ...args) {
21
+ const listeners = this.eventListeners.get(event);
22
+ if (listeners) {
23
+ listeners.forEach((listener) => listener(...args));
24
+ }
25
+ }
26
+ }
27
+ exports.EventEmitter = EventEmitter;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * make an abstract class for all types of storage (localStorage, sessionStorage, etc.)
3
+ */
4
+ export declare abstract class Storage {
5
+ abstract write(key: string): string | null;
6
+ abstract read(key: string): string | null;
7
+ abstract delete(key: string): void;
8
+ abstract clear(): void;
9
+ }
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/internal/store/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,8BAAsB,OAAO;IAC3B,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IACzC,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAClC,QAAQ,CAAC,KAAK,IAAI,IAAI;CACvB"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * make an abstract class for all types of storage (localStorage, sessionStorage, etc.)
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Storage = void 0;
7
+ class Storage {
8
+ }
9
+ exports.Storage = Storage;