@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.
- package/.dockerignore +14 -0
- package/.env.test.example +14 -0
- package/.eslintrc.json +26 -0
- package/.github/workflows/claude-code-review.yml +78 -0
- package/.github/workflows/claude-reviewer.yml +64 -0
- package/.github/workflows/publish-npm.yml +38 -0
- package/.github/workflows/push-to-main.yml +23 -0
- package/.node-version +1 -0
- package/.prettierrc +11 -0
- package/Dockerfile +25 -0
- package/LICENCE +661 -0
- package/README.md +709 -0
- package/dist/constants.d.ts +42 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +45 -0
- package/dist/constants.js.map +1 -0
- package/dist/core/websocket-client.d.ts +261 -0
- package/dist/core/websocket-client.d.ts.map +1 -0
- package/dist/core/websocket-client.js +875 -0
- package/dist/core/websocket-client.js.map +1 -0
- package/dist/formatters/response-formatter.d.ts +354 -0
- package/dist/formatters/response-formatter.d.ts.map +1 -0
- package/dist/formatters/response-formatter.js +575 -0
- package/dist/formatters/response-formatter.js.map +1 -0
- package/dist/handlers/message-handler-registry.d.ts +155 -0
- package/dist/handlers/message-handler-registry.d.ts.map +1 -0
- package/dist/handlers/message-handler-registry.js +216 -0
- package/dist/handlers/message-handler-registry.js.map +1 -0
- package/dist/handlers/message-handlers/agent-selected-handler.d.ts +112 -0
- package/dist/handlers/message-handlers/agent-selected-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agent-selected-handler.js +40 -0
- package/dist/handlers/message-handlers/agent-selected-handler.js.map +1 -0
- package/dist/handlers/message-handlers/agents-list-handler.d.ts +14 -0
- package/dist/handlers/message-handlers/agents-list-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/agents-list-handler.js +25 -0
- package/dist/handlers/message-handlers/agents-list-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-error-handler.d.ts +71 -0
- package/dist/handlers/message-handlers/auth-error-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-error-handler.js +30 -0
- package/dist/handlers/message-handlers/auth-error-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-message-handler.d.ts +18 -0
- package/dist/handlers/message-handlers/auth-message-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-message-handler.js +60 -0
- package/dist/handlers/message-handlers/auth-message-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-required-handler.d.ts +76 -0
- package/dist/handlers/message-handlers/auth-required-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-required-handler.js +23 -0
- package/dist/handlers/message-handlers/auth-required-handler.js.map +1 -0
- package/dist/handlers/message-handlers/auth-success-handler.d.ts +18 -0
- package/dist/handlers/message-handlers/auth-success-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/auth-success-handler.js +51 -0
- package/dist/handlers/message-handlers/auth-success-handler.js.map +1 -0
- package/dist/handlers/message-handlers/base-handler.d.ts +55 -0
- package/dist/handlers/message-handlers/base-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/base-handler.js +83 -0
- package/dist/handlers/message-handlers/base-handler.js.map +1 -0
- package/dist/handlers/message-handlers/challenge-handler.d.ts +73 -0
- package/dist/handlers/message-handlers/challenge-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/challenge-handler.js +47 -0
- package/dist/handlers/message-handlers/challenge-handler.js.map +1 -0
- package/dist/handlers/message-handlers/error-message-handler.d.ts +76 -0
- package/dist/handlers/message-handlers/error-message-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/error-message-handler.js +29 -0
- package/dist/handlers/message-handlers/error-message-handler.js.map +1 -0
- package/dist/handlers/message-handlers/index.d.ts +28 -0
- package/dist/handlers/message-handlers/index.d.ts.map +1 -0
- package/dist/handlers/message-handlers/index.js +100 -0
- package/dist/handlers/message-handlers/index.js.map +1 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts +122 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.js +30 -0
- package/dist/handlers/message-handlers/list-rooms-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/ping-pong-handler.d.ts +104 -0
- package/dist/handlers/message-handlers/ping-pong-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/ping-pong-handler.js +36 -0
- package/dist/handlers/message-handlers/ping-pong-handler.js.map +1 -0
- package/dist/handlers/message-handlers/regular-message-handler.d.ts +56 -0
- package/dist/handlers/message-handlers/regular-message-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/regular-message-handler.js +59 -0
- package/dist/handlers/message-handlers/regular-message-handler.js.map +1 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.d.ts +81 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.js +48 -0
- package/dist/handlers/message-handlers/subscribe-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/task-response-handler.d.ts +14 -0
- package/dist/handlers/message-handlers/task-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/task-response-handler.js +44 -0
- package/dist/handlers/message-handlers/task-response-handler.js.map +1 -0
- package/dist/handlers/message-handlers/types.d.ts +51 -0
- package/dist/handlers/message-handlers/types.d.ts.map +1 -0
- package/dist/handlers/message-handlers/types.js +7 -0
- package/dist/handlers/message-handlers/types.js.map +1 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts +81 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.d.ts.map +1 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.js +48 -0
- package/dist/handlers/message-handlers/unsubscribe-response-handler.js.map +1 -0
- package/dist/handlers/webhook-handler.d.ts +202 -0
- package/dist/handlers/webhook-handler.d.ts.map +1 -0
- package/dist/handlers/webhook-handler.js +511 -0
- package/dist/handlers/webhook-handler.js.map +1 -0
- package/dist/index.d.ts +71 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +217 -0
- package/dist/index.js.map +1 -0
- package/dist/managers/agent-registry.d.ts +173 -0
- package/dist/managers/agent-registry.d.ts.map +1 -0
- package/dist/managers/agent-registry.js +310 -0
- package/dist/managers/agent-registry.js.map +1 -0
- package/dist/managers/connection-manager.d.ts +134 -0
- package/dist/managers/connection-manager.d.ts.map +1 -0
- package/dist/managers/connection-manager.js +176 -0
- package/dist/managers/connection-manager.js.map +1 -0
- package/dist/managers/index.d.ts +9 -0
- package/dist/managers/index.d.ts.map +1 -0
- package/dist/managers/index.js +16 -0
- package/dist/managers/index.js.map +1 -0
- package/dist/managers/message-router.d.ts +112 -0
- package/dist/managers/message-router.d.ts.map +1 -0
- package/dist/managers/message-router.js +260 -0
- package/dist/managers/message-router.js.map +1 -0
- package/dist/managers/room-manager.d.ts +165 -0
- package/dist/managers/room-manager.d.ts.map +1 -0
- package/dist/managers/room-manager.js +227 -0
- package/dist/managers/room-manager.js.map +1 -0
- package/dist/teneo-sdk.d.ts +703 -0
- package/dist/teneo-sdk.d.ts.map +1 -0
- package/dist/teneo-sdk.js +907 -0
- package/dist/teneo-sdk.js.map +1 -0
- package/dist/types/config.d.ts +1047 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +720 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/error-codes.d.ts +29 -0
- package/dist/types/error-codes.d.ts.map +1 -0
- package/dist/types/error-codes.js +41 -0
- package/dist/types/error-codes.js.map +1 -0
- package/dist/types/events.d.ts +616 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +261 -0
- package/dist/types/events.js.map +1 -0
- package/dist/types/health.d.ts +40 -0
- package/dist/types/health.d.ts.map +1 -0
- package/dist/types/health.js +6 -0
- package/dist/types/health.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +123 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/messages.d.ts +3734 -0
- package/dist/types/messages.d.ts.map +1 -0
- package/dist/types/messages.js +482 -0
- package/dist/types/messages.js.map +1 -0
- package/dist/types/validation.d.ts +81 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +115 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/utils/bounded-queue.d.ts +127 -0
- package/dist/utils/bounded-queue.d.ts.map +1 -0
- package/dist/utils/bounded-queue.js +181 -0
- package/dist/utils/bounded-queue.js.map +1 -0
- package/dist/utils/circuit-breaker.d.ts +141 -0
- package/dist/utils/circuit-breaker.d.ts.map +1 -0
- package/dist/utils/circuit-breaker.js +215 -0
- package/dist/utils/circuit-breaker.js.map +1 -0
- package/dist/utils/deduplication-cache.d.ts +110 -0
- package/dist/utils/deduplication-cache.d.ts.map +1 -0
- package/dist/utils/deduplication-cache.js +177 -0
- package/dist/utils/deduplication-cache.js.map +1 -0
- package/dist/utils/event-waiter.d.ts +101 -0
- package/dist/utils/event-waiter.d.ts.map +1 -0
- package/dist/utils/event-waiter.js +118 -0
- package/dist/utils/event-waiter.js.map +1 -0
- package/dist/utils/index.d.ts +51 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +72 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +22 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +91 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/rate-limiter.d.ts +122 -0
- package/dist/utils/rate-limiter.d.ts.map +1 -0
- package/dist/utils/rate-limiter.js +190 -0
- package/dist/utils/rate-limiter.js.map +1 -0
- package/dist/utils/retry-policy.d.ts +191 -0
- package/dist/utils/retry-policy.d.ts.map +1 -0
- package/dist/utils/retry-policy.js +225 -0
- package/dist/utils/retry-policy.js.map +1 -0
- package/dist/utils/secure-private-key.d.ts +113 -0
- package/dist/utils/secure-private-key.d.ts.map +1 -0
- package/dist/utils/secure-private-key.js +188 -0
- package/dist/utils/secure-private-key.js.map +1 -0
- package/dist/utils/signature-verifier.d.ts +143 -0
- package/dist/utils/signature-verifier.d.ts.map +1 -0
- package/dist/utils/signature-verifier.js +238 -0
- package/dist/utils/signature-verifier.js.map +1 -0
- package/dist/utils/ssrf-validator.d.ts +36 -0
- package/dist/utils/ssrf-validator.d.ts.map +1 -0
- package/dist/utils/ssrf-validator.js +195 -0
- package/dist/utils/ssrf-validator.js.map +1 -0
- package/examples/.env.example +17 -0
- package/examples/basic-usage.ts +211 -0
- package/examples/production-dashboard/.env.example +153 -0
- package/examples/production-dashboard/package.json +39 -0
- package/examples/production-dashboard/public/dashboard.html +642 -0
- package/examples/production-dashboard/server.ts +753 -0
- package/examples/webhook-integration.ts +239 -0
- package/examples/x-influencer-battle-redesign.html +1065 -0
- package/examples/x-influencer-battle-server.ts +217 -0
- package/examples/x-influencer-battle.html +787 -0
- package/package.json +65 -0
- package/src/constants.ts +43 -0
- package/src/core/websocket-client.test.ts +512 -0
- package/src/core/websocket-client.ts +1056 -0
- package/src/formatters/response-formatter.test.ts +571 -0
- package/src/formatters/response-formatter.ts +677 -0
- package/src/handlers/message-handler-registry.ts +239 -0
- package/src/handlers/message-handlers/agent-selected-handler.ts +40 -0
- package/src/handlers/message-handlers/agents-list-handler.ts +26 -0
- package/src/handlers/message-handlers/auth-error-handler.ts +31 -0
- package/src/handlers/message-handlers/auth-message-handler.ts +66 -0
- package/src/handlers/message-handlers/auth-required-handler.ts +23 -0
- package/src/handlers/message-handlers/auth-success-handler.ts +57 -0
- package/src/handlers/message-handlers/base-handler.ts +101 -0
- package/src/handlers/message-handlers/challenge-handler.ts +57 -0
- package/src/handlers/message-handlers/error-message-handler.ts +27 -0
- package/src/handlers/message-handlers/index.ts +77 -0
- package/src/handlers/message-handlers/list-rooms-response-handler.ts +28 -0
- package/src/handlers/message-handlers/ping-pong-handler.ts +30 -0
- package/src/handlers/message-handlers/regular-message-handler.ts +65 -0
- package/src/handlers/message-handlers/subscribe-response-handler.ts +47 -0
- package/src/handlers/message-handlers/task-response-handler.ts +45 -0
- package/src/handlers/message-handlers/types.ts +77 -0
- package/src/handlers/message-handlers/unsubscribe-response-handler.ts +47 -0
- package/src/handlers/webhook-handler.test.ts +789 -0
- package/src/handlers/webhook-handler.ts +576 -0
- package/src/index.ts +269 -0
- package/src/managers/agent-registry.test.ts +466 -0
- package/src/managers/agent-registry.ts +347 -0
- package/src/managers/connection-manager.ts +195 -0
- package/src/managers/index.ts +9 -0
- package/src/managers/message-router.ts +349 -0
- package/src/managers/room-manager.ts +248 -0
- package/src/teneo-sdk.ts +1022 -0
- package/src/types/config.test.ts +325 -0
- package/src/types/config.ts +799 -0
- package/src/types/error-codes.ts +44 -0
- package/src/types/events.test.ts +302 -0
- package/src/types/events.ts +382 -0
- package/src/types/health.ts +46 -0
- package/src/types/index.ts +199 -0
- package/src/types/messages.test.ts +660 -0
- package/src/types/messages.ts +570 -0
- package/src/types/validation.ts +123 -0
- package/src/utils/bounded-queue.test.ts +356 -0
- package/src/utils/bounded-queue.ts +205 -0
- package/src/utils/circuit-breaker.test.ts +394 -0
- package/src/utils/circuit-breaker.ts +262 -0
- package/src/utils/deduplication-cache.test.ts +380 -0
- package/src/utils/deduplication-cache.ts +198 -0
- package/src/utils/event-waiter.test.ts +381 -0
- package/src/utils/event-waiter.ts +172 -0
- package/src/utils/index.ts +74 -0
- package/src/utils/logger.ts +87 -0
- package/src/utils/rate-limiter.test.ts +341 -0
- package/src/utils/rate-limiter.ts +211 -0
- package/src/utils/retry-policy.test.ts +558 -0
- package/src/utils/retry-policy.ts +272 -0
- package/src/utils/secure-private-key.test.ts +356 -0
- package/src/utils/secure-private-key.ts +205 -0
- package/src/utils/signature-verifier.test.ts +464 -0
- package/src/utils/signature-verifier.ts +298 -0
- package/src/utils/ssrf-validator.test.ts +372 -0
- package/src/utils/ssrf-validator.ts +224 -0
- package/tests/integration/real-server.test.ts +740 -0
- package/tests/integration/websocket.test.ts +381 -0
- package/tests/integration-setup.ts +16 -0
- package/tests/setup.ts +34 -0
- package/tsconfig.json +32 -0
- package/vitest.config.ts +42 -0
- 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"}
|