@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
@@ -5,31 +5,38 @@
5
5
  * Uses the OpenAI Codex SDK for thread-based conversations.
6
6
  */
7
7
 
8
- import 'dotenv/config';
9
- import express, { Request, Response } from 'express';
10
- import { Codex } from '@openai/codex-sdk';
11
- import { SDKConfigBuilder, TeneoSDK } from '../../dist/index.js';
8
+ import "dotenv/config";
9
+ import express, { Request, Response } from "express";
10
+ import { Codex } from "@openai/codex-sdk";
11
+ import { SDKConfigBuilder, TeneoSDK } from "../../dist/index.js";
12
12
 
13
13
  // Load environment variables
14
- const WS_URL = process.env.WS_URL || '';
15
- const PRIVATE_KEY = process.env.PRIVATE_KEY || '';
16
- const WALLET_ADDRESS = process.env.WALLET_ADDRESS || '';
17
- const DEFAULT_ROOM = process.env.DEFAULT_ROOM || 'general';
18
- const LOG_LEVEL = (process.env.LOG_LEVEL || 'info') as 'debug' | 'info' | 'warn' | 'error' | 'silent';
19
- const ENABLE_SIG_VERIFICATION = process.env.ENABLE_SIGNATURE_VERIFICATION === 'true';
20
- const TRUSTED_ADDRESSES = process.env.TRUSTED_ADDRESSES?.split(',').filter(Boolean) || [];
21
- const ENABLE_CACHE = process.env.ENABLE_CACHE !== 'false';
22
- const CACHE_TIMEOUT = parseInt(process.env.CACHE_TIMEOUT || '300000');
23
- const MAX_CACHE_SIZE = parseInt(process.env.MAX_CACHE_SIZE || '100');
24
- const ENABLE_RECONNECTION = process.env.ENABLE_RECONNECTION !== 'false';
25
- const RECONNECT_DELAY = parseInt(process.env.RECONNECT_DELAY || '5000');
26
- const MAX_RECONNECT_ATTEMPTS = parseInt(process.env.MAX_RECONNECT_ATTEMPTS || '10');
27
- const OPENAI_API_KEY = process.env.OPENAI_API_KEY || '';
14
+ const WS_URL = process.env.WS_URL || "";
15
+ const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
16
+ const WALLET_ADDRESS = process.env.WALLET_ADDRESS || "";
17
+ const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
18
+ const LOG_LEVEL = (process.env.LOG_LEVEL || "info") as
19
+ | "debug"
20
+ | "info"
21
+ | "warn"
22
+ | "error"
23
+ | "silent";
24
+ const ENABLE_SIG_VERIFICATION = process.env.ENABLE_SIGNATURE_VERIFICATION === "true";
25
+ const TRUSTED_ADDRESSES = process.env.TRUSTED_ADDRESSES?.split(",").filter(Boolean) || [];
26
+ const ENABLE_CACHE = process.env.ENABLE_CACHE !== "false";
27
+ const CACHE_TIMEOUT = parseInt(process.env.CACHE_TIMEOUT || "300000");
28
+ const MAX_CACHE_SIZE = parseInt(process.env.MAX_CACHE_SIZE || "100");
29
+ const ENABLE_RECONNECTION = process.env.ENABLE_RECONNECTION !== "false";
30
+ const RECONNECT_DELAY = parseInt(process.env.RECONNECT_DELAY || "5000");
31
+ const MAX_RECONNECT_ATTEMPTS = parseInt(process.env.MAX_RECONNECT_ATTEMPTS || "10");
32
+ const OPENAI_API_KEY = process.env.OPENAI_API_KEY || "";
28
33
 
29
34
  // Validate required environment variables
30
35
  if (!WS_URL || !PRIVATE_KEY) {
31
- console.error('Missing required environment variables: WS_URL, PRIVATE_KEY');
32
- console.error('Note: OPENAI_API_KEY is optional - Codex SDK will use default auth if not provided');
36
+ console.error("Missing required environment variables: WS_URL, PRIVATE_KEY");
37
+ console.error(
38
+ "Note: OPENAI_API_KEY is optional - Codex SDK will use default auth if not provided"
39
+ );
33
40
  process.exit(1);
34
41
  }
35
42
 
@@ -39,20 +46,20 @@ app.use(express.json());
39
46
  // Initialize Teneo SDK using SDKConfigBuilder pattern
40
47
  const config = new SDKConfigBuilder()
41
48
  .withWebSocketUrl(WS_URL)
42
- .withAuthentication(PRIVATE_KEY, WALLET_ADDRESS) // Wallet auto-derived if not provided
49
+ .withAuthentication(PRIVATE_KEY, WALLET_ADDRESS) // Wallet auto-derived if not provided
43
50
  .withAutoJoinRooms([DEFAULT_ROOM])
44
51
  .withReconnection({
45
52
  enabled: ENABLE_RECONNECTION,
46
53
  delay: RECONNECT_DELAY,
47
54
  maxAttempts: MAX_RECONNECT_ATTEMPTS
48
55
  })
49
- .withResponseFormat({ format: 'both', includeMetadata: true })
56
+ .withResponseFormat({ format: "both", includeMetadata: true })
50
57
  .withLogging(LOG_LEVEL)
51
58
  .withCache(ENABLE_CACHE, CACHE_TIMEOUT, MAX_CACHE_SIZE)
52
59
  .withSignatureVerification({
53
60
  enabled: ENABLE_SIG_VERIFICATION,
54
61
  trustedAddresses: TRUSTED_ADDRESSES,
55
- requireFor: ['task_response', 'agent_selected'],
62
+ requireFor: ["task_response", "agent_selected"],
56
63
  strictMode: false
57
64
  })
58
65
  .build();
@@ -66,17 +73,17 @@ const codex = new Codex({
66
73
  });
67
74
 
68
75
  // Connect to Teneo
69
- console.log('📡 Connecting to Teneo network...');
76
+ console.log("📡 Connecting to Teneo Protocol...");
70
77
  await teneoSDK.connect();
71
- console.log('✅ Connected to Teneo\n');
78
+ console.log("✅ Connected to Teneo\n");
72
79
 
73
80
  // Health endpoint
74
- app.get('/health', (_req: Request, res: Response) => {
81
+ app.get("/health", (_req: Request, res: Response) => {
75
82
  const teneoHealth = teneoSDK.getHealth();
76
83
  res.json({
77
- status: 'ok',
84
+ status: "ok",
78
85
  teneo: {
79
- connected: teneoHealth.connection.status === 'connected',
86
+ connected: teneoHealth.connection.status === "connected",
80
87
  authenticated: teneoHealth.connection.authenticated
81
88
  },
82
89
  codex: {
@@ -87,14 +94,14 @@ app.get('/health', (_req: Request, res: Response) => {
87
94
  });
88
95
 
89
96
  // Query endpoint - Codex analyzes, then routes to Teneo agent
90
- app.post('/query', async (req: Request, res: Response) => {
97
+ app.post("/query", async (req: Request, res: Response) => {
91
98
  try {
92
99
  const { message } = req.body;
93
100
 
94
101
  if (!message) {
95
102
  return res.status(400).json({
96
103
  success: false,
97
- error: 'Message is required'
104
+ error: "Message is required"
98
105
  });
99
106
  }
100
107
 
@@ -104,11 +111,11 @@ app.post('/query', async (req: Request, res: Response) => {
104
111
  const agents = teneoSDK.getAgents();
105
112
 
106
113
  // Step 2: Ask Codex to select the best agent
107
- console.log('🤖 Asking Codex to select best agent...');
114
+ console.log("🤖 Asking Codex to select best agent...");
108
115
 
109
- const agentList = agents.map(a =>
110
- `- ${a.name}: ${a.description || 'No description'}`
111
- ).join('\n');
116
+ const agentList = agents
117
+ .map((a) => `- ${a.name}: ${a.description || "No description"}`)
118
+ .join("\n");
112
119
 
113
120
  const thread = codex.startThread();
114
121
  const codexResponse = await thread.run(
@@ -125,50 +132,55 @@ Respond with ONLY the agent name, nothing else.`
125
132
  // Extract text from Codex response
126
133
  // Codex SDK returns an object with finalResponse property
127
134
  let selectedAgentName: string;
128
- if (typeof codexResponse === 'string') {
135
+ if (typeof codexResponse === "string") {
129
136
  selectedAgentName = codexResponse.trim();
130
- } else if (codexResponse && typeof codexResponse === 'object') {
137
+ } else if (codexResponse && typeof codexResponse === "object") {
131
138
  // Extract from finalResponse property
132
- selectedAgentName = (codexResponse as any).finalResponse
133
- || (codexResponse as any).text
134
- || (codexResponse as any).content
135
- || String(codexResponse);
136
- if (typeof selectedAgentName === 'object') {
139
+ selectedAgentName =
140
+ (codexResponse as any).finalResponse ||
141
+ (codexResponse as any).text ||
142
+ (codexResponse as any).content ||
143
+ String(codexResponse);
144
+ if (typeof selectedAgentName === "object") {
137
145
  selectedAgentName = JSON.stringify(selectedAgentName);
138
146
  }
139
147
  selectedAgentName = selectedAgentName.trim();
140
148
  } else {
141
- selectedAgentName = agents[0]?.name || '';
149
+ selectedAgentName = agents[0]?.name || "";
142
150
  }
143
151
 
144
152
  console.log(`✅ Selected agent: ${selectedAgentName}`);
145
153
 
146
154
  // Find the agent by name or ID
147
- const selectedAgent = agents.find(a =>
148
- a.name?.toLowerCase() === selectedAgentName.toLowerCase() ||
149
- a.id?.toLowerCase() === selectedAgentName.toLowerCase()
155
+ const selectedAgent = agents.find(
156
+ (a) =>
157
+ a.name?.toLowerCase() === selectedAgentName.toLowerCase() ||
158
+ a.id?.toLowerCase() === selectedAgentName.toLowerCase()
150
159
  );
151
160
 
152
161
  if (!selectedAgent) {
153
162
  return res.status(404).json({
154
163
  success: false,
155
- error: `Agent '${selectedAgentName}' not found. Available agents: ${agents.map(a => a.name || a.id).join(', ')}`
164
+ error: `Agent '${selectedAgentName}' not found. Available agents: ${agents.map((a) => a.name || a.id).join(", ")}`
156
165
  });
157
166
  }
158
167
 
159
168
  // Step 3: Send direct command to selected Teneo agent (bypasses coordinator)
160
169
  // Use the SDK's built-in waitForResponse feature with the improved fallback matching
161
170
  console.log(`📤 Sending to Teneo agent: ${selectedAgent.name || selectedAgent.id}...`);
162
- const teneoResponse = await teneoSDK.sendDirectCommand({
163
- agent: selectedAgent.id,
164
- command: message,
165
- room: DEFAULT_ROOM
166
- }, true); // waitForResponse = true
171
+ const teneoResponse = await teneoSDK.sendDirectCommand(
172
+ {
173
+ agent: selectedAgent.id,
174
+ command: message,
175
+ room: DEFAULT_ROOM
176
+ },
177
+ true
178
+ ); // waitForResponse = true
167
179
 
168
180
  if (!teneoResponse || !teneoResponse.humanized) {
169
181
  return res.json({
170
182
  success: false,
171
- error: 'No response from Teneo agent'
183
+ error: "No response from Teneo agent"
172
184
  });
173
185
  }
174
186
 
@@ -186,25 +198,24 @@ Respond with ONLY the agent name, nothing else.`
186
198
  metadata: teneoResponse.metadata
187
199
  }
188
200
  });
189
-
190
201
  } catch (error) {
191
- console.error('❌ Query error:', error);
202
+ console.error("❌ Query error:", error);
192
203
  res.status(500).json({
193
204
  success: false,
194
- error: error instanceof Error ? error.message : 'Unknown error'
205
+ error: error instanceof Error ? error.message : "Unknown error"
195
206
  });
196
207
  }
197
208
  });
198
209
 
199
210
  // Direct Codex query (bypass Teneo)
200
- app.post('/codex', async (req: Request, res: Response) => {
211
+ app.post("/codex", async (req: Request, res: Response) => {
201
212
  try {
202
213
  const { message, threadId } = req.body;
203
214
 
204
215
  if (!message) {
205
216
  return res.status(400).json({
206
217
  success: false,
207
- error: 'Message is required'
218
+ error: "Message is required"
208
219
  });
209
220
  }
210
221
 
@@ -217,13 +228,14 @@ app.post('/codex', async (req: Request, res: Response) => {
217
228
  // Extract text from Codex response
218
229
  // Codex SDK returns an object with finalResponse property
219
230
  let responseText: string;
220
- if (typeof codexResult === 'string') {
231
+ if (typeof codexResult === "string") {
221
232
  responseText = codexResult;
222
- } else if (codexResult && typeof codexResult === 'object') {
223
- responseText = (codexResult as any).finalResponse
224
- || (codexResult as any).text
225
- || (codexResult as any).content
226
- || JSON.stringify(codexResult);
233
+ } else if (codexResult && typeof codexResult === "object") {
234
+ responseText =
235
+ (codexResult as any).finalResponse ||
236
+ (codexResult as any).text ||
237
+ (codexResult as any).content ||
238
+ JSON.stringify(codexResult);
227
239
  } else {
228
240
  responseText = String(codexResult);
229
241
  }
@@ -232,26 +244,25 @@ app.post('/codex', async (req: Request, res: Response) => {
232
244
  success: true,
233
245
  data: {
234
246
  response: responseText,
235
- threadId: thread.id || 'new',
247
+ threadId: thread.id || "new",
236
248
  usage: (codexResult as any).usage // Include token usage if available
237
249
  }
238
250
  });
239
-
240
251
  } catch (error) {
241
- console.error('❌ Codex error:', error);
252
+ console.error("❌ Codex error:", error);
242
253
  res.status(500).json({
243
254
  success: false,
244
- error: error instanceof Error ? error.message : 'Unknown error'
255
+ error: error instanceof Error ? error.message : "Unknown error"
245
256
  });
246
257
  }
247
258
  });
248
259
 
249
260
  // List Teneo agents
250
- app.get('/agents', (_req: Request, res: Response) => {
261
+ app.get("/agents", (_req: Request, res: Response) => {
251
262
  const agents = teneoSDK.getAgents();
252
263
  res.json({
253
264
  success: true,
254
- agents: agents.map(a => ({
265
+ agents: agents.map((a) => ({
255
266
  id: a.id,
256
267
  name: a.name,
257
268
  description: a.description,
@@ -272,8 +283,8 @@ app.listen(PORT, () => {
272
283
  });
273
284
 
274
285
  // Graceful shutdown
275
- process.on('SIGINT', () => {
276
- console.log('\n👋 Shutting down...');
286
+ process.on("SIGINT", () => {
287
+ console.log("\n👋 Shutting down...");
277
288
  teneoSDK.disconnect();
278
289
  teneoSDK.destroy();
279
290
  process.exit(0);
@@ -2,7 +2,7 @@
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
@@ -714,7 +714,7 @@ Monitor rate limit status via `/metrics` endpoint.
714
714
 
715
715
  - **Problem**: "Authentication Pending" never completes
716
716
  - **Solution**: Verify `PRIVATE_KEY` and `WALLET_ADDRESS` are correct
717
- - **Check**: Ensure wallet has access to the Teneo network
717
+ - **Check**: Ensure wallet has access to the Teneo Protocol
718
718
 
719
719
  ### Webhook Not Receiving
720
720
 
@@ -130,8 +130,8 @@ async function initializeSDK() {
130
130
  // Set up comprehensive event listeners
131
131
  setupSDKEventListeners(sdk);
132
132
 
133
- // Connect to Teneo network
134
- console.log("[SDK] Connecting to Teneo network...");
133
+ // Connect to Teneo Protocol
134
+ console.log("[SDK] Connecting to Teneo Protocol...");
135
135
  await sdk.connect();
136
136
  console.log("[SDK] Successfully connected and authenticated!");
137
137
 
@@ -43,12 +43,12 @@ async function main() {
43
43
 
44
44
  try {
45
45
  // Connect and authenticate
46
- console.log("📡 Connecting to Teneo network...");
46
+ console.log("📡 Connecting to Teneo Protocol...");
47
47
  await sdk.connect();
48
48
  console.log("✅ Connected and authenticated\n");
49
49
 
50
50
  // Wait a moment for initial room data to load
51
- await new Promise(resolve => setTimeout(resolve, 1000));
51
+ await new Promise((resolve) => setTimeout(resolve, 1000));
52
52
 
53
53
  // Step 1: Check current room status
54
54
  console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
@@ -63,7 +63,7 @@ async function main() {
63
63
  const newRooms = await createSampleRooms(sdk);
64
64
 
65
65
  // Wait for room creation events to process
66
- await new Promise(resolve => setTimeout(resolve, 500));
66
+ await new Promise((resolve) => setTimeout(resolve, 500));
67
67
 
68
68
  // Step 3: Display updated room status
69
69
  console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
@@ -103,7 +103,7 @@ async function main() {
103
103
  await deleteRooms(sdk, newRooms);
104
104
 
105
105
  // Wait for deletion events to process
106
- await new Promise(resolve => setTimeout(resolve, 500));
106
+ await new Promise((resolve) => setTimeout(resolve, 500));
107
107
 
108
108
  // Step 7: Final room status
109
109
  console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
@@ -112,7 +112,6 @@ async function main() {
112
112
  await displayRoomStatus(sdk);
113
113
 
114
114
  console.log("\n✅ Room management example completed!");
115
-
116
115
  } catch (error: any) {
117
116
  console.error("\n❌ Error:", error.message);
118
117
  console.error(error.stack);
@@ -228,7 +227,6 @@ async function createSampleRooms(sdk: TeneoSDK) {
228
227
  });
229
228
  newRooms.push(researchRoom);
230
229
  }
231
-
232
230
  } catch (error: any) {
233
231
  console.error(`Failed to create room: ${error.message}`);
234
232
  }
@@ -255,7 +253,6 @@ async function updateRoomExample(sdk: TeneoSDK, roomId: string) {
255
253
 
256
254
  console.log(`\nNew room name: "${updatedRoom.name}"`);
257
255
  console.log(`New description: "${updatedRoom.description}"`);
258
-
259
256
  } catch (error: any) {
260
257
  console.error(`Failed to update room: ${error.message}`);
261
258
  }
@@ -274,7 +271,7 @@ async function deleteRooms(sdk: TeneoSDK, rooms: any[]) {
274
271
  console.log(`Deleting "${room.name}" (${room.id})...`);
275
272
  await sdk.deleteRoom(room.id);
276
273
  // Wait a bit between deletions
277
- await new Promise(resolve => setTimeout(resolve, 300));
274
+ await new Promise((resolve) => setTimeout(resolve, 300));
278
275
  } catch (error: any) {
279
276
  console.error(`Failed to delete room ${room.id}: ${error.message}`);
280
277
  }
@@ -1,7 +1,7 @@
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
4
+ # Required: WebSocket URL for Teneo Protocol
5
5
  WS_URL=wss://your-teneo-server.com/ws
6
6
 
7
7
  # Required: Your Ethereum private key (keep this secret!)
@@ -14,8 +14,7 @@ import "dotenv/config";
14
14
  import { TeneoSDK, SDKConfigBuilder } from "../../dist/index.js";
15
15
 
16
16
  // Load configuration from environment
17
- const WS_URL =
18
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
17
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
19
18
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
20
19
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
21
20
 
@@ -80,8 +79,8 @@ async function main() {
80
79
  console.log("✅ Event listeners configured\n");
81
80
 
82
81
  try {
83
- // Step 4: Connect to Teneo network
84
- console.log("⚙️ Step 4: Connecting to Teneo network...");
82
+ // Step 4: Connect to Teneo Protocol
83
+ console.log("⚙️ Step 4: Connecting to Teneo Protocol...");
85
84
  await sdk.connect();
86
85
  console.log("✅ Connected and authenticated!\n");
87
86
 
@@ -14,8 +14,7 @@ import "dotenv/config";
14
14
  import { TeneoSDK, SDKConfigBuilder } from "../../dist/index.js";
15
15
 
16
16
  // Load configuration from environment
17
- const WS_URL =
18
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
17
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
19
18
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
20
19
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
21
20
 
@@ -44,7 +43,7 @@ async function main() {
44
43
 
45
44
  try {
46
45
  // Connect to Teneo
47
- console.log("🔌 Connecting to Teneo network...");
46
+ console.log("🔌 Connecting to Teneo Protocol...");
48
47
  await sdk.connect();
49
48
  console.log("✅ Connected!\n");
50
49
 
@@ -15,8 +15,7 @@ import "dotenv/config";
15
15
  import { TeneoSDK, SDKConfigBuilder, FormattedResponse } from "../../dist/index.js";
16
16
 
17
17
  // Load configuration from environment
18
- const WS_URL =
19
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
18
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
20
19
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
21
20
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
22
21
 
@@ -52,7 +51,7 @@ async function main() {
52
51
 
53
52
  try {
54
53
  // Connect
55
- console.log("🔌 Connecting to Teneo network...");
54
+ console.log("🔌 Connecting to Teneo Protocol...");
56
55
  await sdk.connect();
57
56
  console.log("✅ Connected!\n");
58
57
 
@@ -15,8 +15,7 @@ import "dotenv/config";
15
15
  import { TeneoSDK, SDKConfigBuilder } from "../../dist/index.js";
16
16
 
17
17
  // Load configuration from environment
18
- const WS_URL =
19
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
18
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
20
19
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
21
20
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
22
21
 
@@ -40,7 +39,7 @@ async function main() {
40
39
 
41
40
  try {
42
41
  // Connect
43
- console.log("🔌 Connecting to Teneo network...");
42
+ console.log("🔌 Connecting to Teneo Protocol...");
44
43
  await sdk.connect();
45
44
  console.log("✅ Connected!\n");
46
45
 
@@ -26,8 +26,7 @@ import express from "express";
26
26
  import type { Request, Response } from "express";
27
27
 
28
28
  // Load configuration from environment
29
- const WS_URL =
30
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
29
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
31
30
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
32
31
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
33
32
  const WEBHOOK_PORT = parseInt(process.env.WEBHOOK_PORT || "3001");
@@ -177,7 +176,7 @@ async function main() {
177
176
 
178
177
  try {
179
178
  // Step 4: Connect to Teneo
180
- console.log("⚙️ Step 4: Connecting to Teneo network...");
179
+ console.log("⚙️ Step 4: Connecting to Teneo Protocol...");
181
180
  await sdk.connect();
182
181
  console.log("✅ Connected!\n");
183
182
 
@@ -21,8 +21,7 @@ import type { Request, Response } from "express";
21
21
  import { TeneoSDK, SDKConfigBuilder } from "../../dist/index.js";
22
22
 
23
23
  // Load configuration from environment
24
- const WS_URL =
25
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
24
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
26
25
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
27
26
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
28
27
  const PORT = parseInt(process.env.PORT || "3000");
@@ -78,7 +77,7 @@ sdk.on("error", (error) => {
78
77
  });
79
78
 
80
79
  // Connect to Teneo
81
- console.log("🔌 Connecting to Teneo network...");
80
+ console.log("🔌 Connecting to Teneo Protocol...");
82
81
  await sdk.connect();
83
82
  console.log("✅ Connected!\n");
84
83
 
@@ -15,8 +15,7 @@ import "dotenv/config";
15
15
  import { TeneoSDK, SDKConfigBuilder } from "../../dist/index.js";
16
16
 
17
17
  // Load configuration from environment
18
- const WS_URL =
19
- process.env.WS_URL || "wss://your-teneo-server.com/ws";
18
+ const WS_URL = process.env.WS_URL || "wss://your-teneo-server.com/ws";
20
19
  const PRIVATE_KEY = process.env.PRIVATE_KEY || "";
21
20
  const DEFAULT_ROOM = process.env.DEFAULT_ROOM || "general";
22
21
 
@@ -336,7 +335,7 @@ async function main() {
336
335
  // ============================================================================
337
336
 
338
337
  try {
339
- console.log("📡 Connecting to Teneo network...\n");
338
+ console.log("📡 Connecting to Teneo Protocol...\n");
340
339
  console.log("=".repeat(80));
341
340
  console.log("Listening to all events... (will run for 30 seconds)");
342
341
  console.log("=".repeat(80) + "\n");
@@ -103,7 +103,7 @@ async function main() {
103
103
 
104
104
  try {
105
105
  // Connect to Teneo
106
- console.log("[SDK] Connecting to Teneo network...");
106
+ console.log("[SDK] Connecting to Teneo Protocol...");
107
107
  await sdk.connect();
108
108
 
109
109
  // Wait for ready
@@ -64,7 +64,7 @@ async function initSDK() {
64
64
 
65
65
  // Set up event listeners
66
66
  sdk.on("connection:open", () => {
67
- console.log("[SDK] Connected to Teneo network");
67
+ console.log("[SDK] Connected to Teneo Protocol");
68
68
  });
69
69
 
70
70
  sdk.on("auth:success", (state) => {
@@ -137,7 +137,7 @@ wss.on("connection", (ws: WebSocket) => {
137
137
  ws.send(
138
138
  JSON.stringify({
139
139
  type: "error",
140
- message: "Not connected to Teneo network"
140
+ message: "Not connected to Teneo Protocol"
141
141
  })
142
142
  );
143
143
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@teneo-protocol/sdk",
3
- "version": "2.0.0",
3
+ "version": "2.2.0",
4
4
  "description": "TypeScript SDK for external platforms to interact with Teneo agents",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -24,12 +24,15 @@
24
24
  },
25
25
  "homepage": "https://github.com/TeneoProtocolAI/teneo-sdk#readme",
26
26
  "dependencies": {
27
+ "@hono/node-server": "^1.19.6",
27
28
  "eventemitter3": "^5.0.1",
29
+ "hono": "^4.10.4",
28
30
  "node-fetch": "^3.3.2",
29
31
  "pino": "^8.17.2",
30
32
  "uuid": "^9.0.1",
31
33
  "viem": "^2.37.11",
32
34
  "ws": "^8.16.0",
35
+ "x402": "^0.7.3",
33
36
  "zod": "^3.22.4"
34
37
  },
35
38
  "devDependencies": {
@@ -1,6 +1,6 @@
1
1
  import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
2
  import { WebSocketClient } from "./websocket-client";
3
- import { ConnectionError, AuthenticationError, TimeoutError } from "../types/events";
3
+ import { ConnectionError } from "../types/events";
4
4
  import type { SDKConfig } from "../types/config";
5
5
  import WebSocket from "ws";
6
6
  import { privateKeyToAccount } from "viem/accounts";
@@ -21,10 +21,13 @@ vi.mock("viem/accounts", () => ({
21
21
  describe("WebSocketClient", () => {
22
22
  let client: WebSocketClient;
23
23
  let mockConfig: SDKConfig;
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
25
  let mockWs: any;
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
27
  let mockAccount: any;
26
28
 
27
29
  // Helper to simulate successful authentication
30
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
31
  const simulateAuth = (client: any) => {
29
32
  // Update auth state to bypass authentication wait
30
33
  client.updateAuthState({ authenticated: true });
@@ -49,9 +52,11 @@ describe("WebSocketClient", () => {
49
52
  mockWs = {
50
53
  on: vi.fn(),
51
54
  once: vi.fn(),
52
- send: vi.fn((data: any, callback?: any) => callback && callback()),
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ send: vi.fn((data: unknown, callback?: () => void) => callback && callback()),
53
57
  close: vi.fn(),
54
- ping: vi.fn((callback?: any) => callback && callback()),
58
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
+ ping: vi.fn((callback?: () => void) => callback && callback()),
55
60
  terminate: vi.fn(),
56
61
  readyState: WebSocket.OPEN,
57
62
  CONNECTING: 0,