@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,227 @@
1
+ "use strict";
2
+ /**
3
+ * RoomManager - Manages room state and operations
4
+ * Handles joining, leaving, and tracking rooms
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RoomManager = void 0;
8
+ const eventemitter3_1 = require("eventemitter3");
9
+ const types_1 = require("../types");
10
+ const events_1 = require("../types/events");
11
+ const error_codes_1 = require("../types/error-codes");
12
+ const validation_1 = require("../types/validation");
13
+ class RoomManager extends eventemitter3_1.EventEmitter {
14
+ constructor(wsClient, logger) {
15
+ super();
16
+ this.rooms = new Map();
17
+ this.subscribedRooms = new Set();
18
+ this.wsClient = wsClient;
19
+ this.logger = logger;
20
+ }
21
+ /**
22
+ * Subscribes to a public room in the Teneo network.
23
+ * Validates room ID and sends subscribe message to the server.
24
+ * The actual subscription state is updated when the server confirms via room:subscribed event.
25
+ *
26
+ * @param roomId - The ID of the room to subscribe to
27
+ * @returns Promise that resolves when subscribed
28
+ * @throws {SDKError} If not connected to the network
29
+ * @throws {ValidationError} If roomId is empty or invalid
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * await roomManager.subscribeToRoom('general');
34
+ * console.log('Subscription request sent to general room');
35
+ * ```
36
+ */
37
+ async subscribeToRoom(roomId) {
38
+ if (!this.wsClient.isConnected) {
39
+ throw new events_1.SDKError("Not connected to Teneo network", error_codes_1.ErrorCode.NOT_CONNECTED);
40
+ }
41
+ // Validate room ID
42
+ const validatedRoomId = validation_1.RoomIdSchema.parse(roomId);
43
+ this.logger.info("RoomManager: Subscribing to room", { roomId: validatedRoomId });
44
+ const message = (0, types_1.createSubscribe)(validatedRoomId);
45
+ await this.wsClient.sendMessage(message);
46
+ }
47
+ /**
48
+ * Unsubscribes from a room in the Teneo network.
49
+ * Validates room ID and sends unsubscribe message to the server.
50
+ * The actual subscription state is updated when the server confirms via room:unsubscribed event.
51
+ *
52
+ * @param roomId - The ID of the room to unsubscribe from
53
+ * @returns Promise that resolves when unsubscribed
54
+ * @throws {SDKError} If not connected to the network
55
+ * @throws {ValidationError} If roomId is empty or invalid
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * await roomManager.unsubscribeFromRoom('general');
60
+ * console.log('Unsubscription request sent for general room');
61
+ * ```
62
+ */
63
+ async unsubscribeFromRoom(roomId) {
64
+ if (!this.wsClient.isConnected) {
65
+ throw new events_1.SDKError("Not connected to Teneo network", error_codes_1.ErrorCode.NOT_CONNECTED);
66
+ }
67
+ // Validate room ID
68
+ const validatedRoomId = validation_1.RoomIdSchema.parse(roomId);
69
+ this.logger.info("RoomManager: Unsubscribing from room", { roomId: validatedRoomId });
70
+ const message = (0, types_1.createUnsubscribe)(validatedRoomId);
71
+ await this.wsClient.sendMessage(message);
72
+ }
73
+ /**
74
+ * Updates the subscription state from server response.
75
+ * This is the authoritative source of which rooms you're subscribed to.
76
+ * Called internally when receiving subscribe/unsubscribe responses.
77
+ *
78
+ * @internal
79
+ * @param subscriptions - Array of room IDs from server response
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * // Internal SDK usage
84
+ * roomManager.updateSubscriptions(['general', 'support', 'trading']);
85
+ * ```
86
+ */
87
+ updateSubscriptions(subscriptions) {
88
+ this.subscribedRooms.clear();
89
+ subscriptions.forEach(roomId => this.subscribedRooms.add(roomId));
90
+ this.logger.debug("RoomManager: Subscriptions updated", {
91
+ count: subscriptions.length,
92
+ rooms: subscriptions
93
+ });
94
+ }
95
+ /**
96
+ * Gets all rooms currently subscribed to.
97
+ * Returns array of room IDs that you're actively listening to.
98
+ *
99
+ * @returns Array of subscribed room IDs
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * const rooms = roomManager.getSubscribedRooms();
104
+ * console.log(`Subscribed to ${rooms.length} rooms:`, rooms);
105
+ * ```
106
+ */
107
+ getSubscribedRooms() {
108
+ return Array.from(this.subscribedRooms);
109
+ }
110
+ /**
111
+ * Gets a list of all available rooms.
112
+ * Returns rooms the user has access to based on authentication.
113
+ * Returns a read-only array with defensive copies to prevent external modification.
114
+ *
115
+ * @returns Read-only array of room copies
116
+ *
117
+ * @example
118
+ * ```typescript
119
+ * const rooms = roomManager.getRooms();
120
+ * rooms.forEach(room => console.log(`${room.id}: ${room.name}`));
121
+ * ```
122
+ */
123
+ getRooms() {
124
+ return Array.from(this.rooms.values()).map((room) => ({ ...room }));
125
+ }
126
+ /**
127
+ * Gets a specific room by its ID.
128
+ * Returns a defensive copy to prevent external modification of room state.
129
+ * Returns undefined if room doesn't exist or user doesn't have access.
130
+ *
131
+ * @param roomId - The ID of the room to retrieve
132
+ * @returns Copy of the room object if found, undefined otherwise
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * const room = roomManager.getRoom('general');
137
+ * if (room) {
138
+ * console.log(`Room: ${room.name}`);
139
+ * console.log(`Members: ${room.members?.length ?? 0}`);
140
+ * }
141
+ * ```
142
+ */
143
+ getRoom(roomId) {
144
+ const room = this.rooms.get(roomId);
145
+ return room ? { ...room } : undefined;
146
+ }
147
+ /**
148
+ * Fetches the list of rooms from the server.
149
+ * Sends list_rooms message and waits for response from server.
150
+ * Returns array of rooms the user owns or has access to.
151
+ *
152
+ * @returns Promise that resolves to array of room information
153
+ * @throws {SDKError} If not connected to the network
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const rooms = await roomManager.listRooms();
158
+ * rooms.forEach(room => {
159
+ * console.log(`${room.name} (${room.is_public ? 'public' : 'private'})`);
160
+ * console.log(`Owner: ${room.is_owner}`);
161
+ * });
162
+ * ```
163
+ */
164
+ async listRooms() {
165
+ if (!this.wsClient.isConnected) {
166
+ throw new events_1.SDKError("Not connected to Teneo network", error_codes_1.ErrorCode.NOT_CONNECTED);
167
+ }
168
+ this.logger.info("RoomManager: Listing rooms");
169
+ const message = (0, types_1.createListRooms)();
170
+ await this.wsClient.sendMessage(message);
171
+ // Room list will be received via list_rooms response handler
172
+ // For now, return empty array as this is async
173
+ // TODO: Implement response waiting mechanism
174
+ return [];
175
+ }
176
+ /**
177
+ * Updates the room list from authentication state.
178
+ * Called internally after successful authentication to populate accessible rooms.
179
+ *
180
+ * @internal This method is for internal SDK use
181
+ * @param rooms - Array of rooms to update in the manager
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * // Internal SDK usage after auth
186
+ * roomManager.updateRoomsFromAuth(authState.roomObjects);
187
+ * ```
188
+ */
189
+ updateRoomsFromAuth(rooms) {
190
+ this.logger.debug("RoomManager: Updating rooms from auth", { count: rooms.length });
191
+ for (const room of rooms) {
192
+ this.rooms.set(room.id, room);
193
+ }
194
+ }
195
+ /**
196
+ * Clears all rooms from the manager.
197
+ * Clears subscription state.
198
+ *
199
+ * @example
200
+ * ```typescript
201
+ * roomManager.clear();
202
+ * console.log('All rooms cleared');
203
+ * ```
204
+ */
205
+ clear() {
206
+ this.rooms.clear();
207
+ this.subscribedRooms.clear();
208
+ }
209
+ /**
210
+ * Destroys the room manager and cleans up resources.
211
+ * Clears all rooms and removes all event listeners.
212
+ * After destruction, the manager cannot be reused.
213
+ *
214
+ * @example
215
+ * ```typescript
216
+ * roomManager.destroy();
217
+ * console.log('Room manager destroyed');
218
+ * ```
219
+ */
220
+ destroy() {
221
+ this.logger.info("RoomManager: Destroying");
222
+ this.clear();
223
+ this.removeAllListeners();
224
+ }
225
+ }
226
+ exports.RoomManager = RoomManager;
227
+ //# sourceMappingURL=room-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"room-manager.js","sourceRoot":"","sources":["../../src/managers/room-manager.ts"],"names":[],"mappings":"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"}