@teneo-protocol/sdk 2.0.0 → 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 (329) 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 +1 -0
  9. package/.github/workflows/push-to-main.yml +1 -1
  10. package/.github/workflows/top-issue.yml +102 -0
  11. package/CHANGELOG.md +69 -0
  12. package/CONCEPTS.md +747 -0
  13. package/README.md +178 -8
  14. package/dist/constants.js +8 -8
  15. package/dist/constants.js.map +1 -1
  16. package/dist/core/websocket-client.d.ts +15 -3
  17. package/dist/core/websocket-client.d.ts.map +1 -1
  18. package/dist/core/websocket-client.js +52 -13
  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.map +1 -1
  29. package/dist/handlers/message-handlers/agent-room-operation-response-handler.js +2 -5
  30. package/dist/handlers/message-handlers/agent-room-operation-response-handler.js.map +1 -1
  31. package/dist/handlers/message-handlers/agent-selected-handler.js +2 -5
  32. package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -1
  33. package/dist/handlers/message-handlers/agent-status-update-handler.d.ts +783 -0
  34. package/dist/handlers/message-handlers/agent-status-update-handler.d.ts.map +1 -1
  35. package/dist/handlers/message-handlers/agent-status-update-handler.js +2 -5
  36. package/dist/handlers/message-handlers/agent-status-update-handler.js.map +1 -1
  37. package/dist/handlers/message-handlers/agents-list-handler.js +2 -5
  38. package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -1
  39. package/dist/handlers/message-handlers/all-agents-response-handler.d.ts +439 -0
  40. package/dist/handlers/message-handlers/all-agents-response-handler.d.ts.map +1 -0
  41. package/dist/handlers/message-handlers/all-agents-response-handler.js +36 -0
  42. package/dist/handlers/message-handlers/all-agents-response-handler.js.map +1 -0
  43. package/dist/handlers/message-handlers/auth-error-handler.js +2 -5
  44. package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -1
  45. package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -1
  46. package/dist/handlers/message-handlers/auth-message-handler.js +6 -5
  47. package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -1
  48. package/dist/handlers/message-handlers/auth-required-handler.js +2 -5
  49. package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -1
  50. package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -1
  51. package/dist/handlers/message-handlers/auth-success-handler.js +6 -5
  52. package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -1
  53. package/dist/handlers/message-handlers/base-handler.d.ts +4 -4
  54. package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -1
  55. package/dist/handlers/message-handlers/base-handler.js +3 -1
  56. package/dist/handlers/message-handlers/base-handler.js.map +1 -1
  57. package/dist/handlers/message-handlers/challenge-handler.js +3 -2
  58. package/dist/handlers/message-handlers/challenge-handler.js.map +1 -1
  59. package/dist/handlers/message-handlers/error-message-handler.js +2 -5
  60. package/dist/handlers/message-handlers/error-message-handler.js.map +1 -1
  61. package/dist/handlers/message-handlers/index.d.ts +6 -0
  62. package/dist/handlers/message-handlers/index.d.ts.map +1 -1
  63. package/dist/handlers/message-handlers/index.js +33 -1
  64. package/dist/handlers/message-handlers/index.js.map +1 -1
  65. package/dist/handlers/message-handlers/list-available-agents-handler.d.ts +783 -0
  66. package/dist/handlers/message-handlers/list-available-agents-handler.d.ts.map +1 -1
  67. package/dist/handlers/message-handlers/list-available-agents-handler.js +2 -5
  68. package/dist/handlers/message-handlers/list-available-agents-handler.js.map +1 -1
  69. package/dist/handlers/message-handlers/list-room-agents-handler.d.ts +783 -0
  70. package/dist/handlers/message-handlers/list-room-agents-handler.d.ts.map +1 -1
  71. package/dist/handlers/message-handlers/list-room-agents-handler.js +2 -5
  72. package/dist/handlers/message-handlers/list-room-agents-handler.js.map +1 -1
  73. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +2 -199
  74. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -1
  75. package/dist/handlers/message-handlers/list-rooms-response-handler.js +4 -6
  76. package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -1
  77. package/dist/handlers/message-handlers/ping-pong-handler.js +4 -10
  78. package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -1
  79. package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts +94 -0
  80. package/dist/handlers/message-handlers/rate-limit-notification-handler.d.ts.map +1 -0
  81. package/dist/handlers/message-handlers/rate-limit-notification-handler.js +35 -0
  82. package/dist/handlers/message-handlers/rate-limit-notification-handler.js.map +1 -0
  83. package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -1
  84. package/dist/handlers/message-handlers/regular-message-handler.js +4 -6
  85. package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -1
  86. package/dist/handlers/message-handlers/room-operation-response-handler.d.ts.map +1 -1
  87. package/dist/handlers/message-handlers/room-operation-response-handler.js +2 -5
  88. package/dist/handlers/message-handlers/room-operation-response-handler.js.map +1 -1
  89. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -1
  90. package/dist/handlers/message-handlers/subscribe-response-handler.js +4 -6
  91. package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -1
  92. package/dist/handlers/message-handlers/task-quote-handler.d.ts +14 -0
  93. package/dist/handlers/message-handlers/task-quote-handler.d.ts.map +1 -0
  94. package/dist/handlers/message-handlers/task-quote-handler.js +29 -0
  95. package/dist/handlers/message-handlers/task-quote-handler.js.map +1 -0
  96. package/dist/handlers/message-handlers/task-response-handler.js +2 -5
  97. package/dist/handlers/message-handlers/task-response-handler.js.map +1 -1
  98. package/dist/handlers/message-handlers/types.d.ts +21 -9
  99. package/dist/handlers/message-handlers/types.d.ts.map +1 -1
  100. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -1
  101. package/dist/handlers/message-handlers/unsubscribe-response-handler.js +4 -6
  102. package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -1
  103. package/dist/handlers/message-handlers/user-authenticated-handler.d.ts +40 -0
  104. package/dist/handlers/message-handlers/user-authenticated-handler.d.ts.map +1 -0
  105. package/dist/handlers/message-handlers/user-authenticated-handler.js +28 -0
  106. package/dist/handlers/message-handlers/user-authenticated-handler.js.map +1 -0
  107. package/dist/handlers/message-handlers/user-count-handler.d.ts +49 -0
  108. package/dist/handlers/message-handlers/user-count-handler.d.ts.map +1 -0
  109. package/dist/handlers/message-handlers/user-count-handler.js +31 -0
  110. package/dist/handlers/message-handlers/user-count-handler.js.map +1 -0
  111. package/dist/handlers/webhook-handler.d.ts +1 -1
  112. package/dist/handlers/webhook-handler.d.ts.map +1 -1
  113. package/dist/handlers/webhook-handler.js +14 -5
  114. package/dist/handlers/webhook-handler.js.map +1 -1
  115. package/dist/index.d.ts +6 -1
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +19 -2
  118. package/dist/index.js.map +1 -1
  119. package/dist/managers/admin-manager.d.ts +116 -0
  120. package/dist/managers/admin-manager.d.ts.map +1 -0
  121. package/dist/managers/admin-manager.js +169 -0
  122. package/dist/managers/admin-manager.js.map +1 -0
  123. package/dist/managers/agent-registry.d.ts +52 -1
  124. package/dist/managers/agent-registry.d.ts.map +1 -1
  125. package/dist/managers/agent-registry.js +145 -6
  126. package/dist/managers/agent-registry.js.map +1 -1
  127. package/dist/managers/agent-room-manager.d.ts +1 -7
  128. package/dist/managers/agent-room-manager.d.ts.map +1 -1
  129. package/dist/managers/agent-room-manager.js +83 -36
  130. package/dist/managers/agent-room-manager.js.map +1 -1
  131. package/dist/managers/connection-manager.js +2 -0
  132. package/dist/managers/connection-manager.js.map +1 -1
  133. package/dist/managers/index.d.ts +2 -1
  134. package/dist/managers/index.d.ts.map +1 -1
  135. package/dist/managers/index.js +3 -1
  136. package/dist/managers/index.js.map +1 -1
  137. package/dist/managers/message-router.d.ts +56 -5
  138. package/dist/managers/message-router.d.ts.map +1 -1
  139. package/dist/managers/message-router.js +155 -8
  140. package/dist/managers/message-router.js.map +1 -1
  141. package/dist/managers/room-management-manager.d.ts.map +1 -1
  142. package/dist/managers/room-management-manager.js +9 -7
  143. package/dist/managers/room-management-manager.js.map +1 -1
  144. package/dist/managers/room-manager.d.ts +7 -5
  145. package/dist/managers/room-manager.d.ts.map +1 -1
  146. package/dist/managers/room-manager.js +14 -10
  147. package/dist/managers/room-manager.js.map +1 -1
  148. package/dist/payments/index.d.ts +5 -0
  149. package/dist/payments/index.d.ts.map +1 -0
  150. package/dist/payments/index.js +21 -0
  151. package/dist/payments/index.js.map +1 -0
  152. package/dist/payments/payment-client.d.ts +74 -0
  153. package/dist/payments/payment-client.d.ts.map +1 -0
  154. package/dist/payments/payment-client.js +207 -0
  155. package/dist/payments/payment-client.js.map +1 -0
  156. package/dist/teneo-sdk.d.ts +135 -21
  157. package/dist/teneo-sdk.d.ts.map +1 -1
  158. package/dist/teneo-sdk.js +268 -26
  159. package/dist/teneo-sdk.js.map +1 -1
  160. package/dist/types/categories.d.ts +22 -0
  161. package/dist/types/categories.d.ts.map +1 -0
  162. package/dist/types/categories.js +40 -0
  163. package/dist/types/categories.js.map +1 -0
  164. package/dist/types/config.d.ts +79 -8
  165. package/dist/types/config.d.ts.map +1 -1
  166. package/dist/types/config.js +62 -5
  167. package/dist/types/config.js.map +1 -1
  168. package/dist/types/error-codes.d.ts +8 -0
  169. package/dist/types/error-codes.d.ts.map +1 -1
  170. package/dist/types/error-codes.js +9 -0
  171. package/dist/types/error-codes.js.map +1 -1
  172. package/dist/types/events.d.ts +44 -0
  173. package/dist/types/events.d.ts.map +1 -1
  174. package/dist/types/events.js +19 -1
  175. package/dist/types/events.js.map +1 -1
  176. package/dist/types/index.d.ts +3 -2
  177. package/dist/types/index.d.ts.map +1 -1
  178. package/dist/types/index.js +33 -3
  179. package/dist/types/index.js.map +1 -1
  180. package/dist/types/messages.d.ts +11219 -423
  181. package/dist/types/messages.d.ts.map +1 -1
  182. package/dist/types/messages.js +249 -7
  183. package/dist/types/messages.js.map +1 -1
  184. package/dist/utils/bounded-queue.d.ts.map +1 -1
  185. package/dist/utils/bounded-queue.js +5 -2
  186. package/dist/utils/bounded-queue.js.map +1 -1
  187. package/dist/utils/circuit-breaker.js +11 -4
  188. package/dist/utils/circuit-breaker.js.map +1 -1
  189. package/dist/utils/deduplication-cache.js +3 -1
  190. package/dist/utils/deduplication-cache.js.map +1 -1
  191. package/dist/utils/event-waiter.d.ts +3 -3
  192. package/dist/utils/event-waiter.d.ts.map +1 -1
  193. package/dist/utils/index.d.ts +1 -0
  194. package/dist/utils/index.d.ts.map +1 -1
  195. package/dist/utils/index.js +4 -1
  196. package/dist/utils/index.js.map +1 -1
  197. package/dist/utils/logger.js.map +1 -1
  198. package/dist/utils/pricing-resolver.d.ts +26 -0
  199. package/dist/utils/pricing-resolver.d.ts.map +1 -0
  200. package/dist/utils/pricing-resolver.js +85 -0
  201. package/dist/utils/pricing-resolver.js.map +1 -0
  202. package/dist/utils/rate-limiter.d.ts.map +1 -1
  203. package/dist/utils/rate-limiter.js +6 -0
  204. package/dist/utils/rate-limiter.js.map +1 -1
  205. package/dist/utils/retry-policy.js +1 -0
  206. package/dist/utils/retry-policy.js.map +1 -1
  207. package/dist/utils/secure-private-key.js +3 -1
  208. package/dist/utils/secure-private-key.js.map +1 -1
  209. package/dist/utils/signature-verifier.d.ts.map +1 -1
  210. package/dist/utils/signature-verifier.js +3 -1
  211. package/dist/utils/signature-verifier.js.map +1 -1
  212. package/examples/.env.example +1 -1
  213. package/examples/agent-room-management-example.ts +10 -9
  214. package/examples/basic-usage.ts +3 -4
  215. package/examples/claude-agent-x-follower/.env.example +1 -1
  216. package/examples/claude-agent-x-follower/QUICKSTART.md +2 -2
  217. package/examples/claude-agent-x-follower/README.md +2 -2
  218. package/examples/claude-agent-x-follower/index.ts +120 -96
  219. package/examples/n8n-teneo/.env.example +1 -1
  220. package/examples/n8n-teneo/README.md +1 -1
  221. package/examples/n8n-teneo/index.ts +54 -44
  222. package/examples/nestjs-dashboard/.env.example +11 -0
  223. package/examples/nestjs-dashboard/README.md +297 -0
  224. package/examples/nestjs-dashboard/nest-cli.json +10 -0
  225. package/examples/nestjs-dashboard/package.json +44 -0
  226. package/examples/nestjs-dashboard/pnpm-lock.yaml +3079 -0
  227. package/examples/nestjs-dashboard/src/app.controller.ts +24 -0
  228. package/examples/nestjs-dashboard/src/app.module.ts +15 -0
  229. package/examples/nestjs-dashboard/src/main.ts +32 -0
  230. package/examples/nestjs-dashboard/src/public/dashboard.html +1144 -0
  231. package/examples/nestjs-dashboard/src/teneo/agents.controller.ts +54 -0
  232. package/examples/nestjs-dashboard/src/teneo/events.controller.ts +65 -0
  233. package/examples/nestjs-dashboard/src/teneo/messages.controller.ts +47 -0
  234. package/examples/nestjs-dashboard/src/teneo/rooms.controller.ts +258 -0
  235. package/examples/nestjs-dashboard/src/teneo/teneo.module.ts +13 -0
  236. package/examples/nestjs-dashboard/src/teneo/teneo.service.ts +484 -0
  237. package/examples/nestjs-dashboard/tsconfig.json +22 -0
  238. package/examples/openai-teneo/.env.example +1 -1
  239. package/examples/openai-teneo/README.md +2 -2
  240. package/examples/openai-teneo/index.ts +82 -71
  241. package/examples/production-dashboard/.env.example +1 -1
  242. package/examples/production-dashboard/README.md +1 -1
  243. package/examples/production-dashboard/server.ts +2 -2
  244. package/examples/room-management-example.ts +5 -8
  245. package/examples/usage/.env.example +1 -1
  246. package/examples/usage/01-connect.ts +3 -4
  247. package/examples/usage/02-list-agents.ts +2 -3
  248. package/examples/usage/03-pick-agent.ts +2 -3
  249. package/examples/usage/04-find-by-capability.ts +2 -3
  250. package/examples/usage/05-webhook-example.ts +2 -3
  251. package/examples/usage/06-simple-api-server.ts +2 -3
  252. package/examples/usage/07-event-listener.ts +2 -3
  253. package/examples/webhook-integration.ts +1 -1
  254. package/examples/x-influencer-battle-server.ts +2 -2
  255. package/package.json +4 -1
  256. package/src/core/websocket-client.test.ts +8 -3
  257. package/src/core/websocket-client.ts +36 -6
  258. package/src/formatters/response-formatter.test.ts +2 -0
  259. package/src/formatters/response-formatter.ts +3 -3
  260. package/src/handlers/message-handlers/agent-details-response-handler.ts +42 -0
  261. package/src/handlers/message-handlers/agent-room-operation-response-handler.ts +2 -8
  262. package/src/handlers/message-handlers/agent-status-update-handler.ts +3 -9
  263. package/src/handlers/message-handlers/all-agents-response-handler.ts +39 -0
  264. package/src/handlers/message-handlers/auth-message-handler.ts +5 -0
  265. package/src/handlers/message-handlers/auth-success-handler.ts +6 -1
  266. package/src/handlers/message-handlers/base-handler.ts +20 -7
  267. package/src/handlers/message-handlers/index.ts +34 -0
  268. package/src/handlers/message-handlers/list-room-agents-handler.ts +2 -5
  269. package/src/handlers/message-handlers/list-rooms-response-handler.ts +4 -2
  270. package/src/handlers/message-handlers/rate-limit-notification-handler.ts +45 -0
  271. package/src/handlers/message-handlers/regular-message-handler.ts +3 -2
  272. package/src/handlers/message-handlers/room-operation-response-handler.ts +3 -6
  273. package/src/handlers/message-handlers/subscribe-response-handler.ts +12 -2
  274. package/src/handlers/message-handlers/task-quote-handler.ts +31 -0
  275. package/src/handlers/message-handlers/types.ts +37 -9
  276. package/src/handlers/message-handlers/unsubscribe-response-handler.ts +12 -2
  277. package/src/handlers/message-handlers/user-authenticated-handler.ts +31 -0
  278. package/src/handlers/message-handlers/user-count-handler.ts +34 -0
  279. package/src/handlers/webhook-handler.test.ts +3 -2
  280. package/src/handlers/webhook-handler.ts +13 -7
  281. package/src/index.ts +21 -0
  282. package/src/managers/admin-manager.ts +249 -0
  283. package/src/managers/agent-registry.test.ts +2 -1
  284. package/src/managers/agent-registry.ts +170 -2
  285. package/src/managers/agent-room-manager.ts +98 -42
  286. package/src/managers/index.ts +13 -1
  287. package/src/managers/message-router.ts +215 -17
  288. package/src/managers/room-management-manager.ts +4 -7
  289. package/src/managers/room-manager.ts +11 -15
  290. package/src/payments/index.ts +22 -0
  291. package/src/payments/payment-client.ts +240 -0
  292. package/src/teneo-sdk.ts +302 -27
  293. package/src/types/categories.ts +45 -0
  294. package/src/types/config.ts +70 -2
  295. package/src/types/error-codes.ts +10 -0
  296. package/src/types/events.test.ts +1 -0
  297. package/src/types/events.ts +43 -0
  298. package/src/types/index.ts +56 -0
  299. package/src/types/messages.test.ts +2 -1
  300. package/src/types/messages.ts +307 -5
  301. package/src/utils/bounded-queue.test.ts +1 -1
  302. package/src/utils/bounded-queue.ts +2 -1
  303. package/src/utils/circuit-breaker.test.ts +1 -1
  304. package/src/utils/deduplication-cache.test.ts +1 -1
  305. package/src/utils/event-waiter.test.ts +1 -1
  306. package/src/utils/event-waiter.ts +3 -3
  307. package/src/utils/index.ts +7 -0
  308. package/src/utils/logger.ts +8 -8
  309. package/src/utils/pricing-resolver.ts +128 -0
  310. package/src/utils/rate-limiter.test.ts +1 -1
  311. package/src/utils/rate-limiter.ts +1 -0
  312. package/src/utils/signature-verifier.test.ts +2 -2
  313. package/src/utils/signature-verifier.ts +3 -2
  314. package/tests/.env.example +7 -0
  315. package/tests/direct-agent-test.ts +151 -0
  316. package/tests/integration/real-server.test.ts +2 -0
  317. package/tests/integration/room-management.test.ts +10 -8
  318. package/tests/integration/websocket.test.ts +4 -1
  319. package/tests/payment-flow-test.ts +147 -0
  320. package/tests/unit/handlers/agent-room-operation-response-handler.test.ts +17 -29
  321. package/tests/unit/handlers/agent-status-update-handler.test.ts +2 -6
  322. package/tests/unit/handlers/auth-success-handler-rooms.test.ts +1 -3
  323. package/tests/unit/handlers/list-available-agents-handler.test.ts +4 -12
  324. package/tests/unit/handlers/list-room-agents-handler.test.ts +2 -6
  325. package/tests/unit/handlers/room-operation-response-handler.test.ts +9 -36
  326. package/tests/unit/managers/agent-room-manager.test.ts +9 -16
  327. package/tests/unit/managers/room-management-manager.test.ts +21 -39
  328. package/tsconfig.json +2 -2
  329. package/vitest.config.ts +1 -0
@@ -0,0 +1,297 @@
1
+ # Teneo SDK - NestJS Dashboard Example
2
+
3
+ A comprehensive NestJS example demonstrating how to integrate the Teneo Protocol SDK into a NestJS application.
4
+
5
+ ## Features
6
+
7
+ - ✅ **Interactive Dashboard**: Real-time web UI for monitoring and control
8
+ - ✅ **NestJS Integration**: Proper module/service/controller architecture
9
+ - ✅ **SDK Lifecycle Management**: Automatic initialization and cleanup
10
+ - ✅ **WebSocket Connection**: Auto-reconnection with exponential backoff
11
+ - ✅ **Authentication**: Ethereum wallet authentication with encrypted keys
12
+ - ✅ **Message Handling**: Send messages and direct commands to agents
13
+ - ✅ **Room Management**: Create, update, delete, and manage rooms
14
+ - ✅ **Agent Management**: Search agents by capability, name, or status
15
+ - ✅ **Agent-Room Management**: Add/remove agents from rooms with caching
16
+ - ✅ **Health Monitoring**: Health and metrics endpoints
17
+ - ✅ **TypeScript**: Fully typed with TypeScript
18
+ - ✅ **REST API**: Complete REST API for all SDK operations
19
+
20
+ ## Prerequisites
21
+
22
+ - Node.js 18 or higher
23
+ - pnpm (recommended) or npm
24
+ - Ethereum wallet with private key
25
+ - Access to a Teneo Protocol server
26
+
27
+ ## Installation
28
+
29
+ ```bash
30
+ cd examples/nestjs-dashboard
31
+ pnpm install
32
+ ```
33
+
34
+ ## Configuration
35
+
36
+ 1. Copy the example environment file:
37
+
38
+ ```bash
39
+ cp .env.example .env
40
+ ```
41
+
42
+ 2. Edit `.env` and configure your settings:
43
+
44
+ ```env
45
+ # Teneo SDK Configuration
46
+ WS_URL=wss://your-teneo-server.com/ws
47
+ PRIVATE_KEY=your_ethereum_private_key_here
48
+ WALLET_ADDRESS=your_ethereum_wallet_address_here
49
+
50
+ # Signature Verification (optional)
51
+ ENABLE_SIGNATURE_VERIFICATION=false
52
+ TRUSTED_ADDRESSES=0x1234...,0x5678...
53
+
54
+ # Server Configuration
55
+ PORT=3002
56
+ ```
57
+
58
+ ## Running the Application
59
+
60
+ ### Development Mode (with hot reload)
61
+
62
+ ```bash
63
+ pnpm start:dev
64
+ ```
65
+
66
+ ### Production Mode
67
+
68
+ ```bash
69
+ # Build
70
+ pnpm build
71
+
72
+ # Run
73
+ pnpm start:prod
74
+ ```
75
+
76
+ ### Debug Mode
77
+
78
+ ```bash
79
+ pnpm start:debug
80
+ ```
81
+
82
+ ## API Endpoints
83
+
84
+ ### Health & Status
85
+
86
+ - `GET /` - Application status
87
+ - `GET /health` - SDK health check
88
+ - `GET /metrics` - Detailed metrics
89
+
90
+ ### Messages
91
+
92
+ - `POST /api/messages` - Send a message
93
+ ```json
94
+ {
95
+ "content": "Hello agents!",
96
+ "room": "room-id",
97
+ "waitForResponse": false
98
+ }
99
+ ```
100
+
101
+ - `POST /api/messages/direct-command` - Send direct command to agent
102
+ ```json
103
+ {
104
+ "agent": "agent-id",
105
+ "command": "execute task",
106
+ "room": "room-id"
107
+ }
108
+ ```
109
+
110
+ ### Agents
111
+
112
+ - `GET /api/agents` - List all agents
113
+ - `GET /api/agents/search/capability/:capability` - Find agents by capability
114
+ - `GET /api/agents/search/name/:name` - Find agents by name
115
+ - `GET /api/agents/search/status/:status` - Find agents by status
116
+
117
+ ### Rooms
118
+
119
+ - `GET /api/rooms` - List all rooms
120
+ - `GET /api/rooms/list` - List detailed room information
121
+ - `GET /api/rooms/available` - List available rooms for messaging
122
+ - `GET /api/rooms/owned` - List owned rooms
123
+ - `GET /api/rooms/shared` - List shared rooms
124
+ - `GET /api/rooms/limit` - Get room limit info
125
+ - `POST /api/rooms` - Create a new room
126
+ ```json
127
+ {
128
+ "name": "My Room",
129
+ "description": "A room for testing"
130
+ }
131
+ ```
132
+ - `PUT /api/rooms/:id` - Update a room
133
+ ```json
134
+ {
135
+ "name": "Updated Name",
136
+ "description": "Updated description"
137
+ }
138
+ ```
139
+ - `DELETE /api/rooms/:id` - Delete a room
140
+ - `POST /api/rooms/join` - Join a room
141
+ ```json
142
+ {
143
+ "roomId": "room-id"
144
+ }
145
+ ```
146
+ - `POST /api/rooms/leave` - Leave a room
147
+ ```json
148
+ {
149
+ "roomId": "room-id"
150
+ }
151
+ ```
152
+
153
+ ### Agent-Room Management
154
+
155
+ - `GET /api/rooms/:id/agents` - List agents in a room
156
+ - `GET /api/rooms/:id/available-agents` - List available agents for a room
157
+ - `POST /api/rooms/:roomId/agents/:agentId` - Add agent to room
158
+ - `DELETE /api/rooms/:roomId/agents/:agentId` - Remove agent from room
159
+ - `GET /api/rooms/:roomId/agents/:agentId/check` - Check if agent is in room
160
+ - `GET /api/rooms/:id/agents/count` - Get agent count for room
161
+ - `POST /api/rooms/:id/cache/invalidate` - Invalidate room agent cache
162
+
163
+ ## Architecture
164
+
165
+ ### Module Structure
166
+
167
+ ```
168
+ src/
169
+ ├── app.module.ts # Root module
170
+ ├── app.controller.ts # Root controller
171
+ ├── main.ts # Application entry point
172
+ └── teneo/
173
+ ├── teneo.module.ts # Teneo module
174
+ ├── teneo.service.ts # SDK service with lifecycle
175
+ ├── messages.controller.ts # Message handling
176
+ ├── agents.controller.ts # Agent operations
177
+ └── rooms.controller.ts # Room management
178
+ ```
179
+
180
+ ### Service Lifecycle
181
+
182
+ The `TeneoService` implements NestJS lifecycle hooks:
183
+
184
+ - `onModuleInit()`: Initializes and connects the SDK
185
+ - `onModuleDestroy()`: Gracefully disconnects and cleans up the SDK
186
+
187
+ This ensures proper resource management and graceful shutdowns.
188
+
189
+ ## Example Usage
190
+
191
+ ### Using curl
192
+
193
+ ```bash
194
+ # Check health
195
+ curl http://localhost:3002/health
196
+
197
+ # Send a message
198
+ curl -X POST http://localhost:3002/api/messages \
199
+ -H "Content-Type: application/json" \
200
+ -d '{
201
+ "content": "What is the weather?",
202
+ "room": "general",
203
+ "waitForResponse": true
204
+ }'
205
+
206
+ # List agents
207
+ curl http://localhost:3002/api/agents
208
+
209
+ # Find agents by capability
210
+ curl http://localhost:3002/api/agents/search/capability/weather
211
+
212
+ # Create a room
213
+ curl -X POST http://localhost:3002/api/rooms \
214
+ -H "Content-Type: application/json" \
215
+ -d '{
216
+ "name": "My Private Room",
217
+ "description": "A room for my personal agents"
218
+ }'
219
+ ```
220
+
221
+ ### Using the SDK in Your NestJS App
222
+
223
+ To integrate the Teneo SDK into your own NestJS application:
224
+
225
+ 1. Copy the `teneo/` directory to your `src/` folder
226
+ 2. Import `TeneoModule` in your app module:
227
+
228
+ ```typescript
229
+ import { Module } from '@nestjs/common';
230
+ import { ConfigModule } from '@nestjs/config';
231
+ import { TeneoModule } from './teneo/teneo.module';
232
+
233
+ @Module({
234
+ imports: [
235
+ ConfigModule.forRoot({
236
+ isGlobal: true,
237
+ }),
238
+ TeneoModule,
239
+ ],
240
+ })
241
+ export class AppModule {}
242
+ ```
243
+
244
+ 3. Inject `TeneoService` into your controllers or services:
245
+
246
+ ```typescript
247
+ import { Injectable } from '@nestjs/common';
248
+ import { TeneoService } from './teneo/teneo.service';
249
+
250
+ @Injectable()
251
+ export class MyService {
252
+ constructor(private readonly teneoService: TeneoService) {}
253
+
254
+ async doSomething() {
255
+ const agents = this.teneoService.getAgents();
256
+ // ... use the SDK
257
+ }
258
+ }
259
+ ```
260
+
261
+ ## Troubleshooting
262
+
263
+ ### SDK not connecting
264
+
265
+ - Verify your `WS_URL` is correct
266
+ - Check that your `PRIVATE_KEY` and `WALLET_ADDRESS` are valid
267
+ - Ensure you have network access to the Teneo server
268
+
269
+ ### TypeScript errors
270
+
271
+ - Make sure all dependencies are installed: `pnpm install`
272
+ - Check that TypeScript version is compatible (5.x)
273
+
274
+ ### Module not found errors
275
+
276
+ - Verify the path to the SDK in `teneo.service.ts` is correct
277
+ - The example expects the SDK to be built at `../../../../dist/index.js`
278
+ - If your setup is different, adjust the import path
279
+
280
+ ## Production Considerations
281
+
282
+ 1. **Environment Variables**: Use proper secret management in production
283
+ 2. **Error Handling**: Add proper error handling and logging
284
+ 3. **Rate Limiting**: Consider adding rate limiting to API endpoints
285
+ 4. **Authentication**: Add authentication/authorization to your endpoints
286
+ 5. **Monitoring**: Set up proper monitoring and alerting
287
+ 6. **Graceful Shutdown**: The service handles graceful shutdowns automatically
288
+
289
+ ## Learn More
290
+
291
+ - [Teneo Protocol Documentation](https://docs.teneo.pro)
292
+ - [NestJS Documentation](https://docs.nestjs.com)
293
+ - [Teneo SDK Documentation](../../README.md)
294
+
295
+ ## License
296
+
297
+ MIT
@@ -0,0 +1,10 @@
1
+ {
2
+ "$schema": "https://json.schemastore.org/nest-cli",
3
+ "collection": "@nestjs/schematics",
4
+ "sourceRoot": "src",
5
+ "compilerOptions": {
6
+ "deleteOutDir": true,
7
+ "assets": ["**/*.html"],
8
+ "watchAssets": true
9
+ }
10
+ }
@@ -0,0 +1,44 @@
1
+ {
2
+ "name": "@teneo/nestjs-dashboard-example",
3
+ "version": "1.0.0",
4
+ "description": "NestJS dashboard example for Teneo Protocol SDK",
5
+ "private": true,
6
+ "scripts": {
7
+ "start": "nest start",
8
+ "start:dev": "nest start --watch",
9
+ "start:debug": "nest start --debug --watch",
10
+ "build": "nest build",
11
+ "start:prod": "node dist/main"
12
+ },
13
+ "dependencies": {
14
+ "@nestjs/common": "^11.1.9",
15
+ "@nestjs/config": "^4.0.2",
16
+ "@nestjs/core": "^11.1.9",
17
+ "@nestjs/platform-express": "^11.1.9",
18
+ "@types/body-parser": "^1.19.6",
19
+ "dotenv": "^16.4.0",
20
+ "reflect-metadata": "^0.2.2"
21
+ },
22
+ "devDependencies": {
23
+ "@nestjs/cli": "^11.0.12",
24
+ "@types/express": "^5.0.5",
25
+ "@types/node": "^24.10.1",
26
+ "ts-node": "^10.9.2",
27
+ "typescript": "^5.9.3"
28
+ },
29
+ "engines": {
30
+ "node": ">=18.0.0"
31
+ },
32
+ "keywords": [
33
+ "teneo",
34
+ "sdk",
35
+ "dashboard",
36
+ "nestjs",
37
+ "websocket",
38
+ "ai",
39
+ "agents",
40
+ "example"
41
+ ],
42
+ "author": "Teneo",
43
+ "license": "MIT"
44
+ }