unreal-engine-mcp-server 0.5.0 → 0.5.1

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 (139) hide show
  1. package/.env.example +1 -1
  2. package/.github/release-drafter-config.yml +51 -0
  3. package/.github/workflows/greetings.yml +5 -1
  4. package/.github/workflows/labeler.yml +2 -1
  5. package/.github/workflows/publish-mcp.yml +1 -0
  6. package/.github/workflows/release-drafter.yml +1 -1
  7. package/.github/workflows/release.yml +3 -3
  8. package/CHANGELOG.md +71 -0
  9. package/CONTRIBUTING.md +1 -1
  10. package/GEMINI.md +115 -0
  11. package/Public/Plugin_setup_guide.mp4 +0 -0
  12. package/README.md +166 -200
  13. package/dist/config.d.ts +0 -1
  14. package/dist/config.js +0 -1
  15. package/dist/constants.d.ts +4 -0
  16. package/dist/constants.js +4 -0
  17. package/dist/graphql/loaders.d.ts +64 -0
  18. package/dist/graphql/loaders.js +117 -0
  19. package/dist/graphql/resolvers.d.ts +3 -3
  20. package/dist/graphql/resolvers.js +33 -30
  21. package/dist/graphql/server.js +3 -1
  22. package/dist/graphql/types.d.ts +2 -0
  23. package/dist/index.d.ts +2 -0
  24. package/dist/index.js +13 -2
  25. package/dist/server-setup.d.ts +0 -1
  26. package/dist/server-setup.js +0 -40
  27. package/dist/tools/actors.d.ts +40 -24
  28. package/dist/tools/actors.js +8 -2
  29. package/dist/tools/assets.d.ts +19 -71
  30. package/dist/tools/assets.js +28 -22
  31. package/dist/tools/base-tool.d.ts +4 -4
  32. package/dist/tools/base-tool.js +1 -1
  33. package/dist/tools/blueprint.d.ts +33 -61
  34. package/dist/tools/consolidated-tool-handlers.js +96 -110
  35. package/dist/tools/dynamic-handler-registry.d.ts +11 -9
  36. package/dist/tools/dynamic-handler-registry.js +17 -95
  37. package/dist/tools/editor.d.ts +19 -193
  38. package/dist/tools/editor.js +8 -0
  39. package/dist/tools/environment.d.ts +8 -14
  40. package/dist/tools/foliage.d.ts +18 -143
  41. package/dist/tools/foliage.js +4 -2
  42. package/dist/tools/handlers/actor-handlers.js +0 -5
  43. package/dist/tools/handlers/asset-handlers.js +454 -454
  44. package/dist/tools/landscape.d.ts +16 -116
  45. package/dist/tools/landscape.js +7 -3
  46. package/dist/tools/level.d.ts +22 -103
  47. package/dist/tools/level.js +24 -16
  48. package/dist/tools/lighting.js +5 -1
  49. package/dist/tools/materials.js +5 -1
  50. package/dist/tools/niagara.js +37 -2
  51. package/dist/tools/performance.d.ts +0 -1
  52. package/dist/tools/performance.js +0 -1
  53. package/dist/tools/physics.js +5 -1
  54. package/dist/tools/sequence.d.ts +24 -24
  55. package/dist/tools/sequence.js +13 -0
  56. package/dist/tools/ui.d.ts +0 -2
  57. package/dist/types/automation-responses.d.ts +115 -0
  58. package/dist/types/automation-responses.js +2 -0
  59. package/dist/types/responses.d.ts +249 -0
  60. package/dist/types/responses.js +2 -0
  61. package/dist/types/tool-interfaces.d.ts +135 -135
  62. package/dist/utils/command-validator.js +3 -2
  63. package/dist/utils/path-security.d.ts +2 -0
  64. package/dist/utils/path-security.js +24 -0
  65. package/dist/utils/response-factory.d.ts +4 -4
  66. package/dist/utils/response-factory.js +15 -21
  67. package/docs/Migration-Guide-v0.5.0.md +1 -9
  68. package/docs/testing-guide.md +2 -2
  69. package/package.json +12 -6
  70. package/scripts/run-all-tests.mjs +25 -20
  71. package/server.json +3 -2
  72. package/src/config.ts +1 -1
  73. package/src/constants.ts +7 -0
  74. package/src/graphql/loaders.ts +244 -0
  75. package/src/graphql/resolvers.ts +47 -49
  76. package/src/graphql/server.ts +3 -1
  77. package/src/graphql/types.ts +3 -0
  78. package/src/index.ts +15 -2
  79. package/src/resources/assets.ts +5 -4
  80. package/src/server-setup.ts +3 -37
  81. package/src/tools/actors.ts +36 -28
  82. package/src/tools/animation.ts +1 -0
  83. package/src/tools/assets.ts +74 -63
  84. package/src/tools/base-tool.ts +3 -3
  85. package/src/tools/blueprint.ts +59 -59
  86. package/src/tools/consolidated-tool-handlers.ts +129 -150
  87. package/src/tools/dynamic-handler-registry.ts +22 -140
  88. package/src/tools/editor.ts +39 -26
  89. package/src/tools/environment.ts +21 -27
  90. package/src/tools/foliage.ts +28 -25
  91. package/src/tools/handlers/actor-handlers.ts +2 -8
  92. package/src/tools/handlers/asset-handlers.ts +484 -484
  93. package/src/tools/handlers/sequence-handlers.ts +1 -1
  94. package/src/tools/landscape.ts +34 -28
  95. package/src/tools/level.ts +96 -76
  96. package/src/tools/lighting.ts +6 -1
  97. package/src/tools/materials.ts +8 -2
  98. package/src/tools/niagara.ts +44 -2
  99. package/src/tools/performance.ts +1 -2
  100. package/src/tools/physics.ts +7 -1
  101. package/src/tools/sequence.ts +41 -25
  102. package/src/tools/ui.ts +0 -2
  103. package/src/types/automation-responses.ts +119 -0
  104. package/src/types/responses.ts +355 -0
  105. package/src/types/tool-interfaces.ts +135 -135
  106. package/src/utils/command-validator.ts +3 -2
  107. package/src/utils/normalize.test.ts +162 -0
  108. package/src/utils/path-security.ts +43 -0
  109. package/src/utils/response-factory.ts +29 -24
  110. package/src/utils/safe-json.test.ts +90 -0
  111. package/src/utils/validation.test.ts +184 -0
  112. package/tests/test-animation.mjs +358 -33
  113. package/tests/test-asset-graph.mjs +311 -0
  114. package/tests/test-audio.mjs +314 -116
  115. package/tests/test-behavior-tree.mjs +327 -144
  116. package/tests/test-blueprint-graph.mjs +343 -12
  117. package/tests/test-control-editor.mjs +85 -53
  118. package/tests/test-graphql.mjs +58 -8
  119. package/tests/test-input.mjs +349 -0
  120. package/tests/test-inspect.mjs +291 -61
  121. package/tests/test-landscape.mjs +304 -48
  122. package/tests/test-lighting.mjs +428 -0
  123. package/tests/test-manage-level.mjs +70 -51
  124. package/tests/test-performance.mjs +539 -0
  125. package/tests/test-sequence.mjs +82 -46
  126. package/tests/test-system.mjs +72 -33
  127. package/tests/test-wasm.mjs +98 -8
  128. package/vitest.config.ts +35 -0
  129. package/.github/release-drafter.yml +0 -148
  130. package/dist/prompts/index.d.ts +0 -21
  131. package/dist/prompts/index.js +0 -217
  132. package/dist/tools/blueprint/helpers.d.ts +0 -29
  133. package/dist/tools/blueprint/helpers.js +0 -182
  134. package/src/prompts/index.ts +0 -249
  135. package/src/tools/blueprint/helpers.ts +0 -189
  136. package/tests/test-blueprint-events.mjs +0 -35
  137. package/tests/test-extra-tools.mjs +0 -38
  138. package/tests/test-render.mjs +0 -33
  139. package/tests/test-search-assets.mjs +0 -66
@@ -0,0 +1,355 @@
1
+ /**
2
+ * Base Response Types for Unreal Engine MCP Server
3
+ *
4
+ * These interfaces provide type safety for tool responses.
5
+ * Use with BaseTool.sendRequest<T>() for typed responses.
6
+ */
7
+
8
+ // ============================================================================
9
+ // Base Types
10
+ // ============================================================================
11
+
12
+ export interface BaseResponse {
13
+ success: boolean;
14
+ message?: string;
15
+ error?: string;
16
+ /** Optional error code for programmatic handling */
17
+ errorCode?: string;
18
+ }
19
+
20
+ export interface Vector3 {
21
+ x: number;
22
+ y: number;
23
+ z: number;
24
+ }
25
+
26
+ export interface Rotator {
27
+ pitch: number;
28
+ yaw: number;
29
+ roll: number;
30
+ }
31
+
32
+ export interface Transform {
33
+ location?: Vector3;
34
+ rotation?: Rotator;
35
+ scale?: Vector3;
36
+ }
37
+
38
+ // ============================================================================
39
+ // Actor Responses
40
+ // ============================================================================
41
+
42
+ export interface SpawnActorResponse extends BaseResponse {
43
+ actorName?: string;
44
+ actorPath?: string;
45
+ /** Class path of the spawned actor */
46
+ classPath?: string;
47
+ }
48
+
49
+ export interface DeleteActorResponse extends BaseResponse {
50
+ deletedCount?: number;
51
+ deletedActors?: string[];
52
+ }
53
+
54
+ export interface GetTransformResponse extends BaseResponse {
55
+ location?: Vector3;
56
+ rotation?: Rotator;
57
+ scale?: Vector3;
58
+ }
59
+
60
+ export interface SetTransformResponse extends BaseResponse {
61
+ actorName?: string;
62
+ }
63
+
64
+ export interface FindActorsResponse extends BaseResponse {
65
+ actors?: Array<{
66
+ name: string;
67
+ label?: string;
68
+ class?: string;
69
+ path?: string;
70
+ }>;
71
+ count?: number;
72
+ }
73
+
74
+ export interface GetComponentsResponse extends BaseResponse {
75
+ components?: Array<{
76
+ name: string;
77
+ type: string;
78
+ properties?: Record<string, unknown>;
79
+ }>;
80
+ }
81
+
82
+ export interface ApplyForceResponse extends BaseResponse {
83
+ actorName?: string;
84
+ forceApplied?: Vector3;
85
+ }
86
+
87
+ // ============================================================================
88
+ // Asset Responses
89
+ // ============================================================================
90
+
91
+ export interface AssetInfo {
92
+ name: string;
93
+ path: string;
94
+ class?: string;
95
+ packagePath?: string;
96
+ size?: number;
97
+ }
98
+
99
+ export interface ListAssetsResponse extends BaseResponse {
100
+ assets?: AssetInfo[];
101
+ count?: number;
102
+ directory?: string;
103
+ }
104
+
105
+ export interface CreateAssetResponse extends BaseResponse {
106
+ assetPath?: string;
107
+ assetName?: string;
108
+ }
109
+
110
+ export interface DeleteAssetResponse extends BaseResponse {
111
+ deletedPath?: string;
112
+ deletedCount?: number;
113
+ }
114
+
115
+ export interface GetDependenciesResponse extends BaseResponse {
116
+ dependencies?: string[];
117
+ referencers?: string[];
118
+ count?: number;
119
+ }
120
+
121
+ export interface AssetExistsResponse extends BaseResponse {
122
+ exists?: boolean;
123
+ assetPath?: string;
124
+ }
125
+
126
+ // ============================================================================
127
+ // Blueprint Responses
128
+ // ============================================================================
129
+
130
+ export interface CreateBlueprintResponse extends BaseResponse {
131
+ blueprintPath?: string;
132
+ blueprintName?: string;
133
+ parentClass?: string;
134
+ }
135
+
136
+ export interface GetBlueprintResponse extends BaseResponse {
137
+ path?: string;
138
+ name?: string;
139
+ parentClass?: string;
140
+ variables?: Array<{
141
+ name: string;
142
+ type: string;
143
+ defaultValue?: unknown;
144
+ }>;
145
+ functions?: Array<{
146
+ name: string;
147
+ parameters?: Array<{ name: string; type: string }>;
148
+ returnType?: string;
149
+ }>;
150
+ components?: Array<{
151
+ name: string;
152
+ type: string;
153
+ properties?: Record<string, unknown>;
154
+ }>;
155
+ }
156
+
157
+ export interface AddVariableResponse extends BaseResponse {
158
+ variableName?: string;
159
+ variableType?: string;
160
+ }
161
+
162
+ export interface CreateNodeResponse extends BaseResponse {
163
+ nodeId?: string;
164
+ nodeName?: string;
165
+ }
166
+
167
+ export interface ConnectPinsResponse extends BaseResponse {
168
+ connected?: boolean;
169
+ fromNode?: string;
170
+ toNode?: string;
171
+ }
172
+
173
+ // ============================================================================
174
+ // Level Responses
175
+ // ============================================================================
176
+
177
+ export interface LoadLevelResponse extends BaseResponse {
178
+ levelPath?: string;
179
+ levelName?: string;
180
+ }
181
+
182
+ export interface SaveLevelResponse extends BaseResponse {
183
+ savedPath?: string;
184
+ }
185
+
186
+ export interface ListLevelsResponse extends BaseResponse {
187
+ levels?: Array<{
188
+ name: string;
189
+ path: string;
190
+ isLoaded?: boolean;
191
+ isVisible?: boolean;
192
+ }>;
193
+ }
194
+
195
+ export interface BuildLightingResponse extends BaseResponse {
196
+ quality?: string;
197
+ buildTime?: number;
198
+ }
199
+
200
+ // ============================================================================
201
+ // Editor Responses
202
+ // ============================================================================
203
+
204
+ export interface PlayInEditorResponse extends BaseResponse {
205
+ isPlaying?: boolean;
206
+ isPaused?: boolean;
207
+ }
208
+
209
+ export interface SetCameraResponse extends BaseResponse {
210
+ location?: Vector3;
211
+ rotation?: Rotator;
212
+ fov?: number;
213
+ }
214
+
215
+ export interface ScreenshotResponse extends BaseResponse {
216
+ filePath?: string;
217
+ width?: number;
218
+ height?: number;
219
+ }
220
+
221
+ export interface ViewModeResponse extends BaseResponse {
222
+ viewMode?: string;
223
+ }
224
+
225
+ // ============================================================================
226
+ // Sequence Responses
227
+ // ============================================================================
228
+
229
+ export interface CreateSequenceResponse extends BaseResponse {
230
+ sequencePath?: string;
231
+ sequenceName?: string;
232
+ }
233
+
234
+ export interface AddActorToSequenceResponse extends BaseResponse {
235
+ bindingId?: string;
236
+ actorName?: string;
237
+ }
238
+
239
+ export interface AddKeyframeResponse extends BaseResponse {
240
+ frameNumber?: number;
241
+ property?: string;
242
+ value?: unknown;
243
+ }
244
+
245
+ // ============================================================================
246
+ // Audio Responses
247
+ // ============================================================================
248
+
249
+ export interface PlaySoundResponse extends BaseResponse {
250
+ soundPath?: string;
251
+ audioComponentId?: string;
252
+ }
253
+
254
+ export interface CreateSoundCueResponse extends BaseResponse {
255
+ cuePath?: string;
256
+ cueName?: string;
257
+ }
258
+
259
+ // ============================================================================
260
+ // Effect Responses
261
+ // ============================================================================
262
+
263
+ export interface SpawnEffectResponse extends BaseResponse {
264
+ effectName?: string;
265
+ effectPath?: string;
266
+ location?: Vector3;
267
+ }
268
+
269
+ export interface CreateNiagaraSystemResponse extends BaseResponse {
270
+ systemPath?: string;
271
+ systemName?: string;
272
+ }
273
+
274
+ // ============================================================================
275
+ // Lighting Responses
276
+ // ============================================================================
277
+
278
+ export interface SpawnLightResponse extends BaseResponse {
279
+ lightName?: string;
280
+ lightType?: string;
281
+ location?: Vector3;
282
+ }
283
+
284
+ export interface SetupGIResponse extends BaseResponse {
285
+ method?: string;
286
+ bounces?: number;
287
+ }
288
+
289
+ // ============================================================================
290
+ // Animation Responses
291
+ // ============================================================================
292
+
293
+ export interface CreateAnimBlueprintResponse extends BaseResponse {
294
+ blueprintPath?: string;
295
+ skeletonPath?: string;
296
+ }
297
+
298
+ export interface PlayMontageResponse extends BaseResponse {
299
+ montagePath?: string;
300
+ playRate?: number;
301
+ }
302
+
303
+ // ============================================================================
304
+ // System Responses
305
+ // ============================================================================
306
+
307
+ export interface ConsoleCommandResponse extends BaseResponse {
308
+ command?: string;
309
+ output?: string;
310
+ }
311
+
312
+ export interface ProfileResponse extends BaseResponse {
313
+ profileType?: string;
314
+ enabled?: boolean;
315
+ }
316
+
317
+ export interface SetCVarResponse extends BaseResponse {
318
+ cvarName?: string;
319
+ value?: string;
320
+ }
321
+
322
+ // ============================================================================
323
+ // Inspect Responses
324
+ // ============================================================================
325
+
326
+ export interface InspectObjectResponse extends BaseResponse {
327
+ objectPath?: string;
328
+ className?: string;
329
+ properties?: Record<string, unknown>;
330
+ }
331
+
332
+ export interface GetPropertyResponse extends BaseResponse {
333
+ propertyName?: string;
334
+ value?: unknown;
335
+ propertyType?: string;
336
+ }
337
+
338
+ export interface SetPropertyResponse extends BaseResponse {
339
+ propertyName?: string;
340
+ newValue?: unknown;
341
+ }
342
+
343
+ // ============================================================================
344
+ // Environment Responses
345
+ // ============================================================================
346
+
347
+ export interface CreateLandscapeResponse extends BaseResponse {
348
+ landscapeName?: string;
349
+ componentCount?: { x: number; y: number };
350
+ }
351
+
352
+ export interface AddFoliageResponse extends BaseResponse {
353
+ foliageType?: string;
354
+ instanceCount?: number;
355
+ }