unreal-engine-mcp-server 0.5.13 → 0.5.15
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/CHANGELOG.md +108 -0
- package/README.md +23 -0
- package/dist/automation/bridge.d.ts +3 -0
- package/dist/automation/bridge.d.ts.map +1 -1
- package/dist/automation/bridge.js +97 -8
- package/dist/automation/bridge.js.map +1 -1
- package/dist/automation/connection-manager.d.ts +5 -1
- package/dist/automation/connection-manager.d.ts.map +1 -1
- package/dist/automation/connection-manager.js +36 -1
- package/dist/automation/connection-manager.js.map +1 -1
- package/dist/automation/handshake.d.ts.map +1 -1
- package/dist/automation/handshake.js +10 -8
- package/dist/automation/handshake.js.map +1 -1
- package/dist/automation/message-schema.d.ts +91 -0
- package/dist/automation/message-schema.d.ts.map +1 -0
- package/dist/automation/message-schema.js +59 -0
- package/dist/automation/message-schema.js.map +1 -0
- package/dist/automation/types.d.ts +4 -0
- package/dist/automation/types.d.ts.map +1 -1
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/server.json +27 -3
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,114 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## 🏷️ [0.5.14] - 2026-02-05
|
|
11
|
+
|
|
12
|
+
> [!IMPORTANT]
|
|
13
|
+
> ### 🔐 TLS & Network Security Release
|
|
14
|
+
> This release introduces TLS/SSL support for secure WebSocket connections (`wss://`), per-connection rate limiting, loopback-only network binding enforcement, and authentication state tracking for the Automation Bridge.
|
|
15
|
+
|
|
16
|
+
### 🛡️ Security
|
|
17
|
+
|
|
18
|
+
<details>
|
|
19
|
+
<summary><b>🔒 Loopback-Only Binding & Handshake Enforcement</b> (<code>70c2745</code>)</summary>
|
|
20
|
+
|
|
21
|
+
| Aspect | Details |
|
|
22
|
+
|--------|---------|
|
|
23
|
+
| **Severity** | 🚨 HIGH |
|
|
24
|
+
| **Loopback Binding** | Automation Bridge now only binds to loopback addresses (127.0.0.1 or ::1) |
|
|
25
|
+
| **Handshake Required** | Automation requests require completed `bridge_hello` handshake |
|
|
26
|
+
|
|
27
|
+
**C++ Plugin:**
|
|
28
|
+
- Rejects `0.0.0.0` and `::` bind attempts, falls back to `127.0.0.1` with warning
|
|
29
|
+
- Added `AuthenticatedSockets` tracking set in `McpConnectionManager`
|
|
30
|
+
- Unauthenticated sockets receive `HANDSHAKE_REQUIRED` error and connection close (code 4004)
|
|
31
|
+
|
|
32
|
+
**TypeScript Bridge:**
|
|
33
|
+
- Added `normalizeLoopbackHost()` to validate and enforce loopback addresses
|
|
34
|
+
- Non-loopback host values rejected with warning and fallback
|
|
35
|
+
|
|
36
|
+
</details>
|
|
37
|
+
|
|
38
|
+
### ✨ Added
|
|
39
|
+
|
|
40
|
+
<details>
|
|
41
|
+
<summary><b>🔐 TLS/SSL, Rate Limiting & Schema Validation</b> (<code>d2a94cf</code>)</summary>
|
|
42
|
+
|
|
43
|
+
| Feature | Description |
|
|
44
|
+
|---------|-------------|
|
|
45
|
+
| **TLS/SSL Support** | Full `wss://` WebSocket support with OpenSSL/TLS integration (TLS 1.2+) |
|
|
46
|
+
| **Rate Limiting** | Per-connection limits: 600 messages/min, 120 automation requests/min |
|
|
47
|
+
| **Schema Validation** | New Zod schemas in `src/automation/message-schema.ts` for type-safe message parsing |
|
|
48
|
+
|
|
49
|
+
**New Plugin Settings:**
|
|
50
|
+
- `bEnableTls`, `TlsCertificatePath`, `TlsPrivateKeyPath` - TLS configuration
|
|
51
|
+
- `MaxMessagesPerMinute`, `MaxAutomationRequestsPerMinute` - Rate limit configuration
|
|
52
|
+
|
|
53
|
+
**C++ Implementation:**
|
|
54
|
+
- `InitializeTlsContext()`, `EstablishTls()`, `SendRaw()`, `RecvRaw()` - TLS-aware I/O
|
|
55
|
+
- Requires UE 5.7+ for native socket release; graceful fallback on older versions
|
|
56
|
+
|
|
57
|
+
**TypeScript Integration:**
|
|
58
|
+
- Added `rateLimitState` tracking with cleanup on connection close
|
|
59
|
+
|
|
60
|
+
</details>
|
|
61
|
+
|
|
62
|
+
### 🛠️ Fixed
|
|
63
|
+
|
|
64
|
+
<details>
|
|
65
|
+
<summary><b>🔧 TLS Memory Management</b> (<code>321206e</code>)</summary>
|
|
66
|
+
|
|
67
|
+
| Fix | Description |
|
|
68
|
+
|-----|-------------|
|
|
69
|
+
| **Struct Initialization** | Fixed `FParsedWebSocketUrl` member initialization order (Port using uninitialized `bUseTls`) |
|
|
70
|
+
| **SSL Context Ownership** | Added `bOwnsSslContext` to prevent double-free of client contexts owned by `ISslManager` |
|
|
71
|
+
|
|
72
|
+
</details>
|
|
73
|
+
|
|
74
|
+
<details>
|
|
75
|
+
<summary><b>🔧 Thread Safety & TLS Error Handling</b> (<code>6fd1553</code>)</summary>
|
|
76
|
+
|
|
77
|
+
| Fix | Description |
|
|
78
|
+
|-----|-------------|
|
|
79
|
+
| **Mutex Protection** | Added `SocketRateLimits` cleanup in `ForceReconnect` with proper mutex locking |
|
|
80
|
+
| **Declaration** | Moved `ShutdownTls()` declaration outside `WITH_SSL` guard for compilation compatibility |
|
|
81
|
+
|
|
82
|
+
</details>
|
|
83
|
+
|
|
84
|
+
<details>
|
|
85
|
+
<summary><b>🔧 Review Feedback Fixes</b> (<code>8987a3e</code>)</summary>
|
|
86
|
+
|
|
87
|
+
| Fix | Description |
|
|
88
|
+
|-----|-------------|
|
|
89
|
+
| **Duplicate Call** | Fixed duplicate `ActiveSockets.Empty()` call in connection manager |
|
|
90
|
+
| **TypeScript Cleanup** | Added `rateLimitState` cleanup in `closeAll()` method |
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
### 🔄 Dependencies
|
|
95
|
+
|
|
96
|
+
<details>
|
|
97
|
+
<summary><b>NPM Package Updates</b></summary>
|
|
98
|
+
|
|
99
|
+
| Package | Update | PR |
|
|
100
|
+
|---------|--------|-----|
|
|
101
|
+
| `@modelcontextprotocol/sdk` | 1.25.3 → 1.26.0 | [#187](https://github.com/ChiR24/Unreal_mcp/pull/187) |
|
|
102
|
+
| `mcp-client-capabilities` | Latest | [#186](https://github.com/ChiR24/Unreal_mcp/pull/186) |
|
|
103
|
+
|
|
104
|
+
</details>
|
|
105
|
+
|
|
106
|
+
<details>
|
|
107
|
+
<summary><b>GitHub Actions Updates</b></summary>
|
|
108
|
+
|
|
109
|
+
| Package | Update | PR |
|
|
110
|
+
|---------|--------|-----|
|
|
111
|
+
| `github/codeql-action` | 4.32.0 → 4.32.1 | [#185](https://github.com/ChiR24/Unreal_mcp/pull/185) |
|
|
112
|
+
| `actions/github-script` | 7.0.1 → 8.0.0 | [#184](https://github.com/ChiR24/Unreal_mcp/pull/184) |
|
|
113
|
+
|
|
114
|
+
</details>
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
10
118
|
## 🏷️ [0.5.13] - 2026-02-02
|
|
11
119
|
|
|
12
120
|
> [!IMPORTANT]
|
package/README.md
CHANGED
|
@@ -162,6 +162,11 @@ UE_PROJECT_PATH="C:/Path/To/YourProject"
|
|
|
162
162
|
MCP_AUTOMATION_HOST=127.0.0.1
|
|
163
163
|
MCP_AUTOMATION_PORT=8091
|
|
164
164
|
|
|
165
|
+
# LAN Access (optional)
|
|
166
|
+
# SECURITY: Set to true to allow binding to non-loopback addresses (e.g., 0.0.0.0)
|
|
167
|
+
# Only enable if you understand the security implications.
|
|
168
|
+
MCP_AUTOMATION_ALLOW_NON_LOOPBACK=false
|
|
169
|
+
|
|
165
170
|
# Logging
|
|
166
171
|
LOG_LEVEL=info # debug | info | warn | error
|
|
167
172
|
|
|
@@ -171,6 +176,24 @@ MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
|
|
|
171
176
|
ASSET_LIST_TTL_MS=10000
|
|
172
177
|
```
|
|
173
178
|
|
|
179
|
+
### LAN Access Configuration
|
|
180
|
+
|
|
181
|
+
By default, the automation bridge only binds to loopback addresses (127.0.0.1) for security. To enable access from other machines on your network:
|
|
182
|
+
|
|
183
|
+
**TypeScript (MCP Server):**
|
|
184
|
+
```env
|
|
185
|
+
MCP_AUTOMATION_ALLOW_NON_LOOPBACK=true
|
|
186
|
+
MCP_AUTOMATION_HOST=0.0.0.0
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
**Unreal Engine Plugin:**
|
|
190
|
+
1. Go to **Edit → Project Settings → Plugins → MCP Automation Bridge**
|
|
191
|
+
2. Under **Security**, enable **"Allow Non Loopback"**
|
|
192
|
+
3. Under **Connection**, set **"Listen Host"** to `0.0.0.0`
|
|
193
|
+
4. Restart the editor
|
|
194
|
+
|
|
195
|
+
⚠️ **Security Warning:** Enabling LAN access exposes the automation bridge to your local network. Only use on trusted networks with appropriate firewall rules.
|
|
196
|
+
|
|
174
197
|
---
|
|
175
198
|
|
|
176
199
|
## Available Tools
|
|
@@ -14,6 +14,7 @@ export declare class AutomationBridge extends EventEmitter {
|
|
|
14
14
|
private readonly serverLegacyEnabled;
|
|
15
15
|
private readonly maxConcurrentConnections;
|
|
16
16
|
private readonly maxQueuedRequests;
|
|
17
|
+
private readonly useTls;
|
|
17
18
|
private connectionManager;
|
|
18
19
|
private requestTracker;
|
|
19
20
|
private handshakeHandler;
|
|
@@ -35,6 +36,8 @@ export declare class AutomationBridge extends EventEmitter {
|
|
|
35
36
|
start(): void;
|
|
36
37
|
private startClient;
|
|
37
38
|
private handleClientConnection;
|
|
39
|
+
private formatHostForUrl;
|
|
40
|
+
private getClientUrl;
|
|
38
41
|
stop(): void;
|
|
39
42
|
isConnected(): boolean;
|
|
40
43
|
getStatus(): AutomationBridgeStatus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/automation/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../../src/automation/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAe3C,OAAO,EACH,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,+BAA+B,EAC/B,sBAAsB,EAEzB,MAAM,YAAY,CAAC;AAkBpB,qBAAa,gBAAiB,SAAQ,YAAY;IAC9C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAW;IACjC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAW;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAU;IAC9C,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;IAEjC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,GAAG,CAAkC;IAE7C,OAAO,CAAC,eAAe,CAAC,CAAO;IAC/B,OAAO,CAAC,qBAAqB,CAAC,CAA0B;IACxD,OAAO,CAAC,gBAAgB,CAAC,CAA0B;IACnD,OAAO,CAAC,oBAAoB,CAAC,CAA+B;IAC5D,OAAO,CAAC,cAAc,CAAC,CAA6C;IACpE,OAAO,CAAC,SAAS,CAAC,CAAgC;IAElD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,iBAAiB,CAAC,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAAS;gBAEnB,OAAO,GAAE,uBAA4B;IAwLxC,EAAE,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAC9C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACpC,IAAI;IAIE,IAAI,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAChD,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACpC,IAAI;IAIE,GAAG,CAAC,CAAC,SAAS,MAAM,sBAAsB,EAC/C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC,GACpC,IAAI;IAIP,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,WAAW;YAmCL,sBAAsB;IAuJpC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,YAAY;IAKpB,IAAI,IAAI,IAAI;IAaZ,WAAW,IAAI,OAAO;IAItB,SAAS,IAAI,sBAAsB;IAuD7B,qBAAqB,CAAC,CAAC,GAAG,+BAA+B,EAC3D,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACrC,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO,GACrC,OAAO,CAAC,CAAC,CAAC;YA2FC,mBAAmB;IA6CjC,OAAO,CAAC,mBAAmB;IAiB3B,IAAI,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO;IAmB/C,OAAO,CAAC,SAAS;IAoBjB,OAAO,CAAC,cAAc;CAMzB"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { EventEmitter } from 'node:events';
|
|
2
2
|
import { WebSocket } from 'ws';
|
|
3
3
|
import { Logger } from '../utils/logger.js';
|
|
4
|
-
import { DEFAULT_AUTOMATION_HOST, DEFAULT_AUTOMATION_PORT, DEFAULT_NEGOTIATED_PROTOCOLS, DEFAULT_HEARTBEAT_INTERVAL_MS, DEFAULT_MAX_PENDING_REQUESTS, DEFAULT_MAX_QUEUED_REQUESTS, MAX_WS_MESSAGE_SIZE_BYTES } from '../constants.js';
|
|
4
|
+
import { DEFAULT_AUTOMATION_HOST, DEFAULT_AUTOMATION_PORT, DEFAULT_NEGOTIATED_PROTOCOLS, DEFAULT_HEARTBEAT_INTERVAL_MS, DEFAULT_MAX_PENDING_REQUESTS, DEFAULT_MAX_QUEUED_REQUESTS, DEFAULT_MAX_INBOUND_MESSAGES_PER_MINUTE, DEFAULT_MAX_INBOUND_AUTOMATION_REQUESTS_PER_MINUTE, MAX_WS_MESSAGE_SIZE_BYTES } from '../constants.js';
|
|
5
5
|
import { createRequire } from 'node:module';
|
|
6
6
|
import { ConnectionManager } from './connection-manager.js';
|
|
7
7
|
import { RequestTracker } from './request-tracker.js';
|
|
8
8
|
import { HandshakeHandler } from './handshake.js';
|
|
9
9
|
import { MessageHandler } from './message-handler.js';
|
|
10
|
+
import { automationMessageSchema } from './message-schema.js';
|
|
10
11
|
const require = createRequire(import.meta.url);
|
|
11
12
|
const packageInfo = (() => {
|
|
12
13
|
try {
|
|
@@ -32,6 +33,7 @@ export class AutomationBridge extends EventEmitter {
|
|
|
32
33
|
serverLegacyEnabled;
|
|
33
34
|
maxConcurrentConnections;
|
|
34
35
|
maxQueuedRequests;
|
|
36
|
+
useTls;
|
|
35
37
|
connectionManager;
|
|
36
38
|
requestTracker;
|
|
37
39
|
handshakeHandler;
|
|
@@ -48,7 +50,44 @@ export class AutomationBridge extends EventEmitter {
|
|
|
48
50
|
connectionLock = false;
|
|
49
51
|
constructor(options = {}) {
|
|
50
52
|
super();
|
|
51
|
-
|
|
53
|
+
const allowNonLoopback = options.allowNonLoopback
|
|
54
|
+
?? (process.env.MCP_AUTOMATION_ALLOW_NON_LOOPBACK?.toLowerCase() === 'true');
|
|
55
|
+
const normalizeHost = (value, label) => {
|
|
56
|
+
const stringValue = typeof value === 'string'
|
|
57
|
+
? value
|
|
58
|
+
: value === undefined || value === null
|
|
59
|
+
? ''
|
|
60
|
+
: String(value);
|
|
61
|
+
const trimmed = stringValue.trim();
|
|
62
|
+
if (trimmed.length === 0) {
|
|
63
|
+
return DEFAULT_AUTOMATION_HOST;
|
|
64
|
+
}
|
|
65
|
+
const lower = trimmed.toLowerCase();
|
|
66
|
+
if (lower === 'localhost' || lower === '127.0.0.1') {
|
|
67
|
+
return '127.0.0.1';
|
|
68
|
+
}
|
|
69
|
+
if (lower === '::1' || lower === '[::1]') {
|
|
70
|
+
return '::1';
|
|
71
|
+
}
|
|
72
|
+
if (allowNonLoopback) {
|
|
73
|
+
const ipv4Regex = /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/;
|
|
74
|
+
if (ipv4Regex.test(trimmed) || lower === '0.0.0.0') {
|
|
75
|
+
this.log.warn(`SECURITY: ${label} set to non-loopback address '${trimmed}'. ` +
|
|
76
|
+
'The automation bridge will be accessible from your local network.');
|
|
77
|
+
return trimmed;
|
|
78
|
+
}
|
|
79
|
+
this.log.warn(`${label} '${trimmed}' is not a valid IP address. Falling back to ${DEFAULT_AUTOMATION_HOST}.`);
|
|
80
|
+
return DEFAULT_AUTOMATION_HOST;
|
|
81
|
+
}
|
|
82
|
+
this.log.warn(`${label} '${trimmed}' is not a loopback address and MCP_AUTOMATION_ALLOW_NON_LOOPBACK is not set. ` +
|
|
83
|
+
`Falling back to ${DEFAULT_AUTOMATION_HOST}. Set MCP_AUTOMATION_ALLOW_NON_LOOPBACK=true for LAN access.`);
|
|
84
|
+
return DEFAULT_AUTOMATION_HOST;
|
|
85
|
+
};
|
|
86
|
+
const rawHost = options.host
|
|
87
|
+
?? process.env.MCP_AUTOMATION_WS_HOST
|
|
88
|
+
?? process.env.MCP_AUTOMATION_HOST
|
|
89
|
+
?? DEFAULT_AUTOMATION_HOST;
|
|
90
|
+
this.host = normalizeHost(rawHost, 'Automation bridge host');
|
|
52
91
|
const sanitizePort = (value) => {
|
|
53
92
|
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
54
93
|
return value > 0 && value <= 65535 ? value : null;
|
|
@@ -106,13 +145,45 @@ export class AutomationBridge extends EventEmitter {
|
|
|
106
145
|
const heartbeatIntervalMs = (options.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS) > 0
|
|
107
146
|
? (options.heartbeatIntervalMs ?? DEFAULT_HEARTBEAT_INTERVAL_MS)
|
|
108
147
|
: 0;
|
|
148
|
+
const parseNonNegativeInt = (value, fallback) => {
|
|
149
|
+
if (typeof value === 'number' && Number.isInteger(value)) {
|
|
150
|
+
return value >= 0 ? value : fallback;
|
|
151
|
+
}
|
|
152
|
+
if (typeof value === 'string' && value.trim().length > 0) {
|
|
153
|
+
const parsed = Number.parseInt(value.trim(), 10);
|
|
154
|
+
return Number.isInteger(parsed) && parsed >= 0 ? parsed : fallback;
|
|
155
|
+
}
|
|
156
|
+
return fallback;
|
|
157
|
+
};
|
|
158
|
+
const parseBoolean = (value, defaultValue) => {
|
|
159
|
+
if (typeof value === 'boolean') {
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
if (typeof value === 'string') {
|
|
163
|
+
const normalized = value.trim().toLowerCase();
|
|
164
|
+
if (normalized === 'true')
|
|
165
|
+
return true;
|
|
166
|
+
if (normalized === 'false')
|
|
167
|
+
return false;
|
|
168
|
+
}
|
|
169
|
+
return defaultValue;
|
|
170
|
+
};
|
|
109
171
|
const maxPendingRequests = Math.max(1, options.maxPendingRequests ?? DEFAULT_MAX_PENDING_REQUESTS);
|
|
110
172
|
const maxConcurrentConnections = Math.max(1, options.maxConcurrentConnections ?? 10);
|
|
111
173
|
this.maxQueuedRequests = Math.max(0, options.maxQueuedRequests ?? DEFAULT_MAX_QUEUED_REQUESTS);
|
|
112
|
-
this.
|
|
174
|
+
this.useTls = parseBoolean(options.useTls ?? process.env.MCP_AUTOMATION_USE_TLS, false);
|
|
175
|
+
const maxInboundMessagesPerMinute = parseNonNegativeInt(options.maxInboundMessagesPerMinute
|
|
176
|
+
?? process.env.MCP_AUTOMATION_MAX_MESSAGES_PER_MINUTE, DEFAULT_MAX_INBOUND_MESSAGES_PER_MINUTE);
|
|
177
|
+
const maxInboundAutomationRequestsPerMinute = parseNonNegativeInt(options.maxInboundAutomationRequestsPerMinute
|
|
178
|
+
?? process.env.MCP_AUTOMATION_MAX_AUTOMATION_REQUESTS_PER_MINUTE, DEFAULT_MAX_INBOUND_AUTOMATION_REQUESTS_PER_MINUTE);
|
|
179
|
+
const rawClientHost = options.clientHost
|
|
180
|
+
?? process.env.MCP_AUTOMATION_CLIENT_HOST
|
|
181
|
+
?? process.env.MCP_AUTOMATION_HOST
|
|
182
|
+
?? DEFAULT_AUTOMATION_HOST;
|
|
183
|
+
this.clientHost = normalizeHost(rawClientHost, 'Automation bridge client host');
|
|
113
184
|
this.clientPort = options.clientPort ?? sanitizePort(process.env.MCP_AUTOMATION_CLIENT_PORT) ?? DEFAULT_AUTOMATION_PORT;
|
|
114
185
|
this.maxConcurrentConnections = maxConcurrentConnections;
|
|
115
|
-
this.connectionManager = new ConnectionManager(heartbeatIntervalMs);
|
|
186
|
+
this.connectionManager = new ConnectionManager(heartbeatIntervalMs, maxInboundMessagesPerMinute, maxInboundAutomationRequestsPerMinute);
|
|
116
187
|
this.requestTracker = new RequestTracker(maxPendingRequests);
|
|
117
188
|
this.handshakeHandler = new HandshakeHandler(this.capabilityToken);
|
|
118
189
|
this.messageHandler = new MessageHandler(this.requestTracker);
|
|
@@ -131,12 +202,13 @@ export class AutomationBridge extends EventEmitter {
|
|
|
131
202
|
this.log.info('Automation bridge disabled by configuration.');
|
|
132
203
|
return;
|
|
133
204
|
}
|
|
134
|
-
|
|
205
|
+
const url = this.getClientUrl();
|
|
206
|
+
this.log.info(`Automation bridge connecting to Unreal server at ${url}`);
|
|
135
207
|
this.startClient();
|
|
136
208
|
}
|
|
137
209
|
startClient() {
|
|
138
210
|
try {
|
|
139
|
-
const url =
|
|
211
|
+
const url = this.getClientUrl();
|
|
140
212
|
this.log.info(`Connecting to Unreal Engine automation server at ${url}`);
|
|
141
213
|
this.log.debug(`Negotiated protocols: ${JSON.stringify(this.negotiatedProtocols)}`);
|
|
142
214
|
const protocols = this.negotiatedProtocols.length === 1
|
|
@@ -234,9 +306,19 @@ export class AutomationBridge extends EventEmitter {
|
|
|
234
306
|
const text = rawDataToUtf8String(data, byteLength);
|
|
235
307
|
this.log.debug(`[AutomationBridge Client] Received message: ${text.substring(0, 1000)}`);
|
|
236
308
|
const parsed = JSON.parse(text);
|
|
309
|
+
if (!this.connectionManager.recordInboundMessage(socket, false)) {
|
|
310
|
+
this.log.warn('Inbound message rate limit exceeded; closing connection.');
|
|
311
|
+
socket.close(4008, 'Rate limit exceeded');
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
const validation = automationMessageSchema.safeParse(parsed);
|
|
315
|
+
if (!validation.success) {
|
|
316
|
+
this.log.warn('Dropped invalid automation message', validation.error.format());
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
237
319
|
this.connectionManager.updateLastMessageTime();
|
|
238
|
-
this.messageHandler.handleMessage(
|
|
239
|
-
this.emitAutomation('message',
|
|
320
|
+
this.messageHandler.handleMessage(validation.data);
|
|
321
|
+
this.emitAutomation('message', validation.data);
|
|
240
322
|
}
|
|
241
323
|
catch (error) {
|
|
242
324
|
this.log.error('Error handling message', error);
|
|
@@ -274,6 +356,13 @@ export class AutomationBridge extends EventEmitter {
|
|
|
274
356
|
}
|
|
275
357
|
});
|
|
276
358
|
}
|
|
359
|
+
formatHostForUrl(host) {
|
|
360
|
+
return host.includes(':') ? `[${host}]` : host;
|
|
361
|
+
}
|
|
362
|
+
getClientUrl() {
|
|
363
|
+
const scheme = this.useTls ? 'wss' : 'ws';
|
|
364
|
+
return `${scheme}://${this.formatHostForUrl(this.clientHost)}:${this.clientPort}`;
|
|
365
|
+
}
|
|
277
366
|
stop() {
|
|
278
367
|
if (this.isConnected()) {
|
|
279
368
|
this.broadcast({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/automation/bridge.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../src/automation/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,4BAA4B,EAC5B,2BAA2B,EAC3B,uCAAuC,EACvC,kDAAkD,EAClD,yBAAyB,EAC5B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAS5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAwC,CAAC,GAAG,EAAE;IAC3D,IAAI,CAAC;QACD,OAAO,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC3C,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC,CAAC,EAAE,CAAC;AAEL,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAC7B,IAAI,CAAS;IACb,IAAI,CAAS;IACb,KAAK,CAAW;IAChB,mBAAmB,CAAW;IAC9B,eAAe,CAAU;IACzB,OAAO,CAAU;IACjB,UAAU,CAAS;IACnB,aAAa,CAAS;IACtB,UAAU,CAAS;IACnB,UAAU,CAAS;IACnB,mBAAmB,CAAU;IAC7B,wBAAwB,CAAS;IACjC,iBAAiB,CAAS;IAC1B,MAAM,CAAU;IAEzB,iBAAiB,CAAoB;IACrC,cAAc,CAAiB;IAC/B,gBAAgB,CAAmB;IACnC,cAAc,CAAiB;IAC/B,GAAG,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAErC,eAAe,CAAQ;IACvB,qBAAqB,CAA2B;IAChD,gBAAgB,CAA2B;IAC3C,oBAAoB,CAAgC;IACpD,cAAc,CAA8C;IAC5D,SAAS,CAAiC;IAE1C,kBAAkB,GAAwB,EAAE,CAAC;IAC7C,iBAAiB,CAAiB;IAClC,cAAc,GAAG,KAAK,CAAC;IAE/B,YAAY,UAAmC,EAAE;QAC7C,KAAK,EAAE,CAAC;QAGR,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB;eAC1C,CAAC,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;QAEjF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAE,KAAa,EAAU,EAAE;YAC5D,MAAM,WAAW,GAAG,OAAO,KAAK,KAAK,QAAQ;gBACzC,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;oBACnC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAExB,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,uBAAuB,CAAC;YACnC,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;YAGpC,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;gBACjD,OAAO,WAAW,CAAC;YACvB,CAAC;YACD,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;gBACvC,OAAO,KAAK,CAAC;YACjB,CAAC;YAGD,IAAI,gBAAgB,EAAE,CAAC;gBAEnB,MAAM,SAAS,GAAG,mFAAmF,CAAC;gBACtG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACjD,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,aAAa,KAAK,iCAAiC,OAAO,KAAK;wBAC/D,mEAAmE,CACtE,CAAC;oBACF,OAAO,OAAO,CAAC;gBACnB,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,GAAG,KAAK,KAAK,OAAO,gDAAgD,uBAAuB,GAAG,CACjG,CAAC;gBACF,OAAO,uBAAuB,CAAC;YACnC,CAAC;YAGD,IAAI,CAAC,GAAG,CAAC,IAAI,CACT,GAAG,KAAK,KAAK,OAAO,gFAAgF;gBACpG,mBAAmB,uBAAuB,8DAA8D,CAC3G,CAAC;YACF,OAAO,uBAAuB,CAAC;QACnC,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI;eACrB,OAAO,CAAC,GAAG,CAAC,sBAAsB;eAClC,OAAO,CAAC,GAAG,CAAC,mBAAmB;eAC/B,uBAAuB,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;QAE7D,MAAM,YAAY,GAAG,CAAC,KAAc,EAAiB,EAAE;YACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACtD,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACrF,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,uBAAuB,CAAC;QAChH,MAAM,oBAAoB,GAAuC,OAAO,CAAC,KAAK;YAC1E,CAAC,CAAC,OAAO,CAAC,KAAK;YACf,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB;gBACjC,EAAE,KAAK,CAAC,GAAG,CAAC;iBACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;iBAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAE7C,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,oBAAoB,CAAC;YACtD,CAAC,CAAC,oBAAoB;iBACjB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;iBACnC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC;YACpD,CAAC,CAAC,EAAE,CAAC;QAET,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACxC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;QACD,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAG,4BAA4B,CAAC;QACtD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;YAClD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3F,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B;YACxD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,KAAK,CAAC,GAAG,CAAC;iBAC/C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;iBAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACxC,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,aAAa,EAAE,GAAG,YAAY,EAAE,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB;YACpB,OAAO,CAAC,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,OAAO,CAAC;QACxF,IAAI,CAAC,eAAe;YAChB,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,SAAS,CAAC;QACxF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,OAAO,CAAC;QACxF,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU;eAC7B,OAAO,CAAC,GAAG,CAAC,eAAe;eAC3B,WAAW,CAAC,IAAI;eAChB,mBAAmB,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa;eACnC,OAAO,CAAC,GAAG,CAAC,kBAAkB;eAC9B,WAAW,CAAC,OAAO;eACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB;eAC/B,OAAO,CAAC;QAEf,MAAM,mBAAmB,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,6BAA6B,CAAC,GAAG,CAAC;YAC1F,CAAC,CAAC,CAAC,OAAO,CAAC,mBAAmB,IAAI,6BAA6B,CAAC;YAChE,CAAC,CAAC,CAAC,CAAC;QAER,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAU,EAAE;YACrE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;YACzC,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACjD,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;YACvE,CAAC;YACD,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC;QAEF,MAAM,YAAY,GAAG,CAAC,KAAc,EAAE,YAAqB,EAAW,EAAE;YACpE,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7B,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC9C,IAAI,UAAU,KAAK,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACvC,IAAI,UAAU,KAAK,OAAO;oBAAE,OAAO,KAAK,CAAC;YAC7C,CAAC;YACD,OAAO,YAAY,CAAC;QACxB,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,kBAAkB,IAAI,4BAA4B,CAAC,CAAC;QACnG,MAAM,wBAAwB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,iBAAiB,IAAI,2BAA2B,CAAC,CAAC;QAC/F,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QACxF,MAAM,2BAA2B,GAAG,mBAAmB,CACnD,OAAO,CAAC,2BAA2B;eAC5B,OAAO,CAAC,GAAG,CAAC,sCAAsC,EACzD,uCAAuC,CAC1C,CAAC;QACF,MAAM,qCAAqC,GAAG,mBAAmB,CAC7D,OAAO,CAAC,qCAAqC;eACtC,OAAO,CAAC,GAAG,CAAC,iDAAiD,EACpE,kDAAkD,CACrD,CAAC;QAEF,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU;eACjC,OAAO,CAAC,GAAG,CAAC,0BAA0B;eACtC,OAAO,CAAC,GAAG,CAAC,mBAAmB;eAC/B,uBAAuB,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,aAAa,EAAE,+BAA+B,CAAC,CAAC;QAChF,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,IAAI,uBAAuB,CAAC;QACxH,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;QAGzD,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC1C,mBAAmB,EACnB,2BAA2B,EAC3B,qCAAqC,CACxC,CAAC;QACF,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,kBAAkB,CAAC,CAAC;QAC7D,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAKlE,CAAC;IAEQ,EAAE,CACP,KAAQ,EACR,QAAmC;QAEnC,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;IACrE,CAAC;IAEQ,IAAI,CACT,KAAQ,EACR,QAAmC;QAEnC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;IACvE,CAAC;IAEQ,GAAG,CACR,KAAQ,EACR,QAAmC;QAEnC,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAwC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;YAC9D,OAAO;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oDAAoD,GAAG,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAEO,WAAW;QACf,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oDAAoD,GAAG,EAAE,CAAC,CAAC;YAEzE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAEpF,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC7B,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC;YAE/B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YAE9E,MAAM,OAAO,GAAuC,IAAI,CAAC,eAAe;gBACpE,CAAC,CAAC;oBACE,kBAAkB,EAAE,IAAI,CAAC,eAAe;oBACxC,wBAAwB,EAAE,IAAI,CAAC,eAAe;iBAC/C;gBACH,CAAC,CAAC,SAAS,CAAC;YAEhB,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE;gBACzC,OAAO;gBACP,iBAAiB,EAAE,KAAK;aAC3B,CAAC,CAAC;YAEH,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3E,IAAI,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YAC/D,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,8CAA8C,EAAE,QAAQ,CAAC,CAAC;YACzE,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,sBAAsB,CAAC,MAAiB;QAClD,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;YACxE,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;gBAEvE,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;gBAClC,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;gBACtC,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC;gBACtC,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;gBAI/C,MAAM,kBAAkB,GAAG,MAA4I,CAAC;gBACxK,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC;gBAC3E,MAAM,UAAU,GAAG,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;gBAC1D,MAAM,UAAU,GAAG,UAAU,EAAE,UAAU,IAAI,SAAS,CAAC;gBAEvD,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;gBACjG,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,CAAC;gBAExC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE;oBAC7B,MAAM;oBACN,QAAQ;oBACR,IAAI,EAAE,IAAI,CAAC,UAAU;oBACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;iBACpC,CAAC,CAAC;gBAEH,MAAM,oBAAoB,GAAG,CAAC,IAAa,EAAU,EAAE;oBACnD,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC3B,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;oBAC3C,CAAC;oBAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,IAAI,CAAC,MAAM,CAAC;oBACvB,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACtB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC9F,CAAC;oBAED,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;wBAC9B,OAAO,IAAI,CAAC,UAAU,CAAC;oBAC3B,CAAC;oBAED,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,OAAO,IAAI,CAAC,UAAU,CAAC;oBAC3B,CAAC;oBAED,OAAO,CAAC,CAAC;gBACb,CAAC,CAAC;gBAEF,MAAM,mBAAmB,GAAG,CAAC,IAAa,EAAE,cAAuB,EAAU,EAAE;oBAC3E,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;wBAC3B,OAAO,IAAI,CAAC;oBAChB,CAAC;oBAED,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;wBACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACjC,CAAC;oBAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;wBACtB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAkB,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;wBAC7E,MAAM,WAAW,GAAG,OAAO,cAAc,KAAK,QAAQ;4BAClD,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;wBAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChE,CAAC;oBAED,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;wBAC9B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC9C,CAAC;oBAED,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;wBAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvF,CAAC;oBAED,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;gBAEM,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAE;oBAClC,IAAI,CAAC;wBACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;wBAC9C,IAAI,UAAU,GAAG,yBAAyB,EAAE,CAAC;4BACzC,IAAI,CAAC,GAAG,CAAC,KAAK,CACV,+BAA+B,UAAU,gBAAgB,yBAAyB,cAAc,CACnG,CAAC;4BACF,OAAO;wBACX,CAAC;wBAED,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;wBACnD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+CAA+C,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;wBACzF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;wBAG3D,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;4BAC9D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;4BAC1E,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC;4BAC1C,OAAO;wBACX,CAAC;wBAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;wBAC7D,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;4BACtB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oCAAoC,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC/E,OAAO;wBACX,CAAC;wBAED,IAAI,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,CAAC;wBAC/C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBACnD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;oBACpD,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;oBACpD,CAAC;gBACL,CAAC,CAAC,CAAC;YAEP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,CAAC,oBAAoB,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;gBACpE,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3F,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,IAAI,CAAC,SAAS,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;YAC7D,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAE/D,IAAI,UAAU,EAAE,CAAC;gBACb,IAAI,CAAC,cAAc,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;gBACvD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE;oBAChC,IAAI;oBACJ,MAAM;oBACN,IAAI,EAAE,UAAU,CAAC,IAAI;oBACrB,QAAQ,EAAE,UAAU,CAAC,QAAQ,IAAI,IAAI;iBACxC,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gDAAgD,IAAI,YAAY,MAAM,GAAG,CAAC,CAAC;gBAEzF,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC;gBAC1E,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gBAAgB,CAAC,IAAY;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAEO,YAAY;QAChB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC1C,OAAO,GAAG,MAAM,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;IACtF,CAAC;IAED,IAAI;QACA,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,iBAAiB;gBACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,sBAAsB;aACjC,CAAC,CAAC;QACP,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;QACzD,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,WAAW;QACP,OAAO,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;IAChD,CAAC;IAED,SAAS;QAEL,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7G,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,IAAI;YACzC,UAAU,EAAE,IAAI,CAAC,UAAU,IAAI,IAAI;YACnC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE;YAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;YAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE;SAClE,CAAC,CAAC,CAAC;QAEJ,OAAO;YACH,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,eAAe,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YAChC,cAAc,EAAE,EAAE;YAClB,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE;YAC7B,WAAW,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;YAC/E,UAAU,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YACvE,kBAAkB,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;YACnF,kBAAkB,EAAE,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACjD,gBAAgB,EAAE,CAAC,oBAAoB,CAAC;YACxC,uBAAuB,EAAE,CAAC,qBAAqB,CAAC;YAChD,uBAAuB,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;YACtD,eAAe,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,IAAI,IAAI;YAC5D,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,IAAI,IAAI;YACzD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,IAAI,IAAI;YAC/C,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;gBAC3C,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE;gBAC9F,CAAC,CAAC,IAAI;YACV,cAAc,EAAE,IAAI,CAAC,cAAc;gBAC/B,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE;gBAClH,CAAC,CAAC,IAAI;YACV,SAAS,EAAE,IAAI,CAAC,SAAS;gBACrB,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE;gBAC1E,CAAC,CAAC,IAAI;YACV,aAAa,EAAE,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI;YACjF,iBAAiB,EAAE,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,WAAW,EAAE,IAAI,IAAI;YACpF,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE;YACtD,qBAAqB,EAAE,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE;YAC9D,WAAW,EAAE,eAAe;YAC5B,kBAAkB,EAAE,KAAK;YACzB,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,wBAAwB,EAAE,IAAI,CAAC,wBAAwB;YACvD,kBAAkB,EAAE,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE;YAC/D,mBAAmB,EAAE,IAAI,CAAC,iBAAiB,CAAC,sBAAsB,EAAE;SACvE,CAAC;IACN,CAAC;IAED,KAAK,CAAC,qBAAqB,CACvB,MAAc,EACd,UAAmC,EAAE,EACrC,UAAkC,EAAE;QAEpC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;gBAGhF,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC3B,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC3D,MAAM,SAAS,GAAG,GAAG,EAAE;4BACnB,OAAO,EAAE,CAAC;4BAAC,OAAO,EAAE,CAAC;wBACzB,CAAC,CAAC;wBAGF,MAAM,OAAO,GAAG,CAAC,GAAY,EAAE,EAAE;4BAC7B,OAAO,EAAE,CAAC;4BAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC3B,CAAC,CAAC;wBAEF,MAAM,eAAe,GAAG,CAAC,GAA4B,EAAE,EAAE;4BACrD,OAAO,EAAE,CAAC;4BAAC,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC5E,CAAC,CAAC;wBAEF,MAAM,OAAO,GAAG,GAAG,EAAE;4BACjB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;4BACjC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;4BAC3B,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;4BAE7C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;4BAC5B,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;wBACvC,CAAC,CAAC;wBAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;wBAClC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBAC5B,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;wBAE9C,IAAI,CAAC;4BACD,IAAI,CAAC,WAAW,EAAE,CAAC;wBACvB,CAAC;wBAAC,OAAO,CAAC,EAAE,CAAC;4BACT,OAAO,CAAC,CAAC,CAAC,CAAC;wBACf,CAAC;oBACL,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,IAAI,CAAC;oBAED,MAAM,cAAc,GAAG,IAAI,CAAC;oBAC5B,IAAI,SAAoD,CAAC;oBACzD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;wBACpD,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;oBAC/F,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC;wBACD,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC,CAAC;oBACjE,CAAC;4BAAS,CAAC;wBACP,IAAI,SAAS;4BAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC3C,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;oBAI9C,MAAM,MAAM,GAAG,GAAqC,CAAC;oBACrD,MAAM,IAAI,KAAK,CAAC,oDAAoD,MAAM,CAAC,MAAM,EAAE,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1G,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YAClD,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACvF,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,iDAAiD,IAAI,CAAC,iBAAiB,wBAAwB,CAAC,CAAC;YACrH,CAAC;YACD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;oBACzB,OAAO,EAAE,OAAmC;oBAC5C,MAAM,EAAE,MAAmC;oBAC3C,MAAM;oBACN,OAAO;oBACP,OAAO;iBACV,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC;QAED,OAAO,IAAI,CAAC,mBAAmB,CAAI,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC7B,MAAc,EACd,OAAgC,EAChC,OAA+B;QAE/B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;QAG7C,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3E,IAAI,WAAW,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YACtE,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,QAAwB,CAAC;YACpC,CAAC;QACL,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAE7F,IAAI,WAAW,EAAE,CAAC;YACd,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,OAAO,GAA4B;YACrC,IAAI,EAAE,oBAAoB;YAC1B,SAAS;YACT,MAAM;YACN,OAAO;SACV,CAAC;QAEF,MAAM,aAAa,GAAG,OAAgC,CAAC;QAGvD,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC/B,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAEpB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;YAC9C,OAAO,aAAa,CAAC;QACzB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC,CAAC;YAClF,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;IAEO,mBAAmB;QACvB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAGjD,OACI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,EACrF,CAAC;YACC,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACP,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;qBAC5D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;qBAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;IACL,CAAC;IAED,IAAI,CAAC,OAAgC;QACjC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QAChE,IAAI,CAAC,aAAa,IAAI,aAAa,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;YAC3F,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC;YACD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACzE,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACjF,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;YACzE,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;YAC5C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IAEO,SAAS,CAAC,OAAgC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QAC1D,IAAI,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrC,SAAS,EAAE,CAAC;gBAChB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,KAAK,CAAC,CAAC;gBAC9E,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,SAAS,GAAG,CAAC,CAAC;IACzB,CAAC;IAEO,cAAc,CAClB,KAAQ,EACR,GAAG,IAA2C;QAE9C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;CACJ"}
|
|
@@ -3,15 +3,19 @@ import { SocketInfo } from './types.js';
|
|
|
3
3
|
import { EventEmitter } from 'node:events';
|
|
4
4
|
export declare class ConnectionManager extends EventEmitter {
|
|
5
5
|
private heartbeatIntervalMs;
|
|
6
|
+
private maxMessagesPerMinute;
|
|
7
|
+
private maxAutomationRequestsPerMinute;
|
|
6
8
|
private activeSockets;
|
|
7
9
|
private primarySocket?;
|
|
8
10
|
private heartbeatTimer?;
|
|
9
11
|
private lastMessageAt?;
|
|
10
12
|
private log;
|
|
11
|
-
|
|
13
|
+
private rateLimitState;
|
|
14
|
+
constructor(heartbeatIntervalMs: number, maxMessagesPerMinute: number, maxAutomationRequestsPerMinute: number);
|
|
12
15
|
getHeartbeatIntervalMs(): number;
|
|
13
16
|
registerSocket(socket: WebSocket, port: number, metadata?: Record<string, unknown>, remoteAddress?: string, remotePort?: number): void;
|
|
14
17
|
removeSocket(socket: WebSocket): SocketInfo | undefined;
|
|
18
|
+
recordInboundMessage(socket: WebSocket, isAutomationRequest: boolean): boolean;
|
|
15
19
|
getActiveSockets(): Map<WebSocket, SocketInfo>;
|
|
16
20
|
getPrimarySocket(): WebSocket | undefined;
|
|
17
21
|
isConnected(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/automation/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"connection-manager.d.ts","sourceRoot":"","sources":["../../src/automation/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAG/B,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,YAAY;IAS3C,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,oBAAoB;IAC5B,OAAO,CAAC,8BAA8B;IAV1C,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,aAAa,CAAC,CAAY;IAClC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,aAAa,CAAC,CAAO;IAC7B,OAAO,CAAC,GAAG,CAAmC;IAC9C,OAAO,CAAC,cAAc,CAAkG;gBAG5G,mBAAmB,EAAE,MAAM,EAC3B,oBAAoB,EAAE,MAAM,EAC5B,8BAA8B,EAAE,MAAM;IAS3C,sBAAsB,IAAI,MAAM;IAIhC,cAAc,CACjB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,aAAa,CAAC,EAAE,MAAM,EACtB,UAAU,CAAC,EAAE,MAAM,GACpB,IAAI;IAqCA,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS;IAevD,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,mBAAmB,EAAE,OAAO,GAAG,OAAO;IAmC9E,gBAAgB,IAAI,GAAG,CAAC,SAAS,EAAE,UAAU,CAAC;IAI9C,gBAAgB,IAAI,SAAS,GAAG,SAAS;IAIzC,WAAW,IAAI,OAAO;IAItB,cAAc,IAAI,IAAI;IA4BtB,aAAa,IAAI,IAAI;IAOrB,qBAAqB,IAAI,IAAI;IAI7B,kBAAkB,IAAI,IAAI,GAAG,SAAS;IAItC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAUxD"}
|
|
@@ -4,14 +4,19 @@ import { randomUUID } from 'node:crypto';
|
|
|
4
4
|
import { EventEmitter } from 'node:events';
|
|
5
5
|
export class ConnectionManager extends EventEmitter {
|
|
6
6
|
heartbeatIntervalMs;
|
|
7
|
+
maxMessagesPerMinute;
|
|
8
|
+
maxAutomationRequestsPerMinute;
|
|
7
9
|
activeSockets = new Map();
|
|
8
10
|
primarySocket;
|
|
9
11
|
heartbeatTimer;
|
|
10
12
|
lastMessageAt;
|
|
11
13
|
log = new Logger('ConnectionManager');
|
|
12
|
-
|
|
14
|
+
rateLimitState = new Map();
|
|
15
|
+
constructor(heartbeatIntervalMs, maxMessagesPerMinute, maxAutomationRequestsPerMinute) {
|
|
13
16
|
super();
|
|
14
17
|
this.heartbeatIntervalMs = heartbeatIntervalMs;
|
|
18
|
+
this.maxMessagesPerMinute = maxMessagesPerMinute;
|
|
19
|
+
this.maxAutomationRequestsPerMinute = maxAutomationRequestsPerMinute;
|
|
15
20
|
}
|
|
16
21
|
getHeartbeatIntervalMs() {
|
|
17
22
|
return this.heartbeatIntervalMs;
|
|
@@ -29,6 +34,7 @@ export class ConnectionManager extends EventEmitter {
|
|
|
29
34
|
remotePort: typeof remotePort === 'number' ? remotePort : undefined
|
|
30
35
|
};
|
|
31
36
|
this.activeSockets.set(socket, socketInfo);
|
|
37
|
+
this.rateLimitState.set(socket, { windowStartMs: Date.now(), messageCount: 0, automationCount: 0 });
|
|
32
38
|
if (!this.primarySocket) {
|
|
33
39
|
this.primarySocket = socket;
|
|
34
40
|
}
|
|
@@ -47,6 +53,7 @@ export class ConnectionManager extends EventEmitter {
|
|
|
47
53
|
const info = this.activeSockets.get(socket);
|
|
48
54
|
if (info) {
|
|
49
55
|
this.activeSockets.delete(socket);
|
|
56
|
+
this.rateLimitState.delete(socket);
|
|
50
57
|
if (socket === this.primarySocket) {
|
|
51
58
|
this.primarySocket = this.activeSockets.size > 0 ? this.activeSockets.keys().next().value : undefined;
|
|
52
59
|
if (this.activeSockets.size === 0) {
|
|
@@ -56,6 +63,33 @@ export class ConnectionManager extends EventEmitter {
|
|
|
56
63
|
}
|
|
57
64
|
return info;
|
|
58
65
|
}
|
|
66
|
+
recordInboundMessage(socket, isAutomationRequest) {
|
|
67
|
+
if (this.maxMessagesPerMinute <= 0 && this.maxAutomationRequestsPerMinute <= 0) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
const nowMs = Date.now();
|
|
71
|
+
const state = this.rateLimitState.get(socket) ?? { windowStartMs: nowMs, messageCount: 0, automationCount: 0 };
|
|
72
|
+
const windowElapsedMs = nowMs - state.windowStartMs;
|
|
73
|
+
if (windowElapsedMs >= 60000) {
|
|
74
|
+
state.windowStartMs = nowMs;
|
|
75
|
+
state.messageCount = 0;
|
|
76
|
+
state.automationCount = 0;
|
|
77
|
+
}
|
|
78
|
+
state.messageCount += 1;
|
|
79
|
+
if (isAutomationRequest) {
|
|
80
|
+
state.automationCount += 1;
|
|
81
|
+
}
|
|
82
|
+
this.rateLimitState.set(socket, state);
|
|
83
|
+
if (this.maxMessagesPerMinute > 0 && state.messageCount >= this.maxMessagesPerMinute) {
|
|
84
|
+
this.log.warn(`Inbound message rate exceeded (${state.messageCount}/${this.maxMessagesPerMinute} per minute).`);
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
if (isAutomationRequest && this.maxAutomationRequestsPerMinute > 0 && state.automationCount >= this.maxAutomationRequestsPerMinute) {
|
|
88
|
+
this.log.warn(`Inbound automation request rate exceeded (${state.automationCount}/${this.maxAutomationRequestsPerMinute} per minute).`);
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
return true;
|
|
92
|
+
}
|
|
59
93
|
getActiveSockets() {
|
|
60
94
|
return this.activeSockets;
|
|
61
95
|
}
|
|
@@ -111,6 +145,7 @@ export class ConnectionManager extends EventEmitter {
|
|
|
111
145
|
socket.close(code, reason);
|
|
112
146
|
}
|
|
113
147
|
this.activeSockets.clear();
|
|
148
|
+
this.rateLimitState.clear();
|
|
114
149
|
this.primarySocket = undefined;
|
|
115
150
|
}
|
|
116
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/automation/connection-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,iBAAkB,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../src/automation/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/automation/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"handshake.d.ts","sourceRoot":"","sources":["../../src/automation/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAI/B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,YAAY;IAK1C,OAAO,CAAC,eAAe,CAAC;IAJ5B,OAAO,CAAC,GAAG,CAAkC;IAC7C,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CAAQ;gBAGzC,eAAe,CAAC,EAAE,MAAM,YAAA;IAK7B,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,GAAE,MAA0C,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IA8EpI,OAAO,CAAC,yBAAyB;CAQpC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { WebSocket } from 'ws';
|
|
2
2
|
import { Logger } from '../utils/logger.js';
|
|
3
|
+
import { bridgeAckSchema } from './message-schema.js';
|
|
3
4
|
import { EventEmitter } from 'node:events';
|
|
4
5
|
export class HandshakeHandler extends EventEmitter {
|
|
5
6
|
capabilityToken;
|
|
@@ -32,18 +33,19 @@ export class HandshakeHandler extends EventEmitter {
|
|
|
32
33
|
reject(new Error('Invalid JSON payload'));
|
|
33
34
|
return;
|
|
34
35
|
}
|
|
35
|
-
|
|
36
|
+
const validation = bridgeAckSchema.safeParse(parsed);
|
|
37
|
+
if (validation.success) {
|
|
36
38
|
handshakeComplete = true;
|
|
37
39
|
cleanup();
|
|
38
|
-
const metadata = this.sanitizeHandshakeMetadata(
|
|
40
|
+
const metadata = this.sanitizeHandshakeMetadata(validation.data);
|
|
39
41
|
resolve(metadata);
|
|
42
|
+
return;
|
|
40
43
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}
|
|
44
|
+
const typeHint = typeof parsed.type === 'string' ? parsed.type : 'unknown';
|
|
45
|
+
this.log.warn(`Expected bridge_ack handshake, received ${typeHint}`, validation.error.format());
|
|
46
|
+
socket.close(4004, 'Handshake expected bridge_ack');
|
|
47
|
+
cleanup();
|
|
48
|
+
reject(new Error(`Handshake expected bridge_ack, got ${typeHint}`));
|
|
47
49
|
};
|
|
48
50
|
const onError = (error) => {
|
|
49
51
|
cleanup();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/automation/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAKlC;IAJJ,GAAG,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5B,4BAA4B,GAAG,IAAI,CAAC;IAErD,YACY,eAAwB;QAEhC,KAAK,EAAE,CAAC;QAFA,oBAAe,GAAf,eAAe,CAAS;IAGpC,CAAC;IAEM,iBAAiB,CAAC,MAAiB,EAAE,YAAoB,IAAI,CAAC,4BAA4B;QAC7F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAE9B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;oBAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;gBACxC,IAAI,MAA+B,CAAC;gBACpC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrE,IAAI,CAAC;oBACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;gBACzD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uDAAuD,EAAE,KAAK,CAAC,CAAC;oBAC/E,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;oBAC3C,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC1C,OAAO;gBACX,CAAC;gBAED,
|
|
1
|
+
{"version":3,"file":"handshake.js","sourceRoot":"","sources":["../../src/automation/handshake.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAKlC;IAJJ,GAAG,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5B,4BAA4B,GAAG,IAAI,CAAC;IAErD,YACY,eAAwB;QAEhC,KAAK,EAAE,CAAC;QAFA,oBAAe,GAAf,eAAe,CAAS;IAGpC,CAAC;IAEM,iBAAiB,CAAC,MAAiB,EAAE,YAAoB,IAAI,CAAC,4BAA4B;QAC7F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAE9B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;oBAC9D,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;oBACxC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;gBAC3C,CAAC;YACL,CAAC,EAAE,SAAS,CAAC,CAAC;YAEd,MAAM,SAAS,GAAG,CAAC,IAAqB,EAAE,EAAE;gBACxC,IAAI,MAA+B,CAAC;gBACpC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACrE,IAAI,CAAC;oBACD,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;gBACzD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,uDAAuD,EAAE,KAAK,CAAC,CAAC;oBAC/E,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;oBAC3C,OAAO,EAAE,CAAC;oBACV,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;oBAC1C,OAAO;gBACX,CAAC;gBAED,MAAM,UAAU,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACrD,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;oBACrB,iBAAiB,GAAG,IAAI,CAAC;oBACzB,OAAO,EAAE,CAAC;oBACV,MAAM,QAAQ,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,IAA+B,CAAC,CAAC;oBAC5F,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAClB,OAAO;gBACX,CAAC;gBAED,MAAM,QAAQ,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3E,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,2CAA2C,QAAQ,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,+BAA+B,CAAC,CAAC;gBACpD,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,QAAQ,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;gBAC7B,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC;YAEF,MAAM,OAAO,GAAG,GAAG,EAAE;gBACjB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACjC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjC,CAAC,CAAC;YAEF,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAChC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC5B,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAG5B,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;oBACvC,MAAM,YAAY,GAA4B;wBAC1C,IAAI,EAAE,cAAc;wBACpB,eAAe,EAAE,IAAI,CAAC,eAAe,IAAI,SAAS;qBACrD,CAAC;oBACF,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAmC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBAClF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACJ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC;gBACrE,CAAC;YACL,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,yBAAyB,CAAC,OAAgC;QAC9D,MAAM,SAAS,GAA4B,EAAE,GAAG,OAAO,EAAE,CAAC;QAC1D,OAAO,SAAS,CAAC,IAAI,CAAC;QACtB,IAAI,iBAAiB,IAAI,SAAS,EAAE,CAAC;YACjC,SAAS,CAAC,eAAe,GAAG,UAAU,CAAC;QAC3C,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;CACJ"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const automationResponseSchema: z.ZodObject<{
|
|
3
|
+
type: z.ZodLiteral<"automation_response">;
|
|
4
|
+
requestId: z.ZodString;
|
|
5
|
+
success: z.ZodOptional<z.ZodBoolean>;
|
|
6
|
+
message: z.ZodOptional<z.ZodString>;
|
|
7
|
+
error: z.ZodOptional<z.ZodString>;
|
|
8
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
9
|
+
action: z.ZodOptional<z.ZodString>;
|
|
10
|
+
}, z.core.$loose>;
|
|
11
|
+
export declare const automationEventSchema: z.ZodObject<{
|
|
12
|
+
type: z.ZodLiteral<"automation_event">;
|
|
13
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
14
|
+
event: z.ZodOptional<z.ZodString>;
|
|
15
|
+
payload: z.ZodOptional<z.ZodUnknown>;
|
|
16
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
17
|
+
message: z.ZodOptional<z.ZodString>;
|
|
18
|
+
}, z.core.$loose>;
|
|
19
|
+
export declare const bridgeAckSchema: z.ZodObject<{
|
|
20
|
+
type: z.ZodLiteral<"bridge_ack">;
|
|
21
|
+
message: z.ZodOptional<z.ZodString>;
|
|
22
|
+
serverName: z.ZodOptional<z.ZodString>;
|
|
23
|
+
serverVersion: z.ZodOptional<z.ZodString>;
|
|
24
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
25
|
+
protocolVersion: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
supportedOpcodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
27
|
+
expectedResponseOpcodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
28
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
29
|
+
heartbeatIntervalMs: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
}, z.core.$loose>;
|
|
31
|
+
export declare const bridgeErrorSchema: z.ZodObject<{
|
|
32
|
+
type: z.ZodLiteral<"bridge_error">;
|
|
33
|
+
error: z.ZodOptional<z.ZodString>;
|
|
34
|
+
message: z.ZodOptional<z.ZodString>;
|
|
35
|
+
}, z.core.$loose>;
|
|
36
|
+
export declare const bridgePingSchema: z.ZodObject<{
|
|
37
|
+
type: z.ZodLiteral<"bridge_ping">;
|
|
38
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}, z.core.$loose>;
|
|
40
|
+
export declare const bridgePongSchema: z.ZodObject<{
|
|
41
|
+
type: z.ZodLiteral<"bridge_pong">;
|
|
42
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
43
|
+
}, z.core.$loose>;
|
|
44
|
+
export declare const bridgeGoodbyeSchema: z.ZodObject<{
|
|
45
|
+
type: z.ZodLiteral<"bridge_goodbye">;
|
|
46
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
47
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
48
|
+
}, z.core.$loose>;
|
|
49
|
+
export declare const automationMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
50
|
+
type: z.ZodLiteral<"automation_response">;
|
|
51
|
+
requestId: z.ZodString;
|
|
52
|
+
success: z.ZodOptional<z.ZodBoolean>;
|
|
53
|
+
message: z.ZodOptional<z.ZodString>;
|
|
54
|
+
error: z.ZodOptional<z.ZodString>;
|
|
55
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
56
|
+
action: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
58
|
+
type: z.ZodLiteral<"automation_event">;
|
|
59
|
+
requestId: z.ZodOptional<z.ZodString>;
|
|
60
|
+
event: z.ZodOptional<z.ZodString>;
|
|
61
|
+
payload: z.ZodOptional<z.ZodUnknown>;
|
|
62
|
+
result: z.ZodOptional<z.ZodUnknown>;
|
|
63
|
+
message: z.ZodOptional<z.ZodString>;
|
|
64
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
65
|
+
type: z.ZodLiteral<"bridge_ack">;
|
|
66
|
+
message: z.ZodOptional<z.ZodString>;
|
|
67
|
+
serverName: z.ZodOptional<z.ZodString>;
|
|
68
|
+
serverVersion: z.ZodOptional<z.ZodString>;
|
|
69
|
+
sessionId: z.ZodOptional<z.ZodString>;
|
|
70
|
+
protocolVersion: z.ZodOptional<z.ZodNumber>;
|
|
71
|
+
supportedOpcodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
72
|
+
expectedResponseOpcodes: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
73
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
heartbeatIntervalMs: z.ZodOptional<z.ZodNumber>;
|
|
75
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
76
|
+
type: z.ZodLiteral<"bridge_error">;
|
|
77
|
+
error: z.ZodOptional<z.ZodString>;
|
|
78
|
+
message: z.ZodOptional<z.ZodString>;
|
|
79
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
80
|
+
type: z.ZodLiteral<"bridge_ping">;
|
|
81
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
82
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
83
|
+
type: z.ZodLiteral<"bridge_pong">;
|
|
84
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
85
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
86
|
+
type: z.ZodLiteral<"bridge_goodbye">;
|
|
87
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
88
|
+
timestamp: z.ZodOptional<z.ZodString>;
|
|
89
|
+
}, z.core.$loose>], "type">;
|
|
90
|
+
export type AutomationMessageSchema = z.infer<typeof automationMessageSchema>;
|
|
91
|
+
//# sourceMappingURL=message-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-schema.d.ts","sourceRoot":"","sources":["../../src/automation/message-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,wBAAwB;;;;;;;;iBAQrB,CAAC;AAEjB,eAAO,MAAM,qBAAqB;;;;;;;iBAOlB,CAAC;AAEjB,eAAO,MAAM,eAAe;;;;;;;;;;;iBAWZ,CAAC;AAEjB,eAAO,MAAM,iBAAiB;;;;iBAId,CAAC;AAEjB,eAAO,MAAM,gBAAgB;;;iBAGb,CAAC;AAEjB,eAAO,MAAM,gBAAgB;;;iBAGb,CAAC;AAEjB,eAAO,MAAM,mBAAmB;;;;iBAIhB,CAAC;AAEjB,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAQlC,CAAC;AAEH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
const stringArray = z.array(z.string());
|
|
3
|
+
export const automationResponseSchema = z.object({
|
|
4
|
+
type: z.literal('automation_response'),
|
|
5
|
+
requestId: z.string().min(1),
|
|
6
|
+
success: z.boolean().optional(),
|
|
7
|
+
message: z.string().optional(),
|
|
8
|
+
error: z.string().optional(),
|
|
9
|
+
result: z.unknown().optional(),
|
|
10
|
+
action: z.string().optional()
|
|
11
|
+
}).passthrough();
|
|
12
|
+
export const automationEventSchema = z.object({
|
|
13
|
+
type: z.literal('automation_event'),
|
|
14
|
+
requestId: z.string().optional(),
|
|
15
|
+
event: z.string().optional(),
|
|
16
|
+
payload: z.unknown().optional(),
|
|
17
|
+
result: z.unknown().optional(),
|
|
18
|
+
message: z.string().optional()
|
|
19
|
+
}).passthrough();
|
|
20
|
+
export const bridgeAckSchema = z.object({
|
|
21
|
+
type: z.literal('bridge_ack'),
|
|
22
|
+
message: z.string().optional(),
|
|
23
|
+
serverName: z.string().optional(),
|
|
24
|
+
serverVersion: z.string().optional(),
|
|
25
|
+
sessionId: z.string().optional(),
|
|
26
|
+
protocolVersion: z.number().optional(),
|
|
27
|
+
supportedOpcodes: stringArray.optional(),
|
|
28
|
+
expectedResponseOpcodes: stringArray.optional(),
|
|
29
|
+
capabilities: stringArray.optional(),
|
|
30
|
+
heartbeatIntervalMs: z.number().optional()
|
|
31
|
+
}).passthrough();
|
|
32
|
+
export const bridgeErrorSchema = z.object({
|
|
33
|
+
type: z.literal('bridge_error'),
|
|
34
|
+
error: z.string().optional(),
|
|
35
|
+
message: z.string().optional()
|
|
36
|
+
}).passthrough();
|
|
37
|
+
export const bridgePingSchema = z.object({
|
|
38
|
+
type: z.literal('bridge_ping'),
|
|
39
|
+
timestamp: z.string().optional()
|
|
40
|
+
}).passthrough();
|
|
41
|
+
export const bridgePongSchema = z.object({
|
|
42
|
+
type: z.literal('bridge_pong'),
|
|
43
|
+
timestamp: z.string().optional()
|
|
44
|
+
}).passthrough();
|
|
45
|
+
export const bridgeGoodbyeSchema = z.object({
|
|
46
|
+
type: z.literal('bridge_goodbye'),
|
|
47
|
+
reason: z.string().optional(),
|
|
48
|
+
timestamp: z.string().optional()
|
|
49
|
+
}).passthrough();
|
|
50
|
+
export const automationMessageSchema = z.discriminatedUnion('type', [
|
|
51
|
+
automationResponseSchema,
|
|
52
|
+
automationEventSchema,
|
|
53
|
+
bridgeAckSchema,
|
|
54
|
+
bridgeErrorSchema,
|
|
55
|
+
bridgePingSchema,
|
|
56
|
+
bridgePongSchema,
|
|
57
|
+
bridgeGoodbyeSchema
|
|
58
|
+
]);
|
|
59
|
+
//# sourceMappingURL=message-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-schema.js","sourceRoot":"","sources":["../../src/automation/message-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,10 +12,14 @@ export interface AutomationBridgeOptions {
|
|
|
12
12
|
maxPendingRequests?: number;
|
|
13
13
|
maxConcurrentConnections?: number;
|
|
14
14
|
maxQueuedRequests?: number;
|
|
15
|
+
maxInboundMessagesPerMinute?: number;
|
|
16
|
+
maxInboundAutomationRequestsPerMinute?: number;
|
|
17
|
+
useTls?: boolean;
|
|
15
18
|
clientMode?: boolean;
|
|
16
19
|
clientHost?: string;
|
|
17
20
|
clientPort?: number;
|
|
18
21
|
serverLegacyEnabled?: boolean;
|
|
22
|
+
allowNonLoopback?: boolean;
|
|
19
23
|
}
|
|
20
24
|
export interface AutomationBridgeMessage {
|
|
21
25
|
type: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/automation/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,WAAW,uBAAuB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/automation/types.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export declare const DEFAULT_HEARTBEAT_INTERVAL_MS = 10000;
|
|
|
6
6
|
export declare const DEFAULT_HANDSHAKE_TIMEOUT_MS = 5000;
|
|
7
7
|
export declare const DEFAULT_MAX_PENDING_REQUESTS = 25;
|
|
8
8
|
export declare const DEFAULT_MAX_QUEUED_REQUESTS = 100;
|
|
9
|
+
export declare const DEFAULT_MAX_INBOUND_MESSAGES_PER_MINUTE = 600;
|
|
10
|
+
export declare const DEFAULT_MAX_INBOUND_AUTOMATION_REQUESTS_PER_MINUTE = 120;
|
|
9
11
|
export declare const DEFAULT_TIME_OF_DAY = 9;
|
|
10
12
|
export declare const DEFAULT_SUN_INTENSITY = 10000;
|
|
11
13
|
export declare const DEFAULT_SKYLIGHT_INTENSITY = 1;
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,wBAAwB,UAAe,CAAC;AACrD,eAAO,MAAM,4BAA4B,UAAqB,CAAC;AAC/D,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AACnD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AACjD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,eAAO,MAAM,6BAA6B,cAAc,CAAC;AAGzD,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAClD,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AACjD,eAAO,MAAM,4BAA4B,SAAS,CAAC;AACnD,eAAO,MAAM,0BAA0B,SAAS,CAAC;AAGjD,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,yBAAyB,QAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,wBAAwB,UAAe,CAAC;AACrD,eAAO,MAAM,4BAA4B,UAAqB,CAAC;AAC/D,eAAO,MAAM,6BAA6B,QAAQ,CAAC;AACnD,eAAO,MAAM,4BAA4B,OAAO,CAAC;AACjD,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAC/C,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAC3D,eAAO,MAAM,kDAAkD,MAAM,CAAC;AACtE,eAAO,MAAM,mBAAmB,IAAI,CAAC;AACrC,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,eAAO,MAAM,6BAA6B,cAAc,CAAC;AAGzD,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAClD,eAAO,MAAM,2BAA2B,QAAQ,CAAC;AACjD,eAAO,MAAM,4BAA4B,SAAS,CAAC;AACnD,eAAO,MAAM,0BAA0B,SAAS,CAAC;AAGjD,eAAO,MAAM,0BAA0B,QAAQ,CAAC;AAChD,eAAO,MAAM,uBAAuB,QAAQ,CAAC;AAC7C,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAG3C,eAAO,MAAM,yBAAyB,QAAkB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -6,6 +6,8 @@ export const DEFAULT_HEARTBEAT_INTERVAL_MS = 10000;
|
|
|
6
6
|
export const DEFAULT_HANDSHAKE_TIMEOUT_MS = 5000;
|
|
7
7
|
export const DEFAULT_MAX_PENDING_REQUESTS = 25;
|
|
8
8
|
export const DEFAULT_MAX_QUEUED_REQUESTS = 100;
|
|
9
|
+
export const DEFAULT_MAX_INBOUND_MESSAGES_PER_MINUTE = 600;
|
|
10
|
+
export const DEFAULT_MAX_INBOUND_AUTOMATION_REQUESTS_PER_MINUTE = 120;
|
|
9
11
|
export const DEFAULT_TIME_OF_DAY = 9;
|
|
10
12
|
export const DEFAULT_SUN_INTENSITY = 10000;
|
|
11
13
|
export const DEFAULT_SKYLIGHT_INTENSITY = 1;
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,6BAA6B,GAAG,WAAW,CAAC;AAGzD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AACjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAGjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAG3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AACA,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AACnD,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AACjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAC/C,MAAM,CAAC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAC/C,MAAM,CAAC,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAC3D,MAAM,CAAC,MAAM,kDAAkD,GAAG,GAAG,CAAC;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,MAAM,CAAC,MAAM,6BAA6B,GAAG,WAAW,CAAC;AAGzD,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAClD,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AACjD,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AACnD,MAAM,CAAC,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAGjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAChD,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAC7C,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAG3C,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -29,7 +29,7 @@ const DEFAULT_SERVER_NAME = typeof packageInfo.name === 'string' && packageInfo.
|
|
|
29
29
|
: 'unreal-engine-mcp';
|
|
30
30
|
const DEFAULT_SERVER_VERSION = typeof packageInfo.version === 'string' && packageInfo.version.trim().length > 0
|
|
31
31
|
? packageInfo.version
|
|
32
|
-
: '0.5.
|
|
32
|
+
: '0.5.15';
|
|
33
33
|
function routeStdoutLogsToStderr() {
|
|
34
34
|
if (!config.MCP_ROUTE_STDOUT_LOGS) {
|
|
35
35
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unreal-engine-mcp-server",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.15",
|
|
4
4
|
"mcpName": "io.github.ChiR24/unreal-engine-mcp",
|
|
5
5
|
"description": "A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Engine via native automation bridge. Built with TypeScript and designed for game development automation.",
|
|
6
6
|
"type": "module",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"dotenv": "^17.2.3",
|
|
66
66
|
"graphql": "^16.12.0",
|
|
67
67
|
"graphql-yoga": "^5.18.0",
|
|
68
|
-
"mcp-client-capabilities": "^0.0.
|
|
68
|
+
"mcp-client-capabilities": "^0.0.14",
|
|
69
69
|
"ws": "^8.18.3",
|
|
70
70
|
"zod": "^4.2.1"
|
|
71
71
|
},
|
package/server.json
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
|
3
3
|
"name": "io.github.ChiR24/unreal-engine-mcp",
|
|
4
4
|
"description": "MCP server for Unreal Engine 5 with 17 tools for game development automation.",
|
|
5
|
-
"version": "0.5.
|
|
5
|
+
"version": "0.5.15",
|
|
6
6
|
"packages": [
|
|
7
7
|
{
|
|
8
8
|
"registryType": "npm",
|
|
9
9
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
10
10
|
"identifier": "unreal-engine-mcp-server",
|
|
11
|
-
"version": "0.5.
|
|
11
|
+
"version": "0.5.15",
|
|
12
12
|
"transport": {
|
|
13
13
|
"type": "stdio"
|
|
14
14
|
},
|
|
@@ -51,16 +51,28 @@
|
|
|
51
51
|
},
|
|
52
52
|
{
|
|
53
53
|
"name": "MCP_AUTOMATION_HOST",
|
|
54
|
-
"description": "Automation bridge WebSocket host (default: 127.0.0.1)",
|
|
54
|
+
"description": "Automation bridge WebSocket host (default: 127.0.0.1). Set to 0.0.0.0 for LAN access (requires MCP_AUTOMATION_ALLOW_NON_LOOPBACK=true)",
|
|
55
55
|
"isRequired": false,
|
|
56
56
|
"value": "127.0.0.1"
|
|
57
57
|
},
|
|
58
|
+
{
|
|
59
|
+
"name": "MCP_AUTOMATION_ALLOW_NON_LOOPBACK",
|
|
60
|
+
"description": "SECURITY: Allow binding to non-loopback addresses (e.g., 0.0.0.0) for LAN access. Only enable if you understand the security implications. (default: false)",
|
|
61
|
+
"isRequired": false,
|
|
62
|
+
"value": "false"
|
|
63
|
+
},
|
|
58
64
|
{
|
|
59
65
|
"name": "MCP_AUTOMATION_CLIENT_MODE",
|
|
60
66
|
"description": "Run as client connecting to UE (false) or server listening for UE (true) (default: false)",
|
|
61
67
|
"isRequired": false,
|
|
62
68
|
"value": "false"
|
|
63
69
|
},
|
|
70
|
+
{
|
|
71
|
+
"name": "MCP_AUTOMATION_USE_TLS",
|
|
72
|
+
"description": "Use wss:// for the automation bridge client connection (default: false)",
|
|
73
|
+
"isRequired": false,
|
|
74
|
+
"value": "false"
|
|
75
|
+
},
|
|
64
76
|
{
|
|
65
77
|
"name": "MCP_CONNECTION_TIMEOUT_MS",
|
|
66
78
|
"description": "Connection timeout in milliseconds (default: 5000)",
|
|
@@ -72,6 +84,18 @@
|
|
|
72
84
|
"description": "Request timeout in milliseconds (default: 30000)",
|
|
73
85
|
"isRequired": false,
|
|
74
86
|
"value": "30000"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "MCP_AUTOMATION_MAX_MESSAGES_PER_MINUTE",
|
|
90
|
+
"description": "Max inbound automation bridge messages per minute before disconnect (default: 600)",
|
|
91
|
+
"isRequired": false,
|
|
92
|
+
"value": "600"
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "MCP_AUTOMATION_MAX_AUTOMATION_REQUESTS_PER_MINUTE",
|
|
96
|
+
"description": "Max inbound automation request messages per minute before disconnect (default: 120)",
|
|
97
|
+
"isRequired": false,
|
|
98
|
+
"value": "120"
|
|
75
99
|
}
|
|
76
100
|
]
|
|
77
101
|
}
|