@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
@@ -1 +1 @@
1
- {"version":3,"file":"signature-verifier.js","sourceRoot":"","sources":["../../src/utils/signature-verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signature-verifier.js","sourceRoot":"","sources":["../../src/utils/signature-verifier.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  # Teneo SDK Examples - Environment Configuration
2
2
  # Copy this file to .env and fill in your actual values
3
3
 
4
- # Required: WebSocket URL for Teneo network
5
- WS_URL=wss://developer.chatroom.teneo-protocol.ai/ws
4
+ # Required: WebSocket URL for Teneo Protocol
5
+ WS_URL=wss://your-teneo-server.com/ws
6
6
 
7
7
  # Required: Your Ethereum private key (keep this secret!)
8
8
  PRIVATE_KEY=your-private-key-here
@@ -0,0 +1,335 @@
1
+ /**
2
+ * Agent Room Management Example
3
+ *
4
+ * Demonstrates how to customize which agents are available in each room using Teneo SDK v2.0.
5
+ *
6
+ * This example shows:
7
+ * - Listing available agents for a room
8
+ * - Adding specific agents to your room
9
+ * - Listing agents currently in a room
10
+ * - Removing agents from a room
11
+ * - Using cache for performance
12
+ * - Real-time agent status updates
13
+ *
14
+ * Prerequisites:
15
+ * - Set TENEO_WS_URL environment variable
16
+ * - Set PRIVATE_KEY environment variable (64 hex characters, no 0x prefix)
17
+ * - Have at least one owned room
18
+ *
19
+ * Run:
20
+ * npx ts-node examples/agent-room-management-example.ts
21
+ */
22
+
23
+ import { TeneoSDK } from "../src";
24
+ import * as dotenv from "dotenv";
25
+
26
+ dotenv.config();
27
+
28
+ const wsUrl = process.env.TENEO_WS_URL!;
29
+ const privateKey = process.env.PRIVATE_KEY!;
30
+
31
+ async function main() {
32
+ console.log("🚀 Teneo SDK v2.0 - Agent Room Management Example\n");
33
+
34
+ // Initialize SDK
35
+ const sdk = new TeneoSDK({
36
+ wsUrl,
37
+ privateKey,
38
+ logLevel: "info",
39
+ reconnect: true
40
+ });
41
+
42
+ // Set up event listeners
43
+ setupEventListeners(sdk);
44
+
45
+ try {
46
+ // Connect and authenticate
47
+ console.log("📡 Connecting to Teneo Protocol...");
48
+ await sdk.connect();
49
+ console.log("✅ Connected and authenticated\n");
50
+
51
+ // Wait for initial data to load
52
+ await new Promise((resolve) => setTimeout(resolve, 1000));
53
+
54
+ // Step 1: Get or create a test room
55
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
56
+ console.log("🏠 Setting Up Test Room");
57
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
58
+ const testRoom = await getOrCreateTestRoom(sdk);
59
+
60
+ if (!testRoom) {
61
+ console.log("❌ Could not get or create a test room");
62
+ return;
63
+ }
64
+
65
+ console.log(`Using room: "${testRoom.name}" (${testRoom.id})\n`);
66
+
67
+ // Step 2: List current agents in the room
68
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
69
+ console.log("📋 Current Agents in Room");
70
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
71
+ const currentAgents = await sdk.listRoomAgents(testRoom.id, false); // Force fresh data
72
+ displayAgents(currentAgents, "room");
73
+
74
+ // Step 3: List available agents (not yet in room)
75
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
76
+ console.log("🆕 Available Agents (Not in Room)");
77
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
78
+ const availableAgents = await sdk.listAvailableAgents(testRoom.id, false);
79
+ displayAgents(availableAgents, "available");
80
+
81
+ // Step 4: Add agents to the room
82
+ if (availableAgents.length > 0) {
83
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
84
+ console.log("➕ Adding Agents to Room");
85
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
86
+ await addAgentsToRoom(sdk, testRoom.id, availableAgents);
87
+
88
+ // Wait for additions to process
89
+ await new Promise((resolve) => setTimeout(resolve, 500));
90
+ }
91
+
92
+ // Step 5: List updated room agents (using cache this time)
93
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
94
+ console.log("📋 Updated Room Agents (from cache)");
95
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
96
+ const updatedAgents = await sdk.listRoomAgents(testRoom.id, true); // Use cache
97
+ displayAgents(updatedAgents, "room");
98
+
99
+ // Step 6: Demonstrate synchronous query methods
100
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
101
+ console.log("⚡ Instant Cache Queries (No Network Call)");
102
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
103
+ demonstrateCacheQueries(sdk, testRoom.id, updatedAgents);
104
+
105
+ // Step 7: Remove agents from the room
106
+ if (updatedAgents.length > 0) {
107
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
108
+ console.log("➖ Removing Agents from Room");
109
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
110
+ await removeAgentsFromRoom(sdk, testRoom.id, updatedAgents);
111
+
112
+ // Wait for removals to process
113
+ await new Promise((resolve) => setTimeout(resolve, 500));
114
+ }
115
+
116
+ // Step 8: Final room status
117
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
118
+ console.log("📊 Final Room Status");
119
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
120
+ const finalAgents = await sdk.listRoomAgents(testRoom.id, false);
121
+ displayAgents(finalAgents, "room");
122
+
123
+ // Step 9: Demonstrate cache invalidation
124
+ console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
125
+ console.log("🔄 Cache Management");
126
+ console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
127
+ console.log("Cache is automatically invalidated when:");
128
+ console.log(" ✓ You add an agent to the room");
129
+ console.log(" ✓ You remove an agent from the room");
130
+ console.log(" ✓ An agent's status changes");
131
+ console.log(" ✓ Cache TTL expires (5 minutes)");
132
+ console.log("\nManual cache invalidation:");
133
+ sdk.invalidateAgentRoomCache(testRoom.id);
134
+ console.log(` ✅ Cache cleared for room ${testRoom.id}`);
135
+
136
+ console.log("\n✅ Agent room management example completed!");
137
+ } catch (error: any) {
138
+ console.error("\n❌ Error:", error.message);
139
+ console.error(error.stack);
140
+ } finally {
141
+ // Disconnect
142
+ console.log("\n👋 Disconnecting...");
143
+ sdk.disconnect();
144
+ console.log("✅ Disconnected");
145
+ }
146
+ }
147
+
148
+ function setupEventListeners(sdk: TeneoSDK) {
149
+ // Agent added
150
+ sdk.on("agent_room:agent_added", (roomId, agentId) => {
151
+ console.log(` ✅ Agent ${agentId} added to room ${roomId}`);
152
+ });
153
+
154
+ // Agent removed
155
+ sdk.on("agent_room:agent_removed", (roomId, agentId) => {
156
+ console.log(` ✅ Agent ${agentId} removed from room ${roomId}`);
157
+ });
158
+
159
+ // Agents listed
160
+ sdk.on("agent_room:agents_listed", (roomId, agents) => {
161
+ console.log(` 📋 Listed ${agents.length} agents in room ${roomId}`);
162
+ });
163
+
164
+ // Available agents listed
165
+ sdk.on("agent_room:available_agents_listed", (agents) => {
166
+ console.log(` 📋 Listed ${agents.length} available agents`);
167
+ });
168
+
169
+ // Status updates (real-time)
170
+ sdk.on("agent_room:status_update", (data) => {
171
+ console.log(` 🔄 Agent ${data.agentId} status updated in room ${data.roomId}`);
172
+ console.log(` New status: ${data.status}`);
173
+ });
174
+
175
+ // Error events
176
+ sdk.on("agent_room:add_error", (error, roomId) => {
177
+ console.error(` ❌ Failed to add agent to room ${roomId}: ${error.message}`);
178
+ });
179
+
180
+ sdk.on("agent_room:remove_error", (error, roomId) => {
181
+ console.error(` ❌ Failed to remove agent from room ${roomId}: ${error.message}`);
182
+ });
183
+
184
+ sdk.on("agent_room:list_error", (error, roomId) => {
185
+ console.error(` ❌ Failed to list agents in room ${roomId}: ${error.message}`);
186
+ });
187
+ }
188
+
189
+ async function getOrCreateTestRoom(sdk: TeneoSDK) {
190
+ // Try to get an existing owned room
191
+ const ownedRooms = sdk.getOwnedRooms();
192
+
193
+ if (ownedRooms.length > 0) {
194
+ console.log(`Found ${ownedRooms.length} existing owned room(s)`);
195
+ console.log(`Using first room: "${ownedRooms[0].name}"`);
196
+ return ownedRooms[0];
197
+ }
198
+
199
+ // Create a new test room
200
+ console.log("No owned rooms found. Creating test room...");
201
+
202
+ if (!sdk.canCreateRoom()) {
203
+ console.log("⚠️ Cannot create room - limit reached");
204
+ console.log(` Current: ${sdk.getOwnedRoomCount()}/${sdk.getRoomLimit()}`);
205
+ return null;
206
+ }
207
+
208
+ try {
209
+ const room = await sdk.createRoom({
210
+ name: "Agent Test Room",
211
+ description: "Room for testing agent customization (SDK v2.0 example)"
212
+ });
213
+ console.log(`✅ Created test room: ${room.id}`);
214
+ return room;
215
+ } catch (error: any) {
216
+ console.error(`Failed to create test room: ${error.message}`);
217
+ return null;
218
+ }
219
+ }
220
+
221
+ function displayAgents(agents: any[], type: "room" | "available") {
222
+ if (agents.length === 0) {
223
+ console.log(` (No ${type === "room" ? "agents in room" : "available agents"})`);
224
+ return;
225
+ }
226
+
227
+ console.log(`Found ${agents.length} agent(s):\n`);
228
+
229
+ agents.forEach((agent, i) => {
230
+ console.log(`${i + 1}. ${agent.agent_name || "Unnamed Agent"}`);
231
+ console.log(` ID: ${agent.agent_id}`);
232
+
233
+ if (agent.description) {
234
+ console.log(` Description: ${agent.description}`);
235
+ }
236
+
237
+ if (agent.status) {
238
+ console.log(` Status: ${agent.status}`);
239
+ }
240
+
241
+ if (agent.capabilities && agent.capabilities.length > 0) {
242
+ const capNames = agent.capabilities.map((c: any) => c.name).join(", ");
243
+ console.log(` Capabilities: ${capNames}`);
244
+ }
245
+
246
+ if (agent.commands && agent.commands.length > 0) {
247
+ const cmdTriggers = agent.commands.map((c: any) => `/${c.trigger}`).join(", ");
248
+ console.log(` Commands: ${cmdTriggers}`);
249
+ }
250
+
251
+ if (agent.image) {
252
+ console.log(` Image: ${agent.image.substring(0, 50)}...`);
253
+ }
254
+
255
+ if (agent.added_at) {
256
+ console.log(` Added at: ${agent.added_at}`);
257
+ }
258
+
259
+ if (agent.added_by) {
260
+ console.log(` Added by: ${agent.added_by}`);
261
+ }
262
+
263
+ console.log();
264
+ });
265
+ }
266
+
267
+ async function addAgentsToRoom(sdk: TeneoSDK, roomId: string, availableAgents: any[]) {
268
+ // Add up to 2 agents from the available list
269
+ const agentsToAdd = availableAgents.slice(0, 2);
270
+
271
+ console.log(`Adding ${agentsToAdd.length} agent(s) to the room...\n`);
272
+
273
+ for (const agent of agentsToAdd) {
274
+ try {
275
+ console.log(`Adding "${agent.agent_name}" (${agent.agent_id})...`);
276
+ await sdk.addAgentToRoom(roomId, agent.agent_id);
277
+ // Wait a bit between additions
278
+ await new Promise((resolve) => setTimeout(resolve, 300));
279
+ } catch (error: any) {
280
+ console.error(`Failed to add agent ${agent.agent_id}: ${error.message}`);
281
+ }
282
+ }
283
+ }
284
+
285
+ async function removeAgentsFromRoom(sdk: TeneoSDK, roomId: string, roomAgents: any[]) {
286
+ // Remove up to 2 agents
287
+ const agentsToRemove = roomAgents.slice(0, 2);
288
+
289
+ console.log(`Removing ${agentsToRemove.length} agent(s) from the room...\n`);
290
+
291
+ for (const agent of agentsToRemove) {
292
+ try {
293
+ console.log(`Removing "${agent.agent_name}" (${agent.agent_id})...`);
294
+ await sdk.removeAgentFromRoom(roomId, agent.agent_id);
295
+ // Wait a bit between removals
296
+ await new Promise((resolve) => setTimeout(resolve, 300));
297
+ } catch (error: any) {
298
+ console.error(`Failed to remove agent ${agent.agent_id}: ${error.message}`);
299
+ }
300
+ }
301
+ }
302
+
303
+ function demonstrateCacheQueries(sdk: TeneoSDK, roomId: string, agents: any[]) {
304
+ // Get agent count (instant, from cache)
305
+ const count = sdk.getRoomAgentCount(roomId);
306
+ console.log(`Room agent count: ${count}`);
307
+
308
+ // Get cached agents (instant)
309
+ const cachedAgents = sdk.getRoomAgents(roomId);
310
+ if (cachedAgents) {
311
+ const names = cachedAgents.map((a) => a.agent_name || "Unnamed").join(", ");
312
+ console.log(`Cached agents: ${names}`);
313
+ }
314
+
315
+ // Check if specific agent is in room (instant)
316
+ if (agents.length > 0) {
317
+ const firstAgent = agents[0];
318
+ const isInRoom = sdk.isAgentInRoom(roomId, firstAgent.agent_id);
319
+ console.log(
320
+ `Is "${firstAgent.agent_name}" in room? ${isInRoom === true ? "✅ Yes" : isInRoom === false ? "❌ No" : "❓ Unknown (no cache)"}`
321
+ );
322
+ }
323
+
324
+ // Get cached available agents (instant)
325
+ const cachedAvailable = sdk.getAvailableAgents(roomId);
326
+ if (cachedAvailable) {
327
+ console.log(`Cached available agents: ${cachedAvailable.length}`);
328
+ }
329
+
330
+ console.log("\n💡 These queries are instant - no network calls!");
331
+ console.log(" Cache is automatically maintained and invalidated as needed.");
332
+ }
333
+
334
+ // Run the example
335
+ main().catch(console.error);
@@ -6,8 +6,7 @@
6
6
  import { TeneoSDK, SDKConfigBuilder, SecurePrivateKey } from "../src";
7
7
 
8
8
  // Load configuration from environment variables
9
- const WS_URL =
10
- process.env.WS_URL;
9
+ const WS_URL = process.env.WS_URL;
11
10
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
12
11
  const WALLET_ADDRESS = process.env.WALLET_ADDRESS;
13
12
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
@@ -41,8 +40,8 @@ async function main() {
41
40
  setupEventListeners(sdk);
42
41
 
43
42
  try {
44
- // Connect to Teneo network
45
- console.log("\n→ Connecting to Teneo network...");
43
+ // Connect to Teneo Protocol
44
+ console.log("\n→ Connecting to Teneo Protocol...");
46
45
  await sdk.connect();
47
46
  console.log("✓ SDK is connected and authenticated!");
48
47
 
@@ -2,13 +2,13 @@
2
2
  # Copy this file to .env and fill in your values
3
3
 
4
4
  # ============================================================================
5
- # REQUIRED: Teneo Network Connection
5
+ # REQUIRED: Teneo Protocol Connection
6
6
  # ============================================================================
7
7
 
8
8
  # WebSocket URL for Teneo AI Network
9
9
  # Production: wss://your-production-server.com/ws
10
- # Development: wss://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/ws
11
- WS_URL=wss://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/ws
10
+ # Development: wss://your-teneo-server.com/ws
11
+ WS_URL=wss://your-teneo-server.com/ws
12
12
 
13
13
  # Ethereum Private Key (with 0x prefix)
14
14
  # IMPORTANT: Never commit your actual private key to version control!
@@ -26,8 +26,8 @@ cp examples/claude-agent-x-follower/.env.example examples/claude-agent-x-followe
26
26
  Edit `.env` with your credentials:
27
27
 
28
28
  ```env
29
- # Required: Teneo Network Connection
30
- WS_URL=wss://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/ws
29
+ # Required: Teneo Protocol Connection
30
+ WS_URL=wss://your-teneo-server.com/ws
31
31
  PRIVATE_KEY=0x1234567890123456789012345678901234567890123456789012345678901234
32
32
  WALLET_ADDRESS=0x1234567890123456789012345678901234567890 # Optional - auto-derived
33
33
 
@@ -76,7 +76,7 @@ npx tsx examples/claude-agent-x-follower/index.ts "Get timeline for VitalikButer
76
76
  ```
77
77
  🤖 Claude Agent + Teneo SDK - X Timeline Follower
78
78
 
79
- 📡 Connecting to Teneo network...
79
+ 📡 Connecting to Teneo Protocol...
80
80
  ✅ Connected to Teneo
81
81
 
82
82
  💬 Prompt: "Get timeline for elonmusk and summarize the latest 5 tweets"
@@ -69,8 +69,8 @@ cp examples/claude-agent-x-follower/.env.example examples/claude-agent-x-followe
69
69
  ### Required Configuration
70
70
 
71
71
  ```env
72
- # Teneo Network Connection
73
- WS_URL=wss://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/ws
72
+ # Teneo Protocol Connection
73
+ WS_URL=wss://your-teneo-server.com/ws
74
74
  PRIVATE_KEY=0x1234567890123456789012345678901234567890123456789012345678901234
75
75
  WALLET_ADDRESS=0x1234567890123456789012345678901234567890 # Optional - auto-derived from private key
76
76
 
@@ -142,7 +142,7 @@ npx tsx examples/claude-agent-x-follower/index.ts "Get timeline for OpenAI and s
142
142
  ```
143
143
  🤖 Claude Agent + Teneo SDK - X Timeline Follower
144
144
 
145
- 📡 Connecting to Teneo network...
145
+ 📡 Connecting to Teneo Protocol...
146
146
  ✅ Connected to Teneo
147
147
 
148
148
  💬 Prompt: "Get timeline for elonmusk and summarize the latest 5 tweets"