@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,74 @@
1
+ /**
2
+ * PaymentClient - Handles x402 payment header generation for quote-approve flow
3
+ *
4
+ * Creates x402 V2 payment headers for USDC payments on PEAQ network.
5
+ * Implements ERC-3009 TransferWithAuthorization signing using viem's EIP-712.
6
+ */
7
+ import type { SecurePrivateKey } from "../utils/secure-private-key";
8
+ declare const USDC_CONTRACT = "0xbbA60da06c2c5424f03f7434542280FCAd453d10";
9
+ declare const PEAQ_NETWORK_CAIP2 = "eip155:3338";
10
+ export interface PaymentClientConfig {
11
+ network?: string;
12
+ asset?: string;
13
+ resourceUrl?: string;
14
+ }
15
+ export declare const USDC_DECIMALS = 6;
16
+ export declare const X402_VERSION = 2;
17
+ export declare const DEFAULT_PAYMENT_TIMEOUT_SECONDS = 60;
18
+ export declare const DEFAULT_PAY_TO_ADDRESS = "0x0000000000000000000000000000000000000000";
19
+ export declare const DEFAULT_RPC_URL = "https://peaq.api.onfinality.io/public";
20
+ export type SupportedChain = "peaq";
21
+ export { USDC_CONTRACT, PEAQ_NETWORK_CAIP2 as PEAQ_CHAIN_ID };
22
+ /**
23
+ * Converts a WebSocket URL to an HTTP(S) URL for x402 resource specification.
24
+ * The x402 protocol requires HTTP URLs, not WebSocket URLs.
25
+ *
26
+ * @param wsUrl - WebSocket URL (wss:// or ws://)
27
+ * @returns HTTP URL (https:// or http://)
28
+ *
29
+ * @example
30
+ * buildX402ResourceUrl("wss://api.teneo.com/ws") // "https://api.teneo.com/x402"
31
+ */
32
+ export declare function buildX402ResourceUrl(wsUrl: string): string;
33
+ /**
34
+ * Converts USDC human-readable amount to micro-units (6 decimals).
35
+ * @param usdc - Amount in USDC (e.g., 1.5)
36
+ * @returns Amount in micro-units (e.g., 1500000)
37
+ */
38
+ export declare function usdcToUnits(usdc: number): number;
39
+ /**
40
+ * Converts micro-units to USDC human-readable amount.
41
+ * @param units - Amount in micro-units (e.g., 1500000)
42
+ * @returns Amount in USDC (e.g., 1.5)
43
+ */
44
+ export declare function unitsToUsdc(units: number): number;
45
+ /**
46
+ * PaymentClient handles creation of x402 V2 payment headers
47
+ * for the quote-approve payment flow.
48
+ */
49
+ export declare class PaymentClient {
50
+ private readonly secureKey;
51
+ private readonly walletAddress;
52
+ private readonly network;
53
+ private readonly asset;
54
+ private readonly resourceUrl;
55
+ constructor(secureKey: SecurePrivateKey, walletAddress: string, config?: PaymentClientConfig);
56
+ /**
57
+ * Creates an x402 V2 payment header for a specific amount and recipient.
58
+ *
59
+ * @param amountMicroUnits - Amount in micro-units (e.g., 1000 = 0.001 USDC)
60
+ * @param recipientAddress - Wallet address of the payment recipient (agent)
61
+ * @param resourceUrl - Optional override for x402 resource URL
62
+ * @returns Base64 encoded x402 V2 payment header
63
+ */
64
+ createPaymentHeader(amountMicroUnits: number, recipientAddress: string, resourceUrl?: string): Promise<string>;
65
+ /**
66
+ * Get default x402 resource URL from WebSocket URL
67
+ */
68
+ private getDefaultResourceUrl;
69
+ /**
70
+ * Gets the wallet address associated with this payment client.
71
+ */
72
+ get address(): string;
73
+ }
74
+ //# sourceMappingURL=payment-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-client.d.ts","sourceRoot":"","sources":["../../src/payments/payment-client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAuBpE,QAAA,MAAM,aAAa,+CAA+C,CAAC;AACnE,QAAA,MAAM,kBAAkB,gBAAgB,CAAC;AAczC,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAGD,eAAO,MAAM,aAAa,IAAI,CAAC;AAC/B,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAClD,eAAO,MAAM,sBAAsB,+CAA+C,CAAC;AACnF,eAAO,MAAM,eAAe,0CAA0C,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAGpC,OAAO,EAAE,aAAa,EAAE,kBAAkB,IAAI,aAAa,EAAE,CAAC;AAE9D;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO1D;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAWD;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmB;IAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGnC,SAAS,EAAE,gBAAgB,EAC3B,aAAa,EAAE,MAAM,EACrB,MAAM,GAAE,mBAAwB;IASlC;;;;;;;OAOG;IACG,mBAAmB,CACvB,gBAAgB,EAAE,MAAM,EACxB,gBAAgB,EAAE,MAAM,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC;IAgFlB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;CACF"}
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ /**
3
+ * PaymentClient - Handles x402 payment header generation for quote-approve flow
4
+ *
5
+ * Creates x402 V2 payment headers for USDC payments on PEAQ network.
6
+ * Implements ERC-3009 TransferWithAuthorization signing using viem's EIP-712.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PaymentClient = exports.PEAQ_CHAIN_ID = exports.USDC_CONTRACT = exports.DEFAULT_RPC_URL = exports.DEFAULT_PAY_TO_ADDRESS = exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = exports.X402_VERSION = exports.USDC_DECIMALS = void 0;
10
+ exports.buildX402ResourceUrl = buildX402ResourceUrl;
11
+ exports.usdcToUnits = usdcToUnits;
12
+ exports.unitsToUsdc = unitsToUsdc;
13
+ const viem_1 = require("viem");
14
+ const accounts_1 = require("viem/accounts");
15
+ // PEAQ chain definition
16
+ const peaq = (0, viem_1.defineChain)({
17
+ id: 3338,
18
+ name: "peaq",
19
+ network: "peaq",
20
+ nativeCurrency: {
21
+ decimals: 18,
22
+ name: "PEAQ",
23
+ symbol: "PEAQ"
24
+ },
25
+ rpcUrls: {
26
+ default: {
27
+ http: ["https://peaq.api.onfinality.io/public"]
28
+ },
29
+ public: {
30
+ http: ["https://peaq.api.onfinality.io/public"]
31
+ }
32
+ }
33
+ });
34
+ // USDC contract on PEAQ
35
+ const USDC_CONTRACT = "0xbbA60da06c2c5424f03f7434542280FCAd453d10";
36
+ exports.USDC_CONTRACT = USDC_CONTRACT;
37
+ const PEAQ_NETWORK_CAIP2 = "eip155:3338";
38
+ exports.PEAQ_CHAIN_ID = PEAQ_NETWORK_CAIP2;
39
+ // ERC-3009 TransferWithAuthorization EIP-712 types
40
+ const ERC3009_TYPES = {
41
+ TransferWithAuthorization: [
42
+ { name: "from", type: "address" },
43
+ { name: "to", type: "address" },
44
+ { name: "value", type: "uint256" },
45
+ { name: "validAfter", type: "uint256" },
46
+ { name: "validBefore", type: "uint256" },
47
+ { name: "nonce", type: "bytes32" }
48
+ ]
49
+ };
50
+ // x402 constants
51
+ exports.USDC_DECIMALS = 6;
52
+ exports.X402_VERSION = 2;
53
+ exports.DEFAULT_PAYMENT_TIMEOUT_SECONDS = 60;
54
+ exports.DEFAULT_PAY_TO_ADDRESS = "0x0000000000000000000000000000000000000000";
55
+ exports.DEFAULT_RPC_URL = "https://peaq.api.onfinality.io/public";
56
+ /**
57
+ * Converts a WebSocket URL to an HTTP(S) URL for x402 resource specification.
58
+ * The x402 protocol requires HTTP URLs, not WebSocket URLs.
59
+ *
60
+ * @param wsUrl - WebSocket URL (wss:// or ws://)
61
+ * @returns HTTP URL (https:// or http://)
62
+ *
63
+ * @example
64
+ * buildX402ResourceUrl("wss://api.teneo.com/ws") // "https://api.teneo.com/x402"
65
+ */
66
+ function buildX402ResourceUrl(wsUrl) {
67
+ const httpUrl = wsUrl.replace(/^wss:\/\//, "https://").replace(/^ws:\/\//, "http://");
68
+ // Replace /ws endpoint with /x402, or append /x402 if URL doesn't end with /ws
69
+ return /\/ws\/?$/.test(httpUrl)
70
+ ? httpUrl.replace(/\/ws\/?$/, "/x402")
71
+ : httpUrl.replace(/\/?$/, "/x402");
72
+ }
73
+ /**
74
+ * Converts USDC human-readable amount to micro-units (6 decimals).
75
+ * @param usdc - Amount in USDC (e.g., 1.5)
76
+ * @returns Amount in micro-units (e.g., 1500000)
77
+ */
78
+ function usdcToUnits(usdc) {
79
+ return Math.round(usdc * 10 ** exports.USDC_DECIMALS);
80
+ }
81
+ /**
82
+ * Converts micro-units to USDC human-readable amount.
83
+ * @param units - Amount in micro-units (e.g., 1500000)
84
+ * @returns Amount in USDC (e.g., 1.5)
85
+ */
86
+ function unitsToUsdc(units) {
87
+ return units / 10 ** exports.USDC_DECIMALS;
88
+ }
89
+ /**
90
+ * Generate a random 32-byte nonce as hex string
91
+ */
92
+ function generateNonce() {
93
+ const randomBytes = new Uint8Array(32);
94
+ crypto.getRandomValues(randomBytes);
95
+ return (0, viem_1.toHex)(randomBytes);
96
+ }
97
+ /**
98
+ * PaymentClient handles creation of x402 V2 payment headers
99
+ * for the quote-approve payment flow.
100
+ */
101
+ class PaymentClient {
102
+ secureKey;
103
+ walletAddress;
104
+ network;
105
+ asset;
106
+ resourceUrl;
107
+ constructor(secureKey, walletAddress, config = {}) {
108
+ this.secureKey = secureKey;
109
+ this.walletAddress = walletAddress;
110
+ this.network = config.network ?? PEAQ_NETWORK_CAIP2;
111
+ this.asset = config.asset ?? USDC_CONTRACT;
112
+ this.resourceUrl = config.resourceUrl ?? "";
113
+ }
114
+ /**
115
+ * Creates an x402 V2 payment header for a specific amount and recipient.
116
+ *
117
+ * @param amountMicroUnits - Amount in micro-units (e.g., 1000 = 0.001 USDC)
118
+ * @param recipientAddress - Wallet address of the payment recipient (agent)
119
+ * @param resourceUrl - Optional override for x402 resource URL
120
+ * @returns Base64 encoded x402 V2 payment header
121
+ */
122
+ async createPaymentHeader(amountMicroUnits, recipientAddress, resourceUrl) {
123
+ const resource = resourceUrl || this.resourceUrl || this.getDefaultResourceUrl();
124
+ const amountStr = Math.round(amountMicroUnits).toString();
125
+ // Create payment header using the secure key
126
+ const header = await this.secureKey.use(async (privateKey) => {
127
+ const account = (0, accounts_1.privateKeyToAccount)(privateKey);
128
+ // Time bounds for the authorization (valid for 60 seconds)
129
+ const now = Math.floor(Date.now() / 1000);
130
+ const validAfter = now - 60; // Valid from 60 seconds ago
131
+ const validBefore = now + 60; // Valid until 60 seconds from now
132
+ const nonce = generateNonce();
133
+ // EIP-712 domain for USDC on PEAQ
134
+ const domain = {
135
+ name: "USDC",
136
+ version: "2",
137
+ chainId: BigInt(peaq.id),
138
+ verifyingContract: this.asset
139
+ };
140
+ // ERC-3009 TransferWithAuthorization message
141
+ const message = {
142
+ from: account.address,
143
+ to: recipientAddress,
144
+ value: BigInt(amountStr),
145
+ validAfter: BigInt(validAfter),
146
+ validBefore: BigInt(validBefore),
147
+ nonce: nonce
148
+ };
149
+ // Sign the EIP-712 typed data
150
+ const signature = await (0, accounts_1.signTypedData)({
151
+ privateKey: privateKey,
152
+ domain,
153
+ types: ERC3009_TYPES,
154
+ primaryType: "TransferWithAuthorization",
155
+ message
156
+ });
157
+ // Build V1 payload (authorization data)
158
+ const v1Payload = {
159
+ authorization: {
160
+ from: account.address,
161
+ to: recipientAddress,
162
+ value: amountStr,
163
+ validAfter: validAfter.toString(),
164
+ validBefore: validBefore.toString(),
165
+ nonce: nonce
166
+ },
167
+ signature: signature
168
+ };
169
+ // Build V2 payload (what the backend expects)
170
+ const v2Payload = {
171
+ x402Version: 2,
172
+ resource: {
173
+ url: resource,
174
+ description: "Teneo SDK payment",
175
+ mimeType: "application/json"
176
+ },
177
+ accepted: {
178
+ scheme: "exact",
179
+ network: this.network,
180
+ amount: amountStr,
181
+ asset: this.asset,
182
+ payTo: recipientAddress,
183
+ maxTimeoutSeconds: 60,
184
+ extra: { name: "USDC", version: "2" }
185
+ },
186
+ payload: v1Payload
187
+ };
188
+ return Buffer.from(JSON.stringify(v2Payload)).toString("base64");
189
+ });
190
+ return header;
191
+ }
192
+ /**
193
+ * Get default x402 resource URL from WebSocket URL
194
+ */
195
+ getDefaultResourceUrl() {
196
+ // Default fallback
197
+ return "https://dev-rooms-websocket-ai-core-o9fmb.ondigitalocean.app/x402";
198
+ }
199
+ /**
200
+ * Gets the wallet address associated with this payment client.
201
+ */
202
+ get address() {
203
+ return this.walletAddress;
204
+ }
205
+ }
206
+ exports.PaymentClient = PaymentClient;
207
+ //# sourceMappingURL=payment-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payment-client.js","sourceRoot":"","sources":["../../src/payments/payment-client.ts"],"names":[],"mappings":"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"}