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