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
@@ -6,8 +6,8 @@ export interface StandardActionResponse<T = any> {
6
6
  success: boolean;
7
7
  data?: T;
8
8
  warnings?: string[];
9
- error?: {
10
- code: string;
9
+ error?: string | {
10
+ code?: string;
11
11
  message: string;
12
12
  [key: string]: unknown;
13
13
  } | null;
@@ -154,158 +154,158 @@ export interface IAssetTools {
154
154
  destinationPath: string;
155
155
  overwrite?: boolean;
156
156
  save?: boolean;
157
- }): Promise<any>;
158
- createFolder(path: string): Promise<any>;
157
+ }): Promise<StandardActionResponse>;
158
+ createFolder(path: string): Promise<StandardActionResponse>;
159
159
  duplicateAsset(params: {
160
160
  sourcePath: string;
161
161
  destinationPath: string;
162
162
  overwrite?: boolean;
163
- }): Promise<any>;
163
+ }): Promise<StandardActionResponse>;
164
164
  renameAsset(params: {
165
165
  sourcePath: string;
166
166
  destinationPath: string;
167
- }): Promise<any>;
167
+ }): Promise<StandardActionResponse>;
168
168
  moveAsset(params: {
169
169
  sourcePath: string;
170
170
  destinationPath: string;
171
- }): Promise<any>;
171
+ }): Promise<StandardActionResponse>;
172
172
  deleteAssets(params: {
173
173
  paths: string[];
174
174
  fixupRedirectors?: boolean;
175
175
  timeoutMs?: number;
176
- }): Promise<any>;
176
+ }): Promise<StandardActionResponse>;
177
177
  searchAssets(params: {
178
178
  classNames?: string[];
179
179
  packagePaths?: string[];
180
180
  recursivePaths?: boolean;
181
181
  recursiveClasses?: boolean;
182
182
  limit?: number;
183
- }): Promise<any>;
184
- saveAsset(assetPath: string): Promise<any>;
183
+ }): Promise<StandardActionResponse>;
184
+ saveAsset(assetPath: string): Promise<StandardActionResponse>;
185
185
  findByTag(params: {
186
186
  tag: string;
187
187
  value?: string;
188
- }): Promise<any>;
188
+ }): Promise<StandardActionResponse>;
189
189
  getDependencies(params: {
190
190
  assetPath: string;
191
191
  recursive?: boolean;
192
- }): Promise<any>;
192
+ }): Promise<StandardActionResponse>;
193
193
  getMetadata(params: {
194
194
  assetPath: string;
195
- }): Promise<any>;
195
+ }): Promise<StandardActionResponse>;
196
196
  getSourceControlState(params: {
197
197
  assetPath: string;
198
- }): Promise<SourceControlState | any>;
198
+ }): Promise<SourceControlState | StandardActionResponse>;
199
199
  analyzeGraph(params: {
200
200
  assetPath: string;
201
201
  maxDepth?: number;
202
- }): Promise<any>;
202
+ }): Promise<StandardActionResponse>;
203
203
  createThumbnail(params: {
204
204
  assetPath: string;
205
205
  width?: number;
206
206
  height?: number;
207
- }): Promise<any>;
207
+ }): Promise<StandardActionResponse>;
208
208
  setTags(params: {
209
209
  assetPath: string;
210
210
  tags: string[];
211
- }): Promise<any>;
211
+ }): Promise<StandardActionResponse>;
212
212
  generateReport(params: {
213
213
  directory: string;
214
214
  reportType?: string;
215
215
  outputPath?: string;
216
- }): Promise<any>;
216
+ }): Promise<StandardActionResponse>;
217
217
  validate(params: {
218
218
  assetPath: string;
219
- }): Promise<any>;
219
+ }): Promise<StandardActionResponse>;
220
220
  generateLODs(params: {
221
221
  assetPath: string;
222
222
  lodCount: number;
223
223
  reductionSettings?: Record<string, unknown>;
224
- }): Promise<any>;
224
+ }): Promise<StandardActionResponse>;
225
225
  }
226
226
  export interface ISequenceTools {
227
227
  create(params: {
228
228
  name: string;
229
229
  path?: string;
230
230
  timeoutMs?: number;
231
- }): Promise<any>;
231
+ }): Promise<StandardActionResponse>;
232
232
  open(params: {
233
233
  path: string;
234
- }): Promise<any>;
234
+ }): Promise<StandardActionResponse>;
235
235
  addCamera(params: {
236
236
  spawnable?: boolean;
237
237
  path?: string;
238
- }): Promise<any>;
238
+ }): Promise<StandardActionResponse>;
239
239
  addActor(params: {
240
240
  actorName: string;
241
241
  createBinding?: boolean;
242
242
  path?: string;
243
- }): Promise<any>;
243
+ }): Promise<StandardActionResponse>;
244
244
  addActors(params: {
245
245
  actorNames: string[];
246
246
  path?: string;
247
- }): Promise<any>;
247
+ }): Promise<StandardActionResponse>;
248
248
  removeActors(params: {
249
249
  actorNames: string[];
250
250
  path?: string;
251
- }): Promise<any>;
251
+ }): Promise<StandardActionResponse>;
252
252
  getBindings(params: {
253
253
  path?: string;
254
- }): Promise<any>;
254
+ }): Promise<StandardActionResponse>;
255
255
  addSpawnableFromClass(params: {
256
256
  className: string;
257
257
  path?: string;
258
- }): Promise<any>;
258
+ }): Promise<StandardActionResponse>;
259
259
  play(params: {
260
260
  path?: string;
261
261
  startTime?: number;
262
262
  loopMode?: 'once' | 'loop' | 'pingpong';
263
- }): Promise<any>;
263
+ }): Promise<StandardActionResponse>;
264
264
  pause(params?: {
265
265
  path?: string;
266
- }): Promise<any>;
266
+ }): Promise<StandardActionResponse>;
267
267
  stop(params?: {
268
268
  path?: string;
269
- }): Promise<any>;
269
+ }): Promise<StandardActionResponse>;
270
270
  setSequenceProperties(params: {
271
271
  path?: string;
272
272
  frameRate?: number;
273
273
  lengthInFrames?: number;
274
274
  playbackStart?: number;
275
275
  playbackEnd?: number;
276
- }): Promise<any>;
276
+ }): Promise<StandardActionResponse>;
277
277
  getSequenceProperties(params: {
278
278
  path?: string;
279
- }): Promise<any>;
279
+ }): Promise<StandardActionResponse>;
280
280
  setPlaybackSpeed(params: {
281
281
  speed: number;
282
282
  path?: string;
283
- }): Promise<any>;
283
+ }): Promise<StandardActionResponse>;
284
284
  list(params: {
285
285
  path?: string;
286
- }): Promise<any>;
286
+ }): Promise<StandardActionResponse>;
287
287
  duplicate(params: {
288
288
  path: string;
289
289
  destinationPath: string;
290
- }): Promise<any>;
290
+ }): Promise<StandardActionResponse>;
291
291
  rename(params: {
292
292
  path: string;
293
293
  newName: string;
294
- }): Promise<any>;
294
+ }): Promise<StandardActionResponse>;
295
295
  deleteSequence(params: {
296
296
  path: string;
297
- }): Promise<any>;
297
+ }): Promise<StandardActionResponse>;
298
298
  getMetadata(params: {
299
299
  path: string;
300
- }): Promise<any>;
300
+ }): Promise<StandardActionResponse>;
301
301
  listTracks(params: {
302
302
  path: string;
303
- }): Promise<any>;
303
+ }): Promise<StandardActionResponse>;
304
304
  setWorkRange(params: {
305
305
  path?: string;
306
306
  start: number;
307
307
  end: number;
308
- }): Promise<any>;
308
+ }): Promise<StandardActionResponse>;
309
309
  }
310
310
  export interface IAssetResources {
311
311
  list(directory?: string, recursive?: boolean, limit?: number): Promise<any>;
@@ -320,7 +320,7 @@ export interface IBlueprintTools {
320
320
  timeoutMs?: number;
321
321
  waitForCompletion?: boolean;
322
322
  waitForCompletionTimeoutMs?: number;
323
- }): Promise<any>;
323
+ }): Promise<StandardActionResponse>;
324
324
  modifyConstructionScript(params: {
325
325
  blueprintPath: string;
326
326
  operations: any[];
@@ -329,7 +329,7 @@ export interface IBlueprintTools {
329
329
  timeoutMs?: number;
330
330
  waitForCompletion?: boolean;
331
331
  waitForCompletionTimeoutMs?: number;
332
- }): Promise<any>;
332
+ }): Promise<StandardActionResponse>;
333
333
  addComponent(params: {
334
334
  blueprintName: string;
335
335
  componentType: string;
@@ -342,24 +342,24 @@ export interface IBlueprintTools {
342
342
  timeoutMs?: number;
343
343
  waitForCompletion?: boolean;
344
344
  waitForCompletionTimeoutMs?: number;
345
- }): Promise<any>;
346
- waitForBlueprint(blueprintRef: string | string[], timeoutMs?: number): Promise<any>;
345
+ }): Promise<StandardActionResponse>;
346
+ waitForBlueprint(blueprintRef: string | string[], timeoutMs?: number): Promise<StandardActionResponse>;
347
347
  getBlueprint(params: {
348
348
  blueprintName: string;
349
349
  timeoutMs?: number;
350
- }): Promise<any>;
350
+ }): Promise<StandardActionResponse>;
351
351
  getBlueprintInfo(params: {
352
352
  blueprintPath: string;
353
353
  timeoutMs?: number;
354
- }): Promise<any>;
354
+ }): Promise<StandardActionResponse>;
355
355
  probeSubobjectDataHandle(opts?: {
356
356
  componentClass?: string;
357
- }): Promise<any>;
357
+ }): Promise<StandardActionResponse>;
358
358
  setBlueprintDefault(params: {
359
359
  blueprintName: string;
360
360
  propertyName: string;
361
361
  value: unknown;
362
- }): Promise<any>;
362
+ }): Promise<StandardActionResponse>;
363
363
  addVariable(params: {
364
364
  blueprintName: string;
365
365
  variableName: string;
@@ -372,14 +372,14 @@ export interface IBlueprintTools {
372
372
  timeoutMs?: number;
373
373
  waitForCompletion?: boolean;
374
374
  waitForCompletionTimeoutMs?: number;
375
- }): Promise<any>;
375
+ }): Promise<StandardActionResponse>;
376
376
  removeVariable(params: {
377
377
  blueprintName: string;
378
378
  variableName: string;
379
379
  timeoutMs?: number;
380
380
  waitForCompletion?: boolean;
381
381
  waitForCompletionTimeoutMs?: number;
382
- }): Promise<any>;
382
+ }): Promise<StandardActionResponse>;
383
383
  renameVariable(params: {
384
384
  blueprintName: string;
385
385
  oldName: string;
@@ -387,7 +387,7 @@ export interface IBlueprintTools {
387
387
  timeoutMs?: number;
388
388
  waitForCompletion?: boolean;
389
389
  waitForCompletionTimeoutMs?: number;
390
- }): Promise<any>;
390
+ }): Promise<StandardActionResponse>;
391
391
  addEvent(params: {
392
392
  blueprintName: string;
393
393
  eventType: string;
@@ -399,7 +399,7 @@ export interface IBlueprintTools {
399
399
  timeoutMs?: number;
400
400
  waitForCompletion?: boolean;
401
401
  waitForCompletionTimeoutMs?: number;
402
- }): Promise<any>;
402
+ }): Promise<StandardActionResponse>;
403
403
  removeEvent(params: {
404
404
  blueprintName: string;
405
405
  eventName: string;
@@ -407,7 +407,7 @@ export interface IBlueprintTools {
407
407
  timeoutMs?: number;
408
408
  waitForCompletion?: boolean;
409
409
  waitForCompletionTimeoutMs?: number;
410
- }): Promise<any>;
410
+ }): Promise<StandardActionResponse>;
411
411
  addFunction(params: {
412
412
  blueprintName: string;
413
413
  functionName: string;
@@ -424,13 +424,13 @@ export interface IBlueprintTools {
424
424
  timeoutMs?: number;
425
425
  waitForCompletion?: boolean;
426
426
  waitForCompletionTimeoutMs?: number;
427
- }): Promise<any>;
427
+ }): Promise<StandardActionResponse>;
428
428
  setVariableMetadata(params: {
429
429
  blueprintName: string;
430
430
  variableName: string;
431
431
  metadata: Record<string, unknown>;
432
432
  timeoutMs?: number;
433
- }): Promise<any>;
433
+ }): Promise<StandardActionResponse>;
434
434
  renameVariable(params: {
435
435
  blueprintName: string;
436
436
  oldName: string;
@@ -438,22 +438,22 @@ export interface IBlueprintTools {
438
438
  timeoutMs?: number;
439
439
  waitForCompletion?: boolean;
440
440
  waitForCompletionTimeoutMs?: number;
441
- }): Promise<any>;
441
+ }): Promise<StandardActionResponse>;
442
442
  addConstructionScript(params: {
443
443
  blueprintName: string;
444
444
  scriptName: string;
445
445
  timeoutMs?: number;
446
446
  waitForCompletion?: boolean;
447
447
  waitForCompletionTimeoutMs?: number;
448
- }): Promise<any>;
448
+ }): Promise<StandardActionResponse>;
449
449
  compileBlueprint(params: {
450
450
  blueprintName: string;
451
451
  saveAfterCompile?: boolean;
452
- }): Promise<any>;
452
+ }): Promise<StandardActionResponse>;
453
453
  getBlueprintSCS(params: {
454
454
  blueprintPath: string;
455
455
  timeoutMs?: number;
456
- }): Promise<any>;
456
+ }): Promise<StandardActionResponse>;
457
457
  addSCSComponent(params: {
458
458
  blueprintPath: string;
459
459
  componentClass: string;
@@ -462,18 +462,18 @@ export interface IBlueprintTools {
462
462
  meshPath?: string;
463
463
  materialPath?: string;
464
464
  timeoutMs?: number;
465
- }): Promise<any>;
465
+ }): Promise<StandardActionResponse>;
466
466
  removeSCSComponent(params: {
467
467
  blueprintPath: string;
468
468
  componentName: string;
469
469
  timeoutMs?: number;
470
- }): Promise<any>;
470
+ }): Promise<StandardActionResponse>;
471
471
  reparentSCSComponent(params: {
472
472
  blueprintPath: string;
473
473
  componentName: string;
474
474
  newParent: string;
475
475
  timeoutMs?: number;
476
- }): Promise<any>;
476
+ }): Promise<StandardActionResponse>;
477
477
  setSCSComponentTransform(params: {
478
478
  blueprintPath: string;
479
479
  componentName: string;
@@ -481,14 +481,14 @@ export interface IBlueprintTools {
481
481
  rotation?: [number, number, number];
482
482
  scale?: [number, number, number];
483
483
  timeoutMs?: number;
484
- }): Promise<any>;
484
+ }): Promise<StandardActionResponse>;
485
485
  setSCSComponentProperty(params: {
486
486
  blueprintPath: string;
487
487
  componentName: string;
488
488
  propertyName: string;
489
489
  propertyValue: any;
490
490
  timeoutMs?: number;
491
- }): Promise<any>;
491
+ }): Promise<StandardActionResponse>;
492
492
  addNode(params: {
493
493
  blueprintName: string;
494
494
  nodeType: string;
@@ -501,7 +501,7 @@ export interface IBlueprintTools {
501
501
  posX?: number;
502
502
  posY?: number;
503
503
  timeoutMs?: number;
504
- }): Promise<any>;
504
+ }): Promise<StandardActionResponse>;
505
505
  connectPins(params: {
506
506
  blueprintName: string;
507
507
  sourceNodeGuid: string;
@@ -509,11 +509,11 @@ export interface IBlueprintTools {
509
509
  sourcePinName?: string;
510
510
  targetPinName?: string;
511
511
  timeoutMs?: number;
512
- }): Promise<any>;
512
+ }): Promise<StandardActionResponse>;
513
513
  }
514
514
  export interface ILevelTools {
515
- listLevels(): Promise<any>;
516
- getLevelSummary(levelPath?: string): Promise<any>;
515
+ listLevels(): Promise<StandardActionResponse>;
516
+ getLevelSummary(levelPath?: string): Promise<StandardActionResponse>;
517
517
  registerLight(levelPath: string | undefined, info: {
518
518
  name: string;
519
519
  type: string;
@@ -524,52 +524,52 @@ export interface ILevelTools {
524
524
  exportPath: string;
525
525
  note?: string;
526
526
  timeoutMs?: number;
527
- }): Promise<any>;
527
+ }): Promise<StandardActionResponse>;
528
528
  importLevel(params: {
529
529
  packagePath: string;
530
530
  destinationPath?: string;
531
531
  streaming?: boolean;
532
532
  timeoutMs?: number;
533
- }): Promise<any>;
533
+ }): Promise<StandardActionResponse>;
534
534
  saveLevelAs(params: {
535
535
  sourcePath?: string;
536
536
  targetPath: string;
537
- }): Promise<any>;
537
+ }): Promise<StandardActionResponse>;
538
538
  deleteLevels(params: {
539
539
  levelPaths: string[];
540
- }): Promise<any>;
540
+ }): Promise<StandardActionResponse>;
541
541
  loadLevel(params: {
542
542
  levelPath: string;
543
543
  streaming?: boolean;
544
544
  position?: [number, number, number];
545
- }): Promise<any>;
545
+ }): Promise<StandardActionResponse>;
546
546
  saveLevel(params: {
547
547
  levelName?: string;
548
548
  savePath?: string;
549
- }): Promise<any>;
549
+ }): Promise<StandardActionResponse>;
550
550
  createLevel(params: {
551
551
  levelName: string;
552
552
  template?: 'Empty' | 'Default' | 'VR' | 'TimeOfDay';
553
553
  savePath?: string;
554
- }): Promise<any>;
554
+ }): Promise<StandardActionResponse>;
555
555
  addSubLevel(params: {
556
556
  parentLevel?: string;
557
557
  subLevelPath: string;
558
558
  streamingMethod?: 'Blueprint' | 'AlwaysLoaded';
559
- }): Promise<any>;
559
+ }): Promise<StandardActionResponse>;
560
560
  streamLevel(params: {
561
561
  levelPath?: string;
562
562
  levelName?: string;
563
563
  shouldBeLoaded: boolean;
564
564
  shouldBeVisible?: boolean;
565
565
  position?: [number, number, number];
566
- }): Promise<any>;
566
+ }): Promise<StandardActionResponse>;
567
567
  setupWorldComposition(params: {
568
568
  enableComposition: boolean;
569
569
  tileSize?: number;
570
570
  distanceStreaming?: boolean;
571
571
  streamingDistance?: number;
572
- }): Promise<any>;
572
+ }): Promise<StandardActionResponse>;
573
573
  editLevelBlueprint(params: {
574
574
  eventType: 'BeginPlay' | 'EndPlay' | 'Tick' | 'Custom';
575
575
  customEventName?: string;
@@ -578,54 +578,54 @@ export interface ILevelTools {
578
578
  position: [number, number];
579
579
  connections?: string[];
580
580
  }>;
581
- }): Promise<any>;
581
+ }): Promise<StandardActionResponse>;
582
582
  createSubLevel(params: {
583
583
  name: string;
584
584
  type: 'Persistent' | 'Streaming' | 'Lighting' | 'Gameplay';
585
585
  parent?: string;
586
- }): Promise<any>;
586
+ }): Promise<StandardActionResponse>;
587
587
  setWorldSettings(params: {
588
588
  gravity?: number;
589
589
  worldScale?: number;
590
590
  gameMode?: string;
591
591
  defaultPawn?: string;
592
592
  killZ?: number;
593
- }): Promise<any>;
593
+ }): Promise<StandardActionResponse>;
594
594
  setLevelBounds(params: {
595
595
  min: [number, number, number];
596
596
  max: [number, number, number];
597
- }): Promise<any>;
597
+ }): Promise<StandardActionResponse>;
598
598
  buildNavMesh(params: {
599
599
  rebuildAll?: boolean;
600
600
  selectedOnly?: boolean;
601
- }): Promise<any>;
601
+ }): Promise<StandardActionResponse>;
602
602
  setLevelVisibility(params: {
603
603
  levelName: string;
604
604
  visible: boolean;
605
- }): Promise<any>;
605
+ }): Promise<StandardActionResponse>;
606
606
  setWorldOrigin(params: {
607
607
  location: [number, number, number];
608
- }): Promise<any>;
608
+ }): Promise<StandardActionResponse>;
609
609
  createStreamingVolume(params: {
610
610
  levelName: string;
611
611
  position: [number, number, number];
612
612
  size: [number, number, number];
613
613
  streamingDistance?: number;
614
- }): Promise<any>;
614
+ }): Promise<StandardActionResponse>;
615
615
  setLevelLOD(params: {
616
616
  levelName: string;
617
617
  lodLevel: number;
618
618
  distance: number;
619
- }): Promise<any>;
619
+ }): Promise<StandardActionResponse>;
620
620
  }
621
621
  export interface IEditorTools {
622
622
  isInPIE(): Promise<boolean>;
623
623
  ensureNotInPIE(): Promise<void>;
624
- playInEditor(timeoutMs?: number): Promise<any>;
625
- stopPlayInEditor(): Promise<any>;
626
- pausePlayInEditor(): Promise<any>;
627
- pauseInEditor(): Promise<any>;
628
- buildLighting(): Promise<any>;
624
+ playInEditor(timeoutMs?: number): Promise<StandardActionResponse>;
625
+ stopPlayInEditor(): Promise<StandardActionResponse>;
626
+ pausePlayInEditor(): Promise<StandardActionResponse>;
627
+ pauseInEditor(): Promise<StandardActionResponse>;
628
+ buildLighting(): Promise<StandardActionResponse>;
629
629
  setViewportCamera(location?: {
630
630
  x: number;
631
631
  y: number;
@@ -634,40 +634,40 @@ export interface IEditorTools {
634
634
  pitch: number;
635
635
  yaw: number;
636
636
  roll: number;
637
- } | [number, number, number] | null | undefined): Promise<any>;
638
- setCameraSpeed(speed: number): Promise<any>;
639
- setFOV(fov: number): Promise<any>;
640
- takeScreenshot(filename?: string, resolution?: string): Promise<any>;
641
- resumePlayInEditor(): Promise<any>;
642
- stepPIEFrame(steps?: number): Promise<any>;
637
+ } | [number, number, number] | null | undefined): Promise<StandardActionResponse>;
638
+ setCameraSpeed(speed: number): Promise<StandardActionResponse>;
639
+ setFOV(fov: number): Promise<StandardActionResponse>;
640
+ takeScreenshot(filename?: string, resolution?: string): Promise<StandardActionResponse>;
641
+ resumePlayInEditor(): Promise<StandardActionResponse>;
642
+ stepPIEFrame(steps?: number): Promise<StandardActionResponse>;
643
643
  startRecording(options?: {
644
644
  filename?: string;
645
645
  frameRate?: number;
646
646
  durationSeconds?: number;
647
647
  metadata?: Record<string, unknown>;
648
- }): Promise<any>;
649
- stopRecording(): Promise<any>;
650
- createCameraBookmark(name: string): Promise<any>;
651
- jumpToCameraBookmark(name: string): Promise<any>;
652
- setEditorPreferences(category: string | undefined, preferences: Record<string, unknown>): Promise<any>;
653
- setViewportResolution(width: number, height: number): Promise<any>;
654
- executeConsoleCommand(command: string): Promise<any>;
648
+ }): Promise<StandardActionResponse>;
649
+ stopRecording(): Promise<StandardActionResponse>;
650
+ createCameraBookmark(name: string): Promise<StandardActionResponse>;
651
+ jumpToCameraBookmark(name: string): Promise<StandardActionResponse>;
652
+ setEditorPreferences(category: string | undefined, preferences: Record<string, unknown>): Promise<StandardActionResponse>;
653
+ setViewportResolution(width: number, height: number): Promise<StandardActionResponse>;
654
+ executeConsoleCommand(command: string): Promise<StandardActionResponse>;
655
655
  }
656
656
  export interface IEnvironmentTools {
657
- setTimeOfDay(hour: unknown): Promise<any>;
658
- setSunIntensity(intensity: unknown): Promise<any>;
659
- setSkylightIntensity(intensity: unknown): Promise<any>;
657
+ setTimeOfDay(hour: unknown): Promise<StandardActionResponse>;
658
+ setSunIntensity(intensity: unknown): Promise<StandardActionResponse>;
659
+ setSkylightIntensity(intensity: unknown): Promise<StandardActionResponse>;
660
660
  exportSnapshot(params: {
661
661
  path?: unknown;
662
662
  filename?: unknown;
663
- }): Promise<any>;
663
+ }): Promise<StandardActionResponse>;
664
664
  importSnapshot(params: {
665
665
  path?: unknown;
666
666
  filename?: unknown;
667
- }): Promise<any>;
667
+ }): Promise<StandardActionResponse>;
668
668
  cleanup(params?: {
669
669
  names?: unknown;
670
- }): Promise<any>;
670
+ }): Promise<StandardActionResponse>;
671
671
  }
672
672
  export interface ILandscapeTools {
673
673
  createLandscape(params: {
@@ -683,7 +683,7 @@ export interface ILandscapeTools {
683
683
  runtimeGrid?: string;
684
684
  isSpatiallyLoaded?: boolean;
685
685
  dataLayers?: string[];
686
- }): Promise<any>;
686
+ }): Promise<StandardActionResponse>;
687
687
  sculptLandscape(params: {
688
688
  landscapeName: string;
689
689
  tool: string;
@@ -692,7 +692,7 @@ export interface ILandscapeTools {
692
692
  strength?: number;
693
693
  location?: [number, number, number];
694
694
  radius?: number;
695
- }): Promise<any>;
695
+ }): Promise<StandardActionResponse>;
696
696
  paintLandscape(params: {
697
697
  landscapeName: string;
698
698
  layerName: string;
@@ -702,7 +702,7 @@ export interface ILandscapeTools {
702
702
  targetValue?: number;
703
703
  radius?: number;
704
704
  density?: number;
705
- }): Promise<any>;
705
+ }): Promise<StandardActionResponse>;
706
706
  createProceduralTerrain(params: {
707
707
  name: string;
708
708
  location?: [number, number, number];
@@ -710,7 +710,7 @@ export interface ILandscapeTools {
710
710
  heightFunction?: string;
711
711
  material?: string;
712
712
  settings?: Record<string, unknown>;
713
- }): Promise<any>;
713
+ }): Promise<StandardActionResponse>;
714
714
  createLandscapeGrassType(params: {
715
715
  name: string;
716
716
  meshPath: string;
@@ -719,11 +719,11 @@ export interface ILandscapeTools {
719
719
  maxScale?: number;
720
720
  path?: string;
721
721
  staticMesh?: string;
722
- }): Promise<any>;
722
+ }): Promise<StandardActionResponse>;
723
723
  setLandscapeMaterial(params: {
724
724
  landscapeName: string;
725
725
  materialPath: string;
726
- }): Promise<any>;
726
+ }): Promise<StandardActionResponse>;
727
727
  modifyHeightmap(params: {
728
728
  landscapeName: string;
729
729
  heightData: number[];
@@ -732,7 +732,7 @@ export interface ILandscapeTools {
732
732
  maxX: number;
733
733
  maxY: number;
734
734
  updateNormals?: boolean;
735
- }): Promise<any>;
735
+ }): Promise<StandardActionResponse>;
736
736
  }
737
737
  export interface IFoliageTools {
738
738
  addFoliageType(params: {
@@ -745,7 +745,7 @@ export interface IFoliageTools {
745
745
  alignToNormal?: boolean;
746
746
  randomYaw?: boolean;
747
747
  groundSlope?: number;
748
- }): Promise<any>;
748
+ }): Promise<StandardActionResponse>;
749
749
  addFoliage(params: {
750
750
  foliageType: string;
751
751
  locations: Array<{
@@ -753,14 +753,14 @@ export interface IFoliageTools {
753
753
  y: number;
754
754
  z: number;
755
755
  }>;
756
- }): Promise<any>;
756
+ }): Promise<StandardActionResponse>;
757
757
  paintFoliage(params: {
758
758
  foliageType: string;
759
759
  position: [number, number, number];
760
760
  brushSize?: number;
761
761
  paintDensity?: number;
762
762
  eraseMode?: boolean;
763
- }): Promise<any>;
763
+ }): Promise<StandardActionResponse>;
764
764
  createProceduralFoliage(params: {
765
765
  name: string;
766
766
  bounds?: {
@@ -788,7 +788,7 @@ export interface IFoliageTools {
788
788
  size?: [number, number, number];
789
789
  seed?: number;
790
790
  tileSize?: number;
791
- }): Promise<any>;
791
+ }): Promise<StandardActionResponse>;
792
792
  addFoliageInstances(params: {
793
793
  foliageType: string;
794
794
  transforms: Array<{
@@ -796,14 +796,14 @@ export interface IFoliageTools {
796
796
  rotation?: [number, number, number];
797
797
  scale?: [number, number, number];
798
798
  }>;
799
- }): Promise<any>;
799
+ }): Promise<StandardActionResponse>;
800
800
  getFoliageInstances(params: {
801
801
  foliageType?: string;
802
- }): Promise<any>;
802
+ }): Promise<StandardActionResponse>;
803
803
  removeFoliage(params: {
804
804
  foliageType?: string;
805
805
  removeAll?: boolean;
806
- }): Promise<any>;
806
+ }): Promise<StandardActionResponse>;
807
807
  createInstancedMesh(params: {
808
808
  name: string;
809
809
  meshPath: string;
@@ -814,18 +814,18 @@ export interface IFoliageTools {
814
814
  }>;
815
815
  enableCulling?: boolean;
816
816
  cullDistance?: number;
817
- }): Promise<any>;
817
+ }): Promise<StandardActionResponse>;
818
818
  setFoliageLOD(params: {
819
819
  foliageType: string;
820
820
  lodDistances?: number[];
821
821
  screenSize?: number[];
822
- }): Promise<any>;
822
+ }): Promise<StandardActionResponse>;
823
823
  setFoliageCollision(params: {
824
824
  foliageType: string;
825
825
  collisionEnabled?: boolean;
826
826
  collisionProfile?: string;
827
827
  generateOverlapEvents?: boolean;
828
- }): Promise<any>;
828
+ }): Promise<StandardActionResponse>;
829
829
  createGrassSystem(params: {
830
830
  name: string;
831
831
  grassTypes: Array<{
@@ -836,35 +836,35 @@ export interface IFoliageTools {
836
836
  }>;
837
837
  windStrength?: number;
838
838
  windSpeed?: number;
839
- }): Promise<any>;
839
+ }): Promise<StandardActionResponse>;
840
840
  removeFoliageInstances(params: {
841
841
  foliageType: string;
842
842
  position: [number, number, number];
843
843
  radius: number;
844
- }): Promise<any>;
844
+ }): Promise<StandardActionResponse>;
845
845
  selectFoliageInstances(params: {
846
846
  foliageType: string;
847
847
  position?: [number, number, number];
848
848
  radius?: number;
849
849
  selectAll?: boolean;
850
- }): Promise<any>;
850
+ }): Promise<StandardActionResponse>;
851
851
  updateFoliageInstances(params: {
852
852
  foliageType: string;
853
853
  updateTransforms?: boolean;
854
854
  updateMesh?: boolean;
855
855
  newMeshPath?: string;
856
- }): Promise<any>;
856
+ }): Promise<StandardActionResponse>;
857
857
  createFoliageSpawner(params: {
858
858
  name: string;
859
859
  spawnArea: 'Landscape' | 'StaticMesh' | 'BSP' | 'Foliage' | 'All';
860
860
  excludeAreas?: Array<[number, number, number, number]>;
861
- }): Promise<any>;
861
+ }): Promise<StandardActionResponse>;
862
862
  optimizeFoliage(params: {
863
863
  mergeInstances?: boolean;
864
864
  generateClusters?: boolean;
865
865
  clusterSize?: number;
866
866
  reduceDrawCalls?: boolean;
867
- }): Promise<any>;
867
+ }): Promise<StandardActionResponse>;
868
868
  }
869
869
  export interface ITools {
870
870
  actorTools: IActorTools;