@teneo-protocol/sdk 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 (281) hide show
  1. package/.dockerignore +14 -0
  2. package/.env.test.example +14 -0
  3. package/.eslintrc.json +26 -0
  4. package/.github/workflows/claude-code-review.yml +78 -0
  5. package/.github/workflows/claude-reviewer.yml +64 -0
  6. package/.github/workflows/publish-npm.yml +38 -0
  7. package/.github/workflows/push-to-main.yml +23 -0
  8. package/.node-version +1 -0
  9. package/.prettierrc +11 -0
  10. package/Dockerfile +25 -0
  11. package/LICENCE +661 -0
  12. package/README.md +709 -0
  13. package/dist/constants.d.ts +42 -0
  14. package/dist/constants.d.ts.map +1 -0
  15. package/dist/constants.js +45 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/core/websocket-client.d.ts +261 -0
  18. package/dist/core/websocket-client.d.ts.map +1 -0
  19. package/dist/core/websocket-client.js +875 -0
  20. package/dist/core/websocket-client.js.map +1 -0
  21. package/dist/formatters/response-formatter.d.ts +354 -0
  22. package/dist/formatters/response-formatter.d.ts.map +1 -0
  23. package/dist/formatters/response-formatter.js +575 -0
  24. package/dist/formatters/response-formatter.js.map +1 -0
  25. package/dist/handlers/message-handler-registry.d.ts +155 -0
  26. package/dist/handlers/message-handler-registry.d.ts.map +1 -0
  27. package/dist/handlers/message-handler-registry.js +216 -0
  28. package/dist/handlers/message-handler-registry.js.map +1 -0
  29. package/dist/handlers/message-handlers/agent-selected-handler.d.ts +112 -0
  30. package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -0
  31. package/dist/handlers/message-handlers/agent-selected-handler.js +40 -0
  32. package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -0
  33. package/dist/handlers/message-handlers/agents-list-handler.d.ts +14 -0
  34. package/dist/handlers/message-handlers/agents-list-handler.d.ts.map +1 -0
  35. package/dist/handlers/message-handlers/agents-list-handler.js +25 -0
  36. package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -0
  37. package/dist/handlers/message-handlers/auth-error-handler.d.ts +71 -0
  38. package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -0
  39. package/dist/handlers/message-handlers/auth-error-handler.js +30 -0
  40. package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -0
  41. package/dist/handlers/message-handlers/auth-message-handler.d.ts +18 -0
  42. package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -0
  43. package/dist/handlers/message-handlers/auth-message-handler.js +60 -0
  44. package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -0
  45. package/dist/handlers/message-handlers/auth-required-handler.d.ts +76 -0
  46. package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -0
  47. package/dist/handlers/message-handlers/auth-required-handler.js +23 -0
  48. package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -0
  49. package/dist/handlers/message-handlers/auth-success-handler.d.ts +18 -0
  50. package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -0
  51. package/dist/handlers/message-handlers/auth-success-handler.js +51 -0
  52. package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -0
  53. package/dist/handlers/message-handlers/base-handler.d.ts +55 -0
  54. package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -0
  55. package/dist/handlers/message-handlers/base-handler.js +83 -0
  56. package/dist/handlers/message-handlers/base-handler.js.map +1 -0
  57. package/dist/handlers/message-handlers/challenge-handler.d.ts +73 -0
  58. package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -0
  59. package/dist/handlers/message-handlers/challenge-handler.js +47 -0
  60. package/dist/handlers/message-handlers/challenge-handler.js.map +1 -0
  61. package/dist/handlers/message-handlers/error-message-handler.d.ts +76 -0
  62. package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -0
  63. package/dist/handlers/message-handlers/error-message-handler.js +29 -0
  64. package/dist/handlers/message-handlers/error-message-handler.js.map +1 -0
  65. package/dist/handlers/message-handlers/index.d.ts +28 -0
  66. package/dist/handlers/message-handlers/index.d.ts.map +1 -0
  67. package/dist/handlers/message-handlers/index.js +100 -0
  68. package/dist/handlers/message-handlers/index.js.map +1 -0
  69. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +122 -0
  70. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -0
  71. package/dist/handlers/message-handlers/list-rooms-response-handler.js +30 -0
  72. package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -0
  73. package/dist/handlers/message-handlers/ping-pong-handler.d.ts +104 -0
  74. package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -0
  75. package/dist/handlers/message-handlers/ping-pong-handler.js +36 -0
  76. package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -0
  77. package/dist/handlers/message-handlers/regular-message-handler.d.ts +56 -0
  78. package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -0
  79. package/dist/handlers/message-handlers/regular-message-handler.js +59 -0
  80. package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -0
  81. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +81 -0
  82. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -0
  83. package/dist/handlers/message-handlers/subscribe-response-handler.js +48 -0
  84. package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -0
  85. package/dist/handlers/message-handlers/task-response-handler.d.ts +14 -0
  86. package/dist/handlers/message-handlers/task-response-handler.d.ts.map +1 -0
  87. package/dist/handlers/message-handlers/task-response-handler.js +44 -0
  88. package/dist/handlers/message-handlers/task-response-handler.js.map +1 -0
  89. package/dist/handlers/message-handlers/types.d.ts +51 -0
  90. package/dist/handlers/message-handlers/types.d.ts.map +1 -0
  91. package/dist/handlers/message-handlers/types.js +7 -0
  92. package/dist/handlers/message-handlers/types.js.map +1 -0
  93. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +81 -0
  94. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -0
  95. package/dist/handlers/message-handlers/unsubscribe-response-handler.js +48 -0
  96. package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -0
  97. package/dist/handlers/webhook-handler.d.ts +202 -0
  98. package/dist/handlers/webhook-handler.d.ts.map +1 -0
  99. package/dist/handlers/webhook-handler.js +511 -0
  100. package/dist/handlers/webhook-handler.js.map +1 -0
  101. package/dist/index.d.ts +71 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +217 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/managers/agent-registry.d.ts +173 -0
  106. package/dist/managers/agent-registry.d.ts.map +1 -0
  107. package/dist/managers/agent-registry.js +310 -0
  108. package/dist/managers/agent-registry.js.map +1 -0
  109. package/dist/managers/connection-manager.d.ts +134 -0
  110. package/dist/managers/connection-manager.d.ts.map +1 -0
  111. package/dist/managers/connection-manager.js +176 -0
  112. package/dist/managers/connection-manager.js.map +1 -0
  113. package/dist/managers/index.d.ts +9 -0
  114. package/dist/managers/index.d.ts.map +1 -0
  115. package/dist/managers/index.js +16 -0
  116. package/dist/managers/index.js.map +1 -0
  117. package/dist/managers/message-router.d.ts +112 -0
  118. package/dist/managers/message-router.d.ts.map +1 -0
  119. package/dist/managers/message-router.js +260 -0
  120. package/dist/managers/message-router.js.map +1 -0
  121. package/dist/managers/room-manager.d.ts +165 -0
  122. package/dist/managers/room-manager.d.ts.map +1 -0
  123. package/dist/managers/room-manager.js +227 -0
  124. package/dist/managers/room-manager.js.map +1 -0
  125. package/dist/teneo-sdk.d.ts +703 -0
  126. package/dist/teneo-sdk.d.ts.map +1 -0
  127. package/dist/teneo-sdk.js +907 -0
  128. package/dist/teneo-sdk.js.map +1 -0
  129. package/dist/types/config.d.ts +1047 -0
  130. package/dist/types/config.d.ts.map +1 -0
  131. package/dist/types/config.js +720 -0
  132. package/dist/types/config.js.map +1 -0
  133. package/dist/types/error-codes.d.ts +29 -0
  134. package/dist/types/error-codes.d.ts.map +1 -0
  135. package/dist/types/error-codes.js +41 -0
  136. package/dist/types/error-codes.js.map +1 -0
  137. package/dist/types/events.d.ts +616 -0
  138. package/dist/types/events.d.ts.map +1 -0
  139. package/dist/types/events.js +261 -0
  140. package/dist/types/events.js.map +1 -0
  141. package/dist/types/health.d.ts +40 -0
  142. package/dist/types/health.d.ts.map +1 -0
  143. package/dist/types/health.js +6 -0
  144. package/dist/types/health.js.map +1 -0
  145. package/dist/types/index.d.ts +10 -0
  146. package/dist/types/index.d.ts.map +1 -0
  147. package/dist/types/index.js +123 -0
  148. package/dist/types/index.js.map +1 -0
  149. package/dist/types/messages.d.ts +3734 -0
  150. package/dist/types/messages.d.ts.map +1 -0
  151. package/dist/types/messages.js +482 -0
  152. package/dist/types/messages.js.map +1 -0
  153. package/dist/types/validation.d.ts +81 -0
  154. package/dist/types/validation.d.ts.map +1 -0
  155. package/dist/types/validation.js +115 -0
  156. package/dist/types/validation.js.map +1 -0
  157. package/dist/utils/bounded-queue.d.ts +127 -0
  158. package/dist/utils/bounded-queue.d.ts.map +1 -0
  159. package/dist/utils/bounded-queue.js +181 -0
  160. package/dist/utils/bounded-queue.js.map +1 -0
  161. package/dist/utils/circuit-breaker.d.ts +141 -0
  162. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  163. package/dist/utils/circuit-breaker.js +215 -0
  164. package/dist/utils/circuit-breaker.js.map +1 -0
  165. package/dist/utils/deduplication-cache.d.ts +110 -0
  166. package/dist/utils/deduplication-cache.d.ts.map +1 -0
  167. package/dist/utils/deduplication-cache.js +177 -0
  168. package/dist/utils/deduplication-cache.js.map +1 -0
  169. package/dist/utils/event-waiter.d.ts +101 -0
  170. package/dist/utils/event-waiter.d.ts.map +1 -0
  171. package/dist/utils/event-waiter.js +118 -0
  172. package/dist/utils/event-waiter.js.map +1 -0
  173. package/dist/utils/index.d.ts +51 -0
  174. package/dist/utils/index.d.ts.map +1 -0
  175. package/dist/utils/index.js +72 -0
  176. package/dist/utils/index.js.map +1 -0
  177. package/dist/utils/logger.d.ts +22 -0
  178. package/dist/utils/logger.d.ts.map +1 -0
  179. package/dist/utils/logger.js +91 -0
  180. package/dist/utils/logger.js.map +1 -0
  181. package/dist/utils/rate-limiter.d.ts +122 -0
  182. package/dist/utils/rate-limiter.d.ts.map +1 -0
  183. package/dist/utils/rate-limiter.js +190 -0
  184. package/dist/utils/rate-limiter.js.map +1 -0
  185. package/dist/utils/retry-policy.d.ts +191 -0
  186. package/dist/utils/retry-policy.d.ts.map +1 -0
  187. package/dist/utils/retry-policy.js +225 -0
  188. package/dist/utils/retry-policy.js.map +1 -0
  189. package/dist/utils/secure-private-key.d.ts +113 -0
  190. package/dist/utils/secure-private-key.d.ts.map +1 -0
  191. package/dist/utils/secure-private-key.js +188 -0
  192. package/dist/utils/secure-private-key.js.map +1 -0
  193. package/dist/utils/signature-verifier.d.ts +143 -0
  194. package/dist/utils/signature-verifier.d.ts.map +1 -0
  195. package/dist/utils/signature-verifier.js +238 -0
  196. package/dist/utils/signature-verifier.js.map +1 -0
  197. package/dist/utils/ssrf-validator.d.ts +36 -0
  198. package/dist/utils/ssrf-validator.d.ts.map +1 -0
  199. package/dist/utils/ssrf-validator.js +195 -0
  200. package/dist/utils/ssrf-validator.js.map +1 -0
  201. package/examples/.env.example +17 -0
  202. package/examples/basic-usage.ts +211 -0
  203. package/examples/production-dashboard/.env.example +153 -0
  204. package/examples/production-dashboard/package.json +39 -0
  205. package/examples/production-dashboard/public/dashboard.html +642 -0
  206. package/examples/production-dashboard/server.ts +753 -0
  207. package/examples/webhook-integration.ts +239 -0
  208. package/examples/x-influencer-battle-redesign.html +1065 -0
  209. package/examples/x-influencer-battle-server.ts +217 -0
  210. package/examples/x-influencer-battle.html +787 -0
  211. package/package.json +65 -0
  212. package/src/constants.ts +43 -0
  213. package/src/core/websocket-client.test.ts +512 -0
  214. package/src/core/websocket-client.ts +1056 -0
  215. package/src/formatters/response-formatter.test.ts +571 -0
  216. package/src/formatters/response-formatter.ts +677 -0
  217. package/src/handlers/message-handler-registry.ts +239 -0
  218. package/src/handlers/message-handlers/agent-selected-handler.ts +40 -0
  219. package/src/handlers/message-handlers/agents-list-handler.ts +26 -0
  220. package/src/handlers/message-handlers/auth-error-handler.ts +31 -0
  221. package/src/handlers/message-handlers/auth-message-handler.ts +66 -0
  222. package/src/handlers/message-handlers/auth-required-handler.ts +23 -0
  223. package/src/handlers/message-handlers/auth-success-handler.ts +57 -0
  224. package/src/handlers/message-handlers/base-handler.ts +101 -0
  225. package/src/handlers/message-handlers/challenge-handler.ts +57 -0
  226. package/src/handlers/message-handlers/error-message-handler.ts +27 -0
  227. package/src/handlers/message-handlers/index.ts +77 -0
  228. package/src/handlers/message-handlers/list-rooms-response-handler.ts +28 -0
  229. package/src/handlers/message-handlers/ping-pong-handler.ts +30 -0
  230. package/src/handlers/message-handlers/regular-message-handler.ts +65 -0
  231. package/src/handlers/message-handlers/subscribe-response-handler.ts +47 -0
  232. package/src/handlers/message-handlers/task-response-handler.ts +45 -0
  233. package/src/handlers/message-handlers/types.ts +77 -0
  234. package/src/handlers/message-handlers/unsubscribe-response-handler.ts +47 -0
  235. package/src/handlers/webhook-handler.test.ts +789 -0
  236. package/src/handlers/webhook-handler.ts +576 -0
  237. package/src/index.ts +269 -0
  238. package/src/managers/agent-registry.test.ts +466 -0
  239. package/src/managers/agent-registry.ts +347 -0
  240. package/src/managers/connection-manager.ts +195 -0
  241. package/src/managers/index.ts +9 -0
  242. package/src/managers/message-router.ts +349 -0
  243. package/src/managers/room-manager.ts +248 -0
  244. package/src/teneo-sdk.ts +1022 -0
  245. package/src/types/config.test.ts +325 -0
  246. package/src/types/config.ts +799 -0
  247. package/src/types/error-codes.ts +44 -0
  248. package/src/types/events.test.ts +302 -0
  249. package/src/types/events.ts +382 -0
  250. package/src/types/health.ts +46 -0
  251. package/src/types/index.ts +199 -0
  252. package/src/types/messages.test.ts +660 -0
  253. package/src/types/messages.ts +570 -0
  254. package/src/types/validation.ts +123 -0
  255. package/src/utils/bounded-queue.test.ts +356 -0
  256. package/src/utils/bounded-queue.ts +205 -0
  257. package/src/utils/circuit-breaker.test.ts +394 -0
  258. package/src/utils/circuit-breaker.ts +262 -0
  259. package/src/utils/deduplication-cache.test.ts +380 -0
  260. package/src/utils/deduplication-cache.ts +198 -0
  261. package/src/utils/event-waiter.test.ts +381 -0
  262. package/src/utils/event-waiter.ts +172 -0
  263. package/src/utils/index.ts +74 -0
  264. package/src/utils/logger.ts +87 -0
  265. package/src/utils/rate-limiter.test.ts +341 -0
  266. package/src/utils/rate-limiter.ts +211 -0
  267. package/src/utils/retry-policy.test.ts +558 -0
  268. package/src/utils/retry-policy.ts +272 -0
  269. package/src/utils/secure-private-key.test.ts +356 -0
  270. package/src/utils/secure-private-key.ts +205 -0
  271. package/src/utils/signature-verifier.test.ts +464 -0
  272. package/src/utils/signature-verifier.ts +298 -0
  273. package/src/utils/ssrf-validator.test.ts +372 -0
  274. package/src/utils/ssrf-validator.ts +224 -0
  275. package/tests/integration/real-server.test.ts +740 -0
  276. package/tests/integration/websocket.test.ts +381 -0
  277. package/tests/integration-setup.ts +16 -0
  278. package/tests/setup.ts +34 -0
  279. package/tsconfig.json +32 -0
  280. package/vitest.config.ts +42 -0
  281. package/vitest.integration.config.ts +23 -0
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Timeout constants for various SDK operations
3
+ */
4
+ export declare const TIMEOUTS: {
5
+ /** Wait time for cached auth response */
6
+ readonly CACHED_AUTH_WAIT: 1000;
7
+ /** WebSocket ping interval */
8
+ readonly PING_INTERVAL: 30000;
9
+ /** Default message response timeout */
10
+ readonly DEFAULT_MESSAGE_TIMEOUT: 30000;
11
+ /** Authentication timeout */
12
+ readonly AUTH_TIMEOUT: 30000;
13
+ /** Initial connection timeout */
14
+ readonly CONNECTION_TIMEOUT: 30000;
15
+ /** Webhook delivery timeout */
16
+ readonly WEBHOOK_TIMEOUT: 10000;
17
+ /** Auth state polling interval */
18
+ readonly AUTH_POLL_INTERVAL: 100;
19
+ };
20
+ /**
21
+ * Retry and backoff constants
22
+ */
23
+ export declare const RETRY: {
24
+ /** Base delay for exponential backoff */
25
+ readonly BASE_DELAY: 1000;
26
+ /** Maximum retry delay */
27
+ readonly MAX_DELAY: 30000;
28
+ /** Maximum webhook retry delay */
29
+ readonly MAX_WEBHOOK_DELAY: 30000;
30
+ /** Maximum reconnection delay */
31
+ readonly MAX_RECONNECT_DELAY: 60000;
32
+ };
33
+ /**
34
+ * Limits and constraints
35
+ */
36
+ export declare const LIMITS: {
37
+ /** Maximum message size (2MB) */
38
+ readonly MAX_MESSAGE_SIZE: number;
39
+ /** Random jitter for reconnection */
40
+ readonly MAX_JITTER: 1000;
41
+ };
42
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,yCAAyC;;IAEzC,8BAA8B;;IAE9B,uCAAuC;;IAEvC,6BAA6B;;IAE7B,iCAAiC;;IAEjC,+BAA+B;;IAE/B,kCAAkC;;CAE1B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,KAAK;IAChB,yCAAyC;;IAEzC,0BAA0B;;IAE1B,kCAAkC;;IAElC,iCAAiC;;CAEzB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB,iCAAiC;;IAEjC,qCAAqC;;CAE7B,CAAC"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LIMITS = exports.RETRY = exports.TIMEOUTS = void 0;
4
+ /**
5
+ * Timeout constants for various SDK operations
6
+ */
7
+ exports.TIMEOUTS = {
8
+ /** Wait time for cached auth response */
9
+ CACHED_AUTH_WAIT: 1000,
10
+ /** WebSocket ping interval */
11
+ PING_INTERVAL: 30000,
12
+ /** Default message response timeout */
13
+ DEFAULT_MESSAGE_TIMEOUT: 30000,
14
+ /** Authentication timeout */
15
+ AUTH_TIMEOUT: 30000,
16
+ /** Initial connection timeout */
17
+ CONNECTION_TIMEOUT: 30000,
18
+ /** Webhook delivery timeout */
19
+ WEBHOOK_TIMEOUT: 10000,
20
+ /** Auth state polling interval */
21
+ AUTH_POLL_INTERVAL: 100
22
+ };
23
+ /**
24
+ * Retry and backoff constants
25
+ */
26
+ exports.RETRY = {
27
+ /** Base delay for exponential backoff */
28
+ BASE_DELAY: 1000,
29
+ /** Maximum retry delay */
30
+ MAX_DELAY: 30000,
31
+ /** Maximum webhook retry delay */
32
+ MAX_WEBHOOK_DELAY: 30000,
33
+ /** Maximum reconnection delay */
34
+ MAX_RECONNECT_DELAY: 60000
35
+ };
36
+ /**
37
+ * Limits and constraints
38
+ */
39
+ exports.LIMITS = {
40
+ /** Maximum message size (2MB) */
41
+ MAX_MESSAGE_SIZE: 2 * 1024 * 1024,
42
+ /** Random jitter for reconnection */
43
+ MAX_JITTER: 1000
44
+ };
45
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,QAAQ,GAAG;IACtB,yCAAyC;IACzC,gBAAgB,EAAE,IAAI;IACtB,8BAA8B;IAC9B,aAAa,EAAE,KAAM;IACrB,uCAAuC;IACvC,uBAAuB,EAAE,KAAM;IAC/B,6BAA6B;IAC7B,YAAY,EAAE,KAAM;IACpB,iCAAiC;IACjC,kBAAkB,EAAE,KAAM;IAC1B,+BAA+B;IAC/B,eAAe,EAAE,KAAM;IACvB,kCAAkC;IAClC,kBAAkB,EAAE,GAAG;CACf,CAAC;AAEX;;GAEG;AACU,QAAA,KAAK,GAAG;IACnB,yCAAyC;IACzC,UAAU,EAAE,IAAI;IAChB,0BAA0B;IAC1B,SAAS,EAAE,KAAM;IACjB,kCAAkC;IAClC,iBAAiB,EAAE,KAAM;IACzB,iCAAiC;IACjC,mBAAmB,EAAE,KAAM;CACnB,CAAC;AAEX;;GAEG;AACU,QAAA,MAAM,GAAG;IACpB,iCAAiC;IACjC,gBAAgB,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;IACjC,qCAAqC;IACrC,UAAU,EAAE,IAAI;CACR,CAAC"}
@@ -0,0 +1,261 @@
1
+ /**
2
+ * WebSocket client implementation for Teneo Protocol SDK
3
+ * Handles connection, authentication, and message management with Zod validation
4
+ */
5
+ import { EventEmitter } from "eventemitter3";
6
+ import { SDKConfig, ConnectionState, AuthenticationState, BaseMessage } from "../types";
7
+ import { SDKEvents } from "../types/events";
8
+ export declare class WebSocketClient extends EventEmitter<SDKEvents> {
9
+ private ws?;
10
+ private config;
11
+ private logger;
12
+ private account?;
13
+ private secureKey?;
14
+ private ownsSecureKey;
15
+ private handlerRegistry;
16
+ private rateLimiter?;
17
+ private signatureVerifier?;
18
+ private deduplicationCache?;
19
+ private reconnectPolicy;
20
+ private roomManager?;
21
+ private connectionState;
22
+ private authState;
23
+ private messageQueue;
24
+ private pendingMessages;
25
+ private reconnectTimer?;
26
+ private pingTimer?;
27
+ private connectionTimer?;
28
+ constructor(config: SDKConfig);
29
+ /**
30
+ * Set the RoomManager instance for handler context
31
+ * Called by TeneoSDK after initialization
32
+ */
33
+ setRoomManager(roomManager: any): void;
34
+ /**
35
+ * Establishes a WebSocket connection to the Teneo server.
36
+ * Handles connection timeout, authentication challenge-response flow,
37
+ * and automatic message queue processing after successful connection.
38
+ * Emits 'connection:open', 'auth:challenge', 'auth:success', and 'ready' events.
39
+ *
40
+ * @returns Promise that resolves when connection and authentication are complete
41
+ * @throws {TimeoutError} If connection times out (default: 30 seconds)
42
+ * @throws {ConnectionError} If WebSocket connection fails
43
+ * @throws {AuthenticationError} If authentication fails or times out
44
+ *
45
+ * @example
46
+ * ```typescript
47
+ * const wsClient = new WebSocketClient(config);
48
+ * await wsClient.connect();
49
+ * console.log('Connected and authenticated');
50
+ * ```
51
+ */
52
+ connect(): Promise<void>;
53
+ /**
54
+ * Disconnects from the WebSocket server and cleans up all resources.
55
+ * Stops reconnection attempts, clears all timers, rejects pending messages,
56
+ * and updates connection state. Emits 'disconnect' event.
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * wsClient.disconnect();
61
+ * console.log('Disconnected from server');
62
+ * ```
63
+ */
64
+ disconnect(): void;
65
+ /**
66
+ * Sends a message to the WebSocket server with validation and queueing support.
67
+ * Validates message with Zod schema, enforces size limits, and queues messages
68
+ * during reconnection. Adds timestamp if not present. Emits 'message:sent' event.
69
+ *
70
+ * @param message - The message to send
71
+ * @returns Promise that resolves when message is sent successfully
72
+ * @throws {ValidationError} If message fails Zod validation
73
+ * @throws {MessageError} If message size exceeds limit
74
+ * @throws {ConnectionError} If not connected and reconnection is disabled
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const message = createUserMessage('Hello', 'general', walletAddress);
79
+ * await wsClient.sendMessage(message);
80
+ * console.log('Message sent');
81
+ * ```
82
+ */
83
+ sendMessage(message: BaseMessage): Promise<void>;
84
+ /**
85
+ * Sends a message and waits for a response with the same message ID.
86
+ * Implements request-response pattern over WebSocket with timeout support.
87
+ * Message is automatically assigned a unique ID for correlation.
88
+ *
89
+ * @template T - Expected response type
90
+ * @param message - The message to send
91
+ * @param timeout - Optional timeout in milliseconds (default: from config or 60000)
92
+ * @returns Promise that resolves with the response message
93
+ * @throws {TimeoutError} If response is not received within timeout
94
+ * @throws {ValidationError} If message fails validation
95
+ * @throws {MessageError} If message sending fails
96
+ *
97
+ * @example
98
+ * ```typescript
99
+ * const requestMessage = createRequestChallenge('user', walletAddress);
100
+ * const response = await wsClient.sendMessageWithResponse(requestMessage, 30000);
101
+ * console.log('Response received:', response);
102
+ * ```
103
+ */
104
+ sendMessageWithResponse<T = any>(message: BaseMessage, timeout?: number): Promise<T>;
105
+ /**
106
+ * Authenticate with the server
107
+ */
108
+ private authenticate;
109
+ /**
110
+ * Create handler context with all dependencies
111
+ */
112
+ private createHandlerContext;
113
+ /**
114
+ * Handle incoming messages using the handler registry
115
+ */
116
+ private handleMessage;
117
+ /**
118
+ * Verify message signature if signature verification is enabled (SEC-2)
119
+ * Returns true if message should be processed, false if it should be rejected
120
+ */
121
+ private verifyMessageSignature;
122
+ /**
123
+ * Handle reconnection logic with configurable retry strategy (REL-3)
124
+ */
125
+ private handleReconnection;
126
+ /**
127
+ * Calculate reconnection delay using retry policy (REL-3)
128
+ */
129
+ private calculateReconnectDelay;
130
+ /**
131
+ * Start ping interval to keep connection alive
132
+ */
133
+ private startPingInterval;
134
+ /**
135
+ * Stop ping interval
136
+ */
137
+ private stopPingInterval;
138
+ /**
139
+ * Process queued messages after reconnection
140
+ */
141
+ private processMessageQueue;
142
+ /**
143
+ * Update connection state with validation
144
+ */
145
+ private updateConnectionState;
146
+ /**
147
+ * Update authentication state with validation
148
+ */
149
+ private updateAuthState;
150
+ /**
151
+ * Create default logger using pino
152
+ */
153
+ private createDefaultLogger;
154
+ /**
155
+ * Quick check for whether the WebSocket connection is currently active.
156
+ * This getter provides immediate connection status without full state details.
157
+ *
158
+ * @returns True if WebSocket is connected, false otherwise
159
+ *
160
+ * @example
161
+ * ```typescript
162
+ * if (wsClient.isConnected) {
163
+ * await wsClient.sendMessage(message);
164
+ * }
165
+ * ```
166
+ */
167
+ get isConnected(): boolean;
168
+ /**
169
+ * Quick check for whether authentication is complete.
170
+ * This getter provides immediate authentication status without full state details.
171
+ *
172
+ * @returns True if authenticated, false otherwise
173
+ *
174
+ * @example
175
+ * ```typescript
176
+ * if (wsClient.isAuthenticated) {
177
+ * console.log('Ready to communicate with agents');
178
+ * }
179
+ * ```
180
+ */
181
+ get isAuthenticated(): boolean;
182
+ /**
183
+ * Gets a copy of the current connection state including detailed status information.
184
+ * Returns a shallow copy to prevent external modification of internal state.
185
+ *
186
+ * @returns Copy of connection state with connection status, reconnection info, and timestamps
187
+ *
188
+ * @example
189
+ * ```typescript
190
+ * const state = wsClient.getConnectionState();
191
+ * console.log(`Connected: ${state.connected}`);
192
+ * console.log(`Reconnecting: ${state.reconnecting}`);
193
+ * console.log(`Attempts: ${state.reconnectAttempts}`);
194
+ * ```
195
+ */
196
+ getConnectionState(): ConnectionState;
197
+ /**
198
+ * Gets a copy of the current authentication state including wallet and room information.
199
+ * Returns a shallow copy to prevent external modification of internal state.
200
+ *
201
+ * @returns Copy of authentication state with wallet address, challenge, and room access
202
+ *
203
+ * @example
204
+ * ```typescript
205
+ * const authState = wsClient.getAuthState();
206
+ * console.log(`Authenticated: ${authState.authenticated}`);
207
+ * console.log(`Wallet: ${authState.walletAddress}`);
208
+ * console.log(`Rooms: ${authState.rooms?.length}`);
209
+ * ```
210
+ */
211
+ getAuthState(): AuthenticationState;
212
+ /**
213
+ * Gets the current rate limiter status including available tokens and configuration.
214
+ * Useful for monitoring rate limiting behavior and detecting potential throttling.
215
+ * Returns undefined if rate limiting is not configured.
216
+ *
217
+ * @returns Rate limiter status object, or undefined if not configured
218
+ * @returns {number} returns.availableTokens - Tokens currently available for consumption
219
+ * @returns {number} returns.tokensPerSecond - Configured rate limit (operations per second)
220
+ * @returns {number} returns.maxBurst - Maximum burst capacity
221
+ *
222
+ * @example
223
+ * ```typescript
224
+ * const status = wsClient.getRateLimiterStatus();
225
+ * if (status) {
226
+ * console.log(`Available: ${status.availableTokens}/${status.maxBurst}`);
227
+ * console.log(`Rate: ${status.tokensPerSecond}/sec`);
228
+ * }
229
+ * ```
230
+ */
231
+ getRateLimiterStatus(): {
232
+ availableTokens: number;
233
+ tokensPerSecond: number;
234
+ maxBurst: number;
235
+ } | undefined;
236
+ /**
237
+ * Gets the current message deduplication cache status (CB-4).
238
+ * Useful for monitoring deduplication behavior and cache health.
239
+ * Returns undefined if deduplication is not configured.
240
+ *
241
+ * @returns Deduplication cache status object, or undefined if not configured
242
+ * @returns {number} returns.cacheSize - Number of message IDs currently cached
243
+ * @returns {number} returns.ttl - Time-to-live for cache entries in milliseconds
244
+ * @returns {number} returns.maxSize - Maximum cache size
245
+ *
246
+ * @example
247
+ * ```typescript
248
+ * const status = wsClient.getDeduplicationStatus();
249
+ * if (status) {
250
+ * console.log(`Cache: ${status.cacheSize}/${status.maxSize}`);
251
+ * console.log(`TTL: ${status.ttl}ms`);
252
+ * }
253
+ * ```
254
+ */
255
+ getDeduplicationStatus(): {
256
+ cacheSize: number;
257
+ ttl: number;
258
+ maxSize: number;
259
+ } | undefined;
260
+ }
261
+ //# sourceMappingURL=websocket-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-client.d.ts","sourceRoot":"","sources":["../../src/core/websocket-client.ts"],"names":[],"mappings":"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"}