@teneo-protocol/sdk 1.0.1 → 2.2.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 (352) hide show
  1. package/.eslintrc.json +11 -2
  2. package/.github/CODEOWNERS +2 -0
  3. package/.github/ISSUE_TEMPLATE/01-bug.yml +85 -0
  4. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  5. package/.github/ISSUE_TEMPLATE/feature_request.md +22 -0
  6. package/.github/workflows/claude-code-review.yml +8 -3
  7. package/.github/workflows/claude-reviewer.yml +6 -4
  8. package/.github/workflows/publish-npm.yml +9 -6
  9. package/.github/workflows/push-to-main.yml +1 -1
  10. package/.github/workflows/top-issue.yml +102 -0
  11. package/CHANGELOG.md +334 -0
  12. package/CONCEPTS.md +747 -0
  13. package/README.md +577 -54
  14. package/dist/constants.js +8 -8
  15. package/dist/constants.js.map +1 -1
  16. package/dist/core/websocket-client.d.ts +25 -1
  17. package/dist/core/websocket-client.d.ts.map +1 -1
  18. package/dist/core/websocket-client.js +74 -15
  19. package/dist/core/websocket-client.js.map +1 -1
  20. package/dist/formatters/response-formatter.js +4 -0
  21. package/dist/formatters/response-formatter.js.map +1 -1
  22. package/dist/handlers/message-handler-registry.js +2 -1
  23. package/dist/handlers/message-handler-registry.js.map +1 -1
  24. package/dist/handlers/message-handlers/agent-details-response-handler.d.ts +1666 -0
  25. package/dist/handlers/message-handlers/agent-details-response-handler.d.ts.map +1 -0
  26. package/dist/handlers/message-handlers/agent-details-response-handler.js +38 -0
  27. package/dist/handlers/message-handlers/agent-details-response-handler.js.map +1 -0
  28. package/dist/handlers/message-handlers/agent-room-operation-response-handler.d.ts +76 -0
  29. package/dist/handlers/message-handlers/agent-room-operation-response-handler.d.ts.map +1 -0
  30. package/dist/handlers/message-handlers/agent-room-operation-response-handler.js +67 -0
  31. package/dist/handlers/message-handlers/agent-room-operation-response-handler.js.map +1 -0
  32. package/dist/handlers/message-handlers/agent-selected-handler.d.ts +92 -38
  33. package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -1
  34. package/dist/handlers/message-handlers/agent-selected-handler.js +2 -5
  35. package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -1
  36. package/dist/handlers/message-handlers/agent-status-update-handler.d.ts +1687 -0
  37. package/dist/handlers/message-handlers/agent-status-update-handler.d.ts.map +1 -0
  38. package/dist/handlers/message-handlers/agent-status-update-handler.js +48 -0
  39. package/dist/handlers/message-handlers/agent-status-update-handler.js.map +1 -0
  40. package/dist/handlers/message-handlers/agents-list-handler.js +2 -5
  41. package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -1
  42. package/dist/handlers/message-handlers/all-agents-response-handler.d.ts +439 -0
  43. package/dist/handlers/message-handlers/all-agents-response-handler.d.ts.map +1 -0
  44. package/dist/handlers/message-handlers/all-agents-response-handler.js +36 -0
  45. package/dist/handlers/message-handlers/all-agents-response-handler.js.map +1 -0
  46. package/dist/handlers/message-handlers/auth-error-handler.d.ts +45 -31
  47. package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -1
  48. package/dist/handlers/message-handlers/auth-error-handler.js +2 -5
  49. package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -1
  50. package/dist/handlers/message-handlers/auth-message-handler.d.ts +6 -0
  51. package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -1
  52. package/dist/handlers/message-handlers/auth-message-handler.js +71 -10
  53. package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -1
  54. package/dist/handlers/message-handlers/auth-required-handler.d.ts +49 -31
  55. package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -1
  56. package/dist/handlers/message-handlers/auth-required-handler.js +2 -5
  57. package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -1
  58. package/dist/handlers/message-handlers/auth-success-handler.d.ts +6 -0
  59. package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -1
  60. package/dist/handlers/message-handlers/auth-success-handler.js +52 -9
  61. package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -1
  62. package/dist/handlers/message-handlers/base-handler.d.ts +4 -4
  63. package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -1
  64. package/dist/handlers/message-handlers/base-handler.js +3 -1
  65. package/dist/handlers/message-handlers/base-handler.js.map +1 -1
  66. package/dist/handlers/message-handlers/challenge-handler.d.ts +45 -31
  67. package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -1
  68. package/dist/handlers/message-handlers/challenge-handler.js +3 -2
  69. package/dist/handlers/message-handlers/challenge-handler.js.map +1 -1
  70. package/dist/handlers/message-handlers/error-message-handler.d.ts +49 -31
  71. package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -1
  72. package/dist/handlers/message-handlers/error-message-handler.js +2 -5
  73. package/dist/handlers/message-handlers/error-message-handler.js.map +1 -1
  74. package/dist/handlers/message-handlers/index.d.ts +11 -0
  75. package/dist/handlers/message-handlers/index.d.ts.map +1 -1
  76. package/dist/handlers/message-handlers/index.js +55 -1
  77. package/dist/handlers/message-handlers/index.js.map +1 -1
  78. package/dist/handlers/message-handlers/list-available-agents-handler.d.ts +1660 -0
  79. package/dist/handlers/message-handlers/list-available-agents-handler.d.ts.map +1 -0
  80. package/dist/handlers/message-handlers/list-available-agents-handler.js +35 -0
  81. package/dist/handlers/message-handlers/list-available-agents-handler.js.map +1 -0
  82. package/dist/handlers/message-handlers/list-room-agents-handler.d.ts +1669 -0
  83. package/dist/handlers/message-handlers/list-room-agents-handler.d.ts.map +1 -0
  84. package/dist/handlers/message-handlers/list-room-agents-handler.js +48 -0
  85. package/dist/handlers/message-handlers/list-room-agents-handler.js.map +1 -0
  86. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +2 -110
  87. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -1
  88. package/dist/handlers/message-handlers/list-rooms-response-handler.js +4 -6
  89. package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -1
  90. package/dist/handlers/message-handlers/ping-pong-handler.d.ts +62 -58
  91. package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -1
  92. package/dist/handlers/message-handlers/ping-pong-handler.js +4 -10
  93. package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -1
  94. package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts +94 -0
  95. package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts.map +1 -0
  96. package/dist/handlers/message-handlers/rate-limit-notification-handler.js +35 -0
  97. package/dist/handlers/message-handlers/rate-limit-notification-handler.js.map +1 -0
  98. package/dist/handlers/message-handlers/regular-message-handler.d.ts +31 -29
  99. package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -1
  100. package/dist/handlers/message-handlers/regular-message-handler.js +4 -6
  101. package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -1
  102. package/dist/handlers/message-handlers/room-operation-response-handler.d.ts +328 -0
  103. package/dist/handlers/message-handlers/room-operation-response-handler.d.ts.map +1 -0
  104. package/dist/handlers/message-handlers/room-operation-response-handler.js +89 -0
  105. package/dist/handlers/message-handlers/room-operation-response-handler.js.map +1 -0
  106. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +53 -31
  107. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -1
  108. package/dist/handlers/message-handlers/subscribe-response-handler.js +4 -6
  109. package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -1
  110. package/dist/handlers/message-handlers/task-quote-handler.d.ts +14 -0
  111. package/dist/handlers/message-handlers/task-quote-handler.d.ts.map +1 -0
  112. package/dist/handlers/message-handlers/task-quote-handler.js +29 -0
  113. package/dist/handlers/message-handlers/task-quote-handler.js.map +1 -0
  114. package/dist/handlers/message-handlers/task-response-handler.js +2 -5
  115. package/dist/handlers/message-handlers/task-response-handler.js.map +1 -1
  116. package/dist/handlers/message-handlers/types.d.ts +21 -7
  117. package/dist/handlers/message-handlers/types.d.ts.map +1 -1
  118. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +53 -31
  119. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -1
  120. package/dist/handlers/message-handlers/unsubscribe-response-handler.js +4 -6
  121. package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -1
  122. package/dist/handlers/message-handlers/user-authenticated-handler.d.ts +40 -0
  123. package/dist/handlers/message-handlers/user-authenticated-handler.d.ts.map +1 -0
  124. package/dist/handlers/message-handlers/user-authenticated-handler.js +28 -0
  125. package/dist/handlers/message-handlers/user-authenticated-handler.js.map +1 -0
  126. package/dist/handlers/message-handlers/user-count-handler.d.ts +49 -0
  127. package/dist/handlers/message-handlers/user-count-handler.d.ts.map +1 -0
  128. package/dist/handlers/message-handlers/user-count-handler.js +31 -0
  129. package/dist/handlers/message-handlers/user-count-handler.js.map +1 -0
  130. package/dist/handlers/webhook-handler.d.ts +1 -1
  131. package/dist/handlers/webhook-handler.d.ts.map +1 -1
  132. package/dist/handlers/webhook-handler.js +14 -5
  133. package/dist/handlers/webhook-handler.js.map +1 -1
  134. package/dist/index.d.ts +6 -1
  135. package/dist/index.d.ts.map +1 -1
  136. package/dist/index.js +19 -2
  137. package/dist/index.js.map +1 -1
  138. package/dist/managers/admin-manager.d.ts +116 -0
  139. package/dist/managers/admin-manager.d.ts.map +1 -0
  140. package/dist/managers/admin-manager.js +169 -0
  141. package/dist/managers/admin-manager.js.map +1 -0
  142. package/dist/managers/agent-registry.d.ts +52 -1
  143. package/dist/managers/agent-registry.d.ts.map +1 -1
  144. package/dist/managers/agent-registry.js +145 -6
  145. package/dist/managers/agent-registry.js.map +1 -1
  146. package/dist/managers/agent-room-manager.d.ts +216 -0
  147. package/dist/managers/agent-room-manager.d.ts.map +1 -0
  148. package/dist/managers/agent-room-manager.js +555 -0
  149. package/dist/managers/agent-room-manager.js.map +1 -0
  150. package/dist/managers/connection-manager.js +2 -0
  151. package/dist/managers/connection-manager.js.map +1 -1
  152. package/dist/managers/index.d.ts +4 -1
  153. package/dist/managers/index.d.ts.map +1 -1
  154. package/dist/managers/index.js +7 -1
  155. package/dist/managers/index.js.map +1 -1
  156. package/dist/managers/message-router.d.ts +56 -5
  157. package/dist/managers/message-router.d.ts.map +1 -1
  158. package/dist/managers/message-router.js +155 -8
  159. package/dist/managers/message-router.js.map +1 -1
  160. package/dist/managers/room-management-manager.d.ts +213 -0
  161. package/dist/managers/room-management-manager.d.ts.map +1 -0
  162. package/dist/managers/room-management-manager.js +442 -0
  163. package/dist/managers/room-management-manager.js.map +1 -0
  164. package/dist/managers/room-manager.d.ts +11 -9
  165. package/dist/managers/room-manager.d.ts.map +1 -1
  166. package/dist/managers/room-manager.js +14 -10
  167. package/dist/managers/room-manager.js.map +1 -1
  168. package/dist/payments/index.d.ts +5 -0
  169. package/dist/payments/index.d.ts.map +1 -0
  170. package/dist/payments/index.js +21 -0
  171. package/dist/payments/index.js.map +1 -0
  172. package/dist/payments/payment-client.d.ts +74 -0
  173. package/dist/payments/payment-client.d.ts.map +1 -0
  174. package/dist/payments/payment-client.js +207 -0
  175. package/dist/payments/payment-client.js.map +1 -0
  176. package/dist/teneo-sdk.d.ts +467 -33
  177. package/dist/teneo-sdk.d.ts.map +1 -1
  178. package/dist/teneo-sdk.js +735 -26
  179. package/dist/teneo-sdk.js.map +1 -1
  180. package/dist/types/categories.d.ts +22 -0
  181. package/dist/types/categories.d.ts.map +1 -0
  182. package/dist/types/categories.js +40 -0
  183. package/dist/types/categories.js.map +1 -0
  184. package/dist/types/config.d.ts +134 -54
  185. package/dist/types/config.d.ts.map +1 -1
  186. package/dist/types/config.js +70 -9
  187. package/dist/types/config.js.map +1 -1
  188. package/dist/types/error-codes.d.ts +10 -0
  189. package/dist/types/error-codes.d.ts.map +1 -1
  190. package/dist/types/error-codes.js +12 -0
  191. package/dist/types/error-codes.js.map +1 -1
  192. package/dist/types/events.d.ts +176 -68
  193. package/dist/types/events.d.ts.map +1 -1
  194. package/dist/types/events.js +19 -1
  195. package/dist/types/events.js.map +1 -1
  196. package/dist/types/index.d.ts +3 -2
  197. package/dist/types/index.d.ts.map +1 -1
  198. package/dist/types/index.js +57 -2
  199. package/dist/types/index.js.map +1 -1
  200. package/dist/types/messages.d.ts +22225 -2592
  201. package/dist/types/messages.d.ts.map +1 -1
  202. package/dist/types/messages.js +537 -28
  203. package/dist/types/messages.js.map +1 -1
  204. package/dist/utils/bounded-queue.d.ts.map +1 -1
  205. package/dist/utils/bounded-queue.js +5 -2
  206. package/dist/utils/bounded-queue.js.map +1 -1
  207. package/dist/utils/circuit-breaker.js +11 -4
  208. package/dist/utils/circuit-breaker.js.map +1 -1
  209. package/dist/utils/deduplication-cache.js +3 -1
  210. package/dist/utils/deduplication-cache.js.map +1 -1
  211. package/dist/utils/event-waiter.d.ts +3 -3
  212. package/dist/utils/event-waiter.d.ts.map +1 -1
  213. package/dist/utils/index.d.ts +1 -0
  214. package/dist/utils/index.d.ts.map +1 -1
  215. package/dist/utils/index.js +4 -1
  216. package/dist/utils/index.js.map +1 -1
  217. package/dist/utils/logger.js.map +1 -1
  218. package/dist/utils/pricing-resolver.d.ts +26 -0
  219. package/dist/utils/pricing-resolver.d.ts.map +1 -0
  220. package/dist/utils/pricing-resolver.js +85 -0
  221. package/dist/utils/pricing-resolver.js.map +1 -0
  222. package/dist/utils/rate-limiter.d.ts.map +1 -1
  223. package/dist/utils/rate-limiter.js +6 -0
  224. package/dist/utils/rate-limiter.js.map +1 -1
  225. package/dist/utils/retry-policy.js +1 -0
  226. package/dist/utils/retry-policy.js.map +1 -1
  227. package/dist/utils/secure-private-key.js +3 -1
  228. package/dist/utils/secure-private-key.js.map +1 -1
  229. package/dist/utils/signature-verifier.d.ts.map +1 -1
  230. package/dist/utils/signature-verifier.js +3 -1
  231. package/dist/utils/signature-verifier.js.map +1 -1
  232. package/examples/.env.example +2 -2
  233. package/examples/agent-room-management-example.ts +335 -0
  234. package/examples/basic-usage.ts +3 -4
  235. package/examples/claude-agent-x-follower/.env.example +3 -3
  236. package/examples/claude-agent-x-follower/QUICKSTART.md +3 -3
  237. package/examples/claude-agent-x-follower/README.md +3 -3
  238. package/examples/claude-agent-x-follower/index.ts +120 -96
  239. package/examples/n8n-teneo/.env.example +3 -3
  240. package/examples/n8n-teneo/README.md +2 -2
  241. package/examples/n8n-teneo/index.ts +54 -44
  242. package/examples/nestjs-dashboard/.env.example +11 -0
  243. package/examples/nestjs-dashboard/README.md +297 -0
  244. package/examples/nestjs-dashboard/nest-cli.json +10 -0
  245. package/examples/nestjs-dashboard/package.json +44 -0
  246. package/examples/nestjs-dashboard/pnpm-lock.yaml +3079 -0
  247. package/examples/nestjs-dashboard/src/app.controller.ts +24 -0
  248. package/examples/nestjs-dashboard/src/app.module.ts +15 -0
  249. package/examples/nestjs-dashboard/src/main.ts +32 -0
  250. package/examples/nestjs-dashboard/src/public/dashboard.html +1144 -0
  251. package/examples/nestjs-dashboard/src/teneo/agents.controller.ts +54 -0
  252. package/examples/nestjs-dashboard/src/teneo/events.controller.ts +65 -0
  253. package/examples/nestjs-dashboard/src/teneo/messages.controller.ts +47 -0
  254. package/examples/nestjs-dashboard/src/teneo/rooms.controller.ts +258 -0
  255. package/examples/nestjs-dashboard/src/teneo/teneo.module.ts +13 -0
  256. package/examples/nestjs-dashboard/src/teneo/teneo.service.ts +484 -0
  257. package/examples/nestjs-dashboard/tsconfig.json +22 -0
  258. package/examples/openai-teneo/.env.example +3 -3
  259. package/examples/openai-teneo/README.md +3 -3
  260. package/examples/openai-teneo/index.ts +82 -71
  261. package/examples/production-dashboard/.env.example +3 -3
  262. package/examples/production-dashboard/README.md +90 -13
  263. package/examples/production-dashboard/public/dashboard.html +1173 -601
  264. package/examples/production-dashboard/server.ts +349 -7
  265. package/examples/room-management-example.ts +282 -0
  266. package/examples/usage/.env.example +2 -2
  267. package/examples/usage/01-connect.ts +3 -4
  268. package/examples/usage/02-list-agents.ts +2 -3
  269. package/examples/usage/03-pick-agent.ts +2 -3
  270. package/examples/usage/04-find-by-capability.ts +2 -3
  271. package/examples/usage/05-webhook-example.ts +2 -3
  272. package/examples/usage/06-simple-api-server.ts +2 -3
  273. package/examples/usage/07-event-listener.ts +2 -3
  274. package/examples/usage/README.md +1 -1
  275. package/examples/webhook-integration.ts +1 -1
  276. package/examples/x-influencer-battle-server.ts +2 -2
  277. package/package.json +12 -1
  278. package/src/core/websocket-client.test.ts +8 -3
  279. package/src/core/websocket-client.ts +58 -4
  280. package/src/formatters/response-formatter.test.ts +2 -0
  281. package/src/formatters/response-formatter.ts +3 -3
  282. package/src/handlers/message-handlers/agent-details-response-handler.ts +42 -0
  283. package/src/handlers/message-handlers/agent-room-operation-response-handler.ts +77 -0
  284. package/src/handlers/message-handlers/agent-status-update-handler.ts +52 -0
  285. package/src/handlers/message-handlers/all-agents-response-handler.ts +39 -0
  286. package/src/handlers/message-handlers/auth-message-handler.ts +78 -5
  287. package/src/handlers/message-handlers/auth-success-handler.ts +63 -6
  288. package/src/handlers/message-handlers/base-handler.ts +20 -7
  289. package/src/handlers/message-handlers/index.ts +53 -0
  290. package/src/handlers/message-handlers/list-available-agents-handler.ts +41 -0
  291. package/src/handlers/message-handlers/list-room-agents-handler.ts +58 -0
  292. package/src/handlers/message-handlers/list-rooms-response-handler.ts +4 -2
  293. package/src/handlers/message-handlers/rate-limit-notification-handler.ts +45 -0
  294. package/src/handlers/message-handlers/regular-message-handler.ts +3 -2
  295. package/src/handlers/message-handlers/room-operation-response-handler.ts +102 -0
  296. package/src/handlers/message-handlers/subscribe-response-handler.ts +12 -2
  297. package/src/handlers/message-handlers/task-quote-handler.ts +31 -0
  298. package/src/handlers/message-handlers/types.ts +41 -7
  299. package/src/handlers/message-handlers/unsubscribe-response-handler.ts +12 -2
  300. package/src/handlers/message-handlers/user-authenticated-handler.ts +31 -0
  301. package/src/handlers/message-handlers/user-count-handler.ts +34 -0
  302. package/src/handlers/webhook-handler.test.ts +3 -2
  303. package/src/handlers/webhook-handler.ts +13 -7
  304. package/src/index.ts +21 -0
  305. package/src/managers/admin-manager.ts +249 -0
  306. package/src/managers/agent-registry.test.ts +2 -1
  307. package/src/managers/agent-registry.ts +170 -2
  308. package/src/managers/agent-room-manager.ts +665 -0
  309. package/src/managers/index.ts +15 -1
  310. package/src/managers/message-router.ts +215 -17
  311. package/src/managers/room-management-manager.ts +520 -0
  312. package/src/managers/room-manager.ts +15 -20
  313. package/src/payments/index.ts +22 -0
  314. package/src/payments/payment-client.ts +240 -0
  315. package/src/teneo-sdk.ts +806 -30
  316. package/src/types/categories.ts +45 -0
  317. package/src/types/config.ts +80 -7
  318. package/src/types/error-codes.ts +14 -0
  319. package/src/types/events.test.ts +1 -0
  320. package/src/types/events.ts +67 -0
  321. package/src/types/index.ts +111 -0
  322. package/src/types/messages.test.ts +2 -1
  323. package/src/types/messages.ts +677 -42
  324. package/src/utils/bounded-queue.test.ts +1 -1
  325. package/src/utils/bounded-queue.ts +2 -1
  326. package/src/utils/circuit-breaker.test.ts +1 -1
  327. package/src/utils/deduplication-cache.test.ts +1 -1
  328. package/src/utils/event-waiter.test.ts +1 -1
  329. package/src/utils/event-waiter.ts +3 -3
  330. package/src/utils/index.ts +7 -0
  331. package/src/utils/logger.ts +8 -8
  332. package/src/utils/pricing-resolver.ts +128 -0
  333. package/src/utils/rate-limiter.test.ts +1 -1
  334. package/src/utils/rate-limiter.ts +1 -0
  335. package/src/utils/signature-verifier.test.ts +2 -2
  336. package/src/utils/signature-verifier.ts +3 -2
  337. package/tests/.env.example +7 -0
  338. package/tests/direct-agent-test.ts +151 -0
  339. package/tests/integration/real-server.test.ts +2 -0
  340. package/tests/integration/room-management.test.ts +516 -0
  341. package/tests/integration/websocket.test.ts +5 -2
  342. package/tests/payment-flow-test.ts +147 -0
  343. package/tests/unit/handlers/agent-room-operation-response-handler.test.ts +382 -0
  344. package/tests/unit/handlers/agent-status-update-handler.test.ts +403 -0
  345. package/tests/unit/handlers/auth-success-handler-rooms.test.ts +697 -0
  346. package/tests/unit/handlers/list-available-agents-handler.test.ts +248 -0
  347. package/tests/unit/handlers/list-room-agents-handler.test.ts +290 -0
  348. package/tests/unit/handlers/room-operation-response-handler.test.ts +500 -0
  349. package/tests/unit/managers/agent-room-manager.test.ts +527 -0
  350. package/tests/unit/managers/room-management-manager.test.ts +420 -0
  351. package/tsconfig.json +2 -2
  352. package/vitest.config.ts +1 -0
@@ -0,0 +1,555 @@
1
+ "use strict";
2
+ /**
3
+ * AgentRoomManager - Manages agent-room associations (v2.0.0)
4
+ * Allows room owners to control which agents are available in their rooms
5
+ * Implements caching with 5-minute TTL and LRU eviction for performance
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.AgentRoomManager = void 0;
9
+ const eventemitter3_1 = require("eventemitter3");
10
+ const events_1 = require("../types/events");
11
+ const error_codes_1 = require("../types/error-codes");
12
+ // Cache TTL: 5 minutes
13
+ const CACHE_TTL_MS = 5 * 60 * 1000;
14
+ // Maximum number of rooms to cache (LRU eviction beyond this)
15
+ const MAX_CACHED_ROOMS = 1000;
16
+ /**
17
+ * Simple LRU cache with TTL support
18
+ * Uses Map's insertion order for LRU tracking
19
+ */
20
+ class LRUCache {
21
+ cache = new Map();
22
+ timestamps = new Map();
23
+ maxSize;
24
+ ttlMs;
25
+ constructor(maxSize, ttlMs) {
26
+ this.maxSize = maxSize;
27
+ this.ttlMs = ttlMs;
28
+ }
29
+ get(key) {
30
+ const value = this.cache.get(key);
31
+ if (value === undefined)
32
+ return undefined;
33
+ // Check TTL
34
+ const timestamp = this.timestamps.get(key);
35
+ if (timestamp && Date.now() - timestamp >= this.ttlMs) {
36
+ this.delete(key);
37
+ return undefined;
38
+ }
39
+ // Move to end (most recently used) by re-inserting
40
+ this.cache.delete(key);
41
+ this.cache.set(key, value);
42
+ return value;
43
+ }
44
+ set(key, value) {
45
+ // Delete first to update insertion order
46
+ this.cache.delete(key);
47
+ this.timestamps.delete(key);
48
+ // Evict oldest entries if at capacity
49
+ while (this.cache.size >= this.maxSize) {
50
+ const oldestKey = this.cache.keys().next().value;
51
+ if (oldestKey !== undefined) {
52
+ this.cache.delete(oldestKey);
53
+ this.timestamps.delete(oldestKey);
54
+ }
55
+ }
56
+ this.cache.set(key, value);
57
+ this.timestamps.set(key, Date.now());
58
+ }
59
+ delete(key) {
60
+ this.cache.delete(key);
61
+ this.timestamps.delete(key);
62
+ }
63
+ has(key) {
64
+ return this.get(key) !== undefined;
65
+ }
66
+ isValid(key) {
67
+ const timestamp = this.timestamps.get(key);
68
+ if (!timestamp)
69
+ return false;
70
+ return Date.now() - timestamp < this.ttlMs;
71
+ }
72
+ clear() {
73
+ this.cache.clear();
74
+ this.timestamps.clear();
75
+ }
76
+ get size() {
77
+ return this.cache.size;
78
+ }
79
+ }
80
+ class AgentRoomManager extends eventemitter3_1.EventEmitter {
81
+ wsClient;
82
+ logger;
83
+ roomManagementManager; // Reference to check ownership
84
+ // LRU caches with TTL (max 1000 rooms each)
85
+ roomAgentsCache = new LRUCache(MAX_CACHED_ROOMS, CACHE_TTL_MS);
86
+ availableAgentsCache = new LRUCache(MAX_CACHED_ROOMS, CACHE_TTL_MS);
87
+ constructor(wsClient, logger, roomManagementManager) {
88
+ super();
89
+ this.wsClient = wsClient;
90
+ this.logger = logger;
91
+ this.roomManagementManager = roomManagementManager;
92
+ }
93
+ // ============================================================================
94
+ // AGENT ROOM OPERATIONS
95
+ // ============================================================================
96
+ /**
97
+ * Adds an agent to a room, making it available for interactions in that room.
98
+ * User must own the room to perform this operation.
99
+ *
100
+ * @param roomId - ID of the room to add agent to
101
+ * @param agentId - ID of the agent to add
102
+ * @returns Promise that resolves when agent is added
103
+ * @throws {SDKError} If not connected, not room owner, or operation fails
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * await sdk.addAgentToRoom('room-123', 'agent-456');
108
+ * console.log('Agent added to room');
109
+ * ```
110
+ */
111
+ async addAgentToRoom(roomId, agentId) {
112
+ if (!this.wsClient.isConnected) {
113
+ throw new events_1.SDKError("Not connected to Teneo Protocol", error_codes_1.ErrorCode.NOT_CONNECTED);
114
+ }
115
+ // Validate inputs
116
+ this.validateRoomId(roomId);
117
+ this.validateAgentId(agentId);
118
+ // Verify room exists
119
+ if (!this.roomExists(roomId)) {
120
+ throw new events_1.SDKError("Room not found", error_codes_1.ErrorCode.VALIDATION_ERROR);
121
+ }
122
+ // Verify user owns room
123
+ if (!this.verifyOwnership(roomId)) {
124
+ throw new events_1.SDKError("Cannot add agent to room: You don't own this room", error_codes_1.ErrorCode.PERMISSION_DENIED);
125
+ }
126
+ this.logger.debug("AgentRoomManager: Adding agent to room", { roomId, agentId });
127
+ const message = {
128
+ type: "add_agent_to_room",
129
+ data: {
130
+ room_id: roomId,
131
+ agent_id: agentId
132
+ }
133
+ };
134
+ return new Promise((resolve, reject) => {
135
+ const timeout = setTimeout(() => {
136
+ cleanup();
137
+ reject(new events_1.SDKError("Add agent to room timeout", error_codes_1.ErrorCode.TIMEOUT));
138
+ }, 30000);
139
+ const onSuccess = (responseRoomId, responseAgentId) => {
140
+ if (responseRoomId === roomId && responseAgentId === agentId) {
141
+ cleanup();
142
+ // Invalidate caches for this room
143
+ this.invalidateRoomCaches(roomId);
144
+ resolve();
145
+ }
146
+ };
147
+ const onError = (error, responseRoomId) => {
148
+ if (!responseRoomId || responseRoomId === roomId) {
149
+ cleanup();
150
+ reject(error);
151
+ }
152
+ };
153
+ const cleanup = () => {
154
+ clearTimeout(timeout);
155
+ this.off("agent_room:agent_added", onSuccess);
156
+ this.off("agent_room:add_error", onError);
157
+ };
158
+ this.once("agent_room:agent_added", onSuccess);
159
+ this.once("agent_room:add_error", onError);
160
+ this.wsClient.sendMessage(message);
161
+ });
162
+ }
163
+ /**
164
+ * Removes an agent from a room.
165
+ * User must own the room to perform this operation.
166
+ *
167
+ * @param roomId - ID of the room to remove agent from
168
+ * @param agentId - ID of the agent to remove
169
+ * @returns Promise that resolves when agent is removed
170
+ * @throws {SDKError} If not connected, not room owner, or operation fails
171
+ *
172
+ * @example
173
+ * ```typescript
174
+ * await sdk.removeAgentFromRoom('room-123', 'agent-456');
175
+ * console.log('Agent removed from room');
176
+ * ```
177
+ */
178
+ async removeAgentFromRoom(roomId, agentId) {
179
+ if (!this.wsClient.isConnected) {
180
+ throw new events_1.SDKError("Not connected to Teneo Protocol", error_codes_1.ErrorCode.NOT_CONNECTED);
181
+ }
182
+ // Validate inputs
183
+ this.validateRoomId(roomId);
184
+ this.validateAgentId(agentId);
185
+ // Verify user owns room
186
+ if (!this.verifyOwnership(roomId)) {
187
+ throw new events_1.SDKError("Cannot remove agent from room: You don't own this room", error_codes_1.ErrorCode.PERMISSION_DENIED);
188
+ }
189
+ this.logger.debug("AgentRoomManager: Removing agent from room", { roomId, agentId });
190
+ const message = {
191
+ type: "remove_agent_from_room",
192
+ data: {
193
+ room_id: roomId,
194
+ agent_id: agentId
195
+ }
196
+ };
197
+ return new Promise((resolve, reject) => {
198
+ const timeout = setTimeout(() => {
199
+ cleanup();
200
+ reject(new events_1.SDKError("Remove agent from room timeout", error_codes_1.ErrorCode.TIMEOUT));
201
+ }, 30000);
202
+ const onSuccess = (responseRoomId, responseAgentId) => {
203
+ if (responseRoomId === roomId && responseAgentId === agentId) {
204
+ cleanup();
205
+ // Invalidate caches for this room
206
+ this.invalidateRoomCaches(roomId);
207
+ resolve();
208
+ }
209
+ };
210
+ const onError = (error, responseRoomId) => {
211
+ if (!responseRoomId || responseRoomId === roomId) {
212
+ cleanup();
213
+ reject(error);
214
+ }
215
+ };
216
+ const cleanup = () => {
217
+ clearTimeout(timeout);
218
+ this.off("agent_room:agent_removed", onSuccess);
219
+ this.off("agent_room:remove_error", onError);
220
+ };
221
+ this.once("agent_room:agent_removed", onSuccess);
222
+ this.once("agent_room:remove_error", onError);
223
+ this.wsClient.sendMessage(message);
224
+ });
225
+ }
226
+ /**
227
+ * Lists all agents currently in a room.
228
+ * Results are cached for 5 minutes for performance.
229
+ *
230
+ * @param roomId - ID of the room to list agents for
231
+ * @param useCache - Whether to use cached data (default: true)
232
+ * @returns Promise that resolves with array of agents
233
+ * @throws {SDKError} If not connected or operation fails
234
+ *
235
+ * @example
236
+ * ```typescript
237
+ * const agents = await sdk.listRoomAgents('room-123');
238
+ * console.log(`Room has ${agents.length} agents`);
239
+ *
240
+ * // Force fresh data
241
+ * const freshAgents = await sdk.listRoomAgents('room-123', false);
242
+ * ```
243
+ */
244
+ async listRoomAgents(roomId, useCache = true) {
245
+ if (!this.wsClient.isConnected) {
246
+ throw new events_1.SDKError("Not connected to Teneo Protocol", error_codes_1.ErrorCode.NOT_CONNECTED);
247
+ }
248
+ // Validate input
249
+ this.validateRoomId(roomId);
250
+ // Check cache if enabled
251
+ if (useCache) {
252
+ const cached = this.roomAgentsCache.get(roomId);
253
+ if (cached) {
254
+ this.logger.debug("AgentRoomManager: Returning cached room agents", {
255
+ roomId,
256
+ count: cached.length
257
+ });
258
+ return cached.map((agent) => ({ ...agent })); // Return deep copy
259
+ }
260
+ }
261
+ this.logger.debug("AgentRoomManager: Listing room agents", { roomId });
262
+ const message = {
263
+ type: "list_room_agents",
264
+ data: {
265
+ room_id: roomId
266
+ }
267
+ };
268
+ return new Promise((resolve, reject) => {
269
+ const timeout = setTimeout(() => {
270
+ cleanup();
271
+ reject(new events_1.SDKError("List room agents timeout", error_codes_1.ErrorCode.TIMEOUT));
272
+ }, 30000);
273
+ const onSuccess = (responseRoomId, agents) => {
274
+ if (responseRoomId === roomId) {
275
+ cleanup();
276
+ resolve(agents);
277
+ }
278
+ };
279
+ const onError = (error, responseRoomId) => {
280
+ if (!responseRoomId || responseRoomId === roomId) {
281
+ cleanup();
282
+ reject(error);
283
+ }
284
+ };
285
+ const cleanup = () => {
286
+ clearTimeout(timeout);
287
+ this.off("agent_room:agents_listed", onSuccess);
288
+ this.off("agent_room:list_error", onError);
289
+ };
290
+ this.once("agent_room:agents_listed", onSuccess);
291
+ this.once("agent_room:list_error", onError);
292
+ this.wsClient.sendMessage(message);
293
+ });
294
+ }
295
+ /**
296
+ * Lists all agents available to add to a room (not yet in the room).
297
+ * Results are cached for 5 minutes for performance.
298
+ *
299
+ * @param roomId - ID of the room to check available agents for
300
+ * @param useCache - Whether to use cached data (default: true)
301
+ * @returns Promise that resolves with array of available agents
302
+ * @throws {SDKError} If not connected or operation fails
303
+ *
304
+ * @example
305
+ * ```typescript
306
+ * const availableAgents = await sdk.listAvailableAgents('room-123');
307
+ * console.log(`${availableAgents.length} agents can be added`);
308
+ * ```
309
+ */
310
+ async listAvailableAgents(roomId, useCache = true) {
311
+ if (!this.wsClient.isConnected) {
312
+ throw new events_1.SDKError("Not connected to Teneo Protocol", error_codes_1.ErrorCode.NOT_CONNECTED);
313
+ }
314
+ // Validate input
315
+ this.validateRoomId(roomId);
316
+ // Check cache if enabled
317
+ if (useCache) {
318
+ const cached = this.availableAgentsCache.get(roomId);
319
+ if (cached) {
320
+ this.logger.debug("AgentRoomManager: Returning cached available agents", {
321
+ roomId,
322
+ count: cached.length
323
+ });
324
+ return cached.map((agent) => ({ ...agent })); // Return deep copy
325
+ }
326
+ }
327
+ this.logger.debug("AgentRoomManager: Listing available agents", { roomId });
328
+ const message = {
329
+ type: "list_available_agents",
330
+ data: {
331
+ room_id: roomId
332
+ }
333
+ };
334
+ return new Promise((resolve, reject) => {
335
+ const timeout = setTimeout(() => {
336
+ cleanup();
337
+ reject(new events_1.SDKError("List available agents timeout", error_codes_1.ErrorCode.TIMEOUT));
338
+ }, 30000);
339
+ const onSuccess = (agents) => {
340
+ cleanup();
341
+ resolve(agents);
342
+ };
343
+ const onError = (error) => {
344
+ cleanup();
345
+ reject(error);
346
+ };
347
+ const cleanup = () => {
348
+ clearTimeout(timeout);
349
+ this.off("agent_room:available_agents_listed", onSuccess);
350
+ this.off("agent_room:list_available_error", onError);
351
+ };
352
+ this.once("agent_room:available_agents_listed", onSuccess);
353
+ this.once("agent_room:list_available_error", onError);
354
+ this.wsClient.sendMessage(message);
355
+ });
356
+ }
357
+ // ============================================================================
358
+ // QUERY METHODS (Synchronous, from cache)
359
+ // ============================================================================
360
+ /**
361
+ * Gets agents currently in a room from cache (synchronous).
362
+ * Returns undefined if not cached or cache expired.
363
+ *
364
+ * @param roomId - Room ID to query
365
+ * @returns Array of agents or undefined if not cached
366
+ *
367
+ * @example
368
+ * ```typescript
369
+ * const agents = sdk.getRoomAgents('room-123');
370
+ * if (agents) {
371
+ * console.log(`Found ${agents.length} agents in cache`);
372
+ * }
373
+ * ```
374
+ */
375
+ getRoomAgents(roomId) {
376
+ const cached = this.roomAgentsCache.get(roomId);
377
+ return cached ? cached.map((agent) => ({ ...agent })) : undefined;
378
+ }
379
+ /**
380
+ * Gets available agents for a room from cache (synchronous).
381
+ * Returns undefined if not cached or cache expired.
382
+ *
383
+ * @param roomId - Room ID to query
384
+ * @returns Array of available agents or undefined if not cached
385
+ *
386
+ * @example
387
+ * ```typescript
388
+ * const available = sdk.getAvailableAgents('room-123');
389
+ * if (available) {
390
+ * console.log(`${available.length} agents can be added`);
391
+ * }
392
+ * ```
393
+ */
394
+ getAvailableAgents(roomId) {
395
+ const cached = this.availableAgentsCache.get(roomId);
396
+ return cached ? cached.map((agent) => ({ ...agent })) : undefined;
397
+ }
398
+ /**
399
+ * Checks if an agent is currently in a room (from cache).
400
+ * Returns undefined if cache is invalid.
401
+ *
402
+ * @param roomId - Room ID to check
403
+ * @param agentId - Agent ID to check
404
+ * @returns True if agent in room, false if not, undefined if cache invalid
405
+ *
406
+ * @example
407
+ * ```typescript
408
+ * const isInRoom = sdk.isAgentInRoom('room-123', 'agent-456');
409
+ * if (isInRoom === true) {
410
+ * console.log('Agent is in this room');
411
+ * }
412
+ * ```
413
+ */
414
+ isAgentInRoom(roomId, agentId) {
415
+ const agents = this.getRoomAgents(roomId);
416
+ if (!agents)
417
+ return undefined;
418
+ return agents.some((agent) => agent.agent_id === agentId);
419
+ }
420
+ /**
421
+ * Gets the count of agents in a room (from cache).
422
+ * Returns undefined if cache is invalid.
423
+ *
424
+ * @param roomId - Room ID to count agents for
425
+ * @returns Number of agents or undefined if cache invalid
426
+ *
427
+ * @example
428
+ * ```typescript
429
+ * const count = sdk.getRoomAgentCount('room-123');
430
+ * if (count !== undefined) {
431
+ * console.log(`Room has ${count} agents`);
432
+ * }
433
+ * ```
434
+ */
435
+ getRoomAgentCount(roomId) {
436
+ const agents = this.getRoomAgents(roomId);
437
+ return agents ? agents.length : undefined;
438
+ }
439
+ // ============================================================================
440
+ // CACHE MANAGEMENT (Public methods)
441
+ // ============================================================================
442
+ /**
443
+ * Manually invalidates all caches for a specific room.
444
+ * Useful after operations that might have changed agent assignments.
445
+ *
446
+ * @param roomId - Room ID to invalidate cache for
447
+ *
448
+ * @example
449
+ * ```typescript
450
+ * // After bulk operations
451
+ * sdk.invalidateCache('room-123');
452
+ * const freshAgents = await sdk.listRoomAgents('room-123', false);
453
+ * ```
454
+ */
455
+ invalidateCache(roomId) {
456
+ this.invalidateRoomCaches(roomId);
457
+ this.logger.debug("AgentRoomManager: Cache invalidated", { roomId });
458
+ }
459
+ /**
460
+ * Clears all caches for all rooms.
461
+ * Called automatically on disconnect.
462
+ * @internal
463
+ */
464
+ clearAllCaches() {
465
+ this.roomAgentsCache.clear();
466
+ this.availableAgentsCache.clear();
467
+ this.logger.debug("AgentRoomManager: All caches cleared");
468
+ }
469
+ // ============================================================================
470
+ // INTERNAL METHODS
471
+ // ============================================================================
472
+ /**
473
+ * Handles agent status updates from server.
474
+ * Invalidates cache when agent status changes.
475
+ * @internal
476
+ */
477
+ handleStatusUpdate(roomId, agentId, status) {
478
+ this.logger.debug("AgentRoomManager: Agent status update", {
479
+ roomId,
480
+ agentId,
481
+ status
482
+ });
483
+ // Invalidate cache for this room as agent list may have changed
484
+ this.invalidateRoomCaches(roomId);
485
+ }
486
+ /**
487
+ * Called by handlers to cache room agents.
488
+ * @internal
489
+ */
490
+ cacheRoomAgents(roomId, agents) {
491
+ this.roomAgentsCache.set(roomId, agents);
492
+ this.logger.debug("AgentRoomManager: Cached room agents", {
493
+ roomId,
494
+ count: agents.length,
495
+ cacheSize: this.roomAgentsCache.size
496
+ });
497
+ }
498
+ /**
499
+ * Called by handlers to cache available agents.
500
+ * @internal
501
+ */
502
+ cacheAvailableAgents(roomId, agents) {
503
+ this.availableAgentsCache.set(roomId, agents);
504
+ this.logger.debug("AgentRoomManager: Cached available agents", {
505
+ roomId,
506
+ count: agents.length,
507
+ cacheSize: this.availableAgentsCache.size
508
+ });
509
+ }
510
+ // ============================================================================
511
+ // PRIVATE HELPERS
512
+ // ============================================================================
513
+ /**
514
+ * Invalidates all caches for a specific room
515
+ */
516
+ invalidateRoomCaches(roomId) {
517
+ this.roomAgentsCache.delete(roomId);
518
+ this.availableAgentsCache.delete(roomId);
519
+ }
520
+ /**
521
+ * Verifies user owns the room
522
+ */
523
+ validateRoomId(roomId) {
524
+ if (!roomId || roomId.trim() === "") {
525
+ throw new events_1.SDKError("Room ID cannot be empty", error_codes_1.ErrorCode.VALIDATION_ERROR);
526
+ }
527
+ }
528
+ validateAgentId(agentId) {
529
+ if (!agentId || agentId.trim() === "") {
530
+ throw new events_1.SDKError("Agent ID cannot be empty", error_codes_1.ErrorCode.VALIDATION_ERROR);
531
+ }
532
+ }
533
+ roomExists(roomId) {
534
+ if (!this.roomManagementManager)
535
+ return true; // Skip check if manager not available
536
+ // If getRoomById method doesn't exist, skip check
537
+ if (typeof this.roomManagementManager.getRoomById !== "function") {
538
+ return true;
539
+ }
540
+ // Check if room exists (in owned or shared rooms)
541
+ const room = this.roomManagementManager.getRoomById(roomId);
542
+ return room !== undefined;
543
+ }
544
+ verifyOwnership(roomId) {
545
+ if (!this.roomManagementManager)
546
+ return true; // Skip check if manager not available
547
+ // Check if room is in owned rooms
548
+ const ownedRooms = this.roomManagementManager.getOwnedRooms?.();
549
+ if (!ownedRooms)
550
+ return true; // Skip check if method not available
551
+ return ownedRooms.some((room) => room.id === roomId);
552
+ }
553
+ }
554
+ exports.AgentRoomManager = AgentRoomManager;
555
+ //# sourceMappingURL=agent-room-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-room-manager.js","sourceRoot":"","sources":["../../src/managers/agent-room-manager.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
7
7
  exports.ConnectionManager = void 0;
8
8
  const eventemitter3_1 = require("eventemitter3");
9
9
  class ConnectionManager extends eventemitter3_1.EventEmitter {
10
+ wsClient;
11
+ logger;
10
12
  constructor(wsClient, logger) {
11
13
  super();
12
14
  this.wsClient = wsClient;
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/managers/connection-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/managers/connection-manager.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@
4
4
  */
5
5
  export { ConnectionManager } from "./connection-manager";
6
6
  export { RoomManager } from "./room-manager";
7
+ export { RoomManagementManager } from "./room-management-manager";
8
+ export { AgentRoomManager, type AgentRoomInfo } from "./agent-room-manager";
7
9
  export { AgentRegistry } from "./agent-registry";
8
- export { MessageRouter, type SendMessageOptions, type AgentCommand } from "./message-router";
10
+ export { MessageRouter, type SendMessageOptions, type AgentCommand, type QuoteResult, type MessageRouterConfig } from "./message-router";
11
+ export { AdminManager, type AdminManagerEvents, type ListAllAgentsOptions, type AllAgentsResult } from "./admin-manager";
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,YAAY,EACZ,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACrB,MAAM,iBAAiB,CAAC"}
@@ -4,13 +4,19 @@
4
4
  * Provides focused classes for different SDK responsibilities
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.MessageRouter = exports.AgentRegistry = exports.RoomManager = exports.ConnectionManager = void 0;
7
+ exports.AdminManager = exports.MessageRouter = exports.AgentRegistry = exports.AgentRoomManager = exports.RoomManagementManager = exports.RoomManager = exports.ConnectionManager = void 0;
8
8
  var connection_manager_1 = require("./connection-manager");
9
9
  Object.defineProperty(exports, "ConnectionManager", { enumerable: true, get: function () { return connection_manager_1.ConnectionManager; } });
10
10
  var room_manager_1 = require("./room-manager");
11
11
  Object.defineProperty(exports, "RoomManager", { enumerable: true, get: function () { return room_manager_1.RoomManager; } });
12
+ var room_management_manager_1 = require("./room-management-manager");
13
+ Object.defineProperty(exports, "RoomManagementManager", { enumerable: true, get: function () { return room_management_manager_1.RoomManagementManager; } });
14
+ var agent_room_manager_1 = require("./agent-room-manager");
15
+ Object.defineProperty(exports, "AgentRoomManager", { enumerable: true, get: function () { return agent_room_manager_1.AgentRoomManager; } });
12
16
  var agent_registry_1 = require("./agent-registry");
13
17
  Object.defineProperty(exports, "AgentRegistry", { enumerable: true, get: function () { return agent_registry_1.AgentRegistry; } });
14
18
  var message_router_1 = require("./message-router");
15
19
  Object.defineProperty(exports, "MessageRouter", { enumerable: true, get: function () { return message_router_1.MessageRouter; } });
20
+ var admin_manager_1 = require("./admin-manager");
21
+ Object.defineProperty(exports, "AdminManager", { enumerable: true, get: function () { return admin_manager_1.AdminManager; } });
16
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,mDAA6F;AAApF,+GAAA,aAAa,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,qEAAkE;AAAzD,gIAAA,qBAAqB,OAAA;AAC9B,2DAA4E;AAAnE,sHAAA,gBAAgB,OAAA;AACzB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,mDAM0B;AALxB,+GAAA,aAAa,OAAA;AAMf,iDAKyB;AAJvB,6GAAA,YAAY,OAAA"}