flockbay 0.10.49 → 0.10.52

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 (74) hide show
  1. package/README.md +60 -60
  2. package/bin/flockbay-mcp.mjs +62 -62
  3. package/bin/flockbay.mjs +95 -95
  4. package/dist/{index-r3VTdgFI.cjs → index-IntvnrmZ.cjs} +71 -14
  5. package/dist/{index-D8AeVbvv.mjs → index-wkeSi0iC.mjs} +70 -13
  6. package/dist/index.cjs +2 -2
  7. package/dist/index.mjs +2 -2
  8. package/dist/lib.cjs +1 -1
  9. package/dist/lib.mjs +1 -1
  10. package/dist/{migratePlugin-CEvGPul8.mjs → migratePlugin-C71hAoc5.mjs} +12 -2
  11. package/dist/{migratePlugin-wFK-k3Wk.cjs → migratePlugin-D1XjjWFq.cjs} +12 -2
  12. package/dist/{runCodex-DuyuYqoB.cjs → runCodex-B7i_ICoQ.cjs} +34 -23
  13. package/dist/{runCodex-ZfUyhHF6.mjs → runCodex-BSx-hCu6.mjs} +34 -23
  14. package/dist/{runGemini-DBU1mMdp.mjs → runGemini-Dwyh7_WI.mjs} +2 -2
  15. package/dist/{runGemini-D7j5Y5TF.cjs → runGemini-gBKR3rdL.cjs} +2 -2
  16. package/dist/{types-DNr0xwSy.cjs → types-5z8UADAi.cjs} +224 -15
  17. package/dist/{types-BRJuZQj_.mjs → types-Bgzap7qR.mjs} +224 -16
  18. package/package.json +131 -131
  19. package/scripts/claude_local_launcher.cjs +72 -72
  20. package/scripts/claude_remote_launcher.cjs +15 -15
  21. package/scripts/claude_version_utils.cjs +445 -445
  22. package/scripts/ripgrep_launcher.cjs +32 -32
  23. package/scripts/run-with-root-env.mjs +37 -32
  24. package/scripts/session_hook_forwarder.cjs +49 -49
  25. package/scripts/test-codex-abort-history.mjs +77 -77
  26. package/scripts/unpack-tools.cjs +244 -244
  27. package/tools/licenses/difftastic-LICENSE +21 -21
  28. package/tools/licenses/ripgrep-LICENSE +3 -3
  29. package/tools/unreal-mcp/UPSTREAM_VERSION.md +8 -8
  30. package/tools/unreal-mcp/upstream/Docs/README.md +8 -8
  31. package/tools/unreal-mcp/upstream/Docs/Tools/README.md +6 -6
  32. package/tools/unreal-mcp/upstream/Docs/Tools/actor_tools.md +183 -183
  33. package/tools/unreal-mcp/upstream/Docs/Tools/blueprint_tools.md +268 -268
  34. package/tools/unreal-mcp/upstream/Docs/Tools/editor_tools.md +104 -104
  35. package/tools/unreal-mcp/upstream/Docs/Tools/node_tools.md +274 -274
  36. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Config/FilterPlugin.ini +8 -8
  37. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/FlockbayMCP.uplugin +36 -36
  38. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/FlockbayMCP.Build.cs +82 -82
  39. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPBlueprintCommands.cpp +1364 -1364
  40. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPBlueprintNodeCommands.cpp +1310 -1310
  41. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPCommandSchema.cpp +756 -756
  42. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPCommonUtils.cpp +1177 -1177
  43. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPEditorCommands.cpp +2618 -2618
  44. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPProjectCommands.cpp +71 -71
  45. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/Commands/UnrealMCPUMGCommands.cpp +543 -543
  46. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/MCPServerRunnable.cpp +372 -372
  47. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/UnrealMCPBridge.cpp +457 -457
  48. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Private/UnrealMCPModule.cpp +21 -21
  49. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPBlueprintCommands.h +35 -35
  50. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPBlueprintNodeCommands.h +30 -30
  51. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPCommandSchema.h +41 -41
  52. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPCommonUtils.h +59 -59
  53. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPEditorCommands.h +61 -61
  54. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPProjectCommands.h +20 -20
  55. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/Commands/UnrealMCPUMGCommands.h +82 -82
  56. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/MCPServerRunnable.h +33 -33
  57. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/UnrealMCPBridge.h +64 -64
  58. package/tools/unreal-mcp/upstream/MCPGameProject/Plugins/FlockbayMCP/Source/FlockbayMCP/Public/UnrealMCPModule.h +22 -22
  59. package/tools/unreal-mcp/upstream/Python/README.md +39 -39
  60. package/tools/unreal-mcp/upstream/Python/pyproject.toml +22 -22
  61. package/tools/unreal-mcp/upstream/Python/scripts/actors/test_cube.py +202 -202
  62. package/tools/unreal-mcp/upstream/Python/scripts/blueprints/test_create_and_spawn_blueprints_with_different_components.py +496 -496
  63. package/tools/unreal-mcp/upstream/Python/scripts/blueprints/test_create_and_spawn_cube_blueprint.py +193 -193
  64. package/tools/unreal-mcp/upstream/Python/scripts/node/test_component_reference.py +266 -266
  65. package/tools/unreal-mcp/upstream/Python/scripts/node/test_create_bird_blueprint_with_input_and_camera.py +617 -617
  66. package/tools/unreal-mcp/upstream/Python/scripts/node/test_input_mapping.py +365 -365
  67. package/tools/unreal-mcp/upstream/Python/scripts/node/test_physics_variables.py +389 -389
  68. package/tools/unreal-mcp/upstream/Python/tools/blueprint_tools.py +419 -419
  69. package/tools/unreal-mcp/upstream/Python/tools/editor_tools.py +369 -369
  70. package/tools/unreal-mcp/upstream/Python/tools/node_tools.py +429 -429
  71. package/tools/unreal-mcp/upstream/Python/tools/project_tools.py +63 -63
  72. package/tools/unreal-mcp/upstream/Python/tools/umg_tools.py +332 -332
  73. package/tools/unreal-mcp/upstream/Python/unreal_mcp_server.py +398 -398
  74. package/tools/unreal-mcp/upstream/Python/uv.lock +521 -521
@@ -1,194 +1,194 @@
1
- #!/usr/bin/env python
2
- """
3
- Test script for creating and manipulating a basic Blueprint in Unreal Engine via MCP.
4
-
5
- This script demonstrates the core Blueprint creation and manipulation workflow:
6
- 1. Creates a new Blueprint class (TestBP) derived from Actor
7
- 2. Adds a StaticMeshComponent named 'CubeVisual' to the Blueprint
8
- 3. Sets the component's mesh to a basic cube shape (/Engine/BasicShapes/Cube.Cube)
9
- 4. Compiles the Blueprint to apply the changes
10
- 5. Spawns an instance of the Blueprint in the level at [0, 0, 100]
11
-
12
- The script serves as both a test of the MCP Blueprint manipulation functionality
13
- and a basic example of how to programmatically create and modify Blueprints
14
- through the MCP interface.
15
- """
16
-
17
- import sys
18
- import os
19
- import time
20
- import socket
21
- import json
22
- import logging
23
- from typing import Dict, Any, Optional
24
-
25
- # Add the parent directory to the path so we can import the server module
26
- sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
27
-
28
- # Set up logging
29
- logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
30
- logger = logging.getLogger("TestBasicBlueprint")
31
-
32
- def send_command(sock: socket.socket, command: str, params: Dict[str, Any]) -> Optional[Dict[str, Any]]:
33
- """Send a command to the Unreal MCP server and get the response."""
34
- try:
35
- # Create command object
36
- command_obj = {
37
- "type": command,
38
- "params": params
39
- }
40
-
41
- # Convert to JSON and send
42
- command_json = json.dumps(command_obj)
43
- logger.info(f"Sending command: {command_json}")
44
- sock.sendall(command_json.encode('utf-8'))
45
-
46
- # Receive response
47
- chunks = []
48
- while True:
49
- chunk = sock.recv(4096)
50
- if not chunk:
51
- break
52
- chunks.append(chunk)
53
-
54
- # Try parsing to see if we have a complete response
55
- try:
56
- data = b''.join(chunks)
57
- json.loads(data.decode('utf-8'))
58
- # If we can parse it, we have the complete response
59
- break
60
- except json.JSONDecodeError:
61
- # Not a complete JSON object yet, continue receiving
62
- continue
63
-
64
- # Parse response
65
- data = b''.join(chunks)
66
- response = json.loads(data.decode('utf-8'))
67
- logger.info(f"Received response: {response}")
68
- return response
69
-
70
- except Exception as e:
71
- logger.error(f"Error sending command: {e}")
72
- return None
73
-
74
- def main():
75
- """Main function to test creating a basic blueprint."""
76
- try:
77
- # Connect to Unreal MCP server
78
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
79
- sock.connect(("127.0.0.1", 55557))
80
-
81
- try:
82
- # Step 1: Create a blueprint
83
- bp_params = {
84
- "name": "TestBP",
85
- "parent_class": "Actor"
86
- }
87
-
88
- response = send_command(sock, "create_blueprint", bp_params)
89
-
90
- # Fixed response check to handle nested structure
91
- if not response or response.get("status") != "success":
92
- logger.error(f"Failed to create blueprint: {response}")
93
- return
94
-
95
- # Check if blueprint already existed
96
- if response.get("result", {}).get("already_exists"):
97
- logger.info(f"Blueprint 'TestBP' already exists, reusing it")
98
- else:
99
- logger.info("Blueprint created successfully!")
100
-
101
- # Step 2: Add a static mesh component
102
- component_params = {
103
- "blueprint_name": "TestBP",
104
- "component_type": "StaticMeshComponent",
105
- "component_name": "CubeVisual",
106
- "location": [0.0, 0.0, 0.0],
107
- "rotation": [0.0, 0.0, 0.0],
108
- "scale": [1.0, 1.0, 1.0]
109
- }
110
-
111
- # Close and reopen connection for each command
112
- sock.close()
113
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
114
- sock.connect(("127.0.0.1", 55557))
115
-
116
- response = send_command(sock, "add_component_to_blueprint", component_params)
117
-
118
- # Fixed response check to handle nested structure
119
- if not response or response.get("status") != "success":
120
- logger.error(f"Failed to add component: {response}")
121
- return
122
-
123
- logger.info("Component added successfully!")
124
-
125
- # Step 3: Set the static mesh properties
126
- sock.close()
127
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
128
- sock.connect(("127.0.0.1", 55557))
129
-
130
- mesh_params = {
131
- "blueprint_name": "TestBP",
132
- "component_name": "CubeVisual",
133
- "static_mesh": "/Engine/BasicShapes/Cube.Cube"
134
- }
135
-
136
- response = send_command(sock, "set_static_mesh_properties", mesh_params)
137
-
138
- # Fixed response check to handle nested structure
139
- if not response or response.get("status") != "success":
140
- logger.error(f"Failed to set static mesh properties: {response}")
141
- return
142
-
143
- logger.info("Static mesh properties set successfully!")
144
-
145
- # Step 4: Compile the blueprint
146
- sock.close()
147
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
148
- sock.connect(("127.0.0.1", 55557))
149
-
150
- compile_params = {
151
- "blueprint_name": "TestBP"
152
- }
153
-
154
- response = send_command(sock, "compile_blueprint", compile_params)
155
-
156
- # Fixed response check to handle nested structure
157
- if not response or response.get("status") != "success":
158
- logger.error(f"Failed to compile blueprint: {response}")
159
- return
160
-
161
- logger.info("Blueprint compiled successfully!")
162
-
163
- # Step 5: Spawn an instance of the blueprint
164
- sock.close()
165
- sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
166
- sock.connect(("127.0.0.1", 55557))
167
-
168
- spawn_params = {
169
- "blueprint_name": "TestBP",
170
- "actor_name": "TestBPInstance",
171
- "location": [0.0, 0.0, 100.0], # 100 units up
172
- "rotation": [0.0, 0.0, 0.0],
173
- "scale": [1.0, 1.0, 1.0]
174
- }
175
-
176
- response = send_command(sock, "spawn_blueprint_actor", spawn_params)
177
-
178
- # Fixed response check to handle nested structure
179
- if not response or response.get("status") != "success":
180
- logger.error(f"Failed to spawn blueprint actor: {response}")
181
- return
182
-
183
- logger.info("Blueprint actor spawned successfully!")
184
-
185
- finally:
186
- # Close the socket
187
- sock.close()
188
-
189
- except Exception as e:
190
- logger.error(f"Error: {e}")
191
- sys.exit(1)
192
-
193
- if __name__ == "__main__":
1
+ #!/usr/bin/env python
2
+ """
3
+ Test script for creating and manipulating a basic Blueprint in Unreal Engine via MCP.
4
+
5
+ This script demonstrates the core Blueprint creation and manipulation workflow:
6
+ 1. Creates a new Blueprint class (TestBP) derived from Actor
7
+ 2. Adds a StaticMeshComponent named 'CubeVisual' to the Blueprint
8
+ 3. Sets the component's mesh to a basic cube shape (/Engine/BasicShapes/Cube.Cube)
9
+ 4. Compiles the Blueprint to apply the changes
10
+ 5. Spawns an instance of the Blueprint in the level at [0, 0, 100]
11
+
12
+ The script serves as both a test of the MCP Blueprint manipulation functionality
13
+ and a basic example of how to programmatically create and modify Blueprints
14
+ through the MCP interface.
15
+ """
16
+
17
+ import sys
18
+ import os
19
+ import time
20
+ import socket
21
+ import json
22
+ import logging
23
+ from typing import Dict, Any, Optional
24
+
25
+ # Add the parent directory to the path so we can import the server module
26
+ sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
27
+
28
+ # Set up logging
29
+ logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
30
+ logger = logging.getLogger("TestBasicBlueprint")
31
+
32
+ def send_command(sock: socket.socket, command: str, params: Dict[str, Any]) -> Optional[Dict[str, Any]]:
33
+ """Send a command to the Unreal MCP server and get the response."""
34
+ try:
35
+ # Create command object
36
+ command_obj = {
37
+ "type": command,
38
+ "params": params
39
+ }
40
+
41
+ # Convert to JSON and send
42
+ command_json = json.dumps(command_obj)
43
+ logger.info(f"Sending command: {command_json}")
44
+ sock.sendall(command_json.encode('utf-8'))
45
+
46
+ # Receive response
47
+ chunks = []
48
+ while True:
49
+ chunk = sock.recv(4096)
50
+ if not chunk:
51
+ break
52
+ chunks.append(chunk)
53
+
54
+ # Try parsing to see if we have a complete response
55
+ try:
56
+ data = b''.join(chunks)
57
+ json.loads(data.decode('utf-8'))
58
+ # If we can parse it, we have the complete response
59
+ break
60
+ except json.JSONDecodeError:
61
+ # Not a complete JSON object yet, continue receiving
62
+ continue
63
+
64
+ # Parse response
65
+ data = b''.join(chunks)
66
+ response = json.loads(data.decode('utf-8'))
67
+ logger.info(f"Received response: {response}")
68
+ return response
69
+
70
+ except Exception as e:
71
+ logger.error(f"Error sending command: {e}")
72
+ return None
73
+
74
+ def main():
75
+ """Main function to test creating a basic blueprint."""
76
+ try:
77
+ # Connect to Unreal MCP server
78
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
79
+ sock.connect(("127.0.0.1", 55557))
80
+
81
+ try:
82
+ # Step 1: Create a blueprint
83
+ bp_params = {
84
+ "name": "TestBP",
85
+ "parent_class": "Actor"
86
+ }
87
+
88
+ response = send_command(sock, "create_blueprint", bp_params)
89
+
90
+ # Fixed response check to handle nested structure
91
+ if not response or response.get("status") != "success":
92
+ logger.error(f"Failed to create blueprint: {response}")
93
+ return
94
+
95
+ # Check if blueprint already existed
96
+ if response.get("result", {}).get("already_exists"):
97
+ logger.info(f"Blueprint 'TestBP' already exists, reusing it")
98
+ else:
99
+ logger.info("Blueprint created successfully!")
100
+
101
+ # Step 2: Add a static mesh component
102
+ component_params = {
103
+ "blueprint_name": "TestBP",
104
+ "component_type": "StaticMeshComponent",
105
+ "component_name": "CubeVisual",
106
+ "location": [0.0, 0.0, 0.0],
107
+ "rotation": [0.0, 0.0, 0.0],
108
+ "scale": [1.0, 1.0, 1.0]
109
+ }
110
+
111
+ # Close and reopen connection for each command
112
+ sock.close()
113
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
114
+ sock.connect(("127.0.0.1", 55557))
115
+
116
+ response = send_command(sock, "add_component_to_blueprint", component_params)
117
+
118
+ # Fixed response check to handle nested structure
119
+ if not response or response.get("status") != "success":
120
+ logger.error(f"Failed to add component: {response}")
121
+ return
122
+
123
+ logger.info("Component added successfully!")
124
+
125
+ # Step 3: Set the static mesh properties
126
+ sock.close()
127
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
128
+ sock.connect(("127.0.0.1", 55557))
129
+
130
+ mesh_params = {
131
+ "blueprint_name": "TestBP",
132
+ "component_name": "CubeVisual",
133
+ "static_mesh": "/Engine/BasicShapes/Cube.Cube"
134
+ }
135
+
136
+ response = send_command(sock, "set_static_mesh_properties", mesh_params)
137
+
138
+ # Fixed response check to handle nested structure
139
+ if not response or response.get("status") != "success":
140
+ logger.error(f"Failed to set static mesh properties: {response}")
141
+ return
142
+
143
+ logger.info("Static mesh properties set successfully!")
144
+
145
+ # Step 4: Compile the blueprint
146
+ sock.close()
147
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
148
+ sock.connect(("127.0.0.1", 55557))
149
+
150
+ compile_params = {
151
+ "blueprint_name": "TestBP"
152
+ }
153
+
154
+ response = send_command(sock, "compile_blueprint", compile_params)
155
+
156
+ # Fixed response check to handle nested structure
157
+ if not response or response.get("status") != "success":
158
+ logger.error(f"Failed to compile blueprint: {response}")
159
+ return
160
+
161
+ logger.info("Blueprint compiled successfully!")
162
+
163
+ # Step 5: Spawn an instance of the blueprint
164
+ sock.close()
165
+ sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
166
+ sock.connect(("127.0.0.1", 55557))
167
+
168
+ spawn_params = {
169
+ "blueprint_name": "TestBP",
170
+ "actor_name": "TestBPInstance",
171
+ "location": [0.0, 0.0, 100.0], # 100 units up
172
+ "rotation": [0.0, 0.0, 0.0],
173
+ "scale": [1.0, 1.0, 1.0]
174
+ }
175
+
176
+ response = send_command(sock, "spawn_blueprint_actor", spawn_params)
177
+
178
+ # Fixed response check to handle nested structure
179
+ if not response or response.get("status") != "success":
180
+ logger.error(f"Failed to spawn blueprint actor: {response}")
181
+ return
182
+
183
+ logger.info("Blueprint actor spawned successfully!")
184
+
185
+ finally:
186
+ # Close the socket
187
+ sock.close()
188
+
189
+ except Exception as e:
190
+ logger.error(f"Error: {e}")
191
+ sys.exit(1)
192
+
193
+ if __name__ == "__main__":
194
194
  main()