@egain/ai-agent-sdk 0.1.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 (164) hide show
  1. package/README.md +295 -0
  2. package/dist/browser.js +22739 -0
  3. package/dist/core/AiAgent.d.ts +1126 -0
  4. package/dist/core/AiAgent.d.ts.map +1 -0
  5. package/dist/core/AiAgent.js +2037 -0
  6. package/dist/core/AiAgent.js.map +1 -0
  7. package/dist/core/api/ApiHelper.d.ts +433 -0
  8. package/dist/core/api/ApiHelper.d.ts.map +1 -0
  9. package/dist/core/api/ApiHelper.js +689 -0
  10. package/dist/core/api/ApiHelper.js.map +1 -0
  11. package/dist/core/api/CacheAdapter.d.ts +295 -0
  12. package/dist/core/api/CacheAdapter.d.ts.map +1 -0
  13. package/dist/core/api/CacheAdapter.js +298 -0
  14. package/dist/core/api/CacheAdapter.js.map +1 -0
  15. package/dist/core/auth/AnonymousAuthStrategy.d.ts +87 -0
  16. package/dist/core/auth/AnonymousAuthStrategy.d.ts.map +1 -0
  17. package/dist/core/auth/AnonymousAuthStrategy.js +257 -0
  18. package/dist/core/auth/AnonymousAuthStrategy.js.map +1 -0
  19. package/dist/core/auth/AuthProvider.d.ts +13 -0
  20. package/dist/core/auth/AuthProvider.d.ts.map +1 -0
  21. package/dist/core/auth/AuthProvider.js +2 -0
  22. package/dist/core/auth/AuthProvider.js.map +1 -0
  23. package/dist/core/auth/AuthStrategy.d.ts +74 -0
  24. package/dist/core/auth/AuthStrategy.d.ts.map +1 -0
  25. package/dist/core/auth/AuthStrategy.js +2 -0
  26. package/dist/core/auth/AuthStrategy.js.map +1 -0
  27. package/dist/core/auth/AuthenticationService.d.ts +226 -0
  28. package/dist/core/auth/AuthenticationService.d.ts.map +1 -0
  29. package/dist/core/auth/AuthenticationService.js +344 -0
  30. package/dist/core/auth/AuthenticationService.js.map +1 -0
  31. package/dist/core/auth/ClientCredentialsAuthStrategy.d.ts +62 -0
  32. package/dist/core/auth/ClientCredentialsAuthStrategy.d.ts.map +1 -0
  33. package/dist/core/auth/ClientCredentialsAuthStrategy.js +78 -0
  34. package/dist/core/auth/ClientCredentialsAuthStrategy.js.map +1 -0
  35. package/dist/core/auth/PKCEAuthStrategy.d.ts +136 -0
  36. package/dist/core/auth/PKCEAuthStrategy.d.ts.map +1 -0
  37. package/dist/core/auth/PKCEAuthStrategy.js +409 -0
  38. package/dist/core/auth/PKCEAuthStrategy.js.map +1 -0
  39. package/dist/core/auth/PreAuthStrategy.d.ts +101 -0
  40. package/dist/core/auth/PreAuthStrategy.d.ts.map +1 -0
  41. package/dist/core/auth/PreAuthStrategy.js +216 -0
  42. package/dist/core/auth/PreAuthStrategy.js.map +1 -0
  43. package/dist/core/auth/msal-browser.js +19683 -0
  44. package/dist/core/auth/msal-loader.d.ts +14 -0
  45. package/dist/core/auth/msal-loader.d.ts.map +1 -0
  46. package/dist/core/auth/msal-loader.js +43 -0
  47. package/dist/core/auth/msal-loader.js.map +1 -0
  48. package/dist/core/connection/Connection.d.ts +168 -0
  49. package/dist/core/connection/Connection.d.ts.map +1 -0
  50. package/dist/core/connection/Connection.js +290 -0
  51. package/dist/core/connection/Connection.js.map +1 -0
  52. package/dist/core/connection/ConnectionState.d.ts +11 -0
  53. package/dist/core/connection/ConnectionState.d.ts.map +1 -0
  54. package/dist/core/connection/ConnectionState.js +12 -0
  55. package/dist/core/connection/ConnectionState.js.map +1 -0
  56. package/dist/core/connection/Transport.d.ts +98 -0
  57. package/dist/core/connection/Transport.d.ts.map +1 -0
  58. package/dist/core/connection/Transport.js +27 -0
  59. package/dist/core/connection/Transport.js.map +1 -0
  60. package/dist/core/connection/WebSocketTransport.d.ts +65 -0
  61. package/dist/core/connection/WebSocketTransport.d.ts.map +1 -0
  62. package/dist/core/connection/WebSocketTransport.js +177 -0
  63. package/dist/core/connection/WebSocketTransport.js.map +1 -0
  64. package/dist/core/errors/SDKError.d.ts +27 -0
  65. package/dist/core/errors/SDKError.d.ts.map +1 -0
  66. package/dist/core/errors/SDKError.js +43 -0
  67. package/dist/core/errors/SDKError.js.map +1 -0
  68. package/dist/core/events/EventEmitter.d.ts +120 -0
  69. package/dist/core/events/EventEmitter.d.ts.map +1 -0
  70. package/dist/core/events/EventEmitter.js +183 -0
  71. package/dist/core/events/EventEmitter.js.map +1 -0
  72. package/dist/core/logging/LogLevel.d.ts +33 -0
  73. package/dist/core/logging/LogLevel.d.ts.map +1 -0
  74. package/dist/core/logging/LogLevel.js +40 -0
  75. package/dist/core/logging/LogLevel.js.map +1 -0
  76. package/dist/core/logging/Logger.d.ts +120 -0
  77. package/dist/core/logging/Logger.d.ts.map +1 -0
  78. package/dist/core/logging/Logger.js +204 -0
  79. package/dist/core/logging/Logger.js.map +1 -0
  80. package/dist/core/logging/globalLogger.d.ts +8 -0
  81. package/dist/core/logging/globalLogger.d.ts.map +1 -0
  82. package/dist/core/logging/globalLogger.js +12 -0
  83. package/dist/core/logging/globalLogger.js.map +1 -0
  84. package/dist/core/logging/types.d.ts +45 -0
  85. package/dist/core/logging/types.d.ts.map +1 -0
  86. package/dist/core/logging/types.js +2 -0
  87. package/dist/core/logging/types.js.map +1 -0
  88. package/dist/core/message/BaseMessageHandler.d.ts +208 -0
  89. package/dist/core/message/BaseMessageHandler.d.ts.map +1 -0
  90. package/dist/core/message/BaseMessageHandler.js +155 -0
  91. package/dist/core/message/BaseMessageHandler.js.map +1 -0
  92. package/dist/core/message/Message.d.ts +69 -0
  93. package/dist/core/message/Message.d.ts.map +1 -0
  94. package/dist/core/message/Message.js +131 -0
  95. package/dist/core/message/Message.js.map +1 -0
  96. package/dist/core/message/MessageProcessor.d.ts +51 -0
  97. package/dist/core/message/MessageProcessor.d.ts.map +1 -0
  98. package/dist/core/message/MessageProcessor.js +123 -0
  99. package/dist/core/message/MessageProcessor.js.map +1 -0
  100. package/dist/core/message/MessageTypes.d.ts +123 -0
  101. package/dist/core/message/MessageTypes.d.ts.map +1 -0
  102. package/dist/core/message/MessageTypes.js +106 -0
  103. package/dist/core/message/MessageTypes.js.map +1 -0
  104. package/dist/core/message/Transcript.d.ts +373 -0
  105. package/dist/core/message/Transcript.d.ts.map +1 -0
  106. package/dist/core/message/Transcript.js +355 -0
  107. package/dist/core/message/Transcript.js.map +1 -0
  108. package/dist/core/message/handlers/AgentMessageHandler.d.ts +26 -0
  109. package/dist/core/message/handlers/AgentMessageHandler.d.ts.map +1 -0
  110. package/dist/core/message/handlers/AgentMessageHandler.js +130 -0
  111. package/dist/core/message/handlers/AgentMessageHandler.js.map +1 -0
  112. package/dist/core/message/handlers/ChatHistoryHandler.d.ts +12 -0
  113. package/dist/core/message/handlers/ChatHistoryHandler.d.ts.map +1 -0
  114. package/dist/core/message/handlers/ChatHistoryHandler.js +49 -0
  115. package/dist/core/message/handlers/ChatHistoryHandler.js.map +1 -0
  116. package/dist/core/message/handlers/ErrorMessageHandler.d.ts +12 -0
  117. package/dist/core/message/handlers/ErrorMessageHandler.d.ts.map +1 -0
  118. package/dist/core/message/handlers/ErrorMessageHandler.js +49 -0
  119. package/dist/core/message/handlers/ErrorMessageHandler.js.map +1 -0
  120. package/dist/core/message/handlers/HeartbeatHandler.d.ts +12 -0
  121. package/dist/core/message/handlers/HeartbeatHandler.d.ts.map +1 -0
  122. package/dist/core/message/handlers/HeartbeatHandler.js +46 -0
  123. package/dist/core/message/handlers/HeartbeatHandler.js.map +1 -0
  124. package/dist/core/message/handlers/TokenRefreshHandler.d.ts +30 -0
  125. package/dist/core/message/handlers/TokenRefreshHandler.d.ts.map +1 -0
  126. package/dist/core/message/handlers/TokenRefreshHandler.js +84 -0
  127. package/dist/core/message/handlers/TokenRefreshHandler.js.map +1 -0
  128. package/dist/core/message/types.d.ts +107 -0
  129. package/dist/core/message/types.d.ts.map +1 -0
  130. package/dist/core/message/types.js +30 -0
  131. package/dist/core/message/types.js.map +1 -0
  132. package/dist/core/platform/HookContract.d.ts +112 -0
  133. package/dist/core/platform/HookContract.d.ts.map +1 -0
  134. package/dist/core/platform/HookContract.js +13 -0
  135. package/dist/core/platform/HookContract.js.map +1 -0
  136. package/dist/core/platform/PlatformComponentService.d.ts +40 -0
  137. package/dist/core/platform/PlatformComponentService.d.ts.map +1 -0
  138. package/dist/core/platform/PlatformComponentService.js +12 -0
  139. package/dist/core/platform/PlatformComponentService.js.map +1 -0
  140. package/dist/core/platform/PlatformScriptLoader.d.ts +41 -0
  141. package/dist/core/platform/PlatformScriptLoader.d.ts.map +1 -0
  142. package/dist/core/platform/PlatformScriptLoader.js +110 -0
  143. package/dist/core/platform/PlatformScriptLoader.js.map +1 -0
  144. package/dist/core/polyfills.d.ts +16 -0
  145. package/dist/core/polyfills.d.ts.map +1 -0
  146. package/dist/core/polyfills.js +168 -0
  147. package/dist/core/polyfills.js.map +1 -0
  148. package/dist/core/portal-initializer/PortalInitializer.d.ts +234 -0
  149. package/dist/core/portal-initializer/PortalInitializer.d.ts.map +1 -0
  150. package/dist/core/portal-initializer/PortalInitializer.js +636 -0
  151. package/dist/core/portal-initializer/PortalInitializer.js.map +1 -0
  152. package/dist/core/queue/MessageQueue.d.ts +277 -0
  153. package/dist/core/queue/MessageQueue.d.ts.map +1 -0
  154. package/dist/core/queue/MessageQueue.js +291 -0
  155. package/dist/core/queue/MessageQueue.js.map +1 -0
  156. package/dist/core/types/PortalTypes.d.ts +51 -0
  157. package/dist/core/types/PortalTypes.d.ts.map +1 -0
  158. package/dist/core/types/PortalTypes.js +8 -0
  159. package/dist/core/types/PortalTypes.js.map +1 -0
  160. package/dist/index.d.ts +91 -0
  161. package/dist/index.d.ts.map +1 -0
  162. package/dist/index.js +82 -0
  163. package/dist/index.js.map +1 -0
  164. package/package.json +84 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * MSAL Loader Module
3
+ *
4
+ * This module ensures MSAL is loaded and available as window.msal
5
+ * The msal-browser.js is a UMD module that sets window.msal when executed.
6
+ * We import it as a side-effect so it executes and sets window.msal.
7
+ */
8
+ import './msal-browser.js';
9
+ /**
10
+ * Ensure MSAL is available on window object
11
+ * This function verifies that window.msal was set by the UMD module
12
+ */
13
+ export declare function ensureMSALLoaded(): void;
14
+ //# sourceMappingURL=msal-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msal-loader.d.ts","sourceRoot":"","sources":["../../../src/core/auth/msal-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAiBvC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * MSAL Loader Module
3
+ *
4
+ * This module ensures MSAL is loaded and available as window.msal
5
+ * The msal-browser.js is a UMD module that sets window.msal when executed.
6
+ * We import it as a side-effect so it executes and sets window.msal.
7
+ */
8
+ // Import MSAL as a side-effect - the UMD module will execute and set window.msal
9
+ // When esbuild bundles this, the UMD wrapper executes and sets window.msal
10
+ import './msal-browser.js';
11
+ /**
12
+ * Ensure MSAL is available on window object
13
+ * This function verifies that window.msal was set by the UMD module
14
+ */
15
+ export function ensureMSALLoaded() {
16
+ if (typeof window === 'undefined') {
17
+ return; // Not in browser environment
18
+ }
19
+ // The UMD module should have set window.msal when it executed
20
+ // We verify it's available
21
+ if (!window.msal) {
22
+ // In a bundled environment, the UMD wrapper should execute synchronously
23
+ // If window.msal is not available, there may be a bundling issue
24
+ throw new Error('MSAL library not found. Please ensure msal-browser.js is loaded. The SDK bundle should include MSAL automatically.');
25
+ }
26
+ // Verify that PublicClientApplication is available
27
+ if (!window.msal.PublicClientApplication) {
28
+ throw new Error('MSAL PublicClientApplication not found. The MSAL library may not have loaded correctly.');
29
+ }
30
+ }
31
+ // Ensure MSAL is loaded when this module is imported
32
+ // Use a small delay to ensure the UMD module has executed
33
+ if (typeof window !== 'undefined') {
34
+ // The UMD module executes synchronously, but we check after a microtask
35
+ // to ensure it has completed
36
+ Promise.resolve().then(() => {
37
+ ensureMSALLoaded();
38
+ }).catch(() => {
39
+ // If ensureMSALLoaded throws, it means MSAL wasn't loaded
40
+ // This will be caught when PKCEAuthStrategy tries to use it
41
+ });
42
+ }
43
+ //# sourceMappingURL=msal-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"msal-loader.js","sourceRoot":"","sources":["../../../src/core/auth/msal-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,iFAAiF;AACjF,2EAA2E;AAC3E,OAAO,mBAAmB,CAAC;AAE3B;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,CAAC,6BAA6B;IACvC,CAAC;IAED,8DAA8D;IAC9D,2BAA2B;IAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,yEAAyE;QACzE,iEAAiE;QACjE,MAAM,IAAI,KAAK,CAAC,oHAAoH,CAAC,CAAC;IACxI,CAAC;IAED,mDAAmD;IACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED,qDAAqD;AACrD,0DAA0D;AAC1D,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IAClC,wEAAwE;IACxE,6BAA6B;IAC7B,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QAC1B,gBAAgB,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;QACZ,0DAA0D;QAC1D,4DAA4D;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,168 @@
1
+ import { EventEmitter } from '../events/EventEmitter.js';
2
+ import { ConnectionState } from './ConnectionState.js';
3
+ import { Transport } from './Transport.js';
4
+ import { Logger } from '../logging/Logger.js';
5
+ /**
6
+ * Connection event map
7
+ */
8
+ export interface ConnectionEvents {
9
+ connected: {
10
+ timestamp: number;
11
+ };
12
+ message: {
13
+ data: any;
14
+ timestamp: number;
15
+ };
16
+ error: {
17
+ error: Error;
18
+ timestamp: number;
19
+ };
20
+ closed: {
21
+ code?: number;
22
+ reason?: string;
23
+ timestamp: number;
24
+ };
25
+ stateChanged: {
26
+ state: ConnectionState;
27
+ previousState: ConnectionState;
28
+ };
29
+ }
30
+ /**
31
+ * Connection configuration options
32
+ */
33
+ export interface ConnectionConfig {
34
+ /**
35
+ * The transport instance to use for communication.
36
+ * If not provided, a WebSocketTransport will be created using the endpoint.
37
+ */
38
+ transport?: Transport;
39
+ /**
40
+ * WebSocket endpoint URL (used when transport is not provided)
41
+ */
42
+ endpoint?: string;
43
+ /**
44
+ * Maximum reconnection attempts
45
+ * @default Infinity
46
+ */
47
+ maxReconnectAttempts?: number;
48
+ /**
49
+ * Base reconnection delay in milliseconds
50
+ * @default 1000
51
+ */
52
+ baseReconnectDelay?: number;
53
+ /**
54
+ * Maximum reconnection delay in milliseconds
55
+ * @default 30000
56
+ */
57
+ maxReconnectDelay?: number;
58
+ /**
59
+ * Logger instance (optional)
60
+ * If not provided, uses globalLogger
61
+ */
62
+ logger?: Logger;
63
+ }
64
+ /**
65
+ * Connection manager with automatic reconnection.
66
+ *
67
+ * This class wraps a Transport implementation and adds:
68
+ * - Connection state management
69
+ * - Automatic reconnection with exponential backoff
70
+ * - Event forwarding and normalization
71
+ *
72
+ * The Connection class is transport-agnostic - it can work with any
73
+ * transport that implements the Transport interface (WebSocket, SSE, etc.)
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * // Using default WebSocket transport
78
+ * const conn = new Connection({
79
+ * endpoint: 'wss://api.example.com/ws'
80
+ * });
81
+ *
82
+ * // Using custom transport
83
+ * const customTransport = new MyCustomTransport({ endpoint: '...' });
84
+ * const conn = new Connection({ transport: customTransport });
85
+ * ```
86
+ */
87
+ export declare class Connection extends EventEmitter<ConnectionEvents> {
88
+ private transport;
89
+ private state;
90
+ private reconnectAttempts;
91
+ private reconnectTimer;
92
+ private shouldReconnect;
93
+ private maxReconnectAttempts;
94
+ private baseReconnectDelay;
95
+ private maxReconnectDelay;
96
+ private logger;
97
+ constructor(config: ConnectionConfig);
98
+ /**
99
+ * @deprecated Use ConnectionConfig object instead
100
+ */
101
+ constructor(endpoint: string);
102
+ /**
103
+ * Create default WebSocket transport
104
+ */
105
+ private createDefaultTransport;
106
+ /**
107
+ * Get the underlying transport instance
108
+ */
109
+ getTransport(): Transport;
110
+ /**
111
+ * Get the transport type
112
+ */
113
+ getTransportType(): string;
114
+ /**
115
+ * Get current connection state
116
+ */
117
+ getState(): ConnectionState;
118
+ /**
119
+ * Check if connected
120
+ */
121
+ isConnected(): boolean;
122
+ /**
123
+ * Connect using the underlying transport
124
+ */
125
+ connect(): Promise<void>;
126
+ /**
127
+ * Disconnect and stop reconnecting
128
+ */
129
+ disconnect(): void;
130
+ /**
131
+ * Send a message through the transport
132
+ */
133
+ send(data: any): Promise<void>;
134
+ /**
135
+ * Set maximum reconnection attempts
136
+ */
137
+ setMaxReconnectAttempts(maxAttempts: number): void;
138
+ /**
139
+ * Set reconnection delay parameters
140
+ */
141
+ setReconnectDelays(baseDelay: number, maxDelay: number): void;
142
+ /**
143
+ * Set up event forwarding from transport
144
+ */
145
+ private setupTransportEvents;
146
+ /**
147
+ * Attempt to establish a connection
148
+ * @param isInitialAttempt - If true, throw error on failure instead of scheduling reconnect
149
+ */
150
+ private attemptConnect;
151
+ /**
152
+ * Handle connection failure
153
+ */
154
+ private handleConnectionFailure;
155
+ /**
156
+ * Schedule a reconnection attempt with exponential backoff
157
+ */
158
+ private scheduleReconnect;
159
+ /**
160
+ * Update connection state and emit event
161
+ */
162
+ private setState;
163
+ /**
164
+ * Clear reconnect timer
165
+ */
166
+ private clearReconnectTimer;
167
+ }
168
+ //# sourceMappingURL=Connection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connection.d.ts","sourceRoot":"","sources":["../../../src/core/connection/Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,OAAO,EAAE;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3C,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,YAAY,EAAE;QAAE,KAAK,EAAE,eAAe,CAAC;QAAC,aAAa,EAAE,eAAe,CAAA;KAAE,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAE9B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,UAAW,SAAQ,YAAY,CAAC,gBAAgB,CAAC;IAC5D,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,oBAAoB,CAAY;IACxC,OAAO,CAAC,kBAAkB,CAAQ;IAClC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,gBAAgB;IACpC;;OAEG;gBACS,QAAQ,EAAE,MAAM;IA2C5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,YAAY,IAAI,SAAS;IAIzB;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,QAAQ,IAAI,eAAe;IAI3B;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB;;OAEG;IACG,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpC;;OAEG;IACH,uBAAuB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAIlD;;OAEG;IACH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK7D;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoC5B;;;OAGG;YACW,cAAc;IA4B5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyCzB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAehB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAM5B"}
@@ -0,0 +1,290 @@
1
+ import { EventEmitter } from '../events/EventEmitter.js';
2
+ import { ConnectionState } from './ConnectionState.js';
3
+ import { ConnectionError } from '../errors/SDKError.js';
4
+ import { WebSocketTransport } from './WebSocketTransport.js';
5
+ import { globalLogger } from '../logging/globalLogger.js';
6
+ /**
7
+ * Connection manager with automatic reconnection.
8
+ *
9
+ * This class wraps a Transport implementation and adds:
10
+ * - Connection state management
11
+ * - Automatic reconnection with exponential backoff
12
+ * - Event forwarding and normalization
13
+ *
14
+ * The Connection class is transport-agnostic - it can work with any
15
+ * transport that implements the Transport interface (WebSocket, SSE, etc.)
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * // Using default WebSocket transport
20
+ * const conn = new Connection({
21
+ * endpoint: 'wss://api.example.com/ws'
22
+ * });
23
+ *
24
+ * // Using custom transport
25
+ * const customTransport = new MyCustomTransport({ endpoint: '...' });
26
+ * const conn = new Connection({ transport: customTransport });
27
+ * ```
28
+ */
29
+ export class Connection extends EventEmitter {
30
+ constructor(configOrEndpoint) {
31
+ super();
32
+ this.state = ConnectionState.IDLE;
33
+ this.reconnectAttempts = 0;
34
+ this.reconnectTimer = null;
35
+ this.shouldReconnect = false;
36
+ this.maxReconnectAttempts = Infinity;
37
+ this.baseReconnectDelay = 1000; // 1 second
38
+ this.maxReconnectDelay = 30000; // 30 seconds
39
+ // Handle legacy constructor signature
40
+ if (typeof configOrEndpoint === 'string') {
41
+ // Legacy constructor - use global logger
42
+ this.logger = globalLogger;
43
+ this.transport = this.createDefaultTransport(configOrEndpoint);
44
+ }
45
+ else {
46
+ const config = configOrEndpoint;
47
+ // Set logger first (needed for createDefaultTransport)
48
+ this.logger = config.logger ?? globalLogger;
49
+ if (config.transport) {
50
+ // Use provided transport
51
+ this.transport = config.transport;
52
+ }
53
+ else if (config.endpoint) {
54
+ // Create default WebSocket transport
55
+ this.transport = this.createDefaultTransport(config.endpoint);
56
+ }
57
+ else {
58
+ throw new Error('Either transport or endpoint must be provided');
59
+ }
60
+ // Apply configuration
61
+ if (config.maxReconnectAttempts !== undefined) {
62
+ this.maxReconnectAttempts = config.maxReconnectAttempts;
63
+ }
64
+ if (config.baseReconnectDelay !== undefined) {
65
+ this.baseReconnectDelay = config.baseReconnectDelay;
66
+ }
67
+ if (config.maxReconnectDelay !== undefined) {
68
+ this.maxReconnectDelay = config.maxReconnectDelay;
69
+ }
70
+ }
71
+ // Set up transport event forwarding
72
+ this.setupTransportEvents();
73
+ }
74
+ /**
75
+ * Create default WebSocket transport
76
+ */
77
+ createDefaultTransport(endpoint) {
78
+ return new WebSocketTransport({
79
+ endpoint,
80
+ logger: this.logger,
81
+ });
82
+ }
83
+ /**
84
+ * Get the underlying transport instance
85
+ */
86
+ getTransport() {
87
+ return this.transport;
88
+ }
89
+ /**
90
+ * Get the transport type
91
+ */
92
+ getTransportType() {
93
+ return this.transport.getType();
94
+ }
95
+ /**
96
+ * Get current connection state
97
+ */
98
+ getState() {
99
+ return this.state;
100
+ }
101
+ /**
102
+ * Check if connected
103
+ */
104
+ isConnected() {
105
+ return this.state === ConnectionState.CONNECTED && this.transport.isConnected();
106
+ }
107
+ /**
108
+ * Connect using the underlying transport
109
+ */
110
+ async connect() {
111
+ if (this.state === ConnectionState.CONNECTED || this.state === ConnectionState.CONNECTING) {
112
+ this.logger.debug('Connection already connected or connecting', { state: this.state });
113
+ return;
114
+ }
115
+ this.logger.debug('Initiating connection', { endpoint: this.transport.getType() });
116
+ this.shouldReconnect = true;
117
+ await this.attemptConnect(true); // Initial attempt - throw on failure
118
+ }
119
+ /**
120
+ * Disconnect and stop reconnecting
121
+ */
122
+ disconnect() {
123
+ this.logger.debug('Disconnecting', { state: this.state });
124
+ this.shouldReconnect = false;
125
+ this.clearReconnectTimer();
126
+ this.transport.disconnect();
127
+ this.setState(ConnectionState.CLOSED);
128
+ }
129
+ /**
130
+ * Send a message through the transport
131
+ */
132
+ async send(data) {
133
+ if (!this.isConnected()) {
134
+ const error = new ConnectionError('Cannot send message: not connected');
135
+ this.logger.warn('Cannot send message: not connected', { state: this.state });
136
+ throw error;
137
+ }
138
+ this.logger.debug('Sending message via transport', { transportType: this.transport.getType() });
139
+ await this.transport.send(data);
140
+ }
141
+ /**
142
+ * Set maximum reconnection attempts
143
+ */
144
+ setMaxReconnectAttempts(maxAttempts) {
145
+ this.maxReconnectAttempts = maxAttempts;
146
+ }
147
+ /**
148
+ * Set reconnection delay parameters
149
+ */
150
+ setReconnectDelays(baseDelay, maxDelay) {
151
+ this.baseReconnectDelay = baseDelay;
152
+ this.maxReconnectDelay = maxDelay;
153
+ }
154
+ /**
155
+ * Set up event forwarding from transport
156
+ */
157
+ setupTransportEvents() {
158
+ this.transport.on('connected', (event) => {
159
+ this.logger.info('Transport connected', { transportType: this.transport.getType() });
160
+ this.reconnectAttempts = 0;
161
+ this.setState(ConnectionState.CONNECTED);
162
+ this.emit('connected', event);
163
+ });
164
+ this.transport.on('message', (event) => {
165
+ this.logger.debug('Message received from transport', { transportType: this.transport.getType() });
166
+ this.emit('message', event);
167
+ });
168
+ this.transport.on('error', (event) => {
169
+ this.logger.error('Transport error', event.error, { transportType: this.transport.getType() });
170
+ this.emit('error', event);
171
+ });
172
+ this.transport.on('closed', (event) => {
173
+ this.logger.info('Transport closed', {
174
+ code: event.code,
175
+ reason: event.reason,
176
+ transportType: this.transport.getType()
177
+ });
178
+ this.emit('closed', event);
179
+ // Attempt reconnection if needed
180
+ if (this.shouldReconnect && event.code !== 1000) {
181
+ // Don't reconnect on normal closure
182
+ this.scheduleReconnect();
183
+ }
184
+ else {
185
+ this.setState(ConnectionState.CLOSED);
186
+ }
187
+ });
188
+ }
189
+ /**
190
+ * Attempt to establish a connection
191
+ * @param isInitialAttempt - If true, throw error on failure instead of scheduling reconnect
192
+ */
193
+ async attemptConnect(isInitialAttempt = false) {
194
+ if (this.state === ConnectionState.CONNECTING || this.state === ConnectionState.CONNECTED) {
195
+ return;
196
+ }
197
+ this.setState(ConnectionState.CONNECTING);
198
+ this.logger.debug('Attempting to connect', { transportType: this.transport.getType() });
199
+ try {
200
+ await this.transport.connect();
201
+ }
202
+ catch (error) {
203
+ const connectionError = error instanceof ConnectionError
204
+ ? error
205
+ : new ConnectionError('Failed to establish connection', error instanceof Error ? error : new Error(String(error)));
206
+ // For initial connection attempt, throw the error so caller knows it failed
207
+ if (isInitialAttempt) {
208
+ this.handleConnectionFailure(connectionError);
209
+ throw connectionError;
210
+ }
211
+ this.handleConnectionFailure(connectionError);
212
+ }
213
+ }
214
+ /**
215
+ * Handle connection failure
216
+ */
217
+ handleConnectionFailure(error) {
218
+ this.logger.warn('Connection attempt failed', {
219
+ error: error.message,
220
+ reconnectAttempts: this.reconnectAttempts,
221
+ transportType: this.transport.getType()
222
+ });
223
+ this.emit('error', { error, timestamp: Date.now() });
224
+ if (this.shouldReconnect) {
225
+ this.scheduleReconnect();
226
+ }
227
+ else {
228
+ this.setState(ConnectionState.CLOSED);
229
+ }
230
+ }
231
+ /**
232
+ * Schedule a reconnection attempt with exponential backoff
233
+ */
234
+ scheduleReconnect() {
235
+ if (!this.shouldReconnect) {
236
+ return;
237
+ }
238
+ if (this.reconnectAttempts >= this.maxReconnectAttempts) {
239
+ this.logger.error('Max reconnection attempts reached', new ConnectionError('Max reconnection attempts reached'), {
240
+ maxAttempts: this.maxReconnectAttempts,
241
+ transportType: this.transport.getType()
242
+ });
243
+ this.setState(ConnectionState.CLOSED);
244
+ this.emit('error', {
245
+ error: new ConnectionError('Max reconnection attempts reached'),
246
+ timestamp: Date.now(),
247
+ });
248
+ return;
249
+ }
250
+ this.setState(ConnectionState.RECONNECTING);
251
+ // Calculate delay with exponential backoff
252
+ const delay = Math.min(this.baseReconnectDelay * Math.pow(2, this.reconnectAttempts), this.maxReconnectDelay);
253
+ this.reconnectAttempts++;
254
+ this.logger.debug('Scheduling reconnection attempt', {
255
+ attempt: this.reconnectAttempts,
256
+ delay,
257
+ transportType: this.transport.getType()
258
+ });
259
+ this.reconnectTimer = setTimeout(() => {
260
+ this.reconnectTimer = null;
261
+ this.attemptConnect(false); // Reconnection attempt - don't throw, schedule next reconnect
262
+ }, delay);
263
+ }
264
+ /**
265
+ * Update connection state and emit event
266
+ */
267
+ setState(newState) {
268
+ if (this.state === newState) {
269
+ return;
270
+ }
271
+ const previousState = this.state;
272
+ this.state = newState;
273
+ this.logger.debug('Connection state changed', {
274
+ previousState,
275
+ newState,
276
+ transportType: this.transport.getType()
277
+ });
278
+ this.emit('stateChanged', { state: newState, previousState });
279
+ }
280
+ /**
281
+ * Clear reconnect timer
282
+ */
283
+ clearReconnectTimer() {
284
+ if (this.reconnectTimer) {
285
+ clearTimeout(this.reconnectTimer);
286
+ this.reconnectTimer = null;
287
+ }
288
+ }
289
+ }
290
+ //# sourceMappingURL=Connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Connection.js","sourceRoot":"","sources":["../../../src/core/connection/Connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAqD1D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,OAAO,UAAW,SAAQ,YAA8B;IAgB5D,YACE,gBAA2C;QAE3C,KAAK,EAAE,CAAC;QAjBF,UAAK,GAAoB,eAAe,CAAC,IAAI,CAAC;QAC9C,sBAAiB,GAAG,CAAC,CAAC;QACtB,mBAAc,GAAyC,IAAI,CAAC;QAC5D,oBAAe,GAAG,KAAK,CAAC;QACxB,yBAAoB,GAAG,QAAQ,CAAC;QAChC,uBAAkB,GAAG,IAAI,CAAC,CAAC,WAAW;QACtC,sBAAiB,GAAG,KAAK,CAAC,CAAC,aAAa;QAa9C,sCAAsC;QACtC,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YACzC,yCAAyC;YACzC,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QACjE,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,gBAAgB,CAAC;YAEhC,uDAAuD;YACvD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,YAAY,CAAC;YAE5C,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBACrB,yBAAyB;gBACzB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;YACpC,CAAC;iBAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAC3B,qCAAqC;gBACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAChE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YAED,sBAAsB;YACtB,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;gBAC9C,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;YAC1D,CAAC;YACD,IAAI,MAAM,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;gBAC5C,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACtD,CAAC;YACD,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;gBAC3C,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;YACpD,CAAC;QACH,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,QAAgB;QAC7C,OAAO,IAAI,kBAAkB,CAAC;YAC5B,QAAQ;YACR,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;IAClF,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,UAAU,EAAE,CAAC;YAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YACvF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,qCAAqC;IACxE,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,IAAS;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,eAAe,CAAC,oCAAoC,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,uBAAuB,CAAC,WAAmB;QACzC,IAAI,CAAC,oBAAoB,GAAG,WAAW,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,SAAiB,EAAE,QAAgB;QACpD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;IACpC,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,EAAE;YACvC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAClG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/F,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;YACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBACnC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;aACxC,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAE3B,iCAAiC;YACjC,IAAI,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAChD,oCAAoC;gBACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc,CAAC,gBAAgB,GAAG,KAAK;QACnD,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,CAAC,SAAS,EAAE,CAAC;YAC1F,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAExF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,eAAe,GAAG,KAAK,YAAY,eAAe;gBACtD,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,eAAe,CACjB,gCAAgC,EAChC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAC1D,CAAC;YAEN,4EAA4E;YAC5E,IAAI,gBAAgB,EAAE,CAAC;gBACrB,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM,eAAe,CAAC;YACxB,CAAC;YAED,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,uBAAuB,CAAC,KAAsB;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;YAC5C,KAAK,EAAE,KAAK,CAAC,OAAO;YACpB,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAErD,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,EACnD,IAAI,eAAe,CAAC,mCAAmC,CAAC,EACxD;gBACE,WAAW,EAAE,IAAI,CAAC,oBAAoB;gBACtC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;aACxC,CACF,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,KAAK,EAAE,IAAI,eAAe,CAAC,mCAAmC,CAAC;gBAC/D,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAE5C,2CAA2C;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAC7D,IAAI,CAAC,iBAAiB,CACvB,CAAC;QAEF,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;YACnD,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,GAAG,EAAE;YACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,8DAA8D;QAC5F,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAED;;OAEG;IACK,QAAQ,CAAC,QAAyB;QACxC,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;YAC5C,aAAa;YACb,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;SACxC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACK,mBAAmB;QACzB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Connection state enumeration
3
+ */
4
+ export declare enum ConnectionState {
5
+ IDLE = "IDLE",
6
+ CONNECTING = "CONNECTING",
7
+ CONNECTED = "CONNECTED",
8
+ RECONNECTING = "RECONNECTING",
9
+ CLOSED = "CLOSED"
10
+ }
11
+ //# sourceMappingURL=ConnectionState.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionState.d.ts","sourceRoot":"","sources":["../../../src/core/connection/ConnectionState.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,oBAAY,eAAe;IACzB,IAAI,SAAS;IACb,UAAU,eAAe;IACzB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,MAAM,WAAW;CAClB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Connection state enumeration
3
+ */
4
+ export var ConnectionState;
5
+ (function (ConnectionState) {
6
+ ConnectionState["IDLE"] = "IDLE";
7
+ ConnectionState["CONNECTING"] = "CONNECTING";
8
+ ConnectionState["CONNECTED"] = "CONNECTED";
9
+ ConnectionState["RECONNECTING"] = "RECONNECTING";
10
+ ConnectionState["CLOSED"] = "CLOSED";
11
+ })(ConnectionState || (ConnectionState = {}));
12
+ //# sourceMappingURL=ConnectionState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionState.js","sourceRoot":"","sources":["../../../src/core/connection/ConnectionState.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAN,IAAY,eAMX;AAND,WAAY,eAAe;IACzB,gCAAa,CAAA;IACb,4CAAyB,CAAA;IACzB,0CAAuB,CAAA;IACvB,gDAA6B,CAAA;IAC7B,oCAAiB,CAAA;AACnB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B"}
@@ -0,0 +1,98 @@
1
+ import { EventEmitter } from '../events/EventEmitter.js';
2
+ import { Logger } from '../logging/Logger.js';
3
+ /**
4
+ * Transport event map - events that any transport must emit
5
+ */
6
+ export interface TransportEvents {
7
+ /**
8
+ * Emitted when transport connection is established
9
+ */
10
+ connected: {
11
+ timestamp: number;
12
+ };
13
+ /**
14
+ * Emitted when a message is received
15
+ */
16
+ message: {
17
+ data: any;
18
+ timestamp: number;
19
+ };
20
+ /**
21
+ * Emitted when an error occurs
22
+ */
23
+ error: {
24
+ error: Error;
25
+ timestamp: number;
26
+ };
27
+ /**
28
+ * Emitted when connection is closed
29
+ */
30
+ closed: {
31
+ code?: number;
32
+ reason?: string;
33
+ timestamp: number;
34
+ };
35
+ }
36
+ /**
37
+ * Transport configuration options
38
+ */
39
+ export interface TransportConfig {
40
+ /**
41
+ * Connection endpoint URL
42
+ */
43
+ endpoint: string;
44
+ /**
45
+ * Connection timeout in milliseconds
46
+ * @default 10000
47
+ */
48
+ connectionTimeout?: number;
49
+ /**
50
+ * Logger instance (optional)
51
+ * If not provided, uses globalLogger
52
+ */
53
+ logger?: Logger;
54
+ }
55
+ /**
56
+ * Abstract base class for transport implementations.
57
+ *
58
+ * Any transport mechanism (WebSocket, SSE, HTTP polling, etc.) should extend
59
+ * this class and implement the abstract methods.
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * class MyCustomTransport extends Transport {
64
+ * async connect(): Promise<void> { ... }
65
+ * disconnect(): void { ... }
66
+ * async send(data: any): Promise<void> { ... }
67
+ * isConnected(): boolean { ... }
68
+ * }
69
+ * ```
70
+ */
71
+ export declare abstract class Transport extends EventEmitter<TransportEvents> {
72
+ protected readonly endpoint: string;
73
+ protected readonly connectionTimeout: number;
74
+ protected readonly logger: Logger;
75
+ constructor(config: TransportConfig);
76
+ /**
77
+ * Establish the transport connection
78
+ */
79
+ abstract connect(): Promise<void>;
80
+ /**
81
+ * Close the transport connection
82
+ */
83
+ abstract disconnect(): void;
84
+ /**
85
+ * Send data through the transport
86
+ * @param data - The data to send
87
+ */
88
+ abstract send(data: any): Promise<void>;
89
+ /**
90
+ * Check if the transport is currently connected
91
+ */
92
+ abstract isConnected(): boolean;
93
+ /**
94
+ * Get the transport type identifier
95
+ */
96
+ abstract getType(): string;
97
+ }
98
+ //# sourceMappingURL=Transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../../../src/core/connection/Transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,SAAS,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAEjC;;OAEG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAE1C;;OAEG;IACH,KAAK,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAE3C;;OAEG;IACH,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,SAAU,SAAQ,YAAY,CAAC,eAAe,CAAC;IACnE,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEtB,MAAM,EAAE,eAAe;IAOnC;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,UAAU,IAAI,IAAI;IAE3B;;;OAGG;IACH,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,WAAW,IAAI,OAAO;IAE/B;;OAEG;IACH,QAAQ,CAAC,OAAO,IAAI,MAAM;CAC3B"}