@teneo-protocol/sdk 1.0.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 (281) hide show
  1. package/.dockerignore +14 -0
  2. package/.env.test.example +14 -0
  3. package/.eslintrc.json +26 -0
  4. package/.github/workflows/claude-code-review.yml +78 -0
  5. package/.github/workflows/claude-reviewer.yml +64 -0
  6. package/.github/workflows/publish-npm.yml +38 -0
  7. package/.github/workflows/push-to-main.yml +23 -0
  8. package/.node-version +1 -0
  9. package/.prettierrc +11 -0
  10. package/Dockerfile +25 -0
  11. package/LICENCE +661 -0
  12. package/README.md +709 -0
  13. package/dist/constants.d.ts +42 -0
  14. package/dist/constants.d.ts.map +1 -0
  15. package/dist/constants.js +45 -0
  16. package/dist/constants.js.map +1 -0
  17. package/dist/core/websocket-client.d.ts +261 -0
  18. package/dist/core/websocket-client.d.ts.map +1 -0
  19. package/dist/core/websocket-client.js +875 -0
  20. package/dist/core/websocket-client.js.map +1 -0
  21. package/dist/formatters/response-formatter.d.ts +354 -0
  22. package/dist/formatters/response-formatter.d.ts.map +1 -0
  23. package/dist/formatters/response-formatter.js +575 -0
  24. package/dist/formatters/response-formatter.js.map +1 -0
  25. package/dist/handlers/message-handler-registry.d.ts +155 -0
  26. package/dist/handlers/message-handler-registry.d.ts.map +1 -0
  27. package/dist/handlers/message-handler-registry.js +216 -0
  28. package/dist/handlers/message-handler-registry.js.map +1 -0
  29. package/dist/handlers/message-handlers/agent-selected-handler.d.ts +112 -0
  30. package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -0
  31. package/dist/handlers/message-handlers/agent-selected-handler.js +40 -0
  32. package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -0
  33. package/dist/handlers/message-handlers/agents-list-handler.d.ts +14 -0
  34. package/dist/handlers/message-handlers/agents-list-handler.d.ts.map +1 -0
  35. package/dist/handlers/message-handlers/agents-list-handler.js +25 -0
  36. package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -0
  37. package/dist/handlers/message-handlers/auth-error-handler.d.ts +71 -0
  38. package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -0
  39. package/dist/handlers/message-handlers/auth-error-handler.js +30 -0
  40. package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -0
  41. package/dist/handlers/message-handlers/auth-message-handler.d.ts +18 -0
  42. package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -0
  43. package/dist/handlers/message-handlers/auth-message-handler.js +60 -0
  44. package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -0
  45. package/dist/handlers/message-handlers/auth-required-handler.d.ts +76 -0
  46. package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -0
  47. package/dist/handlers/message-handlers/auth-required-handler.js +23 -0
  48. package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -0
  49. package/dist/handlers/message-handlers/auth-success-handler.d.ts +18 -0
  50. package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -0
  51. package/dist/handlers/message-handlers/auth-success-handler.js +51 -0
  52. package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -0
  53. package/dist/handlers/message-handlers/base-handler.d.ts +55 -0
  54. package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -0
  55. package/dist/handlers/message-handlers/base-handler.js +83 -0
  56. package/dist/handlers/message-handlers/base-handler.js.map +1 -0
  57. package/dist/handlers/message-handlers/challenge-handler.d.ts +73 -0
  58. package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -0
  59. package/dist/handlers/message-handlers/challenge-handler.js +47 -0
  60. package/dist/handlers/message-handlers/challenge-handler.js.map +1 -0
  61. package/dist/handlers/message-handlers/error-message-handler.d.ts +76 -0
  62. package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -0
  63. package/dist/handlers/message-handlers/error-message-handler.js +29 -0
  64. package/dist/handlers/message-handlers/error-message-handler.js.map +1 -0
  65. package/dist/handlers/message-handlers/index.d.ts +28 -0
  66. package/dist/handlers/message-handlers/index.d.ts.map +1 -0
  67. package/dist/handlers/message-handlers/index.js +100 -0
  68. package/dist/handlers/message-handlers/index.js.map +1 -0
  69. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +122 -0
  70. package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -0
  71. package/dist/handlers/message-handlers/list-rooms-response-handler.js +30 -0
  72. package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -0
  73. package/dist/handlers/message-handlers/ping-pong-handler.d.ts +104 -0
  74. package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -0
  75. package/dist/handlers/message-handlers/ping-pong-handler.js +36 -0
  76. package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -0
  77. package/dist/handlers/message-handlers/regular-message-handler.d.ts +56 -0
  78. package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -0
  79. package/dist/handlers/message-handlers/regular-message-handler.js +59 -0
  80. package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -0
  81. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +81 -0
  82. package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -0
  83. package/dist/handlers/message-handlers/subscribe-response-handler.js +48 -0
  84. package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -0
  85. package/dist/handlers/message-handlers/task-response-handler.d.ts +14 -0
  86. package/dist/handlers/message-handlers/task-response-handler.d.ts.map +1 -0
  87. package/dist/handlers/message-handlers/task-response-handler.js +44 -0
  88. package/dist/handlers/message-handlers/task-response-handler.js.map +1 -0
  89. package/dist/handlers/message-handlers/types.d.ts +51 -0
  90. package/dist/handlers/message-handlers/types.d.ts.map +1 -0
  91. package/dist/handlers/message-handlers/types.js +7 -0
  92. package/dist/handlers/message-handlers/types.js.map +1 -0
  93. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +81 -0
  94. package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -0
  95. package/dist/handlers/message-handlers/unsubscribe-response-handler.js +48 -0
  96. package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -0
  97. package/dist/handlers/webhook-handler.d.ts +202 -0
  98. package/dist/handlers/webhook-handler.d.ts.map +1 -0
  99. package/dist/handlers/webhook-handler.js +511 -0
  100. package/dist/handlers/webhook-handler.js.map +1 -0
  101. package/dist/index.d.ts +71 -0
  102. package/dist/index.d.ts.map +1 -0
  103. package/dist/index.js +217 -0
  104. package/dist/index.js.map +1 -0
  105. package/dist/managers/agent-registry.d.ts +173 -0
  106. package/dist/managers/agent-registry.d.ts.map +1 -0
  107. package/dist/managers/agent-registry.js +310 -0
  108. package/dist/managers/agent-registry.js.map +1 -0
  109. package/dist/managers/connection-manager.d.ts +134 -0
  110. package/dist/managers/connection-manager.d.ts.map +1 -0
  111. package/dist/managers/connection-manager.js +176 -0
  112. package/dist/managers/connection-manager.js.map +1 -0
  113. package/dist/managers/index.d.ts +9 -0
  114. package/dist/managers/index.d.ts.map +1 -0
  115. package/dist/managers/index.js +16 -0
  116. package/dist/managers/index.js.map +1 -0
  117. package/dist/managers/message-router.d.ts +112 -0
  118. package/dist/managers/message-router.d.ts.map +1 -0
  119. package/dist/managers/message-router.js +260 -0
  120. package/dist/managers/message-router.js.map +1 -0
  121. package/dist/managers/room-manager.d.ts +165 -0
  122. package/dist/managers/room-manager.d.ts.map +1 -0
  123. package/dist/managers/room-manager.js +227 -0
  124. package/dist/managers/room-manager.js.map +1 -0
  125. package/dist/teneo-sdk.d.ts +703 -0
  126. package/dist/teneo-sdk.d.ts.map +1 -0
  127. package/dist/teneo-sdk.js +907 -0
  128. package/dist/teneo-sdk.js.map +1 -0
  129. package/dist/types/config.d.ts +1047 -0
  130. package/dist/types/config.d.ts.map +1 -0
  131. package/dist/types/config.js +720 -0
  132. package/dist/types/config.js.map +1 -0
  133. package/dist/types/error-codes.d.ts +29 -0
  134. package/dist/types/error-codes.d.ts.map +1 -0
  135. package/dist/types/error-codes.js +41 -0
  136. package/dist/types/error-codes.js.map +1 -0
  137. package/dist/types/events.d.ts +616 -0
  138. package/dist/types/events.d.ts.map +1 -0
  139. package/dist/types/events.js +261 -0
  140. package/dist/types/events.js.map +1 -0
  141. package/dist/types/health.d.ts +40 -0
  142. package/dist/types/health.d.ts.map +1 -0
  143. package/dist/types/health.js +6 -0
  144. package/dist/types/health.js.map +1 -0
  145. package/dist/types/index.d.ts +10 -0
  146. package/dist/types/index.d.ts.map +1 -0
  147. package/dist/types/index.js +123 -0
  148. package/dist/types/index.js.map +1 -0
  149. package/dist/types/messages.d.ts +3734 -0
  150. package/dist/types/messages.d.ts.map +1 -0
  151. package/dist/types/messages.js +482 -0
  152. package/dist/types/messages.js.map +1 -0
  153. package/dist/types/validation.d.ts +81 -0
  154. package/dist/types/validation.d.ts.map +1 -0
  155. package/dist/types/validation.js +115 -0
  156. package/dist/types/validation.js.map +1 -0
  157. package/dist/utils/bounded-queue.d.ts +127 -0
  158. package/dist/utils/bounded-queue.d.ts.map +1 -0
  159. package/dist/utils/bounded-queue.js +181 -0
  160. package/dist/utils/bounded-queue.js.map +1 -0
  161. package/dist/utils/circuit-breaker.d.ts +141 -0
  162. package/dist/utils/circuit-breaker.d.ts.map +1 -0
  163. package/dist/utils/circuit-breaker.js +215 -0
  164. package/dist/utils/circuit-breaker.js.map +1 -0
  165. package/dist/utils/deduplication-cache.d.ts +110 -0
  166. package/dist/utils/deduplication-cache.d.ts.map +1 -0
  167. package/dist/utils/deduplication-cache.js +177 -0
  168. package/dist/utils/deduplication-cache.js.map +1 -0
  169. package/dist/utils/event-waiter.d.ts +101 -0
  170. package/dist/utils/event-waiter.d.ts.map +1 -0
  171. package/dist/utils/event-waiter.js +118 -0
  172. package/dist/utils/event-waiter.js.map +1 -0
  173. package/dist/utils/index.d.ts +51 -0
  174. package/dist/utils/index.d.ts.map +1 -0
  175. package/dist/utils/index.js +72 -0
  176. package/dist/utils/index.js.map +1 -0
  177. package/dist/utils/logger.d.ts +22 -0
  178. package/dist/utils/logger.d.ts.map +1 -0
  179. package/dist/utils/logger.js +91 -0
  180. package/dist/utils/logger.js.map +1 -0
  181. package/dist/utils/rate-limiter.d.ts +122 -0
  182. package/dist/utils/rate-limiter.d.ts.map +1 -0
  183. package/dist/utils/rate-limiter.js +190 -0
  184. package/dist/utils/rate-limiter.js.map +1 -0
  185. package/dist/utils/retry-policy.d.ts +191 -0
  186. package/dist/utils/retry-policy.d.ts.map +1 -0
  187. package/dist/utils/retry-policy.js +225 -0
  188. package/dist/utils/retry-policy.js.map +1 -0
  189. package/dist/utils/secure-private-key.d.ts +113 -0
  190. package/dist/utils/secure-private-key.d.ts.map +1 -0
  191. package/dist/utils/secure-private-key.js +188 -0
  192. package/dist/utils/secure-private-key.js.map +1 -0
  193. package/dist/utils/signature-verifier.d.ts +143 -0
  194. package/dist/utils/signature-verifier.d.ts.map +1 -0
  195. package/dist/utils/signature-verifier.js +238 -0
  196. package/dist/utils/signature-verifier.js.map +1 -0
  197. package/dist/utils/ssrf-validator.d.ts +36 -0
  198. package/dist/utils/ssrf-validator.d.ts.map +1 -0
  199. package/dist/utils/ssrf-validator.js +195 -0
  200. package/dist/utils/ssrf-validator.js.map +1 -0
  201. package/examples/.env.example +17 -0
  202. package/examples/basic-usage.ts +211 -0
  203. package/examples/production-dashboard/.env.example +153 -0
  204. package/examples/production-dashboard/package.json +39 -0
  205. package/examples/production-dashboard/public/dashboard.html +642 -0
  206. package/examples/production-dashboard/server.ts +753 -0
  207. package/examples/webhook-integration.ts +239 -0
  208. package/examples/x-influencer-battle-redesign.html +1065 -0
  209. package/examples/x-influencer-battle-server.ts +217 -0
  210. package/examples/x-influencer-battle.html +787 -0
  211. package/package.json +65 -0
  212. package/src/constants.ts +43 -0
  213. package/src/core/websocket-client.test.ts +512 -0
  214. package/src/core/websocket-client.ts +1056 -0
  215. package/src/formatters/response-formatter.test.ts +571 -0
  216. package/src/formatters/response-formatter.ts +677 -0
  217. package/src/handlers/message-handler-registry.ts +239 -0
  218. package/src/handlers/message-handlers/agent-selected-handler.ts +40 -0
  219. package/src/handlers/message-handlers/agents-list-handler.ts +26 -0
  220. package/src/handlers/message-handlers/auth-error-handler.ts +31 -0
  221. package/src/handlers/message-handlers/auth-message-handler.ts +66 -0
  222. package/src/handlers/message-handlers/auth-required-handler.ts +23 -0
  223. package/src/handlers/message-handlers/auth-success-handler.ts +57 -0
  224. package/src/handlers/message-handlers/base-handler.ts +101 -0
  225. package/src/handlers/message-handlers/challenge-handler.ts +57 -0
  226. package/src/handlers/message-handlers/error-message-handler.ts +27 -0
  227. package/src/handlers/message-handlers/index.ts +77 -0
  228. package/src/handlers/message-handlers/list-rooms-response-handler.ts +28 -0
  229. package/src/handlers/message-handlers/ping-pong-handler.ts +30 -0
  230. package/src/handlers/message-handlers/regular-message-handler.ts +65 -0
  231. package/src/handlers/message-handlers/subscribe-response-handler.ts +47 -0
  232. package/src/handlers/message-handlers/task-response-handler.ts +45 -0
  233. package/src/handlers/message-handlers/types.ts +77 -0
  234. package/src/handlers/message-handlers/unsubscribe-response-handler.ts +47 -0
  235. package/src/handlers/webhook-handler.test.ts +789 -0
  236. package/src/handlers/webhook-handler.ts +576 -0
  237. package/src/index.ts +269 -0
  238. package/src/managers/agent-registry.test.ts +466 -0
  239. package/src/managers/agent-registry.ts +347 -0
  240. package/src/managers/connection-manager.ts +195 -0
  241. package/src/managers/index.ts +9 -0
  242. package/src/managers/message-router.ts +349 -0
  243. package/src/managers/room-manager.ts +248 -0
  244. package/src/teneo-sdk.ts +1022 -0
  245. package/src/types/config.test.ts +325 -0
  246. package/src/types/config.ts +799 -0
  247. package/src/types/error-codes.ts +44 -0
  248. package/src/types/events.test.ts +302 -0
  249. package/src/types/events.ts +382 -0
  250. package/src/types/health.ts +46 -0
  251. package/src/types/index.ts +199 -0
  252. package/src/types/messages.test.ts +660 -0
  253. package/src/types/messages.ts +570 -0
  254. package/src/types/validation.ts +123 -0
  255. package/src/utils/bounded-queue.test.ts +356 -0
  256. package/src/utils/bounded-queue.ts +205 -0
  257. package/src/utils/circuit-breaker.test.ts +394 -0
  258. package/src/utils/circuit-breaker.ts +262 -0
  259. package/src/utils/deduplication-cache.test.ts +380 -0
  260. package/src/utils/deduplication-cache.ts +198 -0
  261. package/src/utils/event-waiter.test.ts +381 -0
  262. package/src/utils/event-waiter.ts +172 -0
  263. package/src/utils/index.ts +74 -0
  264. package/src/utils/logger.ts +87 -0
  265. package/src/utils/rate-limiter.test.ts +341 -0
  266. package/src/utils/rate-limiter.ts +211 -0
  267. package/src/utils/retry-policy.test.ts +558 -0
  268. package/src/utils/retry-policy.ts +272 -0
  269. package/src/utils/secure-private-key.test.ts +356 -0
  270. package/src/utils/secure-private-key.ts +205 -0
  271. package/src/utils/signature-verifier.test.ts +464 -0
  272. package/src/utils/signature-verifier.ts +298 -0
  273. package/src/utils/ssrf-validator.test.ts +372 -0
  274. package/src/utils/ssrf-validator.ts +224 -0
  275. package/tests/integration/real-server.test.ts +740 -0
  276. package/tests/integration/websocket.test.ts +381 -0
  277. package/tests/integration-setup.ts +16 -0
  278. package/tests/setup.ts +34 -0
  279. package/tsconfig.json +32 -0
  280. package/vitest.config.ts +42 -0
  281. package/vitest.integration.config.ts +23 -0
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for auth_error messages
4
+ * Handles authentication errors
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AuthErrorHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const events_1 = require("../../types/events");
10
+ const base_handler_1 = require("./base-handler");
11
+ class AuthErrorHandler extends base_handler_1.BaseMessageHandler {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.type = "auth_error";
15
+ this.schema = types_1.AuthErrorMessageSchema;
16
+ }
17
+ async handleValidated(message, context) {
18
+ const error = message.data.error || "Authentication failed";
19
+ context.logger.error("Authentication failed", { error });
20
+ // Update states
21
+ this.updateAuthState(context, { authenticated: false });
22
+ this.updateConnectionState(context, {
23
+ lastError: new events_1.AuthenticationError(error)
24
+ });
25
+ // Emit error event
26
+ this.emit(context, "auth:error", error);
27
+ }
28
+ }
29
+ exports.AuthErrorHandler = AuthErrorHandler;
30
+ //# sourceMappingURL=auth-error-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-error-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-error-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAAuE;AACvE,+CAAyD;AACzD,iDAAoD;AAGpD,MAAa,gBAAiB,SAAQ,iCAAoC;IAA1E;;QACW,SAAI,GAAG,YAAqB,CAAC;QAC7B,WAAM,GAAG,8BAAsB,CAAC;IAkB3C,CAAC;IAhBW,KAAK,CAAC,eAAe,CAC7B,OAAyB,EACzB,OAAuB;QAEvB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,IAAI,uBAAuB,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAEzD,gBAAgB;QAChB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;YAClC,SAAS,EAAE,IAAI,4BAAmB,CAAC,KAAK,CAAC;SAC1C,CAAC,CAAC;QAEH,mBAAmB;QACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;CACF;AApBD,4CAoBC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Handler for auth messages
3
+ * Handles authentication response from server (both fresh and cached)
4
+ */
5
+ import { z } from "zod";
6
+ import { AuthMessage } from "../../types";
7
+ import { BaseMessageHandler } from "./base-handler";
8
+ import { HandlerContext } from "./types";
9
+ export declare class AuthMessageHandler extends BaseMessageHandler<AuthMessage> {
10
+ readonly type: "auth";
11
+ readonly schema: z.ZodSchema<AuthMessage>;
12
+ protected handleValidated(message: AuthMessage, context: HandlerContext): Promise<void>;
13
+ /**
14
+ * Extract and normalize rooms from auth data
15
+ */
16
+ private extractRooms;
17
+ }
18
+ //# sourceMappingURL=auth-message-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-message-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-message-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAA2B,MAAM,aAAa,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,WAAW,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAG,MAAM,CAAU;IAChC,QAAQ,CAAC,MAAM,EAAwB,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;cAEhD,eAAe,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C7F;;OAEG;IACH,OAAO,CAAC,YAAY;CAMrB"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for auth messages
4
+ * Handles authentication response from server (both fresh and cached)
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AuthMessageHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class AuthMessageHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "auth";
14
+ this.schema = types_1.AuthMessageSchema;
15
+ }
16
+ async handleValidated(message, context) {
17
+ context.logger.info("Handling auth message", {
18
+ hasData: !!message.data,
19
+ dataKeys: message.data ? Object.keys(message.data) : [],
20
+ to: message.to
21
+ });
22
+ // Check if this is a successful auth response by looking for required fields
23
+ if (message.data?.id || message.data?.address || message.data?.cached_auth || message.to) {
24
+ const isCachedAuth = !!message.data?.cached_auth;
25
+ context.logger.info(isCachedAuth ? "Using cached authentication" : "Authentication successful");
26
+ // Extract rooms
27
+ const rooms = this.extractRooms(message.data?.rooms);
28
+ // Update connection state
29
+ this.updateConnectionState(context, { authenticated: true });
30
+ // Update auth state
31
+ this.updateAuthState(context, {
32
+ authenticated: true,
33
+ clientId: message.data?.id || message.to || "",
34
+ walletAddress: message.data?.address || "",
35
+ isWhitelisted: message.data?.is_whitelisted,
36
+ isAdmin: message.data?.is_admin_whitelisted,
37
+ nftVerified: message.data?.nft_verified,
38
+ rooms: rooms.map((r) => r.id),
39
+ roomObjects: rooms,
40
+ privateRoomId: message.data?.private_room_id
41
+ });
42
+ // Get updated auth state
43
+ const authState = context.getAuthState();
44
+ // Emit events
45
+ this.emit(context, "auth:success", authState);
46
+ this.emit(context, "ready");
47
+ }
48
+ }
49
+ /**
50
+ * Extract and normalize rooms from auth data
51
+ */
52
+ extractRooms(rooms) {
53
+ if (!rooms || !Array.isArray(rooms)) {
54
+ return [];
55
+ }
56
+ return rooms;
57
+ }
58
+ }
59
+ exports.AuthMessageHandler = AuthMessageHandler;
60
+ //# sourceMappingURL=auth-message-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-message-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-message-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uCAAmE;AACnE,iDAAoD;AAGpD,MAAa,kBAAmB,SAAQ,iCAA+B;IAAvE;;QACW,SAAI,GAAG,MAAe,CAAC;QACvB,WAAM,GAAG,yBAA6C,CAAC;IAqDlE,CAAC;IAnDW,KAAK,CAAC,eAAe,CAAC,OAAoB,EAAE,OAAuB;QAC3E,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC3C,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI;YACvB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;YACvD,EAAE,EAAE,OAAO,CAAC,EAAE;SACf,CAAC,CAAC;QAEH,6EAA6E;QAC7E,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;YACzF,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;YACjD,OAAO,CAAC,MAAM,CAAC,IAAI,CACjB,YAAY,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,2BAA2B,CAC3E,CAAC;YAEF,gBAAgB;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAErD,0BAA0B;YAC1B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE7D,oBAAoB;YACpB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;gBAC5B,aAAa,EAAE,IAAI;gBACnB,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE;gBAC9C,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE;gBAC1C,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc;gBAC3C,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,oBAAoB;gBAC3C,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,YAAY;gBACvC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,WAAW,EAAE,KAAK;gBAClB,aAAa,EAAE,OAAO,CAAC,IAAI,EAAE,eAAe;aAC7C,CAAC,CAAC;YAEH,yBAAyB;YACzB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YAEzC,cAAc;YACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAc;QACjC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAvDD,gDAuDC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Handler for auth_required messages
3
+ * Server is requesting authentication
4
+ */
5
+ import { AuthRequiredMessage } from "../../types";
6
+ import { BaseMessageHandler } from "./base-handler";
7
+ import { HandlerContext } from "./types";
8
+ export declare class AuthRequiredHandler extends BaseMessageHandler<AuthRequiredMessage> {
9
+ readonly type: "auth_required";
10
+ readonly schema: import("zod").ZodObject<{
11
+ content_type: import("zod").ZodOptional<import("zod").ZodEnum<["text/plain", "text/markdown", "text/html", "application/json", "image/*", "STRING", "JSON", "MD", "ARRAY"]>>;
12
+ to: import("zod").ZodOptional<import("zod").ZodString>;
13
+ room: import("zod").ZodOptional<import("zod").ZodString>;
14
+ timestamp: import("zod").ZodOptional<import("zod").ZodString>;
15
+ signature: import("zod").ZodOptional<import("zod").ZodString>;
16
+ publicKey: import("zod").ZodOptional<import("zod").ZodString>;
17
+ reasoning: import("zod").ZodOptional<import("zod").ZodString>;
18
+ task_id: import("zod").ZodOptional<import("zod").ZodString>;
19
+ id: import("zod").ZodOptional<import("zod").ZodString>;
20
+ } & {
21
+ type: import("zod").ZodLiteral<"auth_required">;
22
+ content: import("zod").ZodOptional<import("zod").ZodString>;
23
+ from: import("zod").ZodOptional<import("zod").ZodLiteral<"system">>;
24
+ data: import("zod").ZodOptional<import("zod").ZodObject<{
25
+ cache_ttl_hours: import("zod").ZodOptional<import("zod").ZodNumber>;
26
+ supported_auth_methods: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
27
+ supports_cache_check: import("zod").ZodOptional<import("zod").ZodBoolean>;
28
+ }, "strip", import("zod").ZodTypeAny, {
29
+ cache_ttl_hours?: number | undefined;
30
+ supported_auth_methods?: string[] | undefined;
31
+ supports_cache_check?: boolean | undefined;
32
+ }, {
33
+ cache_ttl_hours?: number | undefined;
34
+ supported_auth_methods?: string[] | undefined;
35
+ supports_cache_check?: boolean | undefined;
36
+ }>>;
37
+ }, "strip", import("zod").ZodTypeAny, {
38
+ type: "auth_required";
39
+ id?: string | undefined;
40
+ room?: string | undefined;
41
+ content?: string | undefined;
42
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
43
+ from?: "system" | undefined;
44
+ to?: string | undefined;
45
+ timestamp?: string | undefined;
46
+ data?: {
47
+ cache_ttl_hours?: number | undefined;
48
+ supported_auth_methods?: string[] | undefined;
49
+ supports_cache_check?: boolean | undefined;
50
+ } | undefined;
51
+ signature?: string | undefined;
52
+ publicKey?: string | undefined;
53
+ reasoning?: string | undefined;
54
+ task_id?: string | undefined;
55
+ }, {
56
+ type: "auth_required";
57
+ id?: string | undefined;
58
+ room?: string | undefined;
59
+ content?: string | undefined;
60
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
61
+ from?: "system" | undefined;
62
+ to?: string | undefined;
63
+ timestamp?: string | undefined;
64
+ data?: {
65
+ cache_ttl_hours?: number | undefined;
66
+ supported_auth_methods?: string[] | undefined;
67
+ supports_cache_check?: boolean | undefined;
68
+ } | undefined;
69
+ signature?: string | undefined;
70
+ publicKey?: string | undefined;
71
+ reasoning?: string | undefined;
72
+ task_id?: string | undefined;
73
+ }>;
74
+ protected handleValidated(_message: AuthRequiredMessage, context: HandlerContext): Promise<void>;
75
+ }
76
+ //# sourceMappingURL=auth-required-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-required-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-required-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAA6B,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,mBAAoB,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IAC9E,QAAQ,CAAC,IAAI,EAAG,eAAe,CAAU;IACzC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA6B;cAE5B,eAAe,CAC7B,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;CAMjB"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for auth_required messages
4
+ * Server is requesting authentication
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AuthRequiredHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class AuthRequiredHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "auth_required";
14
+ this.schema = types_1.AuthRequiredMessageSchema;
15
+ }
16
+ async handleValidated(_message, context) {
17
+ context.logger.debug("Server requesting authentication");
18
+ // Emit auth:required event
19
+ this.emit(context, "auth:required");
20
+ }
21
+ }
22
+ exports.AuthRequiredHandler = AuthRequiredHandler;
23
+ //# sourceMappingURL=auth-required-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-required-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-required-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA6E;AAC7E,iDAAoD;AAGpD,MAAa,mBAAoB,SAAQ,iCAAuC;IAAhF;;QACW,SAAI,GAAG,eAAwB,CAAC;QAChC,WAAM,GAAG,iCAAyB,CAAC;IAW9C,CAAC;IATW,KAAK,CAAC,eAAe,CAC7B,QAA6B,EAC7B,OAAuB;QAEvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAEzD,2BAA2B;QAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACtC,CAAC;CACF;AAbD,kDAaC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Handler for auth_success messages
3
+ * Legacy support for explicit auth_success message type
4
+ */
5
+ import { z } from "zod";
6
+ import { AuthSuccessMessage } from "../../types";
7
+ import { BaseMessageHandler } from "./base-handler";
8
+ import { HandlerContext } from "./types";
9
+ export declare class AuthSuccessHandler extends BaseMessageHandler<AuthSuccessMessage> {
10
+ readonly type: "auth_success";
11
+ readonly schema: z.ZodSchema<AuthSuccessMessage>;
12
+ protected handleValidated(message: AuthSuccessMessage, context: HandlerContext): Promise<void>;
13
+ /**
14
+ * Extract and normalize rooms from auth data
15
+ */
16
+ private extractRooms;
17
+ }
18
+ //# sourceMappingURL=auth-success-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-success-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-success-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAkC,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,kBAAmB,SAAQ,kBAAkB,CAAC,kBAAkB,CAAC;IAC5E,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IACxC,QAAQ,CAAC,MAAM,EAA+B,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;cAE9D,eAAe,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;IA8BhB;;OAEG;IACH,OAAO,CAAC,YAAY;CAMrB"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for auth_success messages
4
+ * Legacy support for explicit auth_success message type
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AuthSuccessHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class AuthSuccessHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "auth_success";
14
+ this.schema = types_1.AuthSuccessMessageSchema;
15
+ }
16
+ async handleValidated(message, context) {
17
+ context.logger.info("Authentication successful");
18
+ // Extract rooms
19
+ const rooms = this.extractRooms(message.data.rooms);
20
+ // Update connection state
21
+ this.updateConnectionState(context, { authenticated: true });
22
+ // Update auth state
23
+ this.updateAuthState(context, {
24
+ authenticated: true,
25
+ clientId: message.data.id,
26
+ walletAddress: message.data.address,
27
+ isWhitelisted: message.data.is_whitelisted,
28
+ isAdmin: message.data.is_admin_whitelisted,
29
+ nftVerified: message.data.nft_verified,
30
+ rooms: rooms.map((r) => r.id),
31
+ roomObjects: rooms,
32
+ privateRoomId: message.data.private_room_id
33
+ });
34
+ // Get updated auth state
35
+ const authState = context.getAuthState();
36
+ // Emit events
37
+ this.emit(context, "auth:success", authState);
38
+ this.emit(context, "ready");
39
+ }
40
+ /**
41
+ * Extract and normalize rooms from auth data
42
+ */
43
+ extractRooms(rooms) {
44
+ if (!rooms || !Array.isArray(rooms)) {
45
+ return [];
46
+ }
47
+ return rooms;
48
+ }
49
+ }
50
+ exports.AuthSuccessHandler = AuthSuccessHandler;
51
+ //# sourceMappingURL=auth-success-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-success-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-success-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uCAAiF;AACjF,iDAAoD;AAGpD,MAAa,kBAAmB,SAAQ,iCAAsC;IAA9E;;QACW,SAAI,GAAG,cAAuB,CAAC;QAC/B,WAAM,GAAG,gCAA2D,CAAC;IA4ChF,CAAC;IA1CW,KAAK,CAAC,eAAe,CAC7B,OAA2B,EAC3B,OAAuB;QAEvB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QAEjD,gBAAgB;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpD,0BAA0B;QAC1B,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7D,oBAAoB;QACpB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;YAC5B,aAAa,EAAE,IAAI;YACnB,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE;YACzB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YACnC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc;YAC1C,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB;YAC1C,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;YACtC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,WAAW,EAAE,KAAK;YAClB,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe;SAC5C,CAAC,CAAC;QAEH,yBAAyB;QACzB,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QAEzC,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAc;QACjC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA9CD,gDA8CC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Base abstract class for message handlers
3
+ * Implements the template method pattern for consistent message handling
4
+ */
5
+ import { z } from "zod";
6
+ import { BaseMessage, MessageType } from "../../types";
7
+ import { MessageHandler, HandlerContext } from "./types";
8
+ /**
9
+ * Abstract base class for message handlers
10
+ * Provides common functionality and enforces consistent structure
11
+ */
12
+ export declare abstract class BaseMessageHandler<T extends BaseMessage = BaseMessage> implements MessageHandler<T> {
13
+ abstract readonly type: MessageType;
14
+ abstract readonly schema: z.ZodSchema<T>;
15
+ /**
16
+ * Check if this handler can handle the given message
17
+ */
18
+ canHandle(message: BaseMessage): boolean;
19
+ /**
20
+ * Main handle method - implements template method pattern
21
+ * 1. Validates message
22
+ * 2. Calls handleValidated (implemented by subclasses)
23
+ * 3. Handles errors
24
+ */
25
+ handle(message: BaseMessage, context: HandlerContext): Promise<void>;
26
+ /**
27
+ * Validate message against schema
28
+ */
29
+ protected validate(message: BaseMessage): T;
30
+ /**
31
+ * Handle validated message - implemented by subclasses
32
+ */
33
+ protected abstract handleValidated(message: T, context: HandlerContext): Promise<void> | void;
34
+ /**
35
+ * Handle errors - can be overridden by subclasses
36
+ */
37
+ protected onError(error: unknown, message: BaseMessage, context: HandlerContext): void;
38
+ /**
39
+ * Helper: emit event
40
+ */
41
+ protected emit(context: HandlerContext, event: string, ...args: any[]): void;
42
+ /**
43
+ * Helper: send webhook (fire-and-forget pattern)
44
+ */
45
+ protected sendWebhook(context: HandlerContext, type: string, data: any, metadata?: any): void;
46
+ /**
47
+ * Helper: update connection state
48
+ */
49
+ protected updateConnectionState(context: HandlerContext, update: any): void;
50
+ /**
51
+ * Helper: update auth state
52
+ */
53
+ protected updateAuthState(context: HandlerContext, update: any): void;
54
+ }
55
+ //# sourceMappingURL=base-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/base-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzD;;;GAGG;AACH,8BAAsB,kBAAkB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,CAC1E,YAAW,cAAc,CAAC,CAAC,CAAC;IAG5B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAEzC;;OAEG;IACI,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO;IAI/C;;;;;OAKG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAajF;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,GAAG,CAAC;IAQ3C;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAE7F;;OAEG;IACH,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAKtF;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI5E;;OAEG;IACH,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAO7F;;OAEG;IACH,SAAS,CAAC,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;IAI3E;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,GAAG,IAAI;CAGtE"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ /**
3
+ * Base abstract class for message handlers
4
+ * Implements the template method pattern for consistent message handling
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BaseMessageHandler = void 0;
8
+ /**
9
+ * Abstract base class for message handlers
10
+ * Provides common functionality and enforces consistent structure
11
+ */
12
+ class BaseMessageHandler {
13
+ /**
14
+ * Check if this handler can handle the given message
15
+ */
16
+ canHandle(message) {
17
+ return message.type === this.type;
18
+ }
19
+ /**
20
+ * Main handle method - implements template method pattern
21
+ * 1. Validates message
22
+ * 2. Calls handleValidated (implemented by subclasses)
23
+ * 3. Handles errors
24
+ */
25
+ async handle(message, context) {
26
+ try {
27
+ // Validate message with Zod schema
28
+ const validated = this.validate(message);
29
+ // Call subclass implementation
30
+ await this.handleValidated(validated, context);
31
+ }
32
+ catch (error) {
33
+ context.logger.error(`Error handling ${this.type} message`, error);
34
+ this.onError(error, message, context);
35
+ }
36
+ }
37
+ /**
38
+ * Validate message against schema
39
+ */
40
+ validate(message) {
41
+ const result = this.schema.safeParse(message);
42
+ if (!result.success) {
43
+ throw new Error(`Invalid ${this.type} message: ${result.error.message}`);
44
+ }
45
+ return result.data;
46
+ }
47
+ /**
48
+ * Handle errors - can be overridden by subclasses
49
+ */
50
+ onError(error, message, context) {
51
+ // Default: emit error event
52
+ context.emit("message:error", error, message);
53
+ }
54
+ /**
55
+ * Helper: emit event
56
+ */
57
+ emit(context, event, ...args) {
58
+ context.emit(event, ...args);
59
+ }
60
+ /**
61
+ * Helper: send webhook (fire-and-forget pattern)
62
+ */
63
+ sendWebhook(context, type, data, metadata) {
64
+ // Fire and forget - don't block event emission
65
+ context.sendWebhook(type, data, metadata).catch((error) => {
66
+ context.logger.error(`Failed to send webhook for ${this.type}`, error);
67
+ });
68
+ }
69
+ /**
70
+ * Helper: update connection state
71
+ */
72
+ updateConnectionState(context, update) {
73
+ context.updateConnectionState(update);
74
+ }
75
+ /**
76
+ * Helper: update auth state
77
+ */
78
+ updateAuthState(context, update) {
79
+ context.updateAuthState(update);
80
+ }
81
+ }
82
+ exports.BaseMessageHandler = BaseMessageHandler;
83
+ //# sourceMappingURL=base-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/base-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAMH;;;GAGG;AACH,MAAsB,kBAAkB;IAOtC;;OAEG;IACI,SAAS,CAAC,OAAoB;QACnC,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,MAAM,CAAC,OAAoB,EAAE,OAAuB;QAC/D,IAAI,CAAC;YACH,mCAAmC;YACnC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEzC,+BAA+B;YAC/B,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,IAAI,UAAU,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACO,QAAQ,CAAC,OAAoB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,aAAa,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAOD;;OAEG;IACO,OAAO,CAAC,KAAc,EAAE,OAAoB,EAAE,OAAuB;QAC7E,4BAA4B;QAC5B,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACO,IAAI,CAAC,OAAuB,EAAE,KAAa,EAAE,GAAG,IAAW;QACnE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;OAEG;IACO,WAAW,CAAC,OAAuB,EAAE,IAAY,EAAE,IAAS,EAAE,QAAc;QACpF,+CAA+C;QAC/C,OAAO,CAAC,WAAW,CAAC,IAAW,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YAC/D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,qBAAqB,CAAC,OAAuB,EAAE,MAAW;QAClE,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACO,eAAe,CAAC,OAAuB,EAAE,MAAW;QAC5D,OAAO,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;CACF;AAvFD,gDAuFC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Handler for challenge messages
3
+ * Handles authentication challenge-response flow
4
+ */
5
+ import { ChallengeMessage } from "../../types";
6
+ import { BaseMessageHandler } from "./base-handler";
7
+ import { HandlerContext } from "./types";
8
+ export declare class ChallengeHandler extends BaseMessageHandler<ChallengeMessage> {
9
+ readonly type: "challenge";
10
+ readonly schema: import("zod").ZodObject<{
11
+ content: import("zod").ZodOptional<import("zod").ZodAny>;
12
+ content_type: import("zod").ZodOptional<import("zod").ZodEnum<["text/plain", "text/markdown", "text/html", "application/json", "image/*", "STRING", "JSON", "MD", "ARRAY"]>>;
13
+ from: import("zod").ZodOptional<import("zod").ZodString>;
14
+ to: import("zod").ZodOptional<import("zod").ZodString>;
15
+ room: import("zod").ZodOptional<import("zod").ZodString>;
16
+ timestamp: import("zod").ZodOptional<import("zod").ZodString>;
17
+ signature: import("zod").ZodOptional<import("zod").ZodString>;
18
+ publicKey: import("zod").ZodOptional<import("zod").ZodString>;
19
+ reasoning: import("zod").ZodOptional<import("zod").ZodString>;
20
+ task_id: import("zod").ZodOptional<import("zod").ZodString>;
21
+ id: import("zod").ZodOptional<import("zod").ZodString>;
22
+ } & {
23
+ type: import("zod").ZodLiteral<"challenge">;
24
+ data: import("zod").ZodObject<{
25
+ challenge: import("zod").ZodString;
26
+ timestamp: import("zod").ZodNumber;
27
+ }, "strip", import("zod").ZodTypeAny, {
28
+ challenge: string;
29
+ timestamp: number;
30
+ }, {
31
+ challenge: string;
32
+ timestamp: number;
33
+ }>;
34
+ }, "strip", import("zod").ZodTypeAny, {
35
+ type: "challenge";
36
+ data: {
37
+ challenge: string;
38
+ timestamp: number;
39
+ };
40
+ id?: string | undefined;
41
+ room?: string | undefined;
42
+ content?: any;
43
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
44
+ from?: string | undefined;
45
+ to?: string | undefined;
46
+ timestamp?: string | undefined;
47
+ signature?: string | undefined;
48
+ publicKey?: string | undefined;
49
+ reasoning?: string | undefined;
50
+ task_id?: string | undefined;
51
+ }, {
52
+ type: "challenge";
53
+ data: {
54
+ challenge: string;
55
+ timestamp: number;
56
+ };
57
+ id?: string | undefined;
58
+ room?: string | undefined;
59
+ content?: any;
60
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
61
+ from?: string | undefined;
62
+ to?: string | undefined;
63
+ timestamp?: string | undefined;
64
+ signature?: string | undefined;
65
+ publicKey?: string | undefined;
66
+ reasoning?: string | undefined;
67
+ task_id?: string | undefined;
68
+ }>;
69
+ private clientType;
70
+ constructor(clientType?: "user" | "agent" | "coordinator");
71
+ protected handleValidated(message: ChallengeMessage, context: HandlerContext): Promise<void>;
72
+ }
73
+ //# sourceMappingURL=challenge-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challenge-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/challenge-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAsC,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,gBAAiB,SAAQ,kBAAkB,CAAC,gBAAgB,CAAC;IACxE,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA0B;IACzC,OAAO,CAAC,UAAU,CAAmC;gBAEzC,UAAU,GAAE,MAAM,GAAG,OAAO,GAAG,aAAsB;cAKjD,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;CAkCjB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for challenge messages
4
+ * Handles authentication challenge-response flow
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ChallengeHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class ChallengeHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor(clientType = "user") {
12
+ super();
13
+ this.type = "challenge";
14
+ this.schema = types_1.ChallengeMessageSchema;
15
+ this.clientType = clientType;
16
+ }
17
+ async handleValidated(message, context) {
18
+ if (!context.account) {
19
+ context.logger.error("Received challenge but no account configured");
20
+ return;
21
+ }
22
+ const challenge = message.data.challenge;
23
+ context.logger.debug("Received authentication challenge");
24
+ // Update auth state with challenge
25
+ this.updateAuthState(context, {
26
+ challenge,
27
+ challengeTimestamp: message.data.timestamp
28
+ });
29
+ // Emit challenge event
30
+ this.emit(context, "auth:challenge", challenge);
31
+ try {
32
+ // Sign challenge
33
+ const messageToSign = `Teneo authentication challenge: ${challenge}`;
34
+ const signature = await context.account.signMessage({
35
+ message: messageToSign
36
+ });
37
+ // Send authentication
38
+ await context.sendMessage((0, types_1.createAuth)(context.account.address, signature, messageToSign, this.clientType));
39
+ }
40
+ catch (error) {
41
+ context.logger.error("Failed to sign challenge", error);
42
+ this.emit(context, "auth:error", "Failed to sign challenge");
43
+ }
44
+ }
45
+ }
46
+ exports.ChallengeHandler = ChallengeHandler;
47
+ //# sourceMappingURL=challenge-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challenge-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/challenge-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAAmF;AACnF,iDAAoD;AAGpD,MAAa,gBAAiB,SAAQ,iCAAoC;IAKxE,YAAY,aAA+C,MAAM;QAC/D,KAAK,EAAE,CAAC;QALD,SAAI,GAAG,WAAoB,CAAC;QAC5B,WAAM,GAAG,8BAAsB,CAAC;QAKvC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,eAAe,CAC7B,OAAyB,EACzB,OAAuB;QAEvB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QAE1D,mCAAmC;QACnC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;YAC5B,SAAS;YACT,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS;SAC3C,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAEhD,IAAI,CAAC;YACH,iBAAiB;YACjB,MAAM,aAAa,GAAG,mCAAmC,SAAS,EAAE,CAAC;YACrE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;gBAClD,OAAO,EAAE,aAAa;aACvB,CAAC,CAAC;YAEH,sBAAsB;YACtB,MAAM,OAAO,CAAC,WAAW,CACvB,IAAA,kBAAU,EAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAC/E,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,0BAA0B,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;CACF;AA/CD,4CA+CC"}