@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,310 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AgentRegistry - Manages agent state and lookup
|
|
4
|
+
* Handles agent caching and queries
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AgentRegistry = void 0;
|
|
8
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
9
|
+
const validation_1 = require("../types/validation");
|
|
10
|
+
class AgentRegistry extends eventemitter3_1.EventEmitter {
|
|
11
|
+
constructor(logger) {
|
|
12
|
+
super();
|
|
13
|
+
this.agents = new Map();
|
|
14
|
+
this.isAgentsCacheDirty = true;
|
|
15
|
+
// PERF-3: Search indices for O(1) lookups
|
|
16
|
+
this.capabilityIndex = new Map();
|
|
17
|
+
this.nameTokenIndex = new Map();
|
|
18
|
+
this.statusIndex = new Map();
|
|
19
|
+
this.logger = logger;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gets a cached list of all available agents in the network.
|
|
23
|
+
* Uses lazy caching with dirty flag for optimal performance.
|
|
24
|
+
* Returns a read-only array with defensive copies to prevent external modification.
|
|
25
|
+
*
|
|
26
|
+
* @returns Read-only array of agent copies
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* ```typescript
|
|
30
|
+
* const agents = agentRegistry.getAgents();
|
|
31
|
+
* console.log(`${agents.length} agents available`);
|
|
32
|
+
* agents.forEach(agent => console.log(agent.name));
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
getAgents() {
|
|
36
|
+
if (this.isAgentsCacheDirty || !this.cachedAgents) {
|
|
37
|
+
this.rebuildCache();
|
|
38
|
+
}
|
|
39
|
+
return this.cachedAgents.map((agent) => ({ ...agent }));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Gets a specific agent by its unique identifier.
|
|
43
|
+
* Performs O(1) lookup using internal Map structure.
|
|
44
|
+
* Returns a defensive copy to prevent external modification of agent state.
|
|
45
|
+
*
|
|
46
|
+
* @param agentId - The unique identifier of the agent
|
|
47
|
+
* @returns Copy of the agent object if found, undefined otherwise
|
|
48
|
+
* @throws {ValidationError} If agentId is invalid
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const agent = agentRegistry.getAgent('weather-agent-001');
|
|
53
|
+
* if (agent) {
|
|
54
|
+
* console.log(`Found: ${agent.name}`);
|
|
55
|
+
* console.log(`Capabilities: ${agent.capabilities?.length}`);
|
|
56
|
+
* }
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
getAgent(agentId) {
|
|
60
|
+
// Validate agent ID
|
|
61
|
+
const validatedAgentId = validation_1.AgentIdSchema.parse(agentId);
|
|
62
|
+
const agent = this.agents.get(validatedAgentId);
|
|
63
|
+
return agent ? { ...agent } : undefined;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Finds all agents that have a specific capability.
|
|
67
|
+
* PERF-3: Uses O(1) capability index lookup instead of O(n) filtering.
|
|
68
|
+
*
|
|
69
|
+
* @param capabilityName - The name of the capability to search for (case-insensitive)
|
|
70
|
+
* @returns Read-only array of agents with the specified capability
|
|
71
|
+
* @throws {ValidationError} If capabilityName is invalid
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* const weatherAgents = agentRegistry.findByCapability('weather-forecast');
|
|
76
|
+
* console.log(`Found ${weatherAgents.length} agents with weather-forecast capability`);
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
findByCapability(capabilityName) {
|
|
80
|
+
// Validate capability name
|
|
81
|
+
const validatedCapabilityName = validation_1.SearchQuerySchema.parse(capabilityName);
|
|
82
|
+
// Ensure cache is up to date
|
|
83
|
+
if (this.isAgentsCacheDirty || !this.cachedAgents) {
|
|
84
|
+
this.rebuildCache();
|
|
85
|
+
}
|
|
86
|
+
// O(1) index lookup instead of O(n) filter
|
|
87
|
+
const normalizedCapName = validatedCapabilityName.toLowerCase();
|
|
88
|
+
const agentIds = this.capabilityIndex.get(normalizedCapName);
|
|
89
|
+
if (!agentIds || agentIds.size === 0) {
|
|
90
|
+
return [];
|
|
91
|
+
}
|
|
92
|
+
// Map agent IDs to agent objects with defensive copies
|
|
93
|
+
return Array.from(agentIds)
|
|
94
|
+
.map((id) => this.agents.get(id))
|
|
95
|
+
.filter((agent) => agent !== undefined)
|
|
96
|
+
.map((agent) => ({ ...agent }));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Finds agents by name using case-insensitive partial matching.
|
|
100
|
+
* PERF-3: Uses O(k) token index lookups instead of O(n) substring search,
|
|
101
|
+
* where k is the number of tokens in the search query.
|
|
102
|
+
*
|
|
103
|
+
* @param name - The name or partial name to search for (case-insensitive)
|
|
104
|
+
* @returns Read-only array of agents matching the name search
|
|
105
|
+
* @throws {ValidationError} If name is invalid
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* ```typescript
|
|
109
|
+
* // Find all agents with "weather" in their name
|
|
110
|
+
* const weatherAgents = agentRegistry.findByName('weather');
|
|
111
|
+
* weatherAgents.forEach(agent => console.log(agent.name));
|
|
112
|
+
* ```
|
|
113
|
+
*/
|
|
114
|
+
findByName(name) {
|
|
115
|
+
// Validate name
|
|
116
|
+
const validatedName = validation_1.SearchQuerySchema.parse(name);
|
|
117
|
+
// Ensure cache is up to date
|
|
118
|
+
if (this.isAgentsCacheDirty || !this.cachedAgents) {
|
|
119
|
+
this.rebuildCache();
|
|
120
|
+
}
|
|
121
|
+
// Tokenize search query
|
|
122
|
+
const searchTokens = this.tokenizeString(validatedName);
|
|
123
|
+
if (searchTokens.length === 0) {
|
|
124
|
+
return [];
|
|
125
|
+
}
|
|
126
|
+
// Find agents that match ANY token (union)
|
|
127
|
+
const matchingAgentIds = new Set();
|
|
128
|
+
for (const token of searchTokens) {
|
|
129
|
+
const agentIds = this.nameTokenIndex.get(token);
|
|
130
|
+
if (agentIds) {
|
|
131
|
+
agentIds.forEach((id) => matchingAgentIds.add(id));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (matchingAgentIds.size === 0) {
|
|
135
|
+
return [];
|
|
136
|
+
}
|
|
137
|
+
// Map agent IDs to agent objects with defensive copies
|
|
138
|
+
return Array.from(matchingAgentIds)
|
|
139
|
+
.map((id) => this.agents.get(id))
|
|
140
|
+
.filter((agent) => agent !== undefined)
|
|
141
|
+
.map((agent) => ({ ...agent }));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Finds all agents with a specific status.
|
|
145
|
+
* PERF-3: Uses O(1) status index lookup instead of O(n) filtering.
|
|
146
|
+
*
|
|
147
|
+
* @param status - The status to search for: 'online' or 'offline' (case-insensitive)
|
|
148
|
+
* @returns Read-only array of agents with the specified status
|
|
149
|
+
* @throws {ValidationError} If status is invalid
|
|
150
|
+
*
|
|
151
|
+
* @example
|
|
152
|
+
* ```typescript
|
|
153
|
+
* const onlineAgents = agentRegistry.findByStatus('online');
|
|
154
|
+
* console.log(`Found ${onlineAgents.length} online agents`);
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
findByStatus(status) {
|
|
158
|
+
// Validate status
|
|
159
|
+
const validatedStatus = validation_1.SearchQuerySchema.parse(status);
|
|
160
|
+
// Ensure cache is up to date
|
|
161
|
+
if (this.isAgentsCacheDirty || !this.cachedAgents) {
|
|
162
|
+
this.rebuildCache();
|
|
163
|
+
}
|
|
164
|
+
// O(1) index lookup instead of O(n) filter
|
|
165
|
+
const normalizedStatus = validatedStatus.toLowerCase();
|
|
166
|
+
const agentIds = this.statusIndex.get(normalizedStatus);
|
|
167
|
+
if (!agentIds || agentIds.size === 0) {
|
|
168
|
+
return [];
|
|
169
|
+
}
|
|
170
|
+
// Map agent IDs to agent objects with defensive copies
|
|
171
|
+
return Array.from(agentIds)
|
|
172
|
+
.map((id) => this.agents.get(id))
|
|
173
|
+
.filter((agent) => agent !== undefined)
|
|
174
|
+
.map((agent) => ({ ...agent }));
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Updates the registry with a new list of agents.
|
|
178
|
+
* Merges with existing agents and marks cache as dirty.
|
|
179
|
+
* Emits 'agent:list' event with the new agents.
|
|
180
|
+
*
|
|
181
|
+
* @internal This method is for internal SDK use
|
|
182
|
+
* @param agents - Array of agents to add or update in the registry
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```typescript
|
|
186
|
+
* // Internal SDK usage
|
|
187
|
+
* agentRegistry.updateAgents(newAgentList);
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
updateAgents(agents) {
|
|
191
|
+
this.logger.debug("AgentRegistry: Updating agents", { count: agents.length });
|
|
192
|
+
for (const agent of agents) {
|
|
193
|
+
this.agents.set(agent.id, agent);
|
|
194
|
+
}
|
|
195
|
+
this.isAgentsCacheDirty = true;
|
|
196
|
+
this.emit("agent:list", agents);
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Updates a single agent in the registry.
|
|
200
|
+
* Adds new agent or updates existing one, then marks cache as dirty.
|
|
201
|
+
*
|
|
202
|
+
* @internal This method is for internal SDK use
|
|
203
|
+
* @param agent - The agent to add or update
|
|
204
|
+
*
|
|
205
|
+
* @example
|
|
206
|
+
* ```typescript
|
|
207
|
+
* // Internal SDK usage
|
|
208
|
+
* agentRegistry.updateAgent(updatedAgent);
|
|
209
|
+
* ```
|
|
210
|
+
*/
|
|
211
|
+
updateAgent(agent) {
|
|
212
|
+
this.logger.debug("AgentRegistry: Updating agent", { id: agent.id, name: agent.name });
|
|
213
|
+
this.agents.set(agent.id, agent);
|
|
214
|
+
this.isAgentsCacheDirty = true;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Clears all agents from the registry.
|
|
218
|
+
* Removes all cached agents and marks cache as dirty.
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* ```typescript
|
|
222
|
+
* agentRegistry.clear();
|
|
223
|
+
* console.log('All agents cleared');
|
|
224
|
+
* ```
|
|
225
|
+
*/
|
|
226
|
+
clear() {
|
|
227
|
+
this.agents.clear();
|
|
228
|
+
this.isAgentsCacheDirty = true;
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Destroys the agent registry and cleans up resources.
|
|
232
|
+
* Clears all agents and removes all event listeners.
|
|
233
|
+
* After destruction, the registry cannot be reused.
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* ```typescript
|
|
237
|
+
* agentRegistry.destroy();
|
|
238
|
+
* console.log('Agent registry destroyed');
|
|
239
|
+
* ```
|
|
240
|
+
*/
|
|
241
|
+
destroy() {
|
|
242
|
+
this.logger.info("AgentRegistry: Destroying");
|
|
243
|
+
this.clear();
|
|
244
|
+
this.removeAllListeners();
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Rebuilds the agent cache and all search indices.
|
|
248
|
+
* This is called automatically when the cache becomes dirty.
|
|
249
|
+
* PERF-3: Builds capability, name token, and status indices for O(1) lookups.
|
|
250
|
+
*
|
|
251
|
+
* @private
|
|
252
|
+
*/
|
|
253
|
+
rebuildCache() {
|
|
254
|
+
// Rebuild agent array
|
|
255
|
+
this.cachedAgents = Array.from(this.agents.values()).map((agent) => ({ ...agent }));
|
|
256
|
+
// Clear indices
|
|
257
|
+
this.capabilityIndex.clear();
|
|
258
|
+
this.nameTokenIndex.clear();
|
|
259
|
+
this.statusIndex.clear();
|
|
260
|
+
// Populate indices
|
|
261
|
+
for (const agent of this.agents.values()) {
|
|
262
|
+
// Index capabilities
|
|
263
|
+
if (agent.capabilities) {
|
|
264
|
+
for (const capability of agent.capabilities) {
|
|
265
|
+
const capName = capability.name.toLowerCase();
|
|
266
|
+
if (!this.capabilityIndex.has(capName)) {
|
|
267
|
+
this.capabilityIndex.set(capName, new Set());
|
|
268
|
+
}
|
|
269
|
+
this.capabilityIndex.get(capName).add(agent.id);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
// Index name tokens (for partial matching)
|
|
273
|
+
const nameTokens = this.tokenizeString(agent.name);
|
|
274
|
+
for (const token of nameTokens) {
|
|
275
|
+
if (!this.nameTokenIndex.has(token)) {
|
|
276
|
+
this.nameTokenIndex.set(token, new Set());
|
|
277
|
+
}
|
|
278
|
+
this.nameTokenIndex.get(token).add(agent.id);
|
|
279
|
+
}
|
|
280
|
+
// Index status
|
|
281
|
+
const status = agent.status.toLowerCase();
|
|
282
|
+
if (!this.statusIndex.has(status)) {
|
|
283
|
+
this.statusIndex.set(status, new Set());
|
|
284
|
+
}
|
|
285
|
+
this.statusIndex.get(status).add(agent.id);
|
|
286
|
+
}
|
|
287
|
+
this.isAgentsCacheDirty = false;
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* Tokenizes a string into searchable tokens.
|
|
291
|
+
* Splits on whitespace and special characters, converts to lowercase.
|
|
292
|
+
*
|
|
293
|
+
* @param str - String to tokenize
|
|
294
|
+
* @returns Array of lowercase tokens
|
|
295
|
+
* @private
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```typescript
|
|
299
|
+
* tokenizeString("Weather API v2.0") => ["weather", "api", "v2", "0"]
|
|
300
|
+
* ```
|
|
301
|
+
*/
|
|
302
|
+
tokenizeString(str) {
|
|
303
|
+
return str
|
|
304
|
+
.toLowerCase()
|
|
305
|
+
.split(/[\s\-_.,;:()[\]{}]+/)
|
|
306
|
+
.filter((token) => token.length > 0);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
exports.AgentRegistry = AgentRegistry;
|
|
310
|
+
//# sourceMappingURL=agent-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-registry.js","sourceRoot":"","sources":["../../src/managers/agent-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConnectionManager - Manages WebSocket connection lifecycle
|
|
3
|
+
* Handles connection, disconnection, and state management
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from "eventemitter3";
|
|
6
|
+
import { WebSocketClient } from "../core/websocket-client";
|
|
7
|
+
import { ConnectionState, AuthenticationState, Logger } from "../types";
|
|
8
|
+
import { SDKEvents } from "../types/events";
|
|
9
|
+
export declare class ConnectionManager extends EventEmitter<SDKEvents> {
|
|
10
|
+
private readonly wsClient;
|
|
11
|
+
private readonly logger;
|
|
12
|
+
constructor(wsClient: WebSocketClient, logger: Logger);
|
|
13
|
+
/**
|
|
14
|
+
* Initiates WebSocket connection through the underlying WebSocket client.
|
|
15
|
+
* Delegates all connection logic including authentication and reconnection.
|
|
16
|
+
*
|
|
17
|
+
* @returns Promise that resolves when connection and authentication complete
|
|
18
|
+
* @throws {TimeoutError} If connection times out
|
|
19
|
+
* @throws {ConnectionError} If WebSocket connection fails
|
|
20
|
+
* @throws {AuthenticationError} If authentication fails
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const connectionMgr = new ConnectionManager(wsClient, logger);
|
|
25
|
+
* await connectionMgr.connect();
|
|
26
|
+
* console.log('Connected via connection manager');
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
connect(): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Disconnects from the WebSocket server through the underlying WebSocket client.
|
|
32
|
+
* Cleans up all connection resources and stops reconnection attempts.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* connectionMgr.disconnect();
|
|
37
|
+
* console.log('Disconnected');
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
disconnect(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Gets the current WebSocket connection state with detailed status information.
|
|
43
|
+
* Includes connection status, reconnection attempts, and error information.
|
|
44
|
+
*
|
|
45
|
+
* @returns Connection state object with status, attempts, and timestamps
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const state = connectionMgr.getConnectionState();
|
|
50
|
+
* console.log(`Connected: ${state.connected}`);
|
|
51
|
+
* console.log(`Reconnecting: ${state.reconnecting}`);
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
getConnectionState(): ConnectionState;
|
|
55
|
+
/**
|
|
56
|
+
* Gets the current authentication state with wallet and room information.
|
|
57
|
+
* Includes authentication status, wallet address, and accessible rooms.
|
|
58
|
+
*
|
|
59
|
+
* @returns Authentication state object with wallet, challenge, and room access
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```typescript
|
|
63
|
+
* const authState = connectionMgr.getAuthState();
|
|
64
|
+
* if (authState.authenticated) {
|
|
65
|
+
* console.log(`Authenticated as: ${authState.walletAddress}`);
|
|
66
|
+
* }
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
getAuthState(): AuthenticationState;
|
|
70
|
+
/**
|
|
71
|
+
* Quick check for whether the WebSocket is currently connected.
|
|
72
|
+
* Convenience getter for immediate connection status.
|
|
73
|
+
*
|
|
74
|
+
* @returns True if connected, false otherwise
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* if (connectionMgr.isConnected) {
|
|
79
|
+
* console.log('Ready to send messages');
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
get isConnected(): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Quick check for whether authentication is complete.
|
|
86
|
+
* Convenience getter for immediate authentication status.
|
|
87
|
+
*
|
|
88
|
+
* @returns True if authenticated, false otherwise
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* if (connectionMgr.isAuthenticated) {
|
|
93
|
+
* console.log('Authenticated and ready');
|
|
94
|
+
* }
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
get isAuthenticated(): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Gets the underlying WebSocket client instance for advanced usage.
|
|
100
|
+
* Provides direct access to low-level WebSocket operations.
|
|
101
|
+
*
|
|
102
|
+
* ⚠️ **WARNING:** This method returns a direct reference to the internal WebSocketClient.
|
|
103
|
+
* Modifying the client's state or calling methods directly may lead to unexpected behavior
|
|
104
|
+
* or break SDK functionality. Use this only for read-only operations like event listening.
|
|
105
|
+
*
|
|
106
|
+
* @internal This method is for internal SDK use and advanced scenarios
|
|
107
|
+
* @returns The WebSocketClient instance (direct reference - use with caution)
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* // Advanced usage - listen to low-level events (read-only)
|
|
112
|
+
* const wsClient = connectionMgr.getWebSocketClient();
|
|
113
|
+
* wsClient.on('message:received', (msg) => console.log(msg));
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
getWebSocketClient(): WebSocketClient;
|
|
117
|
+
/**
|
|
118
|
+
* Set up event forwarding from WebSocket client
|
|
119
|
+
*/
|
|
120
|
+
private setupEventForwarding;
|
|
121
|
+
/**
|
|
122
|
+
* Destroys the connection manager and cleans up all resources.
|
|
123
|
+
* Disconnects from the server and removes all event listeners.
|
|
124
|
+
* After destruction, the manager cannot be reused.
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* connectionMgr.destroy();
|
|
129
|
+
* console.log('Connection manager destroyed');
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
destroy(): void;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=connection-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/managers/connection-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,YAAY,CAAC,SAAS,CAAC;IAC5D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,QAAQ,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM;IAOrD;;;;;;;;;;;;;;;OAeG;IACU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKrC;;;;;;;;;OASG;IACI,UAAU,IAAI,IAAI;IAKzB;;;;;;;;;;;;OAYG;IACI,kBAAkB,IAAI,eAAe;IAI5C;;;;;;;;;;;;;OAaG;IACI,YAAY,IAAI,mBAAmB;IAI1C;;;;;;;;;;;;OAYG;IACH,IAAW,WAAW,IAAI,OAAO,CAEhC;IAED;;;;;;;;;;;;OAYG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,kBAAkB,IAAI,eAAe;IAI5C;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;;;;;;;;;OAUG;IACI,OAAO,IAAI,IAAI;CAKvB"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ConnectionManager - Manages WebSocket connection lifecycle
|
|
4
|
+
* Handles connection, disconnection, and state management
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.ConnectionManager = void 0;
|
|
8
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
9
|
+
class ConnectionManager extends eventemitter3_1.EventEmitter {
|
|
10
|
+
constructor(wsClient, logger) {
|
|
11
|
+
super();
|
|
12
|
+
this.wsClient = wsClient;
|
|
13
|
+
this.logger = logger;
|
|
14
|
+
this.setupEventForwarding();
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initiates WebSocket connection through the underlying WebSocket client.
|
|
18
|
+
* Delegates all connection logic including authentication and reconnection.
|
|
19
|
+
*
|
|
20
|
+
* @returns Promise that resolves when connection and authentication complete
|
|
21
|
+
* @throws {TimeoutError} If connection times out
|
|
22
|
+
* @throws {ConnectionError} If WebSocket connection fails
|
|
23
|
+
* @throws {AuthenticationError} If authentication fails
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const connectionMgr = new ConnectionManager(wsClient, logger);
|
|
28
|
+
* await connectionMgr.connect();
|
|
29
|
+
* console.log('Connected via connection manager');
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
async connect() {
|
|
33
|
+
this.logger.info("ConnectionManager: Initiating connection");
|
|
34
|
+
await this.wsClient.connect();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Disconnects from the WebSocket server through the underlying WebSocket client.
|
|
38
|
+
* Cleans up all connection resources and stops reconnection attempts.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* connectionMgr.disconnect();
|
|
43
|
+
* console.log('Disconnected');
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
disconnect() {
|
|
47
|
+
this.logger.info("ConnectionManager: Disconnecting");
|
|
48
|
+
this.wsClient.disconnect();
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Gets the current WebSocket connection state with detailed status information.
|
|
52
|
+
* Includes connection status, reconnection attempts, and error information.
|
|
53
|
+
*
|
|
54
|
+
* @returns Connection state object with status, attempts, and timestamps
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* const state = connectionMgr.getConnectionState();
|
|
59
|
+
* console.log(`Connected: ${state.connected}`);
|
|
60
|
+
* console.log(`Reconnecting: ${state.reconnecting}`);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
getConnectionState() {
|
|
64
|
+
return this.wsClient.getConnectionState();
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Gets the current authentication state with wallet and room information.
|
|
68
|
+
* Includes authentication status, wallet address, and accessible rooms.
|
|
69
|
+
*
|
|
70
|
+
* @returns Authentication state object with wallet, challenge, and room access
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const authState = connectionMgr.getAuthState();
|
|
75
|
+
* if (authState.authenticated) {
|
|
76
|
+
* console.log(`Authenticated as: ${authState.walletAddress}`);
|
|
77
|
+
* }
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
getAuthState() {
|
|
81
|
+
return this.wsClient.getAuthState();
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Quick check for whether the WebSocket is currently connected.
|
|
85
|
+
* Convenience getter for immediate connection status.
|
|
86
|
+
*
|
|
87
|
+
* @returns True if connected, false otherwise
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* if (connectionMgr.isConnected) {
|
|
92
|
+
* console.log('Ready to send messages');
|
|
93
|
+
* }
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
get isConnected() {
|
|
97
|
+
return this.wsClient.isConnected;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Quick check for whether authentication is complete.
|
|
101
|
+
* Convenience getter for immediate authentication status.
|
|
102
|
+
*
|
|
103
|
+
* @returns True if authenticated, false otherwise
|
|
104
|
+
*
|
|
105
|
+
* @example
|
|
106
|
+
* ```typescript
|
|
107
|
+
* if (connectionMgr.isAuthenticated) {
|
|
108
|
+
* console.log('Authenticated and ready');
|
|
109
|
+
* }
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
get isAuthenticated() {
|
|
113
|
+
return this.wsClient.isAuthenticated;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Gets the underlying WebSocket client instance for advanced usage.
|
|
117
|
+
* Provides direct access to low-level WebSocket operations.
|
|
118
|
+
*
|
|
119
|
+
* ⚠️ **WARNING:** This method returns a direct reference to the internal WebSocketClient.
|
|
120
|
+
* Modifying the client's state or calling methods directly may lead to unexpected behavior
|
|
121
|
+
* or break SDK functionality. Use this only for read-only operations like event listening.
|
|
122
|
+
*
|
|
123
|
+
* @internal This method is for internal SDK use and advanced scenarios
|
|
124
|
+
* @returns The WebSocketClient instance (direct reference - use with caution)
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* // Advanced usage - listen to low-level events (read-only)
|
|
129
|
+
* const wsClient = connectionMgr.getWebSocketClient();
|
|
130
|
+
* wsClient.on('message:received', (msg) => console.log(msg));
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
getWebSocketClient() {
|
|
134
|
+
return this.wsClient;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Set up event forwarding from WebSocket client
|
|
138
|
+
*/
|
|
139
|
+
setupEventForwarding() {
|
|
140
|
+
// Forward connection events
|
|
141
|
+
this.wsClient.on("connection:open", () => this.emit("connection:open"));
|
|
142
|
+
this.wsClient.on("connection:close", (code, reason) => this.emit("connection:close", code, reason));
|
|
143
|
+
this.wsClient.on("connection:error", (error) => this.emit("connection:error", error));
|
|
144
|
+
this.wsClient.on("connection:reconnecting", (attempt) => this.emit("connection:reconnecting", attempt));
|
|
145
|
+
this.wsClient.on("connection:reconnected", () => this.emit("connection:reconnected"));
|
|
146
|
+
this.wsClient.on("connection:state", (state) => this.emit("connection:state", state));
|
|
147
|
+
// Forward auth events
|
|
148
|
+
this.wsClient.on("auth:challenge", (challenge) => this.emit("auth:challenge", challenge));
|
|
149
|
+
this.wsClient.on("auth:success", (state) => this.emit("auth:success", state));
|
|
150
|
+
this.wsClient.on("auth:error", (error) => this.emit("auth:error", error));
|
|
151
|
+
this.wsClient.on("auth:state", (state) => this.emit("auth:state", state));
|
|
152
|
+
// Forward lifecycle events
|
|
153
|
+
this.wsClient.on("ready", () => this.emit("ready"));
|
|
154
|
+
this.wsClient.on("disconnect", () => this.emit("disconnect"));
|
|
155
|
+
// Forward error events
|
|
156
|
+
this.wsClient.on("error", (error) => this.emit("error", error));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Destroys the connection manager and cleans up all resources.
|
|
160
|
+
* Disconnects from the server and removes all event listeners.
|
|
161
|
+
* After destruction, the manager cannot be reused.
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
* ```typescript
|
|
165
|
+
* connectionMgr.destroy();
|
|
166
|
+
* console.log('Connection manager destroyed');
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
destroy() {
|
|
170
|
+
this.logger.info("ConnectionManager: Destroying");
|
|
171
|
+
this.disconnect();
|
|
172
|
+
this.removeAllListeners();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.ConnectionManager = ConnectionManager;
|
|
176
|
+
//# sourceMappingURL=connection-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/managers/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Manager exports
|
|
3
|
+
* Provides focused classes for different SDK responsibilities
|
|
4
|
+
*/
|
|
5
|
+
export { ConnectionManager } from "./connection-manager";
|
|
6
|
+
export { RoomManager } from "./room-manager";
|
|
7
|
+
export { AgentRegistry } from "./agent-registry";
|
|
8
|
+
export { MessageRouter, type SendMessageOptions, type AgentCommand } from "./message-router";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Manager exports
|
|
4
|
+
* Provides focused classes for different SDK responsibilities
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MessageRouter = exports.AgentRegistry = exports.RoomManager = exports.ConnectionManager = void 0;
|
|
8
|
+
var connection_manager_1 = require("./connection-manager");
|
|
9
|
+
Object.defineProperty(exports, "ConnectionManager", { enumerable: true, get: function () { return connection_manager_1.ConnectionManager; } });
|
|
10
|
+
var room_manager_1 = require("./room-manager");
|
|
11
|
+
Object.defineProperty(exports, "RoomManager", { enumerable: true, get: function () { return room_manager_1.RoomManager; } });
|
|
12
|
+
var agent_registry_1 = require("./agent-registry");
|
|
13
|
+
Object.defineProperty(exports, "AgentRegistry", { enumerable: true, get: function () { return agent_registry_1.AgentRegistry; } });
|
|
14
|
+
var message_router_1 = require("./message-router");
|
|
15
|
+
Object.defineProperty(exports, "MessageRouter", { enumerable: true, get: function () { return message_router_1.MessageRouter; } });
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/managers/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,2DAAyD;AAAhD,uHAAA,iBAAiB,OAAA;AAC1B,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AACpB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,mDAA6F;AAApF,+GAAA,aAAa,OAAA"}
|