robloxstudio-mcp 1.8.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +37 -254
  2. package/dist/__tests__/bridge-service.test.js +14 -4
  3. package/dist/__tests__/bridge-service.test.js.map +1 -1
  4. package/dist/__tests__/http-server.test.js +14 -3
  5. package/dist/__tests__/http-server.test.js.map +1 -1
  6. package/dist/__tests__/integration.test.js +9 -0
  7. package/dist/__tests__/integration.test.js.map +1 -1
  8. package/dist/__tests__/smoke.test.js +2 -0
  9. package/dist/__tests__/smoke.test.js.map +1 -1
  10. package/dist/bridge-service.d.ts.map +1 -1
  11. package/dist/bridge-service.js +14 -9
  12. package/dist/bridge-service.js.map +1 -1
  13. package/dist/http-server.d.ts.map +1 -1
  14. package/dist/http-server.js +186 -2
  15. package/dist/http-server.js.map +1 -1
  16. package/dist/index.js +87 -10
  17. package/dist/index.js.map +1 -1
  18. package/dist/tools/index.d.ts +7 -1
  19. package/dist/tools/index.d.ts.map +1 -1
  20. package/dist/tools/index.js +15 -1
  21. package/dist/tools/index.js.map +1 -1
  22. package/package.json +73 -69
  23. package/studio-plugin/INSTALLATION.md +58 -58
  24. package/studio-plugin/MCPPlugin.rbxmx +2970 -2198
  25. package/studio-plugin/default.project.json +10 -0
  26. package/studio-plugin/dev.project.json +9 -0
  27. package/studio-plugin/src/MCPPlugin.server.luau +41 -0
  28. package/studio-plugin/src/modules/Communication.luau +388 -0
  29. package/studio-plugin/src/modules/InstanceHandlers.luau +419 -0
  30. package/studio-plugin/src/modules/MetadataHandlers.luau +428 -0
  31. package/studio-plugin/src/modules/PropertyHandlers.luau +430 -0
  32. package/studio-plugin/src/modules/QueryHandlers.luau +674 -0
  33. package/studio-plugin/src/modules/ScriptHandlers.luau +454 -0
  34. package/studio-plugin/src/modules/State.luau +78 -0
  35. package/studio-plugin/src/modules/UI.luau +749 -0
  36. package/studio-plugin/src/modules/Utils.luau +295 -0
  37. package/studio-plugin/plugin.luau +0 -3234
package/README.md CHANGED
@@ -1,35 +1,53 @@
1
1
  # Roblox Studio MCP Server
2
2
 
3
- MCP server for AI-powered Roblox Studio integration. 18 specialized tools for exploring projects, analyzing scripts, and performing bulk operations.
3
+ **Connect AI assistants like Claude and Gemini to Roblox Studio**
4
4
 
5
- <a href="https://glama.ai/mcp/servers/@boshyxd/robloxstudio-mcp">
6
- <img width="380" height="200" src="https://glama.ai/mcp/servers/@boshyxd/robloxstudio-mcp/badge" alt="Roblox Studio Server MCP server" />
7
- </a>
5
+ [![NPM Version](https://img.shields.io/npm/v/robloxstudio-mcp)](https://www.npmjs.com/package/robloxstudio-mcp)
8
6
 
9
- ## Quick Start
7
+ ---
10
8
 
11
- **For Claude Code users:**
9
+ ## What is This?
10
+
11
+ An MCP server that lets AI explore your game structure, read/edit scripts, and perform bulk changes all locally and safely.
12
+
13
+ ## Setup
14
+
15
+ 1. Install the [Studio plugin](https://github.com/boshyxd/robloxstudio-mcp/releases) to your Plugins folder
16
+ 2. Enable **Allow HTTP Requests** in Experience Settings > Security
17
+ 3. Connect your AI:
18
+
19
+ **Claude:**
20
+ ```bash
21
+ claude mcp add robloxstudio -- npx -y robloxstudio-mcp@latest
22
+ ```
23
+
24
+ **Codex:**
12
25
  ```bash
13
- claude mcp add robloxstudio -- npx -y robloxstudio-mcp
26
+ codex mcp add robloxstudio -- npx -y robloxstudio-mcp@latest
14
27
  ```
15
28
 
16
- **For other MCP clients (Claude Desktop, etc.):**
29
+ **Gemini:**
30
+ ```bash
31
+ gemini mcp add robloxstudio npx --trust -- -y robloxstudio-mcp@latest
32
+ ```
33
+
34
+ Plugin shows "Connected" when ready.
35
+
36
+ <details>
37
+ <summary>Other MCP clients (Claude Desktop, Cursor, etc.)</summary>
38
+
17
39
  ```json
18
40
  {
19
41
  "mcpServers": {
20
42
  "robloxstudio-mcp": {
21
43
  "command": "npx",
22
- "args": ["-y", "robloxstudio-mcp"],
23
- "description": "Advanced Roblox Studio integration for AI assistants"
44
+ "args": ["-y", "robloxstudio-mcp@latest"]
24
45
  }
25
46
  }
26
47
  }
27
48
  ```
28
49
 
29
- <details>
30
- <summary>Note for native Windows users</summary>
31
- If you encounter issues, you may need to run it through `cmd`. Update your configuration like this:
32
-
50
+ **Windows users:** If you encounter issues, use `cmd`:
33
51
  ```json
34
52
  {
35
53
  "mcpServers": {
@@ -42,247 +60,12 @@ If you encounter issues, you may need to run it through `cmd`. Update your confi
42
60
  ```
43
61
  </details>
44
62
 
45
- ## Studio Plugin Setup (Required)
46
-
47
- The MCP server requires a companion Roblox Studio plugin:
48
-
49
- - Download [MCPPlugin.rbxmx](https://github.com/boshyxd/robloxstudio-mcp/releases/latest/download/MCPPlugin.rbxmx)
50
- - Save to your `%LOCALAPPDATA%/Roblox/Plugins` folder
51
-
52
- **After installation:**
53
- - Enable "Allow HTTP Requests" in Game Settings > Security
54
- - Click the "MCP Server" button in the Plugins toolbar
55
- - Status should show "Connected" when working
56
-
57
- ## Architecture Overview
58
-
59
- Dual-component system bridging Roblox Studio with AI assistants:
60
-
61
- ```mermaid
62
- %%{init: {'theme':'dark', 'themeVariables': {'primaryColor':'#2d3748', 'primaryTextColor':'#ffffff', 'primaryBorderColor':'#4a5568', 'lineColor':'#718096', 'sectionBkgColor':'#1a202c', 'altSectionBkgColor':'#2d3748', 'gridColor':'#4a5568', 'secondaryColor':'#2b6cb0', 'tertiaryColor':'#319795'}}}%%
63
- graph TB
64
- subgraph AI_ENV ["AI Environment"]
65
- AI["AI Assistant<br/>Claude Code/Desktop"]
66
- MCP["MCP Server<br/>Node.js + TypeScript"]
67
- end
68
-
69
- subgraph COMM_LAYER ["Communication Layer"]
70
- HTTP["HTTP Bridge<br/>localhost:3002"]
71
- QUEUE["Request Queue<br/>UUID tracking"]
72
- end
73
-
74
- subgraph STUDIO_ENV ["Roblox Studio Environment"]
75
- PLUGIN["Studio Plugin<br/>Luau Script"]
76
- STUDIO["Roblox Studio<br/>APIs & Data"]
77
- end
78
-
79
- subgraph TOOLS ["18 AI Tools"]
80
- FILE["File System<br/>Trees, Search"]
81
- CONTEXT["Studio Context<br/>Services, Objects"]
82
- PROPS["Properties<br/>Get, Set, Mass Ops"]
83
- CREATE["Object Creation<br/>Single, Mass, Properties"]
84
- PROJECT["Project Analysis<br/>Smart Structure"]
85
- end
86
-
87
- AI -->|stdio| MCP
88
- MCP -->|HTTP POST| HTTP
89
- HTTP -->|Queue Request| QUEUE
90
- PLUGIN -->|Poll every 500ms| HTTP
91
- HTTP -->|Pending Work| PLUGIN
92
- PLUGIN -->|Execute APIs| STUDIO
93
- STUDIO -->|Return Data| PLUGIN
94
- PLUGIN -->|HTTP Response| HTTP
95
- HTTP -->|Resolve Promise| MCP
96
- MCP -->|Tool Result| AI
97
-
98
- MCP -.->|Exposes| FILE
99
- MCP -.->|Exposes| CONTEXT
100
- MCP -.->|Exposes| PROPS
101
- MCP -.->|Exposes| CREATE
102
- MCP -.->|Exposes| PROJECT
103
-
104
- classDef aiStyle fill:#1e40af,stroke:#3b82f6,stroke-width:2px,color:#ffffff
105
- classDef mcpStyle fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:#ffffff
106
- classDef httpStyle fill:#ea580c,stroke:#f97316,stroke-width:2px,color:#ffffff
107
- classDef pluginStyle fill:#059669,stroke:#10b981,stroke-width:2px,color:#ffffff
108
- classDef studioStyle fill:#dc2626,stroke:#ef4444,stroke-width:2px,color:#ffffff
109
- classDef toolStyle fill:#0891b2,stroke:#06b6d4,stroke-width:2px,color:#ffffff
110
-
111
- class AI aiStyle
112
- class MCP mcpStyle
113
- class HTTP,QUEUE httpStyle
114
- class PLUGIN pluginStyle
115
- class STUDIO studioStyle
116
- class FILE,CONTEXT,PROPS,CREATE,PROJECT toolStyle
117
- ```
118
-
119
- ### Key Components:
120
- - MCP Server (Node.js/TypeScript) - Exposes 18 tools via stdio
121
- - HTTP Bridge - Request/response queue on localhost:3002
122
- - Studio Plugin (Luau) - Polls server and executes API calls
123
- - Smart Caching - Efficient data transfer
124
-
125
- ## 18 AI Tools
126
-
127
- ### File System Tools
128
- - `get_file_tree` - Complete project hierarchy with scripts, models, folders
129
- - `search_files` - Find files by name, type, or content patterns
130
-
131
- ### Studio Context Tools
132
- - `get_place_info` - Place ID, name, game settings, workspace info
133
- - `get_services` - All Roblox services and their child counts
134
- - `search_objects` - Find instances by name, class, or properties
135
-
136
- ### Instance & Property Tools
137
- - `get_instance_properties` - Complete property dump for any object
138
- - `get_instance_children` - Child objects with metadata
139
- - `search_by_property` - Find objects with specific property values
140
- - `get_class_info` - Available properties/methods for Roblox classes
141
-
142
- ### Property Modification Tools
143
- - `set_property` - Set a property on any Roblox instance
144
- - `mass_set_property` - Set the same property on multiple instances
145
- - `mass_get_property` - Get the same property from multiple instances
146
-
147
- ### Object Creation Tools
148
- - `create_object` - Create a new Roblox object instance
149
- - `create_object_with_properties` - Create objects with initial properties
150
- - `mass_create_objects` - Create multiple objects at once
151
- - `mass_create_objects_with_properties` - Create multiple objects with properties
152
- - `delete_object` - Delete a Roblox object instance
153
-
154
- ### Project Analysis Tools
155
- - `get_project_structure` - Smart hierarchy with depth control (recommended: 5-10)
156
-
157
- > Note: Previous tools removed: `get_file_content`, `get_file_properties`, `get_selection`, `get_dependencies`, `validate_references`. Use Rojo/Argon workflows instead.
158
-
159
- ## AI-Optimized Features
160
-
161
- ### Mass Operations (v1.3.0)
162
- - Bulk property editing
163
- - Mass object creation
164
- - Batch property reading
165
- - Atomic undo/redo operations
166
-
167
- ```typescript
168
- // Example: Set multiple parts to red
169
- mass_set_property(["game.Workspace.Part1", "game.Workspace.Part2"], "BrickColor", "Really red")
170
- ```
171
-
172
- ### Smart Project Structure
173
- - Service overview with child counts
174
- - Path-based exploration: `get_project_structure("game.ServerStorage", maxDepth=5)`
175
- - Script-only filtering for code analysis
176
- - Intelligent grouping for large folders
177
- - Recommended maxDepth=5-10
178
-
179
- ### Rich Metadata
180
- - Script status tracking
181
- - GUI intelligence
182
- - Performance optimized
183
-
184
- ## Development & Testing
185
-
186
- ### Commands
187
- ```bash
188
- npm run dev # Development server with hot reload
189
- npm run build # Production build
190
- npm start # Run built server
191
- npm run lint # ESLint code quality
192
- npm run typecheck # TypeScript validation
193
- ```
194
-
195
- ### Plugin Development
196
- - Live reload
197
- - Robust error handling
198
- - Debug logging
199
- - Visual status indicators
200
-
201
- ## Communication Protocol
202
-
203
- ```mermaid
204
- %%{init: {'theme':'dark', 'themeVariables': {'primaryColor':'#2d3748', 'primaryTextColor':'#ffffff', 'primaryBorderColor':'#4a5568', 'lineColor':'#10b981', 'sectionBkgColor':'#1a202c', 'altSectionBkgColor':'#2d3748', 'gridColor':'#4a5568', 'secondaryColor':'#3b82f6', 'tertiaryColor':'#8b5cf6', 'background':'#1a202c', 'mainBkg':'#2d3748', 'secondBkg':'#374151', 'tertiaryColor':'#6366f1'}}}%%
205
- sequenceDiagram
206
- participant AI as AI Assistant
207
- participant MCP as MCP Server
208
- participant HTTP as HTTP Bridge
209
- participant PLUGIN as Studio Plugin
210
- participant STUDIO as Roblox Studio
211
-
212
- Note over AI,STUDIO: Tool Request Flow
213
-
214
- AI->>+MCP: Call tool (e.g., get_file_tree)
215
- MCP->>+HTTP: Queue request with UUID
216
- HTTP->>HTTP: Store in pending requests map
217
- HTTP-->>-MCP: Request queued
218
-
219
- Note over PLUGIN: Polling every 500ms
220
- PLUGIN->>+HTTP: GET /poll
221
- HTTP->>-PLUGIN: Return pending request + UUID
222
-
223
- PLUGIN->>+STUDIO: Execute Studio APIs
224
- Note over STUDIO: game.ServerStorage<br/>Selection:Get()<br/>Instance properties
225
- STUDIO->>-PLUGIN: Return Studio data
226
-
227
- PLUGIN->>+HTTP: POST /response with UUID + data
228
- HTTP->>-MCP: Resolve promise with data
229
- MCP->>-AI: Return tool result
230
-
231
- Note over AI,STUDIO: Error Handling
232
-
233
- alt Request Timeout (30s)
234
- HTTP->>MCP: Reject promise with timeout
235
- MCP->>AI: Return error message
236
- end
237
-
238
- alt Plugin Disconnected
239
- PLUGIN->>HTTP: Connection lost
240
- HTTP->>HTTP: Exponential backoff retry
241
- Note over PLUGIN: Status: "Waiting for server..."
242
- end
243
- ```
244
-
245
- **Features:**
246
- - 30-second timeouts with exponential backoff
247
- - Automatic retries
248
- - Response limiting
249
- - Request deduplication
250
-
251
- ## Example Usage
252
-
253
- ```javascript
254
- // Get service overview
255
- get_project_structure()
256
-
257
- // Explore weapons folder
258
- get_project_structure("game.ServerStorage.Weapons", maxDepth=2)
259
-
260
- // Find all Sound objects
261
- search_by_property("ClassName", "Sound")
262
-
263
- // Check script dependencies
264
- get_dependencies("game.ServerScriptService.MainScript")
265
-
266
- // Find broken references
267
- validate_references()
268
-
269
- // Get UI component details
270
- get_instance_properties("game.StarterGui.MainMenu.SettingsFrame")
271
- ```
272
-
273
- ## Configuration
63
+ ## What Can You Do?
274
64
 
275
- **Environment Variables:**
276
- - `MCP_SERVER_PORT` - MCP server port (default: stdio)
277
- - `HTTP_SERVER_PORT` - HTTP bridge port (default: 3002)
278
- - `PLUGIN_POLL_INTERVAL` - Plugin poll frequency (default: 500ms)
279
- - `REQUEST_TIMEOUT` - Request timeout (default: 30000ms)
65
+ Ask things like: *"What's the structure of this game?"*, *"Find scripts with deprecated APIs"*, *"Create 50 test NPCs in a grid"*, *"Optimize this movement code"*
280
66
 
281
- **Studio Settings:**
282
- - **Allow HTTP Requests** (Game Settings > Security)
283
- - **HttpService.HttpEnabled = true**
284
- - **Plugin activated** via toolbar button
67
+ ---
285
68
 
286
- ## License
69
+ **v1.9.0** — 37+ tools, asset property fetching, full HTTP API, improved stability
287
70
 
288
- MIT License - Feel free to use in commercial and personal projects!
71
+ [Report Issues](https://github.com/boshyxd/robloxstudio-mcp/issues) | [DevForum](https://devforum.roblox.com/t/v180-roblox-studio-mcp-speed-up-your-workflow-by-letting-ai-read-paths-and-properties/3707071) | MIT Licensed
@@ -87,22 +87,32 @@ describe('BridgeService', () => {
87
87
  });
88
88
  describe('Request Priority', () => {
89
89
  test('should return oldest request first', async () => {
90
- // Create requests with small delays
90
+ // Create requests with different timestamps using fake timers
91
91
  bridgeService.sendRequest('/api/test1', { order: 1 });
92
- // Small delay to ensure different timestamps
93
- await new Promise(resolve => setTimeout(resolve, 10));
92
+ // Advance time to ensure different timestamps
93
+ jest.advanceTimersByTime(10);
94
94
  bridgeService.sendRequest('/api/test2', { order: 2 });
95
- await new Promise(resolve => setTimeout(resolve, 10));
95
+ jest.advanceTimersByTime(10);
96
96
  bridgeService.sendRequest('/api/test3', { order: 3 });
97
+ // getPendingRequest() peeks at the oldest request without removing it
98
+ // So we need to resolve each request to get to the next one
97
99
  // Should get the first (oldest) request
98
100
  const firstRequest = bridgeService.getPendingRequest();
99
101
  expect(firstRequest?.request.data.order).toBe(1);
102
+ // Resolve the first request to remove it from the queue
103
+ bridgeService.resolveRequest(firstRequest.requestId, {});
100
104
  // Should get the second request next
101
105
  const secondRequest = bridgeService.getPendingRequest();
102
106
  expect(secondRequest?.request.data.order).toBe(2);
107
+ // Resolve the second request
108
+ bridgeService.resolveRequest(secondRequest.requestId, {});
103
109
  // Should get the third request last
104
110
  const thirdRequest = bridgeService.getPendingRequest();
105
111
  expect(thirdRequest?.request.data.order).toBe(3);
112
+ // Resolve the third request
113
+ bridgeService.resolveRequest(thirdRequest.requestId, {});
114
+ // No more pending requests
115
+ expect(bridgeService.getPendingRequest()).toBeNull();
106
116
  });
107
117
  });
108
118
  });
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-service.test.js","sourceRoot":"","sources":["../../src/__tests__/bridge-service.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-service.test.js","sourceRoot":"","sources":["../../src/__tests__/bridge-service.test.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ describe('HTTP Server', () => {
11
11
  tools = new RobloxStudioTools(bridge);
12
12
  app = createHttpServer(tools, bridge);
13
13
  });
14
+ afterEach(() => {
15
+ // Clean up any pending requests to prevent open handles
16
+ bridge.clearAllPendingRequests();
17
+ });
14
18
  describe('Health Check', () => {
15
19
  test('should return health status', async () => {
16
20
  const response = await request(app)
@@ -45,8 +49,11 @@ describe('HTTP Server', () => {
45
49
  });
46
50
  test('should clear pending requests on disconnect', async () => {
47
51
  // Add some pending requests
48
- bridge.sendRequest('/api/test1', {});
49
- bridge.sendRequest('/api/test2', {});
52
+ // Attach catch handlers to prevent unhandled rejection warnings
53
+ const p1 = bridge.sendRequest('/api/test1', {});
54
+ const p2 = bridge.sendRequest('/api/test2', {});
55
+ p1.catch(() => { });
56
+ p2.catch(() => { });
50
57
  expect(bridge.getPendingRequest()).toBeTruthy();
51
58
  // Disconnect
52
59
  await request(app).post('/disconnect').expect(200);
@@ -82,7 +89,9 @@ describe('HTTP Server', () => {
82
89
  // Activate MCP server
83
90
  app.setMCPServerActive(true);
84
91
  // Add a pending request
85
- bridge.sendRequest('/api/test', { data: 'test' });
92
+ // Attach catch handler to prevent unhandled rejection during cleanup
93
+ const pendingRequest = bridge.sendRequest('/api/test', { data: 'test' });
94
+ pendingRequest.catch(() => { });
86
95
  const response = await request(app)
87
96
  .get('/poll')
88
97
  .expect(200);
@@ -137,7 +146,9 @@ describe('HTTP Server', () => {
137
146
  test('should handle error response', async () => {
138
147
  const error = 'Test error message';
139
148
  // Create a pending request
149
+ // Attach catch handler to prevent unhandled rejection warning
140
150
  const requestPromise = bridge.sendRequest('/api/test', {});
151
+ requestPromise.catch(() => { });
141
152
  const pendingRequest = bridge.getPendingRequest();
142
153
  // Send error response
143
154
  const response = await request(app)
@@ -1 +1 @@
1
- {"version":3,"file":"http-server.test.js","sourceRoot":"","sources":["../../src/__tests__/http-server.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-server.test.js","sourceRoot":"","sources":["../../src/__tests__/http-server.test.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,10 @@ describe('Integration Tests', () => {
11
11
  tools = new RobloxStudioTools(bridge);
12
12
  app = createHttpServer(tools, bridge);
13
13
  });
14
+ afterEach(() => {
15
+ // Clean up any pending requests to prevent open handles
16
+ bridge.clearAllPendingRequests();
17
+ });
14
18
  describe('Full Connection Flow', () => {
15
19
  test('should handle complete connection lifecycle', async () => {
16
20
  // 1. Initial state - nothing connected
@@ -93,7 +97,9 @@ describe('Integration Tests', () => {
93
97
  await request(app).post('/ready').expect(200);
94
98
  app.setMCPServerActive(true);
95
99
  // Send request
100
+ // Attach catch handler to prevent unhandled rejection warning
96
101
  const mcpRequestPromise = bridge.sendRequest('/api/failing-endpoint', {});
102
+ mcpRequestPromise.catch(() => { });
97
103
  // Poll for request
98
104
  const pollResponse = await request(app).get('/poll').expect(200);
99
105
  const requestId = pollResponse.body.requestId;
@@ -115,8 +121,11 @@ describe('Integration Tests', () => {
115
121
  await request(app).post('/ready').expect(200);
116
122
  app.setMCPServerActive(true);
117
123
  // Create some pending requests
124
+ // Attach catch handlers to prevent unhandled rejection warnings
118
125
  const request1 = bridge.sendRequest('/api/test1', {});
119
126
  const request2 = bridge.sendRequest('/api/test2', {});
127
+ request1.catch(() => { });
128
+ request2.catch(() => { });
120
129
  // Verify requests are pending
121
130
  let poll = await request(app).get('/poll').expect(200);
122
131
  expect(poll.body.request).toBeTruthy();
@@ -1 +1 @@
1
- {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/__tests__/integration.test.ts"],"names":[],"mappings":"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"}
@@ -38,7 +38,9 @@ describe('Smoke Tests - Connection Fixes', () => {
38
38
  const tools = new RobloxStudioTools(bridge);
39
39
  const app = createHttpServer(tools, bridge);
40
40
  // Add a pending request (don't await it)
41
+ // Attach a no-op catch to prevent unhandled rejection warning
41
42
  const pendingPromise = bridge.sendRequest('/test', { data: 'test' });
43
+ pendingPromise.catch(() => { }); // Prevent unhandled rejection
42
44
  // Disconnect should clear it
43
45
  await request(app)
44
46
  .post('/disconnect')
@@ -1 +1 @@
1
- {"version":3,"file":"smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/smoke.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"smoke.test.js","sourceRoot":"","sources":["../../src/__tests__/smoke.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-service.d.ts","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"AAWA,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAS;IAEzB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB5D,iBAAiB,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,GAAG,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI;IAuB3F,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAQ/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAS3C,kBAAkB;IAWlB,uBAAuB;CAMxB"}
1
+ {"version":3,"file":"bridge-service.d.ts","sourceRoot":"","sources":["../src/bridge-service.ts"],"names":[],"mappings":"AAYA,qBAAa,aAAa;IACxB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,cAAc,CAAS;IAEzB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA0B5D,iBAAiB,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,GAAG,CAAA;SAAE,CAAA;KAAE,GAAG,IAAI;IAuB3F,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG;IAS/C,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAU3C,kBAAkB;IAYlB,uBAAuB;CAOxB"}
@@ -5,22 +5,23 @@ export class BridgeService {
5
5
  async sendRequest(endpoint, data) {
6
6
  const requestId = uuidv4();
7
7
  return new Promise((resolve, reject) => {
8
+ // Set timeout and store the ID so we can clear it later
9
+ const timeoutId = setTimeout(() => {
10
+ if (this.pendingRequests.has(requestId)) {
11
+ this.pendingRequests.delete(requestId);
12
+ reject(new Error('Request timeout'));
13
+ }
14
+ }, this.requestTimeout);
8
15
  const request = {
9
16
  id: requestId,
10
17
  endpoint,
11
18
  data,
12
19
  timestamp: Date.now(),
13
20
  resolve,
14
- reject
21
+ reject,
22
+ timeoutId
15
23
  };
16
24
  this.pendingRequests.set(requestId, request);
17
- // Set timeout
18
- setTimeout(() => {
19
- if (this.pendingRequests.has(requestId)) {
20
- this.pendingRequests.delete(requestId);
21
- reject(new Error('Request timeout'));
22
- }
23
- }, this.requestTimeout);
24
25
  });
25
26
  }
26
27
  getPendingRequest() {
@@ -45,6 +46,7 @@ export class BridgeService {
45
46
  resolveRequest(requestId, response) {
46
47
  const request = this.pendingRequests.get(requestId);
47
48
  if (request) {
49
+ clearTimeout(request.timeoutId);
48
50
  this.pendingRequests.delete(requestId);
49
51
  request.resolve(response);
50
52
  }
@@ -52,6 +54,7 @@ export class BridgeService {
52
54
  rejectRequest(requestId, error) {
53
55
  const request = this.pendingRequests.get(requestId);
54
56
  if (request) {
57
+ clearTimeout(request.timeoutId);
55
58
  this.pendingRequests.delete(requestId);
56
59
  request.reject(error);
57
60
  }
@@ -61,6 +64,7 @@ export class BridgeService {
61
64
  const now = Date.now();
62
65
  for (const [id, request] of this.pendingRequests.entries()) {
63
66
  if (now - request.timestamp > this.requestTimeout) {
67
+ clearTimeout(request.timeoutId);
64
68
  this.pendingRequests.delete(id);
65
69
  request.reject(new Error('Request timeout'));
66
70
  }
@@ -68,7 +72,8 @@ export class BridgeService {
68
72
  }
69
73
  // Force cleanup all pending requests (used on disconnect)
70
74
  clearAllPendingRequests() {
71
- for (const [id, request] of this.pendingRequests.entries()) {
75
+ for (const [, request] of this.pendingRequests.entries()) {
76
+ clearTimeout(request.timeoutId);
72
77
  request.reject(new Error('Connection closed'));
73
78
  }
74
79
  this.pendingRequests.clear();