@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,155 @@
1
+ /**
2
+ * Message Handler Registry
3
+ * Central registry for message handlers - eliminates shotgun surgery when adding new message types
4
+ */
5
+ import { BaseMessage, MessageType, Logger } from "../types";
6
+ import { MessageHandler, HandlerContext, HandlerRegistrationOptions } from "./message-handlers/types";
7
+ /**
8
+ * Registry for message handlers
9
+ * Stores handlers by message type and routes messages to appropriate handlers
10
+ */
11
+ export declare class MessageHandlerRegistry {
12
+ private readonly handlers;
13
+ private readonly logger;
14
+ constructor(logger: Logger);
15
+ /**
16
+ * Registers a message handler for a specific message type.
17
+ * Prevents duplicate registration unless replace option is true.
18
+ * Enables extensible message processing following Open/Closed Principle.
19
+ *
20
+ * @param handler - The handler to register (must have unique type)
21
+ * @param options - Registration options
22
+ * @param options.replace - Whether to replace existing handler (default: false)
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const customHandler = new CustomMessageHandler();
27
+ * registry.register(customHandler);
28
+ *
29
+ * // Replace existing handler
30
+ * registry.register(newHandler, { replace: true });
31
+ * ```
32
+ */
33
+ register(handler: MessageHandler, options?: HandlerRegistrationOptions): void;
34
+ /**
35
+ * Registers multiple message handlers at once.
36
+ * Convenient for bulk registration of default or custom handlers.
37
+ * Uses same registration logic as register() for each handler.
38
+ *
39
+ * @param handlers - Array of handlers to register
40
+ * @param options - Registration options applied to all handlers
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * const handlers = [
45
+ * new TaskResponseHandler(),
46
+ * new AgentSelectedHandler(),
47
+ * new ErrorHandler()
48
+ * ];
49
+ * registry.registerAll(handlers);
50
+ * ```
51
+ */
52
+ registerAll(handlers: MessageHandler[], options?: HandlerRegistrationOptions): void;
53
+ /**
54
+ * Unregisters a handler for a specific message type.
55
+ * Returns whether a handler was actually removed.
56
+ *
57
+ * @param type - The message type to unregister
58
+ * @returns True if handler was removed, false if no handler existed
59
+ *
60
+ * @example
61
+ * ```typescript
62
+ * const removed = registry.unregister('task_response');
63
+ * if (removed) {
64
+ * console.log('Handler removed successfully');
65
+ * }
66
+ * ```
67
+ */
68
+ unregister(type: MessageType): boolean;
69
+ /**
70
+ * Checks if a handler is registered for a specific message type.
71
+ * Useful for conditional logic based on handler availability.
72
+ *
73
+ * @param type - The message type to check
74
+ * @returns True if handler exists, false otherwise
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * if (registry.has('task_response')) {
79
+ * console.log('Task response handler is registered');
80
+ * }
81
+ * ```
82
+ */
83
+ has(type: MessageType): boolean;
84
+ /**
85
+ * Gets a registered handler for a specific message type.
86
+ * Returns undefined if no handler is registered for the type.
87
+ *
88
+ * @param type - The message type to get handler for
89
+ * @returns The handler if found, undefined otherwise
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const handler = registry.get('task_response');
94
+ * if (handler) {
95
+ * console.log(`Handler found: ${handler.type}`);
96
+ * }
97
+ * ```
98
+ */
99
+ get(type: MessageType): MessageHandler | undefined;
100
+ /**
101
+ * Routes a message to its appropriate handler based on message type.
102
+ * Validates handler can process the message before delegating.
103
+ * Catches and logs handler errors, wrapping them in ValidationError.
104
+ *
105
+ * @param message - The message to handle
106
+ * @param context - Handler context with dependencies (logger, emit, etc.)
107
+ * @returns Promise that resolves when message is handled
108
+ * @throws {ValidationError} If handler throws an error during processing
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * const message = { type: 'task_response', ... };
113
+ * const context = createHandlerContext();
114
+ * await registry.handle(message, context);
115
+ * ```
116
+ */
117
+ handle(message: BaseMessage, context: HandlerContext): Promise<void>;
118
+ /**
119
+ * Gets an array of all currently registered message types.
120
+ * Useful for introspection and debugging handler configuration.
121
+ *
122
+ * @returns Array of message types that have registered handlers
123
+ *
124
+ * @example
125
+ * ```typescript
126
+ * const types = registry.getRegisteredTypes();
127
+ * console.log(`Registered handlers: ${types.join(', ')}`);
128
+ * ```
129
+ */
130
+ getRegisteredTypes(): MessageType[];
131
+ /**
132
+ * Gets the total number of registered handlers.
133
+ * Convenience getter for handler count.
134
+ *
135
+ * @returns Number of registered handlers
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * console.log(`${registry.size} handlers registered`);
140
+ * ```
141
+ */
142
+ get size(): number;
143
+ /**
144
+ * Clears all registered handlers from the registry.
145
+ * Useful for testing or resetting handler configuration.
146
+ *
147
+ * @example
148
+ * ```typescript
149
+ * registry.clear();
150
+ * console.log('All handlers cleared');
151
+ * ```
152
+ */
153
+ clear(): void;
154
+ }
155
+ //# sourceMappingURL=message-handler-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-handler-registry.d.ts","sourceRoot":"","sources":["../../src/handlers/message-handler-registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,cAAc,EACd,0BAA0B,EAC3B,MAAM,0BAA0B,CAAC;AAGlC;;;GAGG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0C;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,EAAE,MAAM;IAI1B;;;;;;;;;;;;;;;;;OAiBG;IACI,QAAQ,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,GAAE,0BAA+B,GAAG,IAAI;IAexF;;;;;;;;;;;;;;;;;OAiBG;IACI,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,OAAO,GAAE,0BAA+B,GAAG,IAAI;IAM9F;;;;;;;;;;;;;;OAcG;IACI,UAAU,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAQ7C;;;;;;;;;;;;;OAaG;IACI,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO;IAItC;;;;;;;;;;;;;;OAcG;IACI,GAAG,CAAC,IAAI,EAAE,WAAW,GAAG,cAAc,GAAG,SAAS;IAIzD;;;;;;;;;;;;;;;;OAgBG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAkCjF;;;;;;;;;;;OAWG;IACI,kBAAkB,IAAI,WAAW,EAAE;IAI1C;;;;;;;;;;OAUG;IACH,IAAW,IAAI,IAAI,MAAM,CAExB;IAED;;;;;;;;;OASG;IACI,KAAK,IAAI,IAAI;CAIrB"}
@@ -0,0 +1,216 @@
1
+ "use strict";
2
+ /**
3
+ * Message Handler Registry
4
+ * Central registry for message handlers - eliminates shotgun surgery when adding new message types
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MessageHandlerRegistry = void 0;
8
+ const events_1 = require("../types/events");
9
+ /**
10
+ * Registry for message handlers
11
+ * Stores handlers by message type and routes messages to appropriate handlers
12
+ */
13
+ class MessageHandlerRegistry {
14
+ constructor(logger) {
15
+ this.handlers = new Map();
16
+ this.logger = logger;
17
+ }
18
+ /**
19
+ * Registers a message handler for a specific message type.
20
+ * Prevents duplicate registration unless replace option is true.
21
+ * Enables extensible message processing following Open/Closed Principle.
22
+ *
23
+ * @param handler - The handler to register (must have unique type)
24
+ * @param options - Registration options
25
+ * @param options.replace - Whether to replace existing handler (default: false)
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const customHandler = new CustomMessageHandler();
30
+ * registry.register(customHandler);
31
+ *
32
+ * // Replace existing handler
33
+ * registry.register(newHandler, { replace: true });
34
+ * ```
35
+ */
36
+ register(handler, options = {}) {
37
+ const { replace = false } = options;
38
+ // Check if handler already exists
39
+ if (this.handlers.has(handler.type) && !replace) {
40
+ this.logger.warn(`Handler for ${handler.type} already registered, skipping. Use replace:true to override.`);
41
+ return;
42
+ }
43
+ this.handlers.set(handler.type, handler);
44
+ this.logger.debug(`Registered handler for message type: ${handler.type}`);
45
+ }
46
+ /**
47
+ * Registers multiple message handlers at once.
48
+ * Convenient for bulk registration of default or custom handlers.
49
+ * Uses same registration logic as register() for each handler.
50
+ *
51
+ * @param handlers - Array of handlers to register
52
+ * @param options - Registration options applied to all handlers
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const handlers = [
57
+ * new TaskResponseHandler(),
58
+ * new AgentSelectedHandler(),
59
+ * new ErrorHandler()
60
+ * ];
61
+ * registry.registerAll(handlers);
62
+ * ```
63
+ */
64
+ registerAll(handlers, options = {}) {
65
+ for (const handler of handlers) {
66
+ this.register(handler, options);
67
+ }
68
+ }
69
+ /**
70
+ * Unregisters a handler for a specific message type.
71
+ * Returns whether a handler was actually removed.
72
+ *
73
+ * @param type - The message type to unregister
74
+ * @returns True if handler was removed, false if no handler existed
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const removed = registry.unregister('task_response');
79
+ * if (removed) {
80
+ * console.log('Handler removed successfully');
81
+ * }
82
+ * ```
83
+ */
84
+ unregister(type) {
85
+ const result = this.handlers.delete(type);
86
+ if (result) {
87
+ this.logger.debug(`Unregistered handler for message type: ${type}`);
88
+ }
89
+ return result;
90
+ }
91
+ /**
92
+ * Checks if a handler is registered for a specific message type.
93
+ * Useful for conditional logic based on handler availability.
94
+ *
95
+ * @param type - The message type to check
96
+ * @returns True if handler exists, false otherwise
97
+ *
98
+ * @example
99
+ * ```typescript
100
+ * if (registry.has('task_response')) {
101
+ * console.log('Task response handler is registered');
102
+ * }
103
+ * ```
104
+ */
105
+ has(type) {
106
+ return this.handlers.has(type);
107
+ }
108
+ /**
109
+ * Gets a registered handler for a specific message type.
110
+ * Returns undefined if no handler is registered for the type.
111
+ *
112
+ * @param type - The message type to get handler for
113
+ * @returns The handler if found, undefined otherwise
114
+ *
115
+ * @example
116
+ * ```typescript
117
+ * const handler = registry.get('task_response');
118
+ * if (handler) {
119
+ * console.log(`Handler found: ${handler.type}`);
120
+ * }
121
+ * ```
122
+ */
123
+ get(type) {
124
+ return this.handlers.get(type);
125
+ }
126
+ /**
127
+ * Routes a message to its appropriate handler based on message type.
128
+ * Validates handler can process the message before delegating.
129
+ * Catches and logs handler errors, wrapping them in ValidationError.
130
+ *
131
+ * @param message - The message to handle
132
+ * @param context - Handler context with dependencies (logger, emit, etc.)
133
+ * @returns Promise that resolves when message is handled
134
+ * @throws {ValidationError} If handler throws an error during processing
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * const message = { type: 'task_response', ... };
139
+ * const context = createHandlerContext();
140
+ * await registry.handle(message, context);
141
+ * ```
142
+ */
143
+ async handle(message, context) {
144
+ // Check for pending message responses first (handled by caller)
145
+ if (message.id) {
146
+ // Let caller handle response matching
147
+ this.logger.debug(`Message ${message.id} may be a response - caller should check pending messages`);
148
+ }
149
+ // Find handler for this message type
150
+ const handler = this.handlers.get(message.type);
151
+ if (!handler) {
152
+ this.logger.debug(`No handler registered for message type: ${message.type}`);
153
+ // Not an error - some message types don't need handling
154
+ return;
155
+ }
156
+ // Verify handler can handle this message
157
+ if (!handler.canHandle(message)) {
158
+ this.logger.warn(`Handler for ${message.type} returned false for canHandle()`);
159
+ return;
160
+ }
161
+ // Delegate to handler
162
+ this.logger.debug(`Routing ${message.type} message to handler`);
163
+ try {
164
+ await handler.handle(message, context);
165
+ }
166
+ catch (error) {
167
+ this.logger.error(`Handler for ${message.type} threw error`, error);
168
+ throw new events_1.ValidationError(`Handler for ${message.type} failed`, error);
169
+ }
170
+ }
171
+ /**
172
+ * Gets an array of all currently registered message types.
173
+ * Useful for introspection and debugging handler configuration.
174
+ *
175
+ * @returns Array of message types that have registered handlers
176
+ *
177
+ * @example
178
+ * ```typescript
179
+ * const types = registry.getRegisteredTypes();
180
+ * console.log(`Registered handlers: ${types.join(', ')}`);
181
+ * ```
182
+ */
183
+ getRegisteredTypes() {
184
+ return Array.from(this.handlers.keys());
185
+ }
186
+ /**
187
+ * Gets the total number of registered handlers.
188
+ * Convenience getter for handler count.
189
+ *
190
+ * @returns Number of registered handlers
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * console.log(`${registry.size} handlers registered`);
195
+ * ```
196
+ */
197
+ get size() {
198
+ return this.handlers.size;
199
+ }
200
+ /**
201
+ * Clears all registered handlers from the registry.
202
+ * Useful for testing or resetting handler configuration.
203
+ *
204
+ * @example
205
+ * ```typescript
206
+ * registry.clear();
207
+ * console.log('All handlers cleared');
208
+ * ```
209
+ */
210
+ clear() {
211
+ this.handlers.clear();
212
+ this.logger.debug("Cleared all message handlers");
213
+ }
214
+ }
215
+ exports.MessageHandlerRegistry = MessageHandlerRegistry;
216
+ //# sourceMappingURL=message-handler-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message-handler-registry.js","sourceRoot":"","sources":["../../src/handlers/message-handler-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Handler for agent_selected messages
3
+ * Processes coordinator's agent selection
4
+ */
5
+ import { AgentSelectedMessage } from "../../types";
6
+ import { BaseMessageHandler } from "./base-handler";
7
+ import { HandlerContext } from "./types";
8
+ export declare class AgentSelectedHandler extends BaseMessageHandler<AgentSelectedMessage> {
9
+ readonly type: "agent_selected";
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
+ task_id: import("zod").ZodOptional<import("zod").ZodString>;
18
+ id: import("zod").ZodOptional<import("zod").ZodString>;
19
+ } & {
20
+ type: import("zod").ZodLiteral<"agent_selected">;
21
+ content: import("zod").ZodString;
22
+ from: import("zod").ZodLiteral<"coordinator">;
23
+ reasoning: import("zod").ZodString;
24
+ data: import("zod").ZodObject<{
25
+ agent_id: import("zod").ZodString;
26
+ agent_name: import("zod").ZodString;
27
+ capabilities: import("zod").ZodOptional<import("zod").ZodArray<import("zod").ZodObject<{
28
+ name: import("zod").ZodString;
29
+ description: import("zod").ZodString;
30
+ }, "strip", import("zod").ZodTypeAny, {
31
+ name: string;
32
+ description: string;
33
+ }, {
34
+ name: string;
35
+ description: string;
36
+ }>, "many">>;
37
+ user_request: import("zod").ZodString;
38
+ command: import("zod").ZodOptional<import("zod").ZodString>;
39
+ command_reasoning: import("zod").ZodOptional<import("zod").ZodString>;
40
+ }, "strip", import("zod").ZodTypeAny, {
41
+ agent_id: string;
42
+ agent_name: string;
43
+ user_request: string;
44
+ capabilities?: {
45
+ name: string;
46
+ description: string;
47
+ }[] | undefined;
48
+ command?: string | undefined;
49
+ command_reasoning?: string | undefined;
50
+ }, {
51
+ agent_id: string;
52
+ agent_name: string;
53
+ user_request: string;
54
+ capabilities?: {
55
+ name: string;
56
+ description: string;
57
+ }[] | undefined;
58
+ command?: string | undefined;
59
+ command_reasoning?: string | undefined;
60
+ }>;
61
+ }, "strip", import("zod").ZodTypeAny, {
62
+ type: "agent_selected";
63
+ content: string;
64
+ from: "coordinator";
65
+ data: {
66
+ agent_id: string;
67
+ agent_name: string;
68
+ user_request: string;
69
+ capabilities?: {
70
+ name: string;
71
+ description: string;
72
+ }[] | undefined;
73
+ command?: string | undefined;
74
+ command_reasoning?: string | undefined;
75
+ };
76
+ reasoning: string;
77
+ id?: string | undefined;
78
+ room?: string | undefined;
79
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
80
+ to?: string | undefined;
81
+ timestamp?: string | undefined;
82
+ signature?: string | undefined;
83
+ publicKey?: string | undefined;
84
+ task_id?: string | undefined;
85
+ }, {
86
+ type: "agent_selected";
87
+ content: string;
88
+ from: "coordinator";
89
+ data: {
90
+ agent_id: string;
91
+ agent_name: string;
92
+ user_request: string;
93
+ capabilities?: {
94
+ name: string;
95
+ description: string;
96
+ }[] | undefined;
97
+ command?: string | undefined;
98
+ command_reasoning?: string | undefined;
99
+ };
100
+ reasoning: string;
101
+ id?: string | undefined;
102
+ room?: string | undefined;
103
+ content_type?: "text/plain" | "text/markdown" | "text/html" | "application/json" | "image/*" | "STRING" | "JSON" | "MD" | "ARRAY" | undefined;
104
+ to?: string | undefined;
105
+ timestamp?: string | undefined;
106
+ signature?: string | undefined;
107
+ publicKey?: string | undefined;
108
+ task_id?: string | undefined;
109
+ }>;
110
+ protected handleValidated(message: AgentSelectedMessage, context: HandlerContext): void;
111
+ }
112
+ //# sourceMappingURL=agent-selected-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-selected-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/agent-selected-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,oBAAoB,EAA8B,MAAM,aAAa,CAAC;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,oBAAqB,SAAQ,kBAAkB,CAAC,oBAAoB,CAAC;IAChF,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAC1C,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA8B;IAE7C,SAAS,CAAC,eAAe,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;CAyBxF"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for agent_selected messages
4
+ * Processes coordinator's agent selection
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentSelectedHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class AgentSelectedHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "agent_selected";
14
+ this.schema = types_1.AgentSelectedMessageSchema;
15
+ }
16
+ handleValidated(message, context) {
17
+ context.logger.debug("Handling agent_selected message", {
18
+ agentId: message.data.agent_id,
19
+ agentName: message.data.agent_name
20
+ });
21
+ // Build agent selected data
22
+ const data = {
23
+ agentId: message.data.agent_id,
24
+ agentName: message.data.agent_name,
25
+ reasoning: message.reasoning || "",
26
+ userRequest: message.data.user_request,
27
+ command: message.data.command,
28
+ commandReasoning: message.data.command_reasoning,
29
+ capabilities: message.data.capabilities
30
+ };
31
+ // Emit agent:selected event
32
+ this.emit(context, "agent:selected", data);
33
+ // Send webhook (fire-and-forget)
34
+ this.sendWebhook(context, "agent_selected", data, {
35
+ agentId: data.agentId
36
+ });
37
+ }
38
+ }
39
+ exports.AgentSelectedHandler = AgentSelectedHandler;
40
+ //# sourceMappingURL=agent-selected-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-selected-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/agent-selected-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,uCAA+E;AAE/E,iDAAoD;AAGpD,MAAa,oBAAqB,SAAQ,iCAAwC;IAAlF;;QACW,SAAI,GAAG,gBAAyB,CAAC;QACjC,WAAM,GAAG,kCAA0B,CAAC;IA2B/C,CAAC;IAzBW,eAAe,CAAC,OAA6B,EAAE,OAAuB;QAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;YACtD,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;YAC9B,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;SACnC,CAAC,CAAC;QAEH,4BAA4B;QAC5B,MAAM,IAAI,GAAsB;YAC9B,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,QAAQ;YAC9B,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,UAAU;YAClC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;YAClC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;YACtC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO;YAC7B,gBAAgB,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB;YAChD,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,YAAY;SACxC,CAAC;QAEF,4BAA4B;QAC5B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAE3C,iCAAiC;QACjC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;CACF;AA7BD,oDA6BC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Handler for agents list messages
3
+ * Processes agent list updates from the server
4
+ */
5
+ import { z } from "zod";
6
+ import { AgentsListMessage } from "../../types";
7
+ import { BaseMessageHandler } from "./base-handler";
8
+ import { HandlerContext } from "./types";
9
+ export declare class AgentsListHandler extends BaseMessageHandler<AgentsListMessage> {
10
+ readonly type: "agents";
11
+ readonly schema: z.ZodSchema<AgentsListMessage>;
12
+ protected handleValidated(message: AgentsListMessage, context: HandlerContext): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=agents-list-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-list-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/agents-list-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,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,iBAAkB,SAAQ,kBAAkB,CAAC,iBAAiB,CAAC;IAC1E,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,MAAM,EAA8B,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;cAE5D,eAAe,CAC7B,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;CAQjB"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ /**
3
+ * Handler for agents list messages
4
+ * Processes agent list updates from the server
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.AgentsListHandler = void 0;
8
+ const types_1 = require("../../types");
9
+ const base_handler_1 = require("./base-handler");
10
+ class AgentsListHandler extends base_handler_1.BaseMessageHandler {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.type = "agents";
14
+ this.schema = types_1.AgentsListMessageSchema;
15
+ }
16
+ async handleValidated(message, context) {
17
+ context.logger.debug("Handling agents list message", {
18
+ count: message.data.length
19
+ });
20
+ // Emit agent:list event with the agents array
21
+ this.emit(context, "agent:list", message.data);
22
+ }
23
+ }
24
+ exports.AgentsListHandler = AgentsListHandler;
25
+ //# sourceMappingURL=agents-list-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-list-handler.js","sourceRoot":"","sources":["../../../src/handlers/message-handlers/agents-list-handler.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,uCAAyE;AACzE,iDAAoD;AAGpD,MAAa,iBAAkB,SAAQ,iCAAqC;IAA5E;;QACW,SAAI,GAAG,QAAiB,CAAC;QACzB,WAAM,GAAG,+BAAyD,CAAC;IAa9E,CAAC;IAXW,KAAK,CAAC,eAAe,CAC7B,OAA0B,EAC1B,OAAuB;QAEvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;YACnD,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,MAAM;SAC3B,CAAC,CAAC;QAEH,8CAA8C;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;CACF;AAfD,8CAeC"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Handler for auth_error messages
3
+ * Handles authentication errors
4
+ */
5
+ import { AuthErrorMessage } from "../../types";
6
+ import { BaseMessageHandler } from "./base-handler";
7
+ import { HandlerContext } from "./types";
8
+ export declare class AuthErrorHandler extends BaseMessageHandler<AuthErrorMessage> {
9
+ readonly type: "auth_error";
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<"auth_error">;
24
+ data: import("zod").ZodObject<{
25
+ error: import("zod").ZodString;
26
+ code: import("zod").ZodOptional<import("zod").ZodNumber>;
27
+ }, "strip", import("zod").ZodTypeAny, {
28
+ error: string;
29
+ code?: number | undefined;
30
+ }, {
31
+ error: string;
32
+ code?: number | undefined;
33
+ }>;
34
+ }, "strip", import("zod").ZodTypeAny, {
35
+ type: "auth_error";
36
+ data: {
37
+ error: string;
38
+ code?: number | undefined;
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: "auth_error";
53
+ data: {
54
+ error: string;
55
+ code?: number | undefined;
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
+ protected handleValidated(message: AuthErrorMessage, context: HandlerContext): Promise<void>;
70
+ }
71
+ //# sourceMappingURL=auth-error-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-error-handler.d.ts","sourceRoot":"","sources":["../../../src/handlers/message-handlers/auth-error-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAA0B,MAAM,aAAa,CAAC;AAEvE,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,YAAY,CAAU;IACtC,QAAQ,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAA0B;cAEzB,eAAe,CAC7B,OAAO,EAAE,gBAAgB,EACzB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC;CAajB"}