@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,59 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for regular 'message' type messages
4
+ * Processes messages from agents (when they send 'message' instead of 'task_response')
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.RegularMessageHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class RegularMessageHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "message";
14
+ this.schema = types_1.UserMessageSchema;
15
+ }
16
+ async handleValidated(message, context) {
17
+ // Check if this message has a 'from' field and content
18
+ if (!message.from || !message.content) {
19
+ return;
20
+ }
21
+ if (!message.room) {
22
+ context.logger.warn("Inbound 'message' lacks room; proceeding without room context", {
23
+ from: message.from
24
+ });
25
+ }
26
+ const authState = context.getAuthState();
27
+ const fromLower = message.from.toLowerCase();
28
+ const walletLower = authState.walletAddress?.toLowerCase();
29
+ context.logger.debug('Received message type "message"', {
30
+ from: message.from,
31
+ fromLower,
32
+ walletLower
33
+ });
34
+ // If message is NOT from the user's wallet, it's likely from an agent
35
+ // Treat it as an agent response
36
+ if (fromLower !== walletLower) {
37
+ context.logger.info("Treating message as agent response", {
38
+ from: message.from,
39
+ contentPreview: typeof message.content === "string" ? message.content.substring(0, 100) : "non-string",
40
+ room: message.room
41
+ });
42
+ // Build agent response
43
+ const response = {
44
+ taskId: message.data?.task_id || `msg-${Date.now()}`,
45
+ agentId: message.from,
46
+ agentName: message.data?.agent_name || "Agent",
47
+ content: typeof message.content === "string" ? message.content : JSON.stringify(message.content),
48
+ contentType: message.content_type || "text/plain",
49
+ success: true,
50
+ timestamp: new Date(),
51
+ humanized: typeof message.content === "string" ? message.content : JSON.stringify(message.content)
52
+ };
53
+ // Emit agent:response event
54
+ this.emit(context, "agent:response", response);
55
+ }
56
+ }
57
+ }
58
+ exports.RegularMessageHandler = RegularMessageHandler;
59
+ //# sourceMappingURL=regular-message-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"regular-message-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/regular-message-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA6D;AAE7D,iDAAoD;AAGpD,MAAa,qBAAsB,SAAQ,iCAA+B;IAA1E;;QACW,SAAI,GAAG,SAAkB,CAAC;QAC1B,WAAM,GAAG,yBAAiB,CAAC;IAoDtC,CAAC;IAlDW,KAAK,CAAC,eAAe,CAAC,OAAoB,EAAE,OAAuB;QAC3E,uDAAuD;QACvD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,+DAA+D,EAAE;gBACnF,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC,CAAC;QACL,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,CAAC;QAE3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;YACtD,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;QAEH,sEAAsE;QACtE,gCAAgC;QAChC,IAAI,SAAS,KAAK,WAAW,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE;gBACxD,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,cAAc,EACZ,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY;gBACxF,IAAI,EAAE,OAAO,CAAC,IAAI;aACnB,CAAC,CAAC;YAEH,uBAAuB;YACvB,MAAM,QAAQ,GAAkB;gBAC9B,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;gBACpD,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,UAAU,IAAI,OAAO;gBAC9C,OAAO,EACL,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;gBACzF,WAAW,EAAE,OAAO,CAAC,YAAY,IAAI,YAAY;gBACjD,OAAO,EAAE,IAAI;gBACb,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EACP,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;aAC1F,CAAC;YAEF,4BAA4B;YAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;CACF;AAtDD,sDAsDC"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Handler for subscribe response messages
3
+ * Processes room subscription confirmations
4
+ */
5
+ import { SubscribeResponse } from "../../types";
6
+ import { BaseMessageHandler } from "./base-handler";
7
+ import { HandlerContext } from "./types";
8
+ export declare class SubscribeResponseHandler extends BaseMessageHandler<SubscribeResponse> {
9
+ readonly type: "subscribe";
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<"subscribe">;
24
+ data: import("zod").ZodObject<{
25
+ room_id: import("zod").ZodString;
26
+ success: import("zod").ZodBoolean;
27
+ message: import("zod").ZodString;
28
+ subscriptions: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
29
+ }, "strip", import("zod").ZodTypeAny, {
30
+ message: string;
31
+ room_id: string;
32
+ success: boolean;
33
+ subscriptions?: string[] | undefined;
34
+ }, {
35
+ message: string;
36
+ room_id: string;
37
+ success: boolean;
38
+ subscriptions?: string[] | undefined;
39
+ }>;
40
+ }, "strip", import("zod").ZodTypeAny, {
41
+ type: "subscribe";
42
+ data: {
43
+ message: string;
44
+ room_id: string;
45
+ success: boolean;
46
+ subscriptions?: string[] | undefined;
47
+ };
48
+ id?: string | undefined;
49
+ room?: string | undefined;
50
+ content?: any;
51
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
52
+ from?: string | undefined;
53
+ to?: string | undefined;
54
+ timestamp?: string | undefined;
55
+ signature?: string | undefined;
56
+ publicKey?: string | undefined;
57
+ reasoning?: string | undefined;
58
+ task_id?: string | undefined;
59
+ }, {
60
+ type: "subscribe";
61
+ data: {
62
+ message: string;
63
+ room_id: string;
64
+ success: boolean;
65
+ subscriptions?: string[] | undefined;
66
+ };
67
+ id?: string | undefined;
68
+ room?: string | undefined;
69
+ content?: any;
70
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
71
+ from?: string | undefined;
72
+ to?: string | undefined;
73
+ timestamp?: string | undefined;
74
+ signature?: string | undefined;
75
+ publicKey?: string | undefined;
76
+ reasoning?: string | undefined;
77
+ task_id?: string | undefined;
78
+ }>;
79
+ protected handleValidated(message: SubscribeResponse, context: HandlerContext): void;
80
+ }
81
+ //# sourceMappingURL=subscribe-response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-response-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/subscribe-response-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAA2B,MAAM,aAAa,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,wBAAyB,SAAQ,kBAAkB,CAAC,iBAAiB,CAAC;IACjF,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA2B;IAE1C,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;CAiCrF"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for subscribe response messages
4
+ * Processes room subscription confirmations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.SubscribeResponseHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class SubscribeResponseHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "subscribe";
14
+ this.schema = types_1.SubscribeResponseSchema;
15
+ }
16
+ handleValidated(message, context) {
17
+ context.logger.debug("Handling subscribe response", {
18
+ roomId: message.data.room_id,
19
+ success: message.data.success
20
+ });
21
+ if (message.data.success) {
22
+ // Update subscription state from server's authoritative list
23
+ if (context.roomManager && message.data.subscriptions) {
24
+ context.roomManager.updateSubscriptions(message.data.subscriptions);
25
+ }
26
+ // Emit room:subscribed event
27
+ this.emit(context, "room:subscribed", {
28
+ roomId: message.data.room_id,
29
+ subscriptions: message.data.subscriptions || []
30
+ });
31
+ // Send webhook (fire-and-forget)
32
+ this.sendWebhook(context, "room_subscribed", {
33
+ roomId: message.data.room_id,
34
+ subscriptions: message.data.subscriptions
35
+ });
36
+ }
37
+ else {
38
+ context.logger.warn("Room subscription failed", {
39
+ roomId: message.data.room_id,
40
+ message: message.data.message
41
+ });
42
+ // Emit error event
43
+ this.emit(context, "error", new Error(`Subscription failed: ${message.data.message}`));
44
+ }
45
+ }
46
+ }
47
+ exports.SubscribeResponseHandler = SubscribeResponseHandler;
48
+ //# sourceMappingURL=subscribe-response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscribe-response-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/subscribe-response-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAAyE;AACzE,iDAAoD;AAGpD,MAAa,wBAAyB,SAAQ,iCAAqC;IAAnF;;QACW,SAAI,GAAG,WAAoB,CAAC;QAC5B,WAAM,GAAG,+BAAuB,CAAC;IAmC5C,CAAC;IAjCW,eAAe,CAAC,OAA0B,EAAE,OAAuB;QAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE;YAClD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;SAC9B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,6DAA6D;YAC7D,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtD,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACtE,CAAC;YAED,6BAA6B;YAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,EAAE;gBACpC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE;aAChD,CAAC,CAAC;YAEH,iCAAiC;YACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,EAAE;gBAC3C,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa;aAC1C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE;gBAC9C,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;aAC9B,CAAC,CAAC;YAEH,mBAAmB;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,wBAAwB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;CACF;AArCD,4DAqCC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Handler for task_response messages
3
+ * Processes agent responses to tasks
4
+ */
5
+ import { z } from "zod";
6
+ import { TaskResponseMessage } from "../../types";
7
+ import { BaseMessageHandler } from "./base-handler";
8
+ import { HandlerContext } from "./types";
9
+ export declare class TaskResponseHandler extends BaseMessageHandler<TaskResponseMessage> {
10
+ readonly type: "task_response";
11
+ readonly schema: z.ZodSchema<TaskResponseMessage>;
12
+ protected handleValidated(message: TaskResponseMessage, context: HandlerContext): void;
13
+ }
14
+ //# sourceMappingURL=task-response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-response-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/task-response-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAA6B,MAAM,aAAa,CAAC;AAE7E,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,EAAgC,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;IAEhF,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;CA6BvF"}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for task_response messages
4
+ * Processes agent responses to tasks
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TaskResponseHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class TaskResponseHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "task_response";
14
+ this.schema = types_1.TaskResponseMessageSchema;
15
+ }
16
+ handleValidated(message, context) {
17
+ context.logger.debug("Handling task_response message", {
18
+ taskId: message.data.task_id,
19
+ from: message.from
20
+ });
21
+ // Build agent response
22
+ const response = {
23
+ taskId: message.data.task_id,
24
+ agentId: message.from || "",
25
+ agentName: message.data.agent_name,
26
+ content: message.content,
27
+ contentType: message.content_type,
28
+ success: message.data.success !== false,
29
+ error: message.data.error,
30
+ timestamp: new Date(),
31
+ raw: message,
32
+ humanized: message.content
33
+ };
34
+ // Emit agent:response event
35
+ this.emit(context, "agent:response", response);
36
+ // Send webhook (fire-and-forget)
37
+ this.sendWebhook(context, "task_response", response, {
38
+ agentId: response.agentId,
39
+ taskId: response.taskId
40
+ });
41
+ }
42
+ }
43
+ exports.TaskResponseHandler = TaskResponseHandler;
44
+ //# sourceMappingURL=task-response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-response-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/task-response-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uCAA6E;AAE7E,iDAAoD;AAGpD,MAAa,mBAAoB,SAAQ,iCAAuC;IAAhF;;QACW,SAAI,GAAG,eAAwB,CAAC;QAChC,WAAM,GAAG,iCAA6D,CAAC;IA+BlF,CAAC;IA7BW,eAAe,CAAC,OAA4B,EAAE,OAAuB;QAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE;YACrD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QAEH,uBAAuB;QACvB,MAAM,QAAQ,GAAkB;YAC9B,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,IAAI,EAAE;YAC3B,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;YAClC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,WAAW,EAAE,OAAO,CAAC,YAAY;YACjC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK;YACvC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK;YACzB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG,EAAE,OAAO;YACZ,SAAS,EAAE,OAAO,CAAC,OAAO;SAC3B,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;QAE/C,iCAAiC;QACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE;YACnD,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;SACxB,CAAC,CAAC;IACL,CAAC;CACF;AAjCD,kDAiCC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Types and interfaces for the Message Handler Registry pattern
3
+ * Defines the contract for message handlers and their context
4
+ */
5
+ import { z } from "zod";
6
+ import { BaseMessage, MessageType, Logger, WebhookEventType } from "../../types";
7
+ import { FormattedResponse } from "../../formatters/response-formatter";
8
+ import { PrivateKeyAccount } from "viem/accounts";
9
+ /**
10
+ * Context provided to message handlers
11
+ * Contains all dependencies needed to handle messages
12
+ */
13
+ export interface HandlerContext {
14
+ emit: (event: string, ...args: any[]) => void;
15
+ sendWebhook: (type: WebhookEventType, data: any, metadata?: any) => Promise<void>;
16
+ formatResponse?: (message: BaseMessage) => FormattedResponse;
17
+ logger: Logger;
18
+ getConnectionState: () => any;
19
+ getAuthState: () => any;
20
+ updateConnectionState: (update: any) => void;
21
+ updateAuthState: (update: any) => void;
22
+ roomManager?: any;
23
+ account?: PrivateKeyAccount;
24
+ sendMessage: (message: BaseMessage) => Promise<void>;
25
+ }
26
+ /**
27
+ * Message handler interface
28
+ * Each message type has a handler implementing this interface
29
+ */
30
+ export interface MessageHandler<T extends BaseMessage = BaseMessage> {
31
+ readonly type: MessageType;
32
+ readonly schema: z.ZodSchema<T>;
33
+ handle(message: BaseMessage, context: HandlerContext): Promise<void> | void;
34
+ canHandle(message: BaseMessage): boolean;
35
+ }
36
+ /**
37
+ * Handler metadata for registration
38
+ */
39
+ export interface HandlerMetadata {
40
+ type: MessageType;
41
+ description?: string;
42
+ priority?: number;
43
+ }
44
+ /**
45
+ * Handler registration options
46
+ */
47
+ export interface HandlerRegistrationOptions {
48
+ replace?: boolean;
49
+ priority?: number;
50
+ }
51
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAE7B,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;IAG9C,WAAW,EAAE,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAGlF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,iBAAiB,CAAC;IAG7D,MAAM,EAAE,MAAM,CAAC;IAGf,kBAAkB,EAAE,MAAM,GAAG,CAAC;IAC9B,YAAY,EAAE,MAAM,GAAG,CAAC;IACxB,qBAAqB,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7C,eAAe,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAGvC,WAAW,CAAC,EAAE,GAAG,CAAC;IAGlB,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAG5B,WAAW,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD;AAED;;;GAGG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IAEjE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAG3B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAGhC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAG5E,SAAS,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Types and interfaces for the Message Handler Registry pattern
4
+ * Defines the contract for message handlers and their context
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/types.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Handler for unsubscribe response messages
3
+ * Processes room unsubscription confirmations
4
+ */
5
+ import { UnsubscribeResponse } from "../../types";
6
+ import { BaseMessageHandler } from "./base-handler";
7
+ import { HandlerContext } from "./types";
8
+ export declare class UnsubscribeResponseHandler extends BaseMessageHandler<UnsubscribeResponse> {
9
+ readonly type: "unsubscribe";
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<"unsubscribe">;
24
+ data: import("zod").ZodObject<{
25
+ room_id: import("zod").ZodString;
26
+ success: import("zod").ZodBoolean;
27
+ message: import("zod").ZodString;
28
+ subscriptions: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodString, "many">>;
29
+ }, "strip", import("zod").ZodTypeAny, {
30
+ message: string;
31
+ room_id: string;
32
+ success: boolean;
33
+ subscriptions?: string[] | undefined;
34
+ }, {
35
+ message: string;
36
+ room_id: string;
37
+ success: boolean;
38
+ subscriptions?: string[] | undefined;
39
+ }>;
40
+ }, "strip", import("zod").ZodTypeAny, {
41
+ type: "unsubscribe";
42
+ data: {
43
+ message: string;
44
+ room_id: string;
45
+ success: boolean;
46
+ subscriptions?: string[] | undefined;
47
+ };
48
+ id?: string | undefined;
49
+ room?: string | undefined;
50
+ content?: any;
51
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
52
+ from?: string | undefined;
53
+ to?: string | undefined;
54
+ timestamp?: string | undefined;
55
+ signature?: string | undefined;
56
+ publicKey?: string | undefined;
57
+ reasoning?: string | undefined;
58
+ task_id?: string | undefined;
59
+ }, {
60
+ type: "unsubscribe";
61
+ data: {
62
+ message: string;
63
+ room_id: string;
64
+ success: boolean;
65
+ subscriptions?: string[] | undefined;
66
+ };
67
+ id?: string | undefined;
68
+ room?: string | undefined;
69
+ content?: any;
70
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
71
+ from?: string | undefined;
72
+ to?: string | undefined;
73
+ timestamp?: string | undefined;
74
+ signature?: string | undefined;
75
+ publicKey?: string | undefined;
76
+ reasoning?: string | undefined;
77
+ task_id?: string | undefined;
78
+ }>;
79
+ protected handleValidated(message: UnsubscribeResponse, context: HandlerContext): void;
80
+ }
81
+ //# sourceMappingURL=unsubscribe-response-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsubscribe-response-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/unsubscribe-response-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,0BAA2B,SAAQ,kBAAkB,CAAC,mBAAmB,CAAC;IACrF,QAAQ,CAAC,IAAI,EAAG,aAAa,CAAU;IACvC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA6B;IAE5C,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;CAiCvF"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for unsubscribe response messages
4
+ * Processes room unsubscription confirmations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.UnsubscribeResponseHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class UnsubscribeResponseHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "unsubscribe";
14
+ this.schema = types_1.UnsubscribeResponseSchema;
15
+ }
16
+ handleValidated(message, context) {
17
+ context.logger.debug("Handling unsubscribe response", {
18
+ roomId: message.data.room_id,
19
+ success: message.data.success
20
+ });
21
+ if (message.data.success) {
22
+ // Update subscription state from server's authoritative list
23
+ if (context.roomManager && message.data.subscriptions) {
24
+ context.roomManager.updateSubscriptions(message.data.subscriptions);
25
+ }
26
+ // Emit room:unsubscribed event
27
+ this.emit(context, "room:unsubscribed", {
28
+ roomId: message.data.room_id,
29
+ subscriptions: message.data.subscriptions || []
30
+ });
31
+ // Send webhook (fire-and-forget)
32
+ this.sendWebhook(context, "room_unsubscribed", {
33
+ roomId: message.data.room_id,
34
+ subscriptions: message.data.subscriptions
35
+ });
36
+ }
37
+ else {
38
+ context.logger.warn("Room unsubscription failed", {
39
+ roomId: message.data.room_id,
40
+ message: message.data.message
41
+ });
42
+ // Emit error event
43
+ this.emit(context, "error", new Error(`Unsubscription failed: ${message.data.message}`));
44
+ }
45
+ }
46
+ }
47
+ exports.UnsubscribeResponseHandler = UnsubscribeResponseHandler;
48
+ //# sourceMappingURL=unsubscribe-response-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unsubscribe-response-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/unsubscribe-response-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA6E;AAC7E,iDAAoD;AAGpD,MAAa,0BAA2B,SAAQ,iCAAuC;IAAvF;;QACW,SAAI,GAAG,aAAsB,CAAC;QAC9B,WAAM,GAAG,iCAAyB,CAAC;IAmC9C,CAAC;IAjCW,eAAe,CAAC,OAA4B,EAAE,OAAuB;QAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,EAAE;YACpD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;SAC9B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,6DAA6D;YAC7D,IAAI,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;gBACtD,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACtE,CAAC;YAED,+BAA+B;YAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,EAAE;gBACtC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE;aAChD,CAAC,CAAC;YAEH,iCAAiC;YACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,mBAAmB,EAAE;gBAC7C,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC5B,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,aAAa;aAC1C,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBAChD,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC5B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;aAC9B,CAAC,CAAC;YAEH,mBAAmB;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;CACF;AArCD,gEAqCC"}