@uemcp/server 0.4.0 → 1.1.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.
- package/README.md +75 -0
- package/dist/index.mjs +1856 -125
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -420,6 +420,63 @@ const BRIDGE_STOP_TRACE_STATES = [
|
|
|
420
420
|
"not_tracing",
|
|
421
421
|
"unsupported"
|
|
422
422
|
];
|
|
423
|
+
const BRIDGE_LIST_ACTORS_REQUEST_TYPE = "list_actors";
|
|
424
|
+
const BRIDGE_GET_ACTOR_DETAILS_REQUEST_TYPE = "get_actor_details";
|
|
425
|
+
const BRIDGE_GET_CURRENT_LEVEL_REQUEST_TYPE = "get_current_level";
|
|
426
|
+
const BRIDGE_SPAWN_ACTOR_REQUEST_TYPE = "spawn_actor";
|
|
427
|
+
const BRIDGE_DESTROY_ACTOR_REQUEST_TYPE = "destroy_actor";
|
|
428
|
+
const BRIDGE_UNDO_REQUEST_TYPE = "undo";
|
|
429
|
+
const BRIDGE_REDO_REQUEST_TYPE = "redo";
|
|
430
|
+
const BRIDGE_LEVEL_EDIT_STATES = [
|
|
431
|
+
"applied",
|
|
432
|
+
"validated",
|
|
433
|
+
"unsupported"
|
|
434
|
+
];
|
|
435
|
+
const BRIDGE_SET_ACTOR_TRANSFORM_REQUEST_TYPE = "set_actor_transform";
|
|
436
|
+
const BRIDGE_SET_ACTOR_PROPERTY_REQUEST_TYPE = "set_actor_property";
|
|
437
|
+
const BRIDGE_SELECT_ACTORS_REQUEST_TYPE = "select_actors";
|
|
438
|
+
const BRIDGE_PROPERTY_VALUE_MAX_CHARS = 4096;
|
|
439
|
+
const BRIDGE_UNDO_STATES = [
|
|
440
|
+
"undone",
|
|
441
|
+
"nothing_to_undo",
|
|
442
|
+
"unsupported"
|
|
443
|
+
];
|
|
444
|
+
const BRIDGE_REDO_STATES = [
|
|
445
|
+
"redone",
|
|
446
|
+
"nothing_to_redo",
|
|
447
|
+
"unsupported"
|
|
448
|
+
];
|
|
449
|
+
const BRIDGE_OPEN_LEVEL_REQUEST_TYPE = "open_level";
|
|
450
|
+
const BRIDGE_GET_OPEN_LEVEL_STATUS_REQUEST_TYPE = "get_open_level_status";
|
|
451
|
+
const BRIDGE_OPEN_LEVEL_STATES = [
|
|
452
|
+
"opening",
|
|
453
|
+
"validated",
|
|
454
|
+
"unsupported"
|
|
455
|
+
];
|
|
456
|
+
const BRIDGE_OPEN_LEVEL_STATUS_STATES = [
|
|
457
|
+
"opening",
|
|
458
|
+
"succeeded",
|
|
459
|
+
"failed",
|
|
460
|
+
"unknown_job"
|
|
461
|
+
];
|
|
462
|
+
const BRIDGE_READ_DATA_TABLE_REQUEST_TYPE = "read_data_table";
|
|
463
|
+
const BRIDGE_WRITE_DATA_TABLE_ROW_REQUEST_TYPE = "write_data_table_row";
|
|
464
|
+
const BRIDGE_EXPORT_DATA_TABLE_REQUEST_TYPE = "export_data_table";
|
|
465
|
+
const BRIDGE_IMPORT_DATA_TABLE_REQUEST_TYPE = "import_data_table";
|
|
466
|
+
const BRIDGE_CREATE_DATA_TABLE_REQUEST_TYPE = "create_data_table";
|
|
467
|
+
const BRIDGE_RENAME_DATA_TABLE_REQUEST_TYPE = "rename_data_table";
|
|
468
|
+
const BRIDGE_DELETE_DATA_TABLE_REQUEST_TYPE = "delete_data_table";
|
|
469
|
+
const BRIDGE_RENAME_DATA_TABLE_ROW_REQUEST_TYPE = "rename_data_table_row";
|
|
470
|
+
const BRIDGE_DATA_TABLE_VALUE_MAX_CHARS = 4096;
|
|
471
|
+
const BRIDGE_DATA_TABLE_ROW_OPERATIONS = ["upsert", "delete"];
|
|
472
|
+
const BRIDGE_DATA_TABLE_WRITE_STATES = [
|
|
473
|
+
"applied",
|
|
474
|
+
"validated",
|
|
475
|
+
"unsupported"
|
|
476
|
+
];
|
|
477
|
+
const BRIDGE_DATA_TABLE_FORMATS = ["json", "csv"];
|
|
478
|
+
const BRIDGE_DATA_TABLE_MAX_EXPORT_CHARS = 24576;
|
|
479
|
+
const BRIDGE_DATA_TABLE_MAX_IMPORT_CHARS = 16384;
|
|
423
480
|
const requestIdSchema = z.string().trim().min(1);
|
|
424
481
|
const nonEmptyStringSchema = z.string().trim().min(1);
|
|
425
482
|
const boundedStringSchema = z.string().trim().max(512);
|
|
@@ -490,7 +547,11 @@ const parentClassSchema = z.string().trim().min(1).max(128);
|
|
|
490
547
|
const moduleNameSchema = z.string().trim().min(1).max(128);
|
|
491
548
|
const classPathSchema = z.string().trim().min(1).max(512);
|
|
492
549
|
const sourceFilePathSchema = z.string().trim().min(1);
|
|
493
|
-
const
|
|
550
|
+
const bridgeSelectedActorSchema = z.object({
|
|
551
|
+
actorPath: z.string(),
|
|
552
|
+
label: z.string()
|
|
553
|
+
});
|
|
554
|
+
const selectedActorArraySchema = z.array(bridgeSelectedActorSchema).max(100);
|
|
494
555
|
const activeModeArraySchema = z.array(z.string()).max(32);
|
|
495
556
|
const packageNameArraySchema = z.array(z.string()).max(100);
|
|
496
557
|
const screenshotPathSchema = z.string().trim().min(1);
|
|
@@ -511,35 +572,85 @@ const stopTraceStateSchema = z.enum(BRIDGE_STOP_TRACE_STATES);
|
|
|
511
572
|
const traceChannelSchema = z.string().trim().min(1).max(64).regex(/^[A-Za-z0-9_]+$/);
|
|
512
573
|
const traceChannelArraySchema = z.array(traceChannelSchema).max(32);
|
|
513
574
|
const traceFileNameSchema = z.string().trim().min(1).max(128).regex(/^[A-Za-z0-9_-]+$/);
|
|
575
|
+
const actorPathSchema = z.string().trim().min(1).max(512);
|
|
576
|
+
const levelCursorSchema = z.number().int().min(0);
|
|
577
|
+
const levelMaxResultsSchema = z.number().int().min(1).max(100);
|
|
578
|
+
const actorDetailMemberLimitSchema = z.number().int().min(1).max(200);
|
|
579
|
+
const actorClassFilterArraySchema = z.array(assetPathSchema).max(32);
|
|
580
|
+
const levelEditStateSchema = z.enum(BRIDGE_LEVEL_EDIT_STATES);
|
|
581
|
+
const undoStateSchema = z.enum(BRIDGE_UNDO_STATES);
|
|
582
|
+
const redoStateSchema = z.enum(BRIDGE_REDO_STATES);
|
|
583
|
+
const openLevelStateSchema = z.enum(BRIDGE_OPEN_LEVEL_STATES);
|
|
584
|
+
const openLevelStatusStateSchema = z.enum(BRIDGE_OPEN_LEVEL_STATUS_STATES);
|
|
585
|
+
const openLevelJobIdSchema = z.string().trim().min(1);
|
|
586
|
+
const levelPathSchema = z.string().trim().min(1).max(512);
|
|
587
|
+
const actorPathBatchSchema = z.array(actorPathSchema).min(1).max(64);
|
|
588
|
+
const actorTagArraySchema = z.array(boundedStringSchema).max(16);
|
|
589
|
+
const dataTableCursorSchema = z.number().int().min(0);
|
|
590
|
+
const dataTableMaxRowsSchema = z.number().int().min(1).max(100);
|
|
591
|
+
const dataTableRowNameSchema = z.string().trim().min(1).max(256);
|
|
592
|
+
const dataTableRowOperationSchema = z.enum(BRIDGE_DATA_TABLE_ROW_OPERATIONS);
|
|
593
|
+
const dataTableWriteStateSchema = z.enum(BRIDGE_DATA_TABLE_WRITE_STATES);
|
|
594
|
+
const dataTableFormatSchema = z.enum(BRIDGE_DATA_TABLE_FORMATS);
|
|
595
|
+
const dataTableValueMapSchema = z.record(z.string().trim().min(1).max(256), z.string().max(BRIDGE_DATA_TABLE_VALUE_MAX_CHARS)).refine((value) => Object.keys(value).length <= 200, { message: `A write carries at most ${String(200)} columns.` });
|
|
596
|
+
const dataTableImportContentSchema = z.string().min(1).max(BRIDGE_DATA_TABLE_MAX_IMPORT_CHARS);
|
|
597
|
+
const dataTableAssetNameSchema = z.string().trim().min(1).max(256).refine((value) => !value.includes("/") && !value.includes("."), { message: "An asset name must not contain a path separator; use destinationPath to move the asset." });
|
|
598
|
+
const vectorInputSchema = z.object({
|
|
599
|
+
x: z.number().default(0),
|
|
600
|
+
y: z.number().default(0),
|
|
601
|
+
z: z.number().default(0)
|
|
602
|
+
});
|
|
603
|
+
const rotatorInputSchema = z.object({
|
|
604
|
+
pitch: z.number().default(0),
|
|
605
|
+
roll: z.number().default(0),
|
|
606
|
+
yaw: z.number().default(0)
|
|
607
|
+
});
|
|
608
|
+
const transformInputSchema = z.object({
|
|
609
|
+
location: vectorInputSchema.default({
|
|
610
|
+
x: 0,
|
|
611
|
+
y: 0,
|
|
612
|
+
z: 0
|
|
613
|
+
}),
|
|
614
|
+
rotation: rotatorInputSchema.default({
|
|
615
|
+
pitch: 0,
|
|
616
|
+
roll: 0,
|
|
617
|
+
yaw: 0
|
|
618
|
+
}),
|
|
619
|
+
scale: vectorInputSchema.default({
|
|
620
|
+
x: 1,
|
|
621
|
+
y: 1,
|
|
622
|
+
z: 1
|
|
623
|
+
})
|
|
624
|
+
});
|
|
514
625
|
const memoryMegabytesSchema = z.number().min(0);
|
|
515
626
|
const frameTimingMillisecondsSchema = z.number().min(0);
|
|
516
627
|
z.object({
|
|
517
628
|
requestId: requestIdSchema,
|
|
518
629
|
type: z.literal(BRIDGE_PING_REQUEST_TYPE),
|
|
519
|
-
version: z.literal(
|
|
630
|
+
version: z.literal(2)
|
|
520
631
|
});
|
|
521
632
|
z.object({
|
|
522
633
|
requestId: requestIdSchema,
|
|
523
634
|
type: z.literal(BRIDGE_START_LIVE_COMPILE_REQUEST_TYPE),
|
|
524
|
-
version: z.literal(
|
|
635
|
+
version: z.literal(2)
|
|
525
636
|
});
|
|
526
637
|
z.object({
|
|
527
638
|
requestId: requestIdSchema,
|
|
528
639
|
type: z.literal(BRIDGE_START_HOT_RELOAD_REQUEST_TYPE),
|
|
529
|
-
version: z.literal(
|
|
640
|
+
version: z.literal(2)
|
|
530
641
|
});
|
|
531
642
|
const bridgeGetCompileStatusRequestSchema = z.object({
|
|
532
643
|
compileJobId: compileJobIdSchema,
|
|
533
644
|
requestId: requestIdSchema,
|
|
534
645
|
type: z.literal(BRIDGE_GET_COMPILE_STATUS_REQUEST_TYPE),
|
|
535
|
-
version: z.literal(
|
|
646
|
+
version: z.literal(2)
|
|
536
647
|
});
|
|
537
648
|
const bridgeGetCrashCallstackRequestSchema = z.object({
|
|
538
649
|
maxFrames: crashMaxFramesSchema,
|
|
539
650
|
maxRecords: crashMaxRecordsSchema,
|
|
540
651
|
requestId: requestIdSchema,
|
|
541
652
|
type: z.literal(BRIDGE_GET_CRASH_CALLSTACK_REQUEST_TYPE),
|
|
542
|
-
version: z.literal(
|
|
653
|
+
version: z.literal(2)
|
|
543
654
|
});
|
|
544
655
|
const bridgeErrorSchema = z.object({
|
|
545
656
|
code: z.string().trim().min(1),
|
|
@@ -567,21 +678,21 @@ const bridgeLogSubscribeRequestSchema = z.union([
|
|
|
567
678
|
requestId: requestIdSchema,
|
|
568
679
|
source: z.literal("output_log"),
|
|
569
680
|
type: z.literal(BRIDGE_SUBSCRIBE_LOGS_REQUEST_TYPE),
|
|
570
|
-
version: z.literal(
|
|
681
|
+
version: z.literal(2)
|
|
571
682
|
}),
|
|
572
683
|
z.object({
|
|
573
684
|
filters: bridgeMessageLogFilterSchema,
|
|
574
685
|
requestId: requestIdSchema,
|
|
575
686
|
source: z.literal("message_log"),
|
|
576
687
|
type: z.literal(BRIDGE_SUBSCRIBE_LOGS_REQUEST_TYPE),
|
|
577
|
-
version: z.literal(
|
|
688
|
+
version: z.literal(2)
|
|
578
689
|
}),
|
|
579
690
|
z.object({
|
|
580
691
|
filters: bridgeDeviceOutputLogFilterSchema,
|
|
581
692
|
requestId: requestIdSchema,
|
|
582
693
|
source: z.literal("device_output_log"),
|
|
583
694
|
type: z.literal(BRIDGE_SUBSCRIBE_LOGS_REQUEST_TYPE),
|
|
584
|
-
version: z.literal(
|
|
695
|
+
version: z.literal(2)
|
|
585
696
|
})
|
|
586
697
|
]);
|
|
587
698
|
const bridgeLogDrainRequestSchema = z.object({
|
|
@@ -590,13 +701,13 @@ const bridgeLogDrainRequestSchema = z.object({
|
|
|
590
701
|
requestId: requestIdSchema,
|
|
591
702
|
subscriptionId: subscriptionIdSchema,
|
|
592
703
|
type: z.literal(BRIDGE_DRAIN_LOGS_REQUEST_TYPE),
|
|
593
|
-
version: z.literal(
|
|
704
|
+
version: z.literal(2)
|
|
594
705
|
});
|
|
595
706
|
z.object({
|
|
596
707
|
requestId: requestIdSchema,
|
|
597
708
|
subscriptionId: subscriptionIdSchema,
|
|
598
709
|
type: z.literal(BRIDGE_UNSUBSCRIBE_LOGS_REQUEST_TYPE),
|
|
599
|
-
version: z.literal(
|
|
710
|
+
version: z.literal(2)
|
|
600
711
|
});
|
|
601
712
|
const bridgeStartPieRequestSchema = z.object({
|
|
602
713
|
map: pieMapSchema.optional(),
|
|
@@ -606,31 +717,31 @@ const bridgeStartPieRequestSchema = z.object({
|
|
|
606
717
|
requestId: requestIdSchema,
|
|
607
718
|
runUnderOneProcess: z.boolean().optional(),
|
|
608
719
|
type: z.literal(BRIDGE_START_PIE_REQUEST_TYPE),
|
|
609
|
-
version: z.literal(
|
|
720
|
+
version: z.literal(2)
|
|
610
721
|
});
|
|
611
722
|
const bridgeGetPieStatusRequestSchema = z.object({
|
|
612
723
|
pieSessionId: pieSessionIdSchema.optional(),
|
|
613
724
|
requestId: requestIdSchema,
|
|
614
725
|
type: z.literal(BRIDGE_GET_PIE_STATUS_REQUEST_TYPE),
|
|
615
|
-
version: z.literal(
|
|
726
|
+
version: z.literal(2)
|
|
616
727
|
});
|
|
617
728
|
z.object({
|
|
618
729
|
requestId: requestIdSchema,
|
|
619
730
|
type: z.literal(BRIDGE_LIST_LAUNCH_DEVICES_REQUEST_TYPE),
|
|
620
|
-
version: z.literal(
|
|
731
|
+
version: z.literal(2)
|
|
621
732
|
});
|
|
622
733
|
const bridgeLaunchOnDeviceRequestSchema = z.object({
|
|
623
734
|
deviceId: launchDeviceIdSchema,
|
|
624
735
|
map: pieMapSchema.optional(),
|
|
625
736
|
requestId: requestIdSchema,
|
|
626
737
|
type: z.literal(BRIDGE_LAUNCH_ON_DEVICE_REQUEST_TYPE),
|
|
627
|
-
version: z.literal(
|
|
738
|
+
version: z.literal(2)
|
|
628
739
|
});
|
|
629
740
|
const bridgeStopPieRequestSchema = z.object({
|
|
630
741
|
pieSessionId: pieSessionIdSchema.optional(),
|
|
631
742
|
requestId: requestIdSchema,
|
|
632
743
|
type: z.literal(BRIDGE_STOP_PIE_REQUEST_TYPE),
|
|
633
|
-
version: z.literal(
|
|
744
|
+
version: z.literal(2)
|
|
634
745
|
});
|
|
635
746
|
const bridgeListAutomationTestsRequestSchema = z.object({
|
|
636
747
|
cursor: automationTestCursorSchema.default(0),
|
|
@@ -639,7 +750,7 @@ const bridgeListAutomationTestsRequestSchema = z.object({
|
|
|
639
750
|
nameFilter: boundedStringSchema.optional(),
|
|
640
751
|
requestId: requestIdSchema,
|
|
641
752
|
type: z.literal(BRIDGE_LIST_AUTOMATION_TESTS_REQUEST_TYPE),
|
|
642
|
-
version: z.literal(
|
|
753
|
+
version: z.literal(2)
|
|
643
754
|
});
|
|
644
755
|
const bridgeAutomationTestSchema = z.object({
|
|
645
756
|
displayName: z.string(),
|
|
@@ -655,7 +766,7 @@ const bridgeStartAutomationRunRequestSchema = z.object({
|
|
|
655
766
|
requestId: requestIdSchema,
|
|
656
767
|
testNames: automationTestNamesSchema.default([]),
|
|
657
768
|
type: z.literal(BRIDGE_START_AUTOMATION_RUN_REQUEST_TYPE),
|
|
658
|
-
version: z.literal(
|
|
769
|
+
version: z.literal(2)
|
|
659
770
|
}).refine((value) => value.testNames.length > 0 || value.nameFilter !== void 0 && value.nameFilter.length > 0, {
|
|
660
771
|
message: "A start_automation_run request requires at least one of testNames or nameFilter.",
|
|
661
772
|
path: ["testNames"]
|
|
@@ -666,30 +777,30 @@ const bridgeGetAutomationRunStatusRequestSchema = z.object({
|
|
|
666
777
|
requestId: requestIdSchema,
|
|
667
778
|
testRunId: testRunIdSchema,
|
|
668
779
|
type: z.literal(BRIDGE_GET_AUTOMATION_RUN_STATUS_REQUEST_TYPE),
|
|
669
|
-
version: z.literal(
|
|
780
|
+
version: z.literal(2)
|
|
670
781
|
});
|
|
671
782
|
const bridgeCancelAutomationRunRequestSchema = z.object({
|
|
672
783
|
requestId: requestIdSchema,
|
|
673
784
|
testRunId: testRunIdSchema,
|
|
674
785
|
type: z.literal(BRIDGE_CANCEL_AUTOMATION_RUN_REQUEST_TYPE),
|
|
675
|
-
version: z.literal(
|
|
786
|
+
version: z.literal(2)
|
|
676
787
|
});
|
|
677
788
|
z.object({
|
|
678
789
|
requestId: requestIdSchema,
|
|
679
790
|
type: z.literal(BRIDGE_GET_EDITOR_STATE_REQUEST_TYPE),
|
|
680
|
-
version: z.literal(
|
|
791
|
+
version: z.literal(2)
|
|
681
792
|
});
|
|
682
793
|
const bridgeSaveDirtyPackagesRequestSchema = z.object({
|
|
683
794
|
requestId: requestIdSchema,
|
|
684
795
|
saveContentPackages: z.boolean().default(true),
|
|
685
796
|
saveMapPackages: z.boolean().default(true),
|
|
686
797
|
type: z.literal(BRIDGE_SAVE_DIRTY_PACKAGES_REQUEST_TYPE),
|
|
687
|
-
version: z.literal(
|
|
798
|
+
version: z.literal(2)
|
|
688
799
|
});
|
|
689
800
|
z.object({
|
|
690
801
|
requestId: requestIdSchema,
|
|
691
802
|
type: z.literal(BRIDGE_CAPTURE_VIEWPORT_REQUEST_TYPE),
|
|
692
|
-
version: z.literal(
|
|
803
|
+
version: z.literal(2)
|
|
693
804
|
});
|
|
694
805
|
const bridgeGetClassReflectionRequestSchema = z.object({
|
|
695
806
|
className: reflectedTypeNameSchema,
|
|
@@ -700,7 +811,7 @@ const bridgeGetClassReflectionRequestSchema = z.object({
|
|
|
700
811
|
propertyCursor: reflectionCursorSchema.default(0),
|
|
701
812
|
requestId: requestIdSchema,
|
|
702
813
|
type: z.literal(BRIDGE_GET_CLASS_REFLECTION_REQUEST_TYPE),
|
|
703
|
-
version: z.literal(
|
|
814
|
+
version: z.literal(2)
|
|
704
815
|
});
|
|
705
816
|
const bridgeGetCdoDefaultsRequestSchema = z.object({
|
|
706
817
|
className: reflectedTypeNameSchema,
|
|
@@ -710,30 +821,30 @@ const bridgeGetCdoDefaultsRequestSchema = z.object({
|
|
|
710
821
|
nameFilter: boundedStringSchema.optional(),
|
|
711
822
|
requestId: requestIdSchema,
|
|
712
823
|
type: z.literal(BRIDGE_GET_CDO_DEFAULTS_REQUEST_TYPE),
|
|
713
|
-
version: z.literal(
|
|
824
|
+
version: z.literal(2)
|
|
714
825
|
});
|
|
715
826
|
const bridgeExecConsoleCommandRequestSchema = z.object({
|
|
716
827
|
command: consoleCommandSchema,
|
|
717
828
|
requestId: requestIdSchema,
|
|
718
829
|
type: z.literal(BRIDGE_EXEC_CONSOLE_COMMAND_REQUEST_TYPE),
|
|
719
|
-
version: z.literal(
|
|
830
|
+
version: z.literal(2)
|
|
720
831
|
});
|
|
721
832
|
const bridgeStatSnapshotRequestSchema = z.object({
|
|
722
833
|
requestId: requestIdSchema,
|
|
723
834
|
type: z.literal(BRIDGE_STAT_SNAPSHOT_REQUEST_TYPE),
|
|
724
|
-
version: z.literal(
|
|
835
|
+
version: z.literal(2)
|
|
725
836
|
});
|
|
726
837
|
const bridgeStartTraceRequestSchema = z.object({
|
|
727
838
|
channels: traceChannelArraySchema.default([]),
|
|
728
839
|
fileName: traceFileNameSchema.optional(),
|
|
729
840
|
requestId: requestIdSchema,
|
|
730
841
|
type: z.literal(BRIDGE_START_TRACE_REQUEST_TYPE),
|
|
731
|
-
version: z.literal(
|
|
842
|
+
version: z.literal(2)
|
|
732
843
|
});
|
|
733
844
|
const bridgeStopTraceRequestSchema = z.object({
|
|
734
845
|
requestId: requestIdSchema,
|
|
735
846
|
type: z.literal(BRIDGE_STOP_TRACE_REQUEST_TYPE),
|
|
736
|
-
version: z.literal(
|
|
847
|
+
version: z.literal(2)
|
|
737
848
|
});
|
|
738
849
|
const bridgeCreateCppClassRequestSchema = z.object({
|
|
739
850
|
className: classNameSchema,
|
|
@@ -742,13 +853,13 @@ const bridgeCreateCppClassRequestSchema = z.object({
|
|
|
742
853
|
parentClass: parentClassSchema,
|
|
743
854
|
requestId: requestIdSchema,
|
|
744
855
|
type: z.literal(BRIDGE_CREATE_CPP_CLASS_REQUEST_TYPE),
|
|
745
|
-
version: z.literal(
|
|
856
|
+
version: z.literal(2)
|
|
746
857
|
});
|
|
747
858
|
const bridgeGetCreateClassStatusRequestSchema = z.object({
|
|
748
859
|
createClassJobId: createClassJobIdSchema,
|
|
749
860
|
requestId: requestIdSchema,
|
|
750
861
|
type: z.literal(BRIDGE_GET_CREATE_CLASS_STATUS_REQUEST_TYPE),
|
|
751
|
-
version: z.literal(
|
|
862
|
+
version: z.literal(2)
|
|
752
863
|
});
|
|
753
864
|
const bridgeFindAssetsRequestSchema = z.object({
|
|
754
865
|
classNames: assetPathArraySchema.default([]),
|
|
@@ -760,11 +871,215 @@ const bridgeFindAssetsRequestSchema = z.object({
|
|
|
760
871
|
recursivePaths: z.boolean().default(true),
|
|
761
872
|
requestId: requestIdSchema,
|
|
762
873
|
type: z.literal(BRIDGE_FIND_ASSETS_REQUEST_TYPE),
|
|
763
|
-
version: z.literal(
|
|
874
|
+
version: z.literal(2)
|
|
764
875
|
}).refine((value) => value.classNames.length > 0 || value.packagePaths.length > 0, {
|
|
765
876
|
message: "A find_assets request requires at least one of classNames or packagePaths.",
|
|
766
877
|
path: ["classNames"]
|
|
767
878
|
});
|
|
879
|
+
const bridgeListActorsRequestSchema = z.object({
|
|
880
|
+
classNames: actorClassFilterArraySchema.default([]),
|
|
881
|
+
cursor: levelCursorSchema.default(0),
|
|
882
|
+
levelName: boundedStringSchema.optional(),
|
|
883
|
+
maxResults: levelMaxResultsSchema,
|
|
884
|
+
nameFilter: boundedStringSchema.optional(),
|
|
885
|
+
requestId: requestIdSchema,
|
|
886
|
+
tag: boundedStringSchema.optional(),
|
|
887
|
+
type: z.literal(BRIDGE_LIST_ACTORS_REQUEST_TYPE),
|
|
888
|
+
version: z.literal(2)
|
|
889
|
+
});
|
|
890
|
+
const bridgeGetActorDetailsRequestSchema = z.object({
|
|
891
|
+
actorPath: actorPathSchema,
|
|
892
|
+
componentCursor: levelCursorSchema.default(0),
|
|
893
|
+
includeInherited: z.boolean().default(false),
|
|
894
|
+
maxResults: actorDetailMemberLimitSchema,
|
|
895
|
+
propertyCursor: levelCursorSchema.default(0),
|
|
896
|
+
requestId: requestIdSchema,
|
|
897
|
+
type: z.literal(BRIDGE_GET_ACTOR_DETAILS_REQUEST_TYPE),
|
|
898
|
+
version: z.literal(2)
|
|
899
|
+
});
|
|
900
|
+
const bridgeGetCurrentLevelRequestSchema = z.object({
|
|
901
|
+
requestId: requestIdSchema,
|
|
902
|
+
type: z.literal(BRIDGE_GET_CURRENT_LEVEL_REQUEST_TYPE),
|
|
903
|
+
version: z.literal(2)
|
|
904
|
+
});
|
|
905
|
+
const bridgeSpawnActorEntrySchema = z.object({
|
|
906
|
+
classPath: assetPathSchema,
|
|
907
|
+
folderPath: boundedStringSchema.optional(),
|
|
908
|
+
label: boundedStringSchema.optional(),
|
|
909
|
+
tags: actorTagArraySchema.default([]),
|
|
910
|
+
transform: transformInputSchema.default({
|
|
911
|
+
location: {
|
|
912
|
+
x: 0,
|
|
913
|
+
y: 0,
|
|
914
|
+
z: 0
|
|
915
|
+
},
|
|
916
|
+
rotation: {
|
|
917
|
+
pitch: 0,
|
|
918
|
+
roll: 0,
|
|
919
|
+
yaw: 0
|
|
920
|
+
},
|
|
921
|
+
scale: {
|
|
922
|
+
x: 1,
|
|
923
|
+
y: 1,
|
|
924
|
+
z: 1
|
|
925
|
+
}
|
|
926
|
+
})
|
|
927
|
+
});
|
|
928
|
+
const bridgeSpawnActorRequestSchema = z.object({
|
|
929
|
+
dryRun: z.boolean().default(false),
|
|
930
|
+
requestId: requestIdSchema,
|
|
931
|
+
spawns: z.array(bridgeSpawnActorEntrySchema).min(1).max(64),
|
|
932
|
+
type: z.literal(BRIDGE_SPAWN_ACTOR_REQUEST_TYPE),
|
|
933
|
+
version: z.literal(2)
|
|
934
|
+
});
|
|
935
|
+
const bridgeDestroyActorRequestSchema = z.object({
|
|
936
|
+
actorPaths: actorPathBatchSchema,
|
|
937
|
+
dryRun: z.boolean().default(false),
|
|
938
|
+
requestId: requestIdSchema,
|
|
939
|
+
type: z.literal(BRIDGE_DESTROY_ACTOR_REQUEST_TYPE),
|
|
940
|
+
version: z.literal(2)
|
|
941
|
+
});
|
|
942
|
+
const bridgeSetActorTransformEntrySchema = z.object({
|
|
943
|
+
actorPath: actorPathSchema,
|
|
944
|
+
location: vectorInputSchema.optional(),
|
|
945
|
+
rotation: rotatorInputSchema.optional(),
|
|
946
|
+
scale: vectorInputSchema.optional()
|
|
947
|
+
}).refine((entry) => entry.location !== void 0 || entry.rotation !== void 0 || entry.scale !== void 0, {
|
|
948
|
+
message: "A set_actor_transform entry must supply at least one of location, rotation or scale.",
|
|
949
|
+
path: ["location"]
|
|
950
|
+
});
|
|
951
|
+
const bridgeSetActorTransformRequestSchema = z.object({
|
|
952
|
+
dryRun: z.boolean().default(false),
|
|
953
|
+
requestId: requestIdSchema,
|
|
954
|
+
transforms: z.array(bridgeSetActorTransformEntrySchema).min(1).max(64),
|
|
955
|
+
type: z.literal(BRIDGE_SET_ACTOR_TRANSFORM_REQUEST_TYPE),
|
|
956
|
+
version: z.literal(2)
|
|
957
|
+
});
|
|
958
|
+
const bridgeSetActorPropertyEntrySchema = z.object({
|
|
959
|
+
actorPath: actorPathSchema,
|
|
960
|
+
propertyPath: z.string().trim().min(1).max(512),
|
|
961
|
+
value: z.string().max(BRIDGE_PROPERTY_VALUE_MAX_CHARS)
|
|
962
|
+
});
|
|
963
|
+
const bridgeSetActorPropertyRequestSchema = z.object({
|
|
964
|
+
dryRun: z.boolean().default(false),
|
|
965
|
+
properties: z.array(bridgeSetActorPropertyEntrySchema).min(1).max(64),
|
|
966
|
+
requestId: requestIdSchema,
|
|
967
|
+
type: z.literal(BRIDGE_SET_ACTOR_PROPERTY_REQUEST_TYPE),
|
|
968
|
+
version: z.literal(2)
|
|
969
|
+
});
|
|
970
|
+
const bridgeSelectActorsRequestSchema = z.object({
|
|
971
|
+
actorPaths: z.array(actorPathSchema).max(64).default([]),
|
|
972
|
+
addToSelection: z.boolean().default(false),
|
|
973
|
+
dryRun: z.boolean().default(false),
|
|
974
|
+
requestId: requestIdSchema,
|
|
975
|
+
type: z.literal(BRIDGE_SELECT_ACTORS_REQUEST_TYPE),
|
|
976
|
+
version: z.literal(2)
|
|
977
|
+
});
|
|
978
|
+
const bridgeUndoRequestSchema = z.object({
|
|
979
|
+
requestId: requestIdSchema,
|
|
980
|
+
type: z.literal(BRIDGE_UNDO_REQUEST_TYPE),
|
|
981
|
+
version: z.literal(2)
|
|
982
|
+
});
|
|
983
|
+
const bridgeRedoRequestSchema = z.object({
|
|
984
|
+
requestId: requestIdSchema,
|
|
985
|
+
type: z.literal(BRIDGE_REDO_REQUEST_TYPE),
|
|
986
|
+
version: z.literal(2)
|
|
987
|
+
});
|
|
988
|
+
const bridgeOpenLevelRequestSchema = z.object({
|
|
989
|
+
dryRun: z.boolean().default(false),
|
|
990
|
+
levelPath: levelPathSchema,
|
|
991
|
+
requestId: requestIdSchema,
|
|
992
|
+
saveDirtyPackages: z.boolean().default(false),
|
|
993
|
+
type: z.literal(BRIDGE_OPEN_LEVEL_REQUEST_TYPE),
|
|
994
|
+
version: z.literal(2)
|
|
995
|
+
});
|
|
996
|
+
const bridgeGetOpenLevelStatusRequestSchema = z.object({
|
|
997
|
+
openLevelJobId: openLevelJobIdSchema,
|
|
998
|
+
requestId: requestIdSchema,
|
|
999
|
+
type: z.literal(BRIDGE_GET_OPEN_LEVEL_STATUS_REQUEST_TYPE),
|
|
1000
|
+
version: z.literal(2)
|
|
1001
|
+
});
|
|
1002
|
+
const bridgeReadDataTableRequestSchema = z.object({
|
|
1003
|
+
assetPath: assetPathSchema,
|
|
1004
|
+
cursor: dataTableCursorSchema.default(0),
|
|
1005
|
+
loadIfNeeded: z.boolean().default(true),
|
|
1006
|
+
maxRows: dataTableMaxRowsSchema,
|
|
1007
|
+
rowNameFilter: boundedStringSchema.optional(),
|
|
1008
|
+
requestId: requestIdSchema,
|
|
1009
|
+
type: z.literal(BRIDGE_READ_DATA_TABLE_REQUEST_TYPE),
|
|
1010
|
+
version: z.literal(2)
|
|
1011
|
+
});
|
|
1012
|
+
const bridgeWriteDataTableRowRequestSchema = z.object({
|
|
1013
|
+
assetPath: assetPathSchema,
|
|
1014
|
+
dryRun: z.boolean().default(false),
|
|
1015
|
+
operation: dataTableRowOperationSchema,
|
|
1016
|
+
rowName: dataTableRowNameSchema,
|
|
1017
|
+
values: dataTableValueMapSchema.optional(),
|
|
1018
|
+
requestId: requestIdSchema,
|
|
1019
|
+
type: z.literal(BRIDGE_WRITE_DATA_TABLE_ROW_REQUEST_TYPE),
|
|
1020
|
+
version: z.literal(2)
|
|
1021
|
+
}).refine((value) => value.operation !== "upsert" || value.values !== void 0, {
|
|
1022
|
+
message: "A write_data_table_row upsert requires values.",
|
|
1023
|
+
path: ["values"]
|
|
1024
|
+
}).refine((value) => value.operation !== "delete" || value.values === void 0, {
|
|
1025
|
+
message: "A write_data_table_row delete must not carry values.",
|
|
1026
|
+
path: ["values"]
|
|
1027
|
+
});
|
|
1028
|
+
const bridgeExportDataTableRequestSchema = z.object({
|
|
1029
|
+
assetPath: assetPathSchema,
|
|
1030
|
+
cursor: dataTableCursorSchema.default(0),
|
|
1031
|
+
format: dataTableFormatSchema.default("json"),
|
|
1032
|
+
loadIfNeeded: z.boolean().default(true),
|
|
1033
|
+
requestId: requestIdSchema,
|
|
1034
|
+
type: z.literal(BRIDGE_EXPORT_DATA_TABLE_REQUEST_TYPE),
|
|
1035
|
+
version: z.literal(2)
|
|
1036
|
+
});
|
|
1037
|
+
const bridgeImportDataTableRequestSchema = z.object({
|
|
1038
|
+
assetPath: assetPathSchema,
|
|
1039
|
+
content: dataTableImportContentSchema,
|
|
1040
|
+
dryRun: z.boolean().default(false),
|
|
1041
|
+
format: dataTableFormatSchema.default("json"),
|
|
1042
|
+
requestId: requestIdSchema,
|
|
1043
|
+
type: z.literal(BRIDGE_IMPORT_DATA_TABLE_REQUEST_TYPE),
|
|
1044
|
+
version: z.literal(2)
|
|
1045
|
+
});
|
|
1046
|
+
const bridgeCreateDataTableRequestSchema = z.object({
|
|
1047
|
+
assetPath: assetPathSchema,
|
|
1048
|
+
dryRun: z.boolean().default(false),
|
|
1049
|
+
rowStructPath: assetPathSchema,
|
|
1050
|
+
requestId: requestIdSchema,
|
|
1051
|
+
type: z.literal(BRIDGE_CREATE_DATA_TABLE_REQUEST_TYPE),
|
|
1052
|
+
version: z.literal(2)
|
|
1053
|
+
});
|
|
1054
|
+
const bridgeRenameDataTableRequestSchema = z.object({
|
|
1055
|
+
assetPath: assetPathSchema,
|
|
1056
|
+
destinationPath: assetPathSchema.optional(),
|
|
1057
|
+
dryRun: z.boolean().default(false),
|
|
1058
|
+
newName: dataTableAssetNameSchema.optional(),
|
|
1059
|
+
requestId: requestIdSchema,
|
|
1060
|
+
type: z.literal(BRIDGE_RENAME_DATA_TABLE_REQUEST_TYPE),
|
|
1061
|
+
version: z.literal(2)
|
|
1062
|
+
}).refine((value) => value.newName !== void 0 || value.destinationPath !== void 0, {
|
|
1063
|
+
message: "A rename_data_table requires a newName, a destinationPath, or both.",
|
|
1064
|
+
path: ["newName"]
|
|
1065
|
+
});
|
|
1066
|
+
const bridgeDeleteDataTableRequestSchema = z.object({
|
|
1067
|
+
assetPath: assetPathSchema,
|
|
1068
|
+
dryRun: z.boolean().default(false),
|
|
1069
|
+
force: z.boolean().default(false),
|
|
1070
|
+
requestId: requestIdSchema,
|
|
1071
|
+
type: z.literal(BRIDGE_DELETE_DATA_TABLE_REQUEST_TYPE),
|
|
1072
|
+
version: z.literal(2)
|
|
1073
|
+
});
|
|
1074
|
+
const bridgeRenameDataTableRowRequestSchema = z.object({
|
|
1075
|
+
assetPath: assetPathSchema,
|
|
1076
|
+
dryRun: z.boolean().default(false),
|
|
1077
|
+
newRowName: dataTableRowNameSchema,
|
|
1078
|
+
rowName: dataTableRowNameSchema,
|
|
1079
|
+
requestId: requestIdSchema,
|
|
1080
|
+
type: z.literal(BRIDGE_RENAME_DATA_TABLE_ROW_REQUEST_TYPE),
|
|
1081
|
+
version: z.literal(2)
|
|
1082
|
+
});
|
|
768
1083
|
const bridgeGetAssetDependenciesRequestSchema = z.object({
|
|
769
1084
|
assetPath: assetPathSchema,
|
|
770
1085
|
categories: z.array(assetDependencyCategorySchema).max(BRIDGE_ASSET_DEPENDENCY_CATEGORIES.length).default(["package"]),
|
|
@@ -774,7 +1089,7 @@ const bridgeGetAssetDependenciesRequestSchema = z.object({
|
|
|
774
1089
|
referencerCursor: assetCursorSchema.default(0),
|
|
775
1090
|
requestId: requestIdSchema,
|
|
776
1091
|
type: z.literal(BRIDGE_GET_ASSET_DEPENDENCIES_REQUEST_TYPE),
|
|
777
|
-
version: z.literal(
|
|
1092
|
+
version: z.literal(2)
|
|
778
1093
|
});
|
|
779
1094
|
const bridgeFindBlueprintReferencesRequestSchema = z.object({
|
|
780
1095
|
className: assetPathSchema,
|
|
@@ -783,7 +1098,7 @@ const bridgeFindBlueprintReferencesRequestSchema = z.object({
|
|
|
783
1098
|
referenceKinds: z.array(blueprintReferenceKindSchema).max(BRIDGE_BLUEPRINT_REFERENCE_KINDS.length).default([]),
|
|
784
1099
|
requestId: requestIdSchema,
|
|
785
1100
|
type: z.literal(BRIDGE_FIND_BLUEPRINT_REFERENCES_REQUEST_TYPE),
|
|
786
|
-
version: z.literal(
|
|
1101
|
+
version: z.literal(2)
|
|
787
1102
|
});
|
|
788
1103
|
const bridgeGetBlueprintSummaryRequestSchema = z.object({
|
|
789
1104
|
blueprintPath: assetPathSchema,
|
|
@@ -795,7 +1110,7 @@ const bridgeGetBlueprintSummaryRequestSchema = z.object({
|
|
|
795
1110
|
requestId: requestIdSchema,
|
|
796
1111
|
type: z.literal(BRIDGE_GET_BLUEPRINT_SUMMARY_REQUEST_TYPE),
|
|
797
1112
|
variableCursor: assetCursorSchema.default(0),
|
|
798
|
-
version: z.literal(
|
|
1113
|
+
version: z.literal(2)
|
|
799
1114
|
});
|
|
800
1115
|
const bridgeGetBlueprintGraphRequestSchema = z.object({
|
|
801
1116
|
blueprintPath: assetPathSchema,
|
|
@@ -805,7 +1120,7 @@ const bridgeGetBlueprintGraphRequestSchema = z.object({
|
|
|
805
1120
|
nodeCursor: assetCursorSchema.default(0),
|
|
806
1121
|
requestId: requestIdSchema,
|
|
807
1122
|
type: z.literal(BRIDGE_GET_BLUEPRINT_GRAPH_REQUEST_TYPE),
|
|
808
|
-
version: z.literal(
|
|
1123
|
+
version: z.literal(2)
|
|
809
1124
|
});
|
|
810
1125
|
const bridgeGetBlueprintCompileErrorsRequestSchema = z.object({
|
|
811
1126
|
blueprintPaths: blueprintPathArraySchema,
|
|
@@ -813,13 +1128,13 @@ const bridgeGetBlueprintCompileErrorsRequestSchema = z.object({
|
|
|
813
1128
|
maxResults: assetMaxResultsSchema,
|
|
814
1129
|
requestId: requestIdSchema,
|
|
815
1130
|
type: z.literal(BRIDGE_GET_BLUEPRINT_COMPILE_ERRORS_REQUEST_TYPE),
|
|
816
|
-
version: z.literal(
|
|
1131
|
+
version: z.literal(2)
|
|
817
1132
|
});
|
|
818
1133
|
const bridgeCompileBlueprintRequestSchema = z.object({
|
|
819
1134
|
blueprintPaths: blueprintPathArraySchema,
|
|
820
1135
|
requestId: requestIdSchema,
|
|
821
1136
|
type: z.literal(BRIDGE_COMPILE_BLUEPRINT_REQUEST_TYPE),
|
|
822
|
-
version: z.literal(
|
|
1137
|
+
version: z.literal(2)
|
|
823
1138
|
});
|
|
824
1139
|
const bridgeGetBlueprintCompileStatusRequestSchema = z.object({
|
|
825
1140
|
compileJobId: blueprintCompileJobIdSchema,
|
|
@@ -827,7 +1142,7 @@ const bridgeGetBlueprintCompileStatusRequestSchema = z.object({
|
|
|
827
1142
|
maxResults: assetMaxResultsSchema,
|
|
828
1143
|
requestId: requestIdSchema,
|
|
829
1144
|
type: z.literal(BRIDGE_GET_BLUEPRINT_COMPILE_STATUS_REQUEST_TYPE),
|
|
830
|
-
version: z.literal(
|
|
1145
|
+
version: z.literal(2)
|
|
831
1146
|
});
|
|
832
1147
|
const bridgeGetConfigValueRequestSchema = z.object({
|
|
833
1148
|
file: configFileSchema,
|
|
@@ -835,7 +1150,7 @@ const bridgeGetConfigValueRequestSchema = z.object({
|
|
|
835
1150
|
requestId: requestIdSchema,
|
|
836
1151
|
section: configSectionSchema,
|
|
837
1152
|
type: z.literal(BRIDGE_GET_CONFIG_VALUE_REQUEST_TYPE),
|
|
838
|
-
version: z.literal(
|
|
1153
|
+
version: z.literal(2)
|
|
839
1154
|
});
|
|
840
1155
|
const bridgeSetConfigValueRequestSchema = z.object({
|
|
841
1156
|
file: configFileSchema,
|
|
@@ -845,7 +1160,7 @@ const bridgeSetConfigValueRequestSchema = z.object({
|
|
|
845
1160
|
section: configSectionSchema,
|
|
846
1161
|
type: z.literal(BRIDGE_SET_CONFIG_VALUE_REQUEST_TYPE),
|
|
847
1162
|
value: configValueSchema,
|
|
848
|
-
version: z.literal(
|
|
1163
|
+
version: z.literal(2)
|
|
849
1164
|
});
|
|
850
1165
|
const bridgeListConfigSectionRequestSchema = z.object({
|
|
851
1166
|
cursor: assetCursorSchema.default(0),
|
|
@@ -854,7 +1169,7 @@ const bridgeListConfigSectionRequestSchema = z.object({
|
|
|
854
1169
|
requestId: requestIdSchema,
|
|
855
1170
|
section: configSectionSchema,
|
|
856
1171
|
type: z.literal(BRIDGE_LIST_CONFIG_SECTION_REQUEST_TYPE),
|
|
857
|
-
version: z.literal(
|
|
1172
|
+
version: z.literal(2)
|
|
858
1173
|
});
|
|
859
1174
|
const bridgePingSuccessResponseSchema = z.object({
|
|
860
1175
|
ok: z.literal(true),
|
|
@@ -864,7 +1179,7 @@ const bridgePingSuccessResponseSchema = z.object({
|
|
|
864
1179
|
projectPath: z.string().trim().min(1),
|
|
865
1180
|
requestId: requestIdSchema,
|
|
866
1181
|
type: z.literal(BRIDGE_PING_REQUEST_TYPE),
|
|
867
|
-
version: z.literal(
|
|
1182
|
+
version: z.literal(2)
|
|
868
1183
|
});
|
|
869
1184
|
const bridgeLogEventSchema = z.object({
|
|
870
1185
|
category: z.string().trim().min(1).optional(),
|
|
@@ -884,7 +1199,7 @@ const bridgeLogSubscribeSuccessResponseSchema = z.object({
|
|
|
884
1199
|
source: logSourceSchema,
|
|
885
1200
|
subscriptionId: subscriptionIdSchema,
|
|
886
1201
|
type: z.literal(BRIDGE_SUBSCRIBE_LOGS_REQUEST_TYPE),
|
|
887
|
-
version: z.literal(
|
|
1202
|
+
version: z.literal(2)
|
|
888
1203
|
});
|
|
889
1204
|
const bridgeLogDrainSuccessResponseSchema = z.object({
|
|
890
1205
|
droppedCount: z.number().int().min(0),
|
|
@@ -895,14 +1210,14 @@ const bridgeLogDrainSuccessResponseSchema = z.object({
|
|
|
895
1210
|
source: logSourceSchema,
|
|
896
1211
|
subscriptionId: subscriptionIdSchema,
|
|
897
1212
|
type: z.literal(BRIDGE_DRAIN_LOGS_REQUEST_TYPE),
|
|
898
|
-
version: z.literal(
|
|
1213
|
+
version: z.literal(2)
|
|
899
1214
|
});
|
|
900
1215
|
const bridgeLogUnsubscribeSuccessResponseSchema = z.object({
|
|
901
1216
|
ok: z.literal(true),
|
|
902
1217
|
requestId: requestIdSchema,
|
|
903
1218
|
subscriptionId: subscriptionIdSchema,
|
|
904
1219
|
type: z.literal(BRIDGE_UNSUBSCRIBE_LOGS_REQUEST_TYPE),
|
|
905
|
-
version: z.literal(
|
|
1220
|
+
version: z.literal(2)
|
|
906
1221
|
});
|
|
907
1222
|
const bridgeStartPieSuccessResponseSchema = z.object({
|
|
908
1223
|
message: z.string().trim().min(1).optional(),
|
|
@@ -911,7 +1226,7 @@ const bridgeStartPieSuccessResponseSchema = z.object({
|
|
|
911
1226
|
requestId: requestIdSchema,
|
|
912
1227
|
state: pieStateSchema,
|
|
913
1228
|
type: z.literal(BRIDGE_START_PIE_REQUEST_TYPE),
|
|
914
|
-
version: z.literal(
|
|
1229
|
+
version: z.literal(2)
|
|
915
1230
|
});
|
|
916
1231
|
const bridgeGetPieStatusSuccessResponseSchema = z.object({
|
|
917
1232
|
errorCount: z.number().int().min(0).optional(),
|
|
@@ -922,7 +1237,7 @@ const bridgeGetPieStatusSuccessResponseSchema = z.object({
|
|
|
922
1237
|
startedAt: z.string().trim().min(1).optional(),
|
|
923
1238
|
state: pieStatusStateSchema,
|
|
924
1239
|
type: z.literal(BRIDGE_GET_PIE_STATUS_REQUEST_TYPE),
|
|
925
|
-
version: z.literal(
|
|
1240
|
+
version: z.literal(2)
|
|
926
1241
|
});
|
|
927
1242
|
const bridgeLaunchDeviceSchema = z.object({
|
|
928
1243
|
deviceId: z.string(),
|
|
@@ -936,7 +1251,7 @@ const bridgeListLaunchDevicesSuccessResponseSchema = z.object({
|
|
|
936
1251
|
ok: z.literal(true),
|
|
937
1252
|
requestId: requestIdSchema,
|
|
938
1253
|
type: z.literal(BRIDGE_LIST_LAUNCH_DEVICES_REQUEST_TYPE),
|
|
939
|
-
version: z.literal(
|
|
1254
|
+
version: z.literal(2)
|
|
940
1255
|
});
|
|
941
1256
|
const bridgeLaunchOnDeviceSuccessResponseSchema = z.object({
|
|
942
1257
|
launchSessionId: pieSessionIdSchema,
|
|
@@ -945,7 +1260,7 @@ const bridgeLaunchOnDeviceSuccessResponseSchema = z.object({
|
|
|
945
1260
|
requestId: requestIdSchema,
|
|
946
1261
|
state: launchStateSchema,
|
|
947
1262
|
type: z.literal(BRIDGE_LAUNCH_ON_DEVICE_REQUEST_TYPE),
|
|
948
|
-
version: z.literal(
|
|
1263
|
+
version: z.literal(2)
|
|
949
1264
|
});
|
|
950
1265
|
const bridgeStopPieSuccessResponseSchema = z.object({
|
|
951
1266
|
message: z.string().trim().min(1).optional(),
|
|
@@ -954,7 +1269,7 @@ const bridgeStopPieSuccessResponseSchema = z.object({
|
|
|
954
1269
|
state: pieStatusStateSchema,
|
|
955
1270
|
stopped: z.boolean(),
|
|
956
1271
|
type: z.literal(BRIDGE_STOP_PIE_REQUEST_TYPE),
|
|
957
|
-
version: z.literal(
|
|
1272
|
+
version: z.literal(2)
|
|
958
1273
|
}).refine((value) => !value.stopped || value.state === "stopped", {
|
|
959
1274
|
message: "A stop_pie response with stopped=true must report state 'stopped'.",
|
|
960
1275
|
path: ["state"]
|
|
@@ -966,7 +1281,7 @@ const bridgeStartLiveCompileSuccessResponseSchema = z.object({
|
|
|
966
1281
|
requestId: requestIdSchema,
|
|
967
1282
|
state: liveCompileStateSchema,
|
|
968
1283
|
type: z.literal(BRIDGE_START_LIVE_COMPILE_REQUEST_TYPE),
|
|
969
|
-
version: z.literal(
|
|
1284
|
+
version: z.literal(2)
|
|
970
1285
|
});
|
|
971
1286
|
const bridgeStartHotReloadSuccessResponseSchema = z.object({
|
|
972
1287
|
compileJobId: z.string().trim().min(1),
|
|
@@ -975,7 +1290,7 @@ const bridgeStartHotReloadSuccessResponseSchema = z.object({
|
|
|
975
1290
|
requestId: requestIdSchema,
|
|
976
1291
|
state: hotReloadStateSchema,
|
|
977
1292
|
type: z.literal(BRIDGE_START_HOT_RELOAD_REQUEST_TYPE),
|
|
978
|
-
version: z.literal(
|
|
1293
|
+
version: z.literal(2)
|
|
979
1294
|
});
|
|
980
1295
|
const bridgeCompileDiagnosticSchema = z.object({
|
|
981
1296
|
file: z.string().trim().min(1).optional(),
|
|
@@ -994,7 +1309,7 @@ const bridgeGetCompileStatusSuccessResponseSchema = z.object({
|
|
|
994
1309
|
restartReason: z.string().trim().min(1).optional(),
|
|
995
1310
|
state: compileStatusStateSchema,
|
|
996
1311
|
type: z.literal(BRIDGE_GET_COMPILE_STATUS_REQUEST_TYPE),
|
|
997
|
-
version: z.literal(
|
|
1312
|
+
version: z.literal(2),
|
|
998
1313
|
warningCount: z.number().int().min(0),
|
|
999
1314
|
warnings: z.array(bridgeCompileDiagnosticSchema)
|
|
1000
1315
|
}).superRefine((value, ctx) => {
|
|
@@ -1023,7 +1338,7 @@ const bridgeListAutomationTestsSuccessResponseSchema = z.object({
|
|
|
1023
1338
|
totalCount: z.number().int().min(0),
|
|
1024
1339
|
truncated: z.boolean(),
|
|
1025
1340
|
type: z.literal(BRIDGE_LIST_AUTOMATION_TESTS_REQUEST_TYPE),
|
|
1026
|
-
version: z.literal(
|
|
1341
|
+
version: z.literal(2)
|
|
1027
1342
|
});
|
|
1028
1343
|
const bridgeStartAutomationRunSuccessResponseSchema = z.object({
|
|
1029
1344
|
message: nonEmptyStringSchema.optional(),
|
|
@@ -1033,7 +1348,7 @@ const bridgeStartAutomationRunSuccessResponseSchema = z.object({
|
|
|
1033
1348
|
state: automationRunStateSchema,
|
|
1034
1349
|
testRunId: testRunIdSchema,
|
|
1035
1350
|
type: z.literal(BRIDGE_START_AUTOMATION_RUN_REQUEST_TYPE),
|
|
1036
|
-
version: z.literal(
|
|
1351
|
+
version: z.literal(2)
|
|
1037
1352
|
});
|
|
1038
1353
|
const bridgeAutomationResultEntrySchema = z.object({
|
|
1039
1354
|
file: z.string().optional(),
|
|
@@ -1067,7 +1382,7 @@ const bridgeGetAutomationRunStatusSuccessResponseSchema = z.object({
|
|
|
1067
1382
|
totalCount: z.number().int().min(0),
|
|
1068
1383
|
truncated: z.boolean(),
|
|
1069
1384
|
type: z.literal(BRIDGE_GET_AUTOMATION_RUN_STATUS_REQUEST_TYPE),
|
|
1070
|
-
version: z.literal(
|
|
1385
|
+
version: z.literal(2)
|
|
1071
1386
|
});
|
|
1072
1387
|
const bridgeCancelAutomationRunSuccessResponseSchema = z.object({
|
|
1073
1388
|
cancelled: z.boolean(),
|
|
@@ -1077,7 +1392,7 @@ const bridgeCancelAutomationRunSuccessResponseSchema = z.object({
|
|
|
1077
1392
|
state: cancelAutomationRunStateSchema,
|
|
1078
1393
|
testRunId: testRunIdSchema,
|
|
1079
1394
|
type: z.literal(BRIDGE_CANCEL_AUTOMATION_RUN_REQUEST_TYPE),
|
|
1080
|
-
version: z.literal(
|
|
1395
|
+
version: z.literal(2)
|
|
1081
1396
|
}).refine((value) => value.cancelled === (value.state === "cancelled"), {
|
|
1082
1397
|
message: "A cancel_automation_run response must report cancelled=true exactly when state is 'cancelled'.",
|
|
1083
1398
|
path: ["state"]
|
|
@@ -1095,7 +1410,7 @@ const bridgeGetEditorStateSuccessResponseSchema = z.object({
|
|
|
1095
1410
|
selectedActors: selectedActorArraySchema,
|
|
1096
1411
|
truncated: z.boolean(),
|
|
1097
1412
|
type: z.literal(BRIDGE_GET_EDITOR_STATE_REQUEST_TYPE),
|
|
1098
|
-
version: z.literal(
|
|
1413
|
+
version: z.literal(2)
|
|
1099
1414
|
});
|
|
1100
1415
|
const bridgeSaveDirtyPackagesSuccessResponseSchema = z.object({
|
|
1101
1416
|
failedCount: z.number().int().min(0),
|
|
@@ -1107,7 +1422,7 @@ const bridgeSaveDirtyPackagesSuccessResponseSchema = z.object({
|
|
|
1107
1422
|
savedPackages: packageNameArraySchema,
|
|
1108
1423
|
truncated: z.boolean(),
|
|
1109
1424
|
type: z.literal(BRIDGE_SAVE_DIRTY_PACKAGES_REQUEST_TYPE),
|
|
1110
|
-
version: z.literal(
|
|
1425
|
+
version: z.literal(2)
|
|
1111
1426
|
});
|
|
1112
1427
|
const bridgeCaptureViewportSuccessResponseSchema = z.object({
|
|
1113
1428
|
height: z.number().int().min(1),
|
|
@@ -1115,7 +1430,7 @@ const bridgeCaptureViewportSuccessResponseSchema = z.object({
|
|
|
1115
1430
|
path: screenshotPathSchema,
|
|
1116
1431
|
requestId: requestIdSchema,
|
|
1117
1432
|
type: z.literal(BRIDGE_CAPTURE_VIEWPORT_REQUEST_TYPE),
|
|
1118
|
-
version: z.literal(
|
|
1433
|
+
version: z.literal(2),
|
|
1119
1434
|
width: z.number().int().min(1)
|
|
1120
1435
|
});
|
|
1121
1436
|
const bridgeReflectionMetadataEntrySchema = z.object({
|
|
@@ -1159,7 +1474,7 @@ const bridgeGetClassReflectionSuccessResponseSchema = z.object({
|
|
|
1159
1474
|
requestId: requestIdSchema,
|
|
1160
1475
|
truncated: z.boolean(),
|
|
1161
1476
|
type: z.literal(BRIDGE_GET_CLASS_REFLECTION_REQUEST_TYPE),
|
|
1162
|
-
version: z.literal(
|
|
1477
|
+
version: z.literal(2)
|
|
1163
1478
|
});
|
|
1164
1479
|
const bridgeCdoPropertyValueSchema = z.object({
|
|
1165
1480
|
name: z.string(),
|
|
@@ -1177,7 +1492,7 @@ const bridgeGetCdoDefaultsSuccessResponseSchema = z.object({
|
|
|
1177
1492
|
totalCount: z.number().int().min(0),
|
|
1178
1493
|
truncated: z.boolean(),
|
|
1179
1494
|
type: z.literal(BRIDGE_GET_CDO_DEFAULTS_REQUEST_TYPE),
|
|
1180
|
-
version: z.literal(
|
|
1495
|
+
version: z.literal(2)
|
|
1181
1496
|
});
|
|
1182
1497
|
const bridgeCrashFrameSchema = z.object({
|
|
1183
1498
|
address: nonEmptyStringSchema,
|
|
@@ -1204,7 +1519,7 @@ const bridgeGetCrashCallstackSuccessResponseSchema = z.object({
|
|
|
1204
1519
|
totalCount: z.number().int().min(0),
|
|
1205
1520
|
truncated: z.boolean(),
|
|
1206
1521
|
type: z.literal(BRIDGE_GET_CRASH_CALLSTACK_REQUEST_TYPE),
|
|
1207
|
-
version: z.literal(
|
|
1522
|
+
version: z.literal(2)
|
|
1208
1523
|
});
|
|
1209
1524
|
const bridgeExecConsoleCommandSuccessResponseSchema = z.object({
|
|
1210
1525
|
handled: z.boolean(),
|
|
@@ -1214,7 +1529,7 @@ const bridgeExecConsoleCommandSuccessResponseSchema = z.object({
|
|
|
1214
1529
|
target: execConsoleTargetSchema,
|
|
1215
1530
|
truncated: z.boolean(),
|
|
1216
1531
|
type: z.literal(BRIDGE_EXEC_CONSOLE_COMMAND_REQUEST_TYPE),
|
|
1217
|
-
version: z.literal(
|
|
1532
|
+
version: z.literal(2)
|
|
1218
1533
|
});
|
|
1219
1534
|
const bridgeMemorySnapshotSchema = z.object({
|
|
1220
1535
|
availablePhysicalMb: memoryMegabytesSchema,
|
|
@@ -1233,7 +1548,7 @@ const bridgeStatSnapshotSuccessResponseSchema = z.object({
|
|
|
1233
1548
|
renderThreadTimeMs: frameTimingMillisecondsSchema.optional(),
|
|
1234
1549
|
requestId: requestIdSchema,
|
|
1235
1550
|
type: z.literal(BRIDGE_STAT_SNAPSHOT_REQUEST_TYPE),
|
|
1236
|
-
version: z.literal(
|
|
1551
|
+
version: z.literal(2)
|
|
1237
1552
|
});
|
|
1238
1553
|
const bridgeStartTraceSuccessResponseSchema = z.object({
|
|
1239
1554
|
message: nonEmptyStringSchema.optional(),
|
|
@@ -1242,7 +1557,7 @@ const bridgeStartTraceSuccessResponseSchema = z.object({
|
|
|
1242
1557
|
state: startTraceStateSchema,
|
|
1243
1558
|
tracePath: nonEmptyStringSchema.optional(),
|
|
1244
1559
|
type: z.literal(BRIDGE_START_TRACE_REQUEST_TYPE),
|
|
1245
|
-
version: z.literal(
|
|
1560
|
+
version: z.literal(2)
|
|
1246
1561
|
}).refine((value) => value.state !== "unsupported" || value.tracePath === void 0, {
|
|
1247
1562
|
message: "A start_trace response with state 'unsupported' must not report a tracePath.",
|
|
1248
1563
|
path: ["tracePath"]
|
|
@@ -1254,7 +1569,7 @@ const bridgeStopTraceSuccessResponseSchema = z.object({
|
|
|
1254
1569
|
state: stopTraceStateSchema,
|
|
1255
1570
|
tracePath: nonEmptyStringSchema.optional(),
|
|
1256
1571
|
type: z.literal(BRIDGE_STOP_TRACE_REQUEST_TYPE),
|
|
1257
|
-
version: z.literal(
|
|
1572
|
+
version: z.literal(2)
|
|
1258
1573
|
}).refine((value) => value.state === "stopped" || value.tracePath === void 0, {
|
|
1259
1574
|
message: "A stop_trace response may only report a tracePath when state is 'stopped'.",
|
|
1260
1575
|
path: ["tracePath"]
|
|
@@ -1266,7 +1581,7 @@ const bridgeCreateCppClassSuccessResponseSchema = z.object({
|
|
|
1266
1581
|
requestId: requestIdSchema,
|
|
1267
1582
|
state: createClassStateSchema,
|
|
1268
1583
|
type: z.literal(BRIDGE_CREATE_CPP_CLASS_REQUEST_TYPE),
|
|
1269
|
-
version: z.literal(
|
|
1584
|
+
version: z.literal(2)
|
|
1270
1585
|
}).refine((value) => value.state === "creating" === (value.createClassJobId !== void 0), {
|
|
1271
1586
|
message: "A create_cpp_class response must carry createClassJobId exactly when state is 'creating'.",
|
|
1272
1587
|
path: ["createClassJobId"]
|
|
@@ -1283,7 +1598,7 @@ const bridgeGetCreateClassStatusSuccessResponseSchema = z.object({
|
|
|
1283
1598
|
sourcePath: sourceFilePathSchema.optional(),
|
|
1284
1599
|
state: createClassStatusStateSchema,
|
|
1285
1600
|
type: z.literal(BRIDGE_GET_CREATE_CLASS_STATUS_REQUEST_TYPE),
|
|
1286
|
-
version: z.literal(
|
|
1601
|
+
version: z.literal(2)
|
|
1287
1602
|
}).superRefine((value, ctx) => {
|
|
1288
1603
|
if (value.state !== "succeeded" && value.reloaded !== void 0) ctx.addIssue({
|
|
1289
1604
|
code: z.ZodIssueCode.custom,
|
|
@@ -1318,8 +1633,316 @@ const bridgeFindAssetsSuccessResponseSchema = z.object({
|
|
|
1318
1633
|
totalCount: z.number().int().min(0),
|
|
1319
1634
|
truncated: z.boolean(),
|
|
1320
1635
|
type: z.literal(BRIDGE_FIND_ASSETS_REQUEST_TYPE),
|
|
1321
|
-
version: z.literal(
|
|
1636
|
+
version: z.literal(2)
|
|
1637
|
+
});
|
|
1638
|
+
const bridgeActorSummarySchema = z.object({
|
|
1639
|
+
actorPath: z.string(),
|
|
1640
|
+
className: z.string(),
|
|
1641
|
+
folderPath: z.string(),
|
|
1642
|
+
label: z.string(),
|
|
1643
|
+
levelName: z.string()
|
|
1644
|
+
});
|
|
1645
|
+
const bridgeListActorsSuccessResponseSchema = z.object({
|
|
1646
|
+
actors: z.array(bridgeActorSummarySchema).max(100),
|
|
1647
|
+
message: z.string().trim().min(1).optional(),
|
|
1648
|
+
nextCursor: levelCursorSchema.optional(),
|
|
1649
|
+
ok: z.literal(true),
|
|
1650
|
+
requestId: requestIdSchema,
|
|
1651
|
+
totalCount: z.number().int().min(0),
|
|
1652
|
+
truncated: z.boolean(),
|
|
1653
|
+
type: z.literal(BRIDGE_LIST_ACTORS_REQUEST_TYPE),
|
|
1654
|
+
version: z.literal(2)
|
|
1655
|
+
});
|
|
1656
|
+
const bridgeVectorSchema = z.object({
|
|
1657
|
+
x: z.number(),
|
|
1658
|
+
y: z.number(),
|
|
1659
|
+
z: z.number()
|
|
1660
|
+
});
|
|
1661
|
+
const bridgeRotatorSchema = z.object({
|
|
1662
|
+
pitch: z.number(),
|
|
1663
|
+
roll: z.number(),
|
|
1664
|
+
yaw: z.number()
|
|
1665
|
+
});
|
|
1666
|
+
const bridgeTransformSchema = z.object({
|
|
1667
|
+
location: bridgeVectorSchema,
|
|
1668
|
+
rotation: bridgeRotatorSchema,
|
|
1669
|
+
scale: bridgeVectorSchema
|
|
1670
|
+
});
|
|
1671
|
+
const bridgeActorComponentSchema = z.object({
|
|
1672
|
+
className: z.string(),
|
|
1673
|
+
name: z.string(),
|
|
1674
|
+
parentName: z.string().optional(),
|
|
1675
|
+
relativeTransform: bridgeTransformSchema.optional()
|
|
1676
|
+
});
|
|
1677
|
+
const bridgeActorPropertySchema = z.object({
|
|
1678
|
+
isEditable: z.boolean(),
|
|
1679
|
+
name: z.string(),
|
|
1680
|
+
type: z.string(),
|
|
1681
|
+
value: z.string(),
|
|
1682
|
+
valueTruncated: z.boolean()
|
|
1683
|
+
});
|
|
1684
|
+
const bridgeGetActorDetailsSuccessResponseSchema = z.object({
|
|
1685
|
+
actorPath: z.string(),
|
|
1686
|
+
className: z.string(),
|
|
1687
|
+
componentCount: z.number().int().min(0),
|
|
1688
|
+
components: z.array(bridgeActorComponentSchema).max(200),
|
|
1689
|
+
componentTruncated: z.boolean(),
|
|
1690
|
+
folderPath: z.string(),
|
|
1691
|
+
label: z.string(),
|
|
1692
|
+
levelName: z.string(),
|
|
1693
|
+
nextComponentCursor: levelCursorSchema.optional(),
|
|
1694
|
+
nextPropertyCursor: levelCursorSchema.optional(),
|
|
1695
|
+
ok: z.literal(true),
|
|
1696
|
+
properties: z.array(bridgeActorPropertySchema).max(200),
|
|
1697
|
+
propertyCount: z.number().int().min(0),
|
|
1698
|
+
propertyTruncated: z.boolean(),
|
|
1699
|
+
requestId: requestIdSchema,
|
|
1700
|
+
transform: bridgeTransformSchema,
|
|
1701
|
+
type: z.literal(BRIDGE_GET_ACTOR_DETAILS_REQUEST_TYPE),
|
|
1702
|
+
version: z.literal(2)
|
|
1703
|
+
});
|
|
1704
|
+
const bridgeStreamingLevelSchema = z.object({
|
|
1705
|
+
isLoaded: z.boolean(),
|
|
1706
|
+
isVisible: z.boolean(),
|
|
1707
|
+
packageName: z.string()
|
|
1708
|
+
});
|
|
1709
|
+
const bridgeGetCurrentLevelSuccessResponseSchema = z.object({
|
|
1710
|
+
levelName: z.string().trim().min(1).optional(),
|
|
1711
|
+
levelPath: z.string().trim().min(1).optional(),
|
|
1712
|
+
message: z.string().trim().min(1).optional(),
|
|
1713
|
+
ok: z.literal(true),
|
|
1714
|
+
requestId: requestIdSchema,
|
|
1715
|
+
streamingLevelCount: z.number().int().min(0),
|
|
1716
|
+
streamingLevels: z.array(bridgeStreamingLevelSchema).max(100),
|
|
1717
|
+
truncated: z.boolean(),
|
|
1718
|
+
type: z.literal(BRIDGE_GET_CURRENT_LEVEL_REQUEST_TYPE),
|
|
1719
|
+
version: z.literal(2),
|
|
1720
|
+
worldPartition: z.boolean()
|
|
1721
|
+
});
|
|
1722
|
+
const bridgeLevelEditResultSchema = z.object({
|
|
1723
|
+
actorPath: z.string().optional(),
|
|
1724
|
+
error: z.string().optional(),
|
|
1725
|
+
index: z.number().int().min(0),
|
|
1726
|
+
ok: z.boolean()
|
|
1727
|
+
});
|
|
1728
|
+
const levelEditResponseFields = {
|
|
1729
|
+
dryRun: z.boolean(),
|
|
1730
|
+
failureCount: z.number().int().min(0),
|
|
1731
|
+
message: z.string().trim().min(1).optional(),
|
|
1732
|
+
ok: z.literal(true),
|
|
1733
|
+
requestId: requestIdSchema,
|
|
1734
|
+
results: z.array(bridgeLevelEditResultSchema).max(64),
|
|
1735
|
+
state: levelEditStateSchema,
|
|
1736
|
+
successCount: z.number().int().min(0),
|
|
1737
|
+
transactionTitle: z.string().trim().min(1).optional(),
|
|
1738
|
+
version: z.literal(2)
|
|
1739
|
+
};
|
|
1740
|
+
function isLevelEditStateConsistent(value) {
|
|
1741
|
+
if (value.state === "applied") return !value.dryRun;
|
|
1742
|
+
if (value.state === "validated") return value.dryRun;
|
|
1743
|
+
return true;
|
|
1744
|
+
}
|
|
1745
|
+
const levelEditStateRefinement = {
|
|
1746
|
+
message: "A mutating response must report state 'applied' only for a real run and 'validated' only for a dryRun.",
|
|
1747
|
+
path: ["state"]
|
|
1748
|
+
};
|
|
1749
|
+
const bridgeSpawnActorSuccessResponseSchema = z.object({
|
|
1750
|
+
...levelEditResponseFields,
|
|
1751
|
+
type: z.literal(BRIDGE_SPAWN_ACTOR_REQUEST_TYPE)
|
|
1752
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1753
|
+
const bridgeDestroyActorSuccessResponseSchema = z.object({
|
|
1754
|
+
...levelEditResponseFields,
|
|
1755
|
+
type: z.literal(BRIDGE_DESTROY_ACTOR_REQUEST_TYPE)
|
|
1756
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1757
|
+
const bridgeSetActorTransformSuccessResponseSchema = z.object({
|
|
1758
|
+
...levelEditResponseFields,
|
|
1759
|
+
type: z.literal(BRIDGE_SET_ACTOR_TRANSFORM_REQUEST_TYPE)
|
|
1760
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1761
|
+
const bridgeSetActorPropertySuccessResponseSchema = z.object({
|
|
1762
|
+
...levelEditResponseFields,
|
|
1763
|
+
type: z.literal(BRIDGE_SET_ACTOR_PROPERTY_REQUEST_TYPE)
|
|
1764
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1765
|
+
const bridgeSelectActorsSuccessResponseSchema = z.object({
|
|
1766
|
+
...levelEditResponseFields,
|
|
1767
|
+
selectedActorCount: z.number().int().min(0),
|
|
1768
|
+
type: z.literal(BRIDGE_SELECT_ACTORS_REQUEST_TYPE)
|
|
1769
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1770
|
+
const bridgeUndoSuccessResponseSchema = z.object({
|
|
1771
|
+
message: z.string().trim().min(1).optional(),
|
|
1772
|
+
ok: z.literal(true),
|
|
1773
|
+
requestId: requestIdSchema,
|
|
1774
|
+
state: undoStateSchema,
|
|
1775
|
+
transactionTitle: z.string().trim().min(1).optional(),
|
|
1776
|
+
type: z.literal(BRIDGE_UNDO_REQUEST_TYPE),
|
|
1777
|
+
version: z.literal(2)
|
|
1778
|
+
});
|
|
1779
|
+
const bridgeRedoSuccessResponseSchema = z.object({
|
|
1780
|
+
message: z.string().trim().min(1).optional(),
|
|
1781
|
+
ok: z.literal(true),
|
|
1782
|
+
requestId: requestIdSchema,
|
|
1783
|
+
state: redoStateSchema,
|
|
1784
|
+
transactionTitle: z.string().trim().min(1).optional(),
|
|
1785
|
+
type: z.literal(BRIDGE_REDO_REQUEST_TYPE),
|
|
1786
|
+
version: z.literal(2)
|
|
1787
|
+
});
|
|
1788
|
+
const bridgeOpenLevelSuccessResponseSchema = z.object({
|
|
1789
|
+
levelPath: levelPathSchema.optional(),
|
|
1790
|
+
message: nonEmptyStringSchema.optional(),
|
|
1791
|
+
ok: z.literal(true),
|
|
1792
|
+
openLevelJobId: openLevelJobIdSchema.optional(),
|
|
1793
|
+
requestId: requestIdSchema,
|
|
1794
|
+
state: openLevelStateSchema,
|
|
1795
|
+
type: z.literal(BRIDGE_OPEN_LEVEL_REQUEST_TYPE),
|
|
1796
|
+
version: z.literal(2)
|
|
1797
|
+
}).refine((value) => value.state === "opening" === (value.openLevelJobId !== void 0), {
|
|
1798
|
+
message: "An open_level response must carry openLevelJobId exactly when state is 'opening'.",
|
|
1799
|
+
path: ["openLevelJobId"]
|
|
1800
|
+
});
|
|
1801
|
+
const bridgeGetOpenLevelStatusSuccessResponseSchema = z.object({
|
|
1802
|
+
durationMs: z.number().int().min(0).optional(),
|
|
1803
|
+
finishedAt: nonEmptyStringSchema.optional(),
|
|
1804
|
+
levelPath: levelPathSchema.optional(),
|
|
1805
|
+
message: nonEmptyStringSchema.optional(),
|
|
1806
|
+
ok: z.literal(true),
|
|
1807
|
+
openLevelJobId: openLevelJobIdSchema,
|
|
1808
|
+
requestId: requestIdSchema,
|
|
1809
|
+
state: openLevelStatusStateSchema,
|
|
1810
|
+
type: z.literal(BRIDGE_GET_OPEN_LEVEL_STATUS_REQUEST_TYPE),
|
|
1811
|
+
version: z.literal(2)
|
|
1812
|
+
}).superRefine((value, ctx) => {
|
|
1813
|
+
if (value.state === "succeeded" || value.state === "failed") return;
|
|
1814
|
+
if (value.durationMs !== void 0) ctx.addIssue({
|
|
1815
|
+
code: z.ZodIssueCode.custom,
|
|
1816
|
+
message: "durationMs must be absent until the load finishes",
|
|
1817
|
+
path: ["durationMs"]
|
|
1818
|
+
});
|
|
1819
|
+
if (value.finishedAt !== void 0) ctx.addIssue({
|
|
1820
|
+
code: z.ZodIssueCode.custom,
|
|
1821
|
+
message: "finishedAt must be absent until the load finishes",
|
|
1822
|
+
path: ["finishedAt"]
|
|
1823
|
+
});
|
|
1824
|
+
});
|
|
1825
|
+
const bridgeDataTableColumnSchema = z.object({
|
|
1826
|
+
name: z.string(),
|
|
1827
|
+
type: z.string()
|
|
1828
|
+
});
|
|
1829
|
+
const bridgeDataTableRowSchema = z.object({
|
|
1830
|
+
rowName: z.string(),
|
|
1831
|
+
values: z.record(z.string(), z.string())
|
|
1832
|
+
});
|
|
1833
|
+
const bridgeReadDataTableSuccessResponseSchema = z.object({
|
|
1834
|
+
assetPath: z.string(),
|
|
1835
|
+
columns: z.array(bridgeDataTableColumnSchema).max(200),
|
|
1836
|
+
columnsTruncated: z.boolean(),
|
|
1837
|
+
nextCursor: dataTableCursorSchema.optional(),
|
|
1838
|
+
ok: z.literal(true),
|
|
1839
|
+
requestId: requestIdSchema,
|
|
1840
|
+
rows: z.array(bridgeDataTableRowSchema).max(100),
|
|
1841
|
+
rowStructName: z.string(),
|
|
1842
|
+
rowStructPath: z.string(),
|
|
1843
|
+
totalRowCount: z.number().int().min(0),
|
|
1844
|
+
truncated: z.boolean(),
|
|
1845
|
+
type: z.literal(BRIDGE_READ_DATA_TABLE_REQUEST_TYPE),
|
|
1846
|
+
valueTruncated: z.boolean(),
|
|
1847
|
+
version: z.literal(2)
|
|
1848
|
+
});
|
|
1849
|
+
const bridgeWriteDataTableRowSuccessResponseSchema = z.object({
|
|
1850
|
+
applied: dataTableRowOperationSchema,
|
|
1851
|
+
assetPath: z.string(),
|
|
1852
|
+
created: z.boolean(),
|
|
1853
|
+
dryRun: z.boolean(),
|
|
1854
|
+
message: z.string().trim().min(1).optional(),
|
|
1855
|
+
ok: z.literal(true),
|
|
1856
|
+
packageDirty: z.boolean(),
|
|
1857
|
+
requestId: requestIdSchema,
|
|
1858
|
+
rowExisted: z.boolean(),
|
|
1859
|
+
rowName: z.string(),
|
|
1860
|
+
state: dataTableWriteStateSchema,
|
|
1861
|
+
transactionTitle: z.string().trim().min(1).optional(),
|
|
1862
|
+
type: z.literal(BRIDGE_WRITE_DATA_TABLE_ROW_REQUEST_TYPE),
|
|
1863
|
+
version: z.literal(2)
|
|
1864
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1865
|
+
const bridgeExportDataTableSuccessResponseSchema = z.object({
|
|
1866
|
+
assetPath: z.string(),
|
|
1867
|
+
content: z.string().max(BRIDGE_DATA_TABLE_MAX_EXPORT_CHARS),
|
|
1868
|
+
format: dataTableFormatSchema,
|
|
1869
|
+
nextCursor: dataTableCursorSchema.optional(),
|
|
1870
|
+
ok: z.literal(true),
|
|
1871
|
+
requestId: requestIdSchema,
|
|
1872
|
+
rowCount: z.number().int().min(0),
|
|
1873
|
+
totalChars: z.number().int().min(0),
|
|
1874
|
+
truncated: z.boolean(),
|
|
1875
|
+
type: z.literal(BRIDGE_EXPORT_DATA_TABLE_REQUEST_TYPE),
|
|
1876
|
+
version: z.literal(2)
|
|
1322
1877
|
});
|
|
1878
|
+
const bridgeImportDataTableSuccessResponseSchema = z.object({
|
|
1879
|
+
assetPath: z.string(),
|
|
1880
|
+
dryRun: z.boolean(),
|
|
1881
|
+
message: z.string().trim().min(1).optional(),
|
|
1882
|
+
ok: z.literal(true),
|
|
1883
|
+
packageDirty: z.boolean(),
|
|
1884
|
+
problemCount: z.number().int().min(0),
|
|
1885
|
+
problems: z.array(z.string()).max(50),
|
|
1886
|
+
replacedRowCount: z.number().int().min(0),
|
|
1887
|
+
requestId: requestIdSchema,
|
|
1888
|
+
rowCount: z.number().int().min(0),
|
|
1889
|
+
state: dataTableWriteStateSchema,
|
|
1890
|
+
transactionTitle: z.string().trim().min(1).optional(),
|
|
1891
|
+
type: z.literal(BRIDGE_IMPORT_DATA_TABLE_REQUEST_TYPE),
|
|
1892
|
+
version: z.literal(2)
|
|
1893
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1894
|
+
const bridgeCreateDataTableSuccessResponseSchema = z.object({
|
|
1895
|
+
assetPath: z.string(),
|
|
1896
|
+
created: z.boolean(),
|
|
1897
|
+
dryRun: z.boolean(),
|
|
1898
|
+
ok: z.literal(true),
|
|
1899
|
+
packageDirty: z.boolean(),
|
|
1900
|
+
requestId: requestIdSchema,
|
|
1901
|
+
rowStructPath: z.string(),
|
|
1902
|
+
state: dataTableWriteStateSchema,
|
|
1903
|
+
type: z.literal(BRIDGE_CREATE_DATA_TABLE_REQUEST_TYPE),
|
|
1904
|
+
version: z.literal(2)
|
|
1905
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1906
|
+
const bridgeRenameDataTableSuccessResponseSchema = z.object({
|
|
1907
|
+
assetPath: z.string(),
|
|
1908
|
+
dryRun: z.boolean(),
|
|
1909
|
+
leftRedirector: z.boolean().optional(),
|
|
1910
|
+
newAssetPath: z.string(),
|
|
1911
|
+
ok: z.literal(true),
|
|
1912
|
+
packageDirty: z.boolean(),
|
|
1913
|
+
renamed: z.boolean(),
|
|
1914
|
+
requestId: requestIdSchema,
|
|
1915
|
+
state: dataTableWriteStateSchema,
|
|
1916
|
+
type: z.literal(BRIDGE_RENAME_DATA_TABLE_REQUEST_TYPE),
|
|
1917
|
+
version: z.literal(2)
|
|
1918
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1919
|
+
const bridgeDeleteDataTableSuccessResponseSchema = z.object({
|
|
1920
|
+
assetPath: z.string(),
|
|
1921
|
+
deleted: z.boolean(),
|
|
1922
|
+
dryRun: z.boolean(),
|
|
1923
|
+
forced: z.boolean(),
|
|
1924
|
+
ok: z.literal(true),
|
|
1925
|
+
referencerCount: z.number().int().min(0),
|
|
1926
|
+
referencers: z.array(z.string()).max(25),
|
|
1927
|
+
requestId: requestIdSchema,
|
|
1928
|
+
state: dataTableWriteStateSchema,
|
|
1929
|
+
type: z.literal(BRIDGE_DELETE_DATA_TABLE_REQUEST_TYPE),
|
|
1930
|
+
version: z.literal(2)
|
|
1931
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1932
|
+
const bridgeRenameDataTableRowSuccessResponseSchema = z.object({
|
|
1933
|
+
assetPath: z.string(),
|
|
1934
|
+
dryRun: z.boolean(),
|
|
1935
|
+
newRowName: z.string(),
|
|
1936
|
+
ok: z.literal(true),
|
|
1937
|
+
packageDirty: z.boolean(),
|
|
1938
|
+
renamed: z.boolean(),
|
|
1939
|
+
requestId: requestIdSchema,
|
|
1940
|
+
rowName: z.string(),
|
|
1941
|
+
state: dataTableWriteStateSchema,
|
|
1942
|
+
transactionTitle: z.string().trim().min(1).optional(),
|
|
1943
|
+
type: z.literal(BRIDGE_RENAME_DATA_TABLE_ROW_REQUEST_TYPE),
|
|
1944
|
+
version: z.literal(2)
|
|
1945
|
+
}).refine(isLevelEditStateConsistent, levelEditStateRefinement);
|
|
1323
1946
|
const bridgeAssetDependencySchema = z.object({
|
|
1324
1947
|
category: assetDependencyCategorySchema,
|
|
1325
1948
|
isHard: z.boolean(),
|
|
@@ -1339,7 +1962,7 @@ const bridgeGetAssetDependenciesSuccessResponseSchema = z.object({
|
|
|
1339
1962
|
requestId: requestIdSchema,
|
|
1340
1963
|
scanning: z.boolean(),
|
|
1341
1964
|
type: z.literal(BRIDGE_GET_ASSET_DEPENDENCIES_REQUEST_TYPE),
|
|
1342
|
-
version: z.literal(
|
|
1965
|
+
version: z.literal(2)
|
|
1343
1966
|
});
|
|
1344
1967
|
const bridgeBlueprintReferenceSchema = z.object({
|
|
1345
1968
|
assetName: z.string(),
|
|
@@ -1358,7 +1981,7 @@ const bridgeFindBlueprintReferencesSuccessResponseSchema = z.object({
|
|
|
1358
1981
|
totalCount: z.number().int().min(0),
|
|
1359
1982
|
truncated: z.boolean(),
|
|
1360
1983
|
type: z.literal(BRIDGE_FIND_BLUEPRINT_REFERENCES_REQUEST_TYPE),
|
|
1361
|
-
version: z.literal(
|
|
1984
|
+
version: z.literal(2)
|
|
1362
1985
|
});
|
|
1363
1986
|
const bridgeBlueprintComponentSchema = z.object({
|
|
1364
1987
|
className: z.string(),
|
|
@@ -1411,7 +2034,7 @@ const bridgeGetBlueprintSummarySuccessResponseSchema = z.object({
|
|
|
1411
2034
|
type: z.literal(BRIDGE_GET_BLUEPRINT_SUMMARY_REQUEST_TYPE),
|
|
1412
2035
|
variableCount: z.number().int().min(0),
|
|
1413
2036
|
variables: z.array(bridgeBlueprintVariableSchema),
|
|
1414
|
-
version: z.literal(
|
|
2037
|
+
version: z.literal(2)
|
|
1415
2038
|
});
|
|
1416
2039
|
const bridgeBlueprintPinLinkSchema = z.object({
|
|
1417
2040
|
nodeId: z.string(),
|
|
@@ -1445,7 +2068,7 @@ const bridgeGetBlueprintGraphSuccessResponseSchema = z.object({
|
|
|
1445
2068
|
requestId: requestIdSchema,
|
|
1446
2069
|
truncated: z.boolean(),
|
|
1447
2070
|
type: z.literal(BRIDGE_GET_BLUEPRINT_GRAPH_REQUEST_TYPE),
|
|
1448
|
-
version: z.literal(
|
|
2071
|
+
version: z.literal(2)
|
|
1449
2072
|
});
|
|
1450
2073
|
const bridgeBlueprintCompileDiagnosticSchema = bridgeCompileDiagnosticSchema.extend({
|
|
1451
2074
|
graphName: z.string().optional(),
|
|
@@ -1470,7 +2093,7 @@ const bridgeGetBlueprintCompileErrorsSuccessResponseSchema = z.object({
|
|
|
1470
2093
|
totalCount: z.number().int().min(0),
|
|
1471
2094
|
truncated: z.boolean(),
|
|
1472
2095
|
type: z.literal(BRIDGE_GET_BLUEPRINT_COMPILE_ERRORS_REQUEST_TYPE),
|
|
1473
|
-
version: z.literal(
|
|
2096
|
+
version: z.literal(2)
|
|
1474
2097
|
});
|
|
1475
2098
|
const bridgeCompileBlueprintSuccessResponseSchema = z.object({
|
|
1476
2099
|
compileJobId: blueprintCompileJobIdSchema.optional(),
|
|
@@ -1479,7 +2102,7 @@ const bridgeCompileBlueprintSuccessResponseSchema = z.object({
|
|
|
1479
2102
|
requestId: requestIdSchema,
|
|
1480
2103
|
state: compileBlueprintStateSchema,
|
|
1481
2104
|
type: z.literal(BRIDGE_COMPILE_BLUEPRINT_REQUEST_TYPE),
|
|
1482
|
-
version: z.literal(
|
|
2105
|
+
version: z.literal(2)
|
|
1483
2106
|
}).refine((value) => value.state === "compiling" === (value.compileJobId !== void 0), {
|
|
1484
2107
|
message: "A compile_blueprint response must carry compileJobId exactly when state is 'compiling'.",
|
|
1485
2108
|
path: ["compileJobId"]
|
|
@@ -1496,7 +2119,7 @@ const bridgeGetBlueprintCompileStatusSuccessResponseSchema = z.object({
|
|
|
1496
2119
|
totalCount: z.number().int().min(0),
|
|
1497
2120
|
truncated: z.boolean(),
|
|
1498
2121
|
type: z.literal(BRIDGE_GET_BLUEPRINT_COMPILE_STATUS_REQUEST_TYPE),
|
|
1499
|
-
version: z.literal(
|
|
2122
|
+
version: z.literal(2)
|
|
1500
2123
|
}).superRefine((value, ctx) => {
|
|
1501
2124
|
if (value.state === "succeeded" || value.state === "failed") return;
|
|
1502
2125
|
for (const field of ["durationMs", "finishedAt"]) if (value[field] !== void 0) ctx.addIssue({
|
|
@@ -1522,7 +2145,7 @@ const bridgeGetConfigValueSuccessResponseSchema = z.object({
|
|
|
1522
2145
|
type: z.literal(BRIDGE_GET_CONFIG_VALUE_REQUEST_TYPE),
|
|
1523
2146
|
value: configValueSchema.optional(),
|
|
1524
2147
|
valueTruncated: z.boolean().optional(),
|
|
1525
|
-
version: z.literal(
|
|
2148
|
+
version: z.literal(2)
|
|
1526
2149
|
});
|
|
1527
2150
|
const bridgeSetConfigValueSuccessResponseSchema = z.object({
|
|
1528
2151
|
file: configFileSchema,
|
|
@@ -1537,7 +2160,7 @@ const bridgeSetConfigValueSuccessResponseSchema = z.object({
|
|
|
1537
2160
|
section: configSectionSchema,
|
|
1538
2161
|
type: z.literal(BRIDGE_SET_CONFIG_VALUE_REQUEST_TYPE),
|
|
1539
2162
|
value: configValueSchema,
|
|
1540
|
-
version: z.literal(
|
|
2163
|
+
version: z.literal(2)
|
|
1541
2164
|
});
|
|
1542
2165
|
const bridgeListConfigSectionSuccessResponseSchema = z.object({
|
|
1543
2166
|
entries: z.array(bridgeConfigEntrySchema).max(200),
|
|
@@ -1549,13 +2172,13 @@ const bridgeListConfigSectionSuccessResponseSchema = z.object({
|
|
|
1549
2172
|
totalCount: z.number().int().min(0),
|
|
1550
2173
|
truncated: z.boolean(),
|
|
1551
2174
|
type: z.literal(BRIDGE_LIST_CONFIG_SECTION_REQUEST_TYPE),
|
|
1552
|
-
version: z.literal(
|
|
2175
|
+
version: z.literal(2)
|
|
1553
2176
|
});
|
|
1554
2177
|
const bridgeErrorResponseSchema = z.object({
|
|
1555
2178
|
error: bridgeErrorSchema,
|
|
1556
2179
|
ok: z.literal(false),
|
|
1557
2180
|
requestId: requestIdSchema,
|
|
1558
|
-
version: z.literal(
|
|
2181
|
+
version: z.literal(2)
|
|
1559
2182
|
});
|
|
1560
2183
|
const bridgePingResponseSchema = z.union([bridgePingSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1561
2184
|
const bridgeLogSubscribeResponseSchema = z.union([bridgeLogSubscribeSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
@@ -1585,6 +2208,26 @@ const bridgeStartTraceResponseSchema = z.union([bridgeStartTraceSuccessResponseS
|
|
|
1585
2208
|
const bridgeStopTraceResponseSchema = z.union([bridgeStopTraceSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1586
2209
|
const bridgeCreateCppClassResponseSchema = z.union([bridgeCreateCppClassSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1587
2210
|
const bridgeGetCreateClassStatusResponseSchema = z.union([bridgeGetCreateClassStatusSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2211
|
+
const bridgeListActorsResponseSchema = z.union([bridgeListActorsSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2212
|
+
const bridgeGetActorDetailsResponseSchema = z.union([bridgeGetActorDetailsSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2213
|
+
const bridgeGetCurrentLevelResponseSchema = z.union([bridgeGetCurrentLevelSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2214
|
+
const bridgeSpawnActorResponseSchema = z.union([bridgeSpawnActorSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2215
|
+
const bridgeDestroyActorResponseSchema = z.union([bridgeDestroyActorSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2216
|
+
const bridgeSetActorTransformResponseSchema = z.union([bridgeSetActorTransformSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2217
|
+
const bridgeSetActorPropertyResponseSchema = z.union([bridgeSetActorPropertySuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2218
|
+
const bridgeSelectActorsResponseSchema = z.union([bridgeSelectActorsSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2219
|
+
const bridgeUndoResponseSchema = z.union([bridgeUndoSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2220
|
+
const bridgeRedoResponseSchema = z.union([bridgeRedoSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2221
|
+
const bridgeOpenLevelResponseSchema = z.union([bridgeOpenLevelSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2222
|
+
const bridgeGetOpenLevelStatusResponseSchema = z.union([bridgeGetOpenLevelStatusSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2223
|
+
const bridgeReadDataTableResponseSchema = z.union([bridgeReadDataTableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2224
|
+
const bridgeWriteDataTableRowResponseSchema = z.union([bridgeWriteDataTableRowSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2225
|
+
const bridgeExportDataTableResponseSchema = z.union([bridgeExportDataTableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2226
|
+
const bridgeImportDataTableResponseSchema = z.union([bridgeImportDataTableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2227
|
+
const bridgeCreateDataTableResponseSchema = z.union([bridgeCreateDataTableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2228
|
+
const bridgeRenameDataTableResponseSchema = z.union([bridgeRenameDataTableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2229
|
+
const bridgeDeleteDataTableResponseSchema = z.union([bridgeDeleteDataTableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2230
|
+
const bridgeRenameDataTableRowResponseSchema = z.union([bridgeRenameDataTableRowSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1588
2231
|
const bridgeFindAssetsResponseSchema = z.union([bridgeFindAssetsSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1589
2232
|
const bridgeGetAssetDependenciesResponseSchema = z.union([bridgeGetAssetDependenciesSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1590
2233
|
const bridgeFindBlueprintReferencesResponseSchema = z.union([bridgeFindBlueprintReferencesSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
@@ -1596,6 +2239,94 @@ const bridgeGetBlueprintCompileStatusResponseSchema = z.union([bridgeGetBlueprin
|
|
|
1596
2239
|
const bridgeGetConfigValueResponseSchema = z.union([bridgeGetConfigValueSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1597
2240
|
const bridgeSetConfigValueResponseSchema = z.union([bridgeSetConfigValueSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
1598
2241
|
const bridgeListConfigSectionResponseSchema = z.union([bridgeListConfigSectionSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
2242
|
+
function createBridgeReadDataTableRequest(assetPath, options = {}, requestId = randomUUID()) {
|
|
2243
|
+
return bridgeReadDataTableRequestSchema.parse({
|
|
2244
|
+
assetPath,
|
|
2245
|
+
cursor: options.cursor,
|
|
2246
|
+
loadIfNeeded: options.loadIfNeeded,
|
|
2247
|
+
maxRows: options.maxRows ?? 25,
|
|
2248
|
+
requestId,
|
|
2249
|
+
rowNameFilter: options.rowNameFilter,
|
|
2250
|
+
type: BRIDGE_READ_DATA_TABLE_REQUEST_TYPE,
|
|
2251
|
+
version: 2
|
|
2252
|
+
});
|
|
2253
|
+
}
|
|
2254
|
+
function createBridgeWriteDataTableRowRequest(assetPath, rowName, operation, options = {}, requestId = randomUUID()) {
|
|
2255
|
+
return bridgeWriteDataTableRowRequestSchema.parse({
|
|
2256
|
+
assetPath,
|
|
2257
|
+
dryRun: options.dryRun,
|
|
2258
|
+
operation,
|
|
2259
|
+
requestId,
|
|
2260
|
+
rowName,
|
|
2261
|
+
type: BRIDGE_WRITE_DATA_TABLE_ROW_REQUEST_TYPE,
|
|
2262
|
+
values: options.values,
|
|
2263
|
+
version: 2
|
|
2264
|
+
});
|
|
2265
|
+
}
|
|
2266
|
+
function createBridgeExportDataTableRequest(assetPath, options = {}, requestId = randomUUID()) {
|
|
2267
|
+
return bridgeExportDataTableRequestSchema.parse({
|
|
2268
|
+
assetPath,
|
|
2269
|
+
cursor: options.cursor,
|
|
2270
|
+
format: options.format,
|
|
2271
|
+
loadIfNeeded: options.loadIfNeeded,
|
|
2272
|
+
requestId,
|
|
2273
|
+
type: BRIDGE_EXPORT_DATA_TABLE_REQUEST_TYPE,
|
|
2274
|
+
version: 2
|
|
2275
|
+
});
|
|
2276
|
+
}
|
|
2277
|
+
function createBridgeImportDataTableRequest(assetPath, content, options = {}, requestId = randomUUID()) {
|
|
2278
|
+
return bridgeImportDataTableRequestSchema.parse({
|
|
2279
|
+
assetPath,
|
|
2280
|
+
content,
|
|
2281
|
+
dryRun: options.dryRun,
|
|
2282
|
+
format: options.format,
|
|
2283
|
+
requestId,
|
|
2284
|
+
type: BRIDGE_IMPORT_DATA_TABLE_REQUEST_TYPE,
|
|
2285
|
+
version: 2
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2288
|
+
function createBridgeCreateDataTableRequest(assetPath, rowStructPath, options = {}, requestId = randomUUID()) {
|
|
2289
|
+
return bridgeCreateDataTableRequestSchema.parse({
|
|
2290
|
+
assetPath,
|
|
2291
|
+
dryRun: options.dryRun,
|
|
2292
|
+
requestId,
|
|
2293
|
+
rowStructPath,
|
|
2294
|
+
type: BRIDGE_CREATE_DATA_TABLE_REQUEST_TYPE,
|
|
2295
|
+
version: 2
|
|
2296
|
+
});
|
|
2297
|
+
}
|
|
2298
|
+
function createBridgeRenameDataTableRequest(assetPath, options = {}, requestId = randomUUID()) {
|
|
2299
|
+
return bridgeRenameDataTableRequestSchema.parse({
|
|
2300
|
+
assetPath,
|
|
2301
|
+
destinationPath: options.destinationPath,
|
|
2302
|
+
dryRun: options.dryRun,
|
|
2303
|
+
newName: options.newName,
|
|
2304
|
+
requestId,
|
|
2305
|
+
type: BRIDGE_RENAME_DATA_TABLE_REQUEST_TYPE,
|
|
2306
|
+
version: 2
|
|
2307
|
+
});
|
|
2308
|
+
}
|
|
2309
|
+
function createBridgeDeleteDataTableRequest(assetPath, options = {}, requestId = randomUUID()) {
|
|
2310
|
+
return bridgeDeleteDataTableRequestSchema.parse({
|
|
2311
|
+
assetPath,
|
|
2312
|
+
dryRun: options.dryRun,
|
|
2313
|
+
force: options.force,
|
|
2314
|
+
requestId,
|
|
2315
|
+
type: BRIDGE_DELETE_DATA_TABLE_REQUEST_TYPE,
|
|
2316
|
+
version: 2
|
|
2317
|
+
});
|
|
2318
|
+
}
|
|
2319
|
+
function createBridgeRenameDataTableRowRequest(assetPath, rowName, newRowName, options = {}, requestId = randomUUID()) {
|
|
2320
|
+
return bridgeRenameDataTableRowRequestSchema.parse({
|
|
2321
|
+
assetPath,
|
|
2322
|
+
dryRun: options.dryRun,
|
|
2323
|
+
newRowName,
|
|
2324
|
+
requestId,
|
|
2325
|
+
rowName,
|
|
2326
|
+
type: BRIDGE_RENAME_DATA_TABLE_ROW_REQUEST_TYPE,
|
|
2327
|
+
version: 2
|
|
2328
|
+
});
|
|
2329
|
+
}
|
|
1599
2330
|
function createBridgeFindAssetsRequest(options = {}, requestId = randomUUID()) {
|
|
1600
2331
|
return bridgeFindAssetsRequestSchema.parse({
|
|
1601
2332
|
classNames: options.classNames,
|
|
@@ -1607,7 +2338,117 @@ function createBridgeFindAssetsRequest(options = {}, requestId = randomUUID()) {
|
|
|
1607
2338
|
recursivePaths: options.recursivePaths,
|
|
1608
2339
|
requestId,
|
|
1609
2340
|
type: BRIDGE_FIND_ASSETS_REQUEST_TYPE,
|
|
1610
|
-
version:
|
|
2341
|
+
version: 2
|
|
2342
|
+
});
|
|
2343
|
+
}
|
|
2344
|
+
function createBridgeListActorsRequest(options = {}, requestId = randomUUID()) {
|
|
2345
|
+
return bridgeListActorsRequestSchema.parse({
|
|
2346
|
+
classNames: options.classNames,
|
|
2347
|
+
cursor: options.cursor,
|
|
2348
|
+
levelName: options.levelName,
|
|
2349
|
+
maxResults: options.maxResults ?? 50,
|
|
2350
|
+
nameFilter: options.nameFilter,
|
|
2351
|
+
requestId,
|
|
2352
|
+
tag: options.tag,
|
|
2353
|
+
type: BRIDGE_LIST_ACTORS_REQUEST_TYPE,
|
|
2354
|
+
version: 2
|
|
2355
|
+
});
|
|
2356
|
+
}
|
|
2357
|
+
function createBridgeGetActorDetailsRequest(actorPath, options = {}, requestId = randomUUID()) {
|
|
2358
|
+
return bridgeGetActorDetailsRequestSchema.parse({
|
|
2359
|
+
actorPath,
|
|
2360
|
+
componentCursor: options.componentCursor,
|
|
2361
|
+
includeInherited: options.includeInherited,
|
|
2362
|
+
maxResults: options.maxResults ?? 25,
|
|
2363
|
+
propertyCursor: options.propertyCursor,
|
|
2364
|
+
requestId,
|
|
2365
|
+
type: BRIDGE_GET_ACTOR_DETAILS_REQUEST_TYPE,
|
|
2366
|
+
version: 2
|
|
2367
|
+
});
|
|
2368
|
+
}
|
|
2369
|
+
function createBridgeGetCurrentLevelRequest(requestId = randomUUID()) {
|
|
2370
|
+
return bridgeGetCurrentLevelRequestSchema.parse({
|
|
2371
|
+
requestId,
|
|
2372
|
+
type: BRIDGE_GET_CURRENT_LEVEL_REQUEST_TYPE,
|
|
2373
|
+
version: 2
|
|
2374
|
+
});
|
|
2375
|
+
}
|
|
2376
|
+
function createBridgeSpawnActorRequest(spawns, options = {}, requestId = randomUUID()) {
|
|
2377
|
+
return bridgeSpawnActorRequestSchema.parse({
|
|
2378
|
+
dryRun: options.dryRun,
|
|
2379
|
+
requestId,
|
|
2380
|
+
spawns,
|
|
2381
|
+
type: BRIDGE_SPAWN_ACTOR_REQUEST_TYPE,
|
|
2382
|
+
version: 2
|
|
2383
|
+
});
|
|
2384
|
+
}
|
|
2385
|
+
function createBridgeDestroyActorRequest(actorPaths, options = {}, requestId = randomUUID()) {
|
|
2386
|
+
return bridgeDestroyActorRequestSchema.parse({
|
|
2387
|
+
actorPaths,
|
|
2388
|
+
dryRun: options.dryRun,
|
|
2389
|
+
requestId,
|
|
2390
|
+
type: BRIDGE_DESTROY_ACTOR_REQUEST_TYPE,
|
|
2391
|
+
version: 2
|
|
2392
|
+
});
|
|
2393
|
+
}
|
|
2394
|
+
function createBridgeSetActorTransformRequest(transforms, options = {}, requestId = randomUUID()) {
|
|
2395
|
+
return bridgeSetActorTransformRequestSchema.parse({
|
|
2396
|
+
dryRun: options.dryRun,
|
|
2397
|
+
requestId,
|
|
2398
|
+
transforms,
|
|
2399
|
+
type: BRIDGE_SET_ACTOR_TRANSFORM_REQUEST_TYPE,
|
|
2400
|
+
version: 2
|
|
2401
|
+
});
|
|
2402
|
+
}
|
|
2403
|
+
function createBridgeSetActorPropertyRequest(properties, options = {}, requestId = randomUUID()) {
|
|
2404
|
+
return bridgeSetActorPropertyRequestSchema.parse({
|
|
2405
|
+
dryRun: options.dryRun,
|
|
2406
|
+
properties,
|
|
2407
|
+
requestId,
|
|
2408
|
+
type: BRIDGE_SET_ACTOR_PROPERTY_REQUEST_TYPE,
|
|
2409
|
+
version: 2
|
|
2410
|
+
});
|
|
2411
|
+
}
|
|
2412
|
+
function createBridgeSelectActorsRequest(actorPaths, options = {}, requestId = randomUUID()) {
|
|
2413
|
+
return bridgeSelectActorsRequestSchema.parse({
|
|
2414
|
+
actorPaths,
|
|
2415
|
+
addToSelection: options.addToSelection,
|
|
2416
|
+
dryRun: options.dryRun,
|
|
2417
|
+
requestId,
|
|
2418
|
+
type: BRIDGE_SELECT_ACTORS_REQUEST_TYPE,
|
|
2419
|
+
version: 2
|
|
2420
|
+
});
|
|
2421
|
+
}
|
|
2422
|
+
function createBridgeUndoRequest(requestId = randomUUID()) {
|
|
2423
|
+
return bridgeUndoRequestSchema.parse({
|
|
2424
|
+
requestId,
|
|
2425
|
+
type: BRIDGE_UNDO_REQUEST_TYPE,
|
|
2426
|
+
version: 2
|
|
2427
|
+
});
|
|
2428
|
+
}
|
|
2429
|
+
function createBridgeRedoRequest(requestId = randomUUID()) {
|
|
2430
|
+
return bridgeRedoRequestSchema.parse({
|
|
2431
|
+
requestId,
|
|
2432
|
+
type: BRIDGE_REDO_REQUEST_TYPE,
|
|
2433
|
+
version: 2
|
|
2434
|
+
});
|
|
2435
|
+
}
|
|
2436
|
+
function createBridgeOpenLevelRequest(levelPath, options = {}, requestId = randomUUID()) {
|
|
2437
|
+
return bridgeOpenLevelRequestSchema.parse({
|
|
2438
|
+
dryRun: options.dryRun,
|
|
2439
|
+
levelPath,
|
|
2440
|
+
requestId,
|
|
2441
|
+
saveDirtyPackages: options.saveDirtyPackages,
|
|
2442
|
+
type: BRIDGE_OPEN_LEVEL_REQUEST_TYPE,
|
|
2443
|
+
version: 2
|
|
2444
|
+
});
|
|
2445
|
+
}
|
|
2446
|
+
function createBridgeGetOpenLevelStatusRequest(openLevelJobId, requestId = randomUUID()) {
|
|
2447
|
+
return bridgeGetOpenLevelStatusRequestSchema.parse({
|
|
2448
|
+
openLevelJobId,
|
|
2449
|
+
requestId,
|
|
2450
|
+
type: BRIDGE_GET_OPEN_LEVEL_STATUS_REQUEST_TYPE,
|
|
2451
|
+
version: 2
|
|
1611
2452
|
});
|
|
1612
2453
|
}
|
|
1613
2454
|
function createBridgeGetAssetDependenciesRequest(assetPath, options = {}, requestId = randomUUID()) {
|
|
@@ -1620,7 +2461,7 @@ function createBridgeGetAssetDependenciesRequest(assetPath, options = {}, reques
|
|
|
1620
2461
|
referencerCursor: options.referencerCursor,
|
|
1621
2462
|
requestId,
|
|
1622
2463
|
type: BRIDGE_GET_ASSET_DEPENDENCIES_REQUEST_TYPE,
|
|
1623
|
-
version:
|
|
2464
|
+
version: 2
|
|
1624
2465
|
});
|
|
1625
2466
|
}
|
|
1626
2467
|
function createBridgeFindBlueprintReferencesRequest(className, options = {}, requestId = randomUUID()) {
|
|
@@ -1631,7 +2472,7 @@ function createBridgeFindBlueprintReferencesRequest(className, options = {}, req
|
|
|
1631
2472
|
referenceKinds: options.referenceKinds,
|
|
1632
2473
|
requestId,
|
|
1633
2474
|
type: BRIDGE_FIND_BLUEPRINT_REFERENCES_REQUEST_TYPE,
|
|
1634
|
-
version:
|
|
2475
|
+
version: 2
|
|
1635
2476
|
});
|
|
1636
2477
|
}
|
|
1637
2478
|
function createBridgeGetBlueprintSummaryRequest(blueprintPath, options = {}, requestId = randomUUID()) {
|
|
@@ -1645,7 +2486,7 @@ function createBridgeGetBlueprintSummaryRequest(blueprintPath, options = {}, req
|
|
|
1645
2486
|
requestId,
|
|
1646
2487
|
type: BRIDGE_GET_BLUEPRINT_SUMMARY_REQUEST_TYPE,
|
|
1647
2488
|
variableCursor: options.variableCursor,
|
|
1648
|
-
version:
|
|
2489
|
+
version: 2
|
|
1649
2490
|
});
|
|
1650
2491
|
}
|
|
1651
2492
|
function createBridgeGetBlueprintGraphRequest(blueprintPath, graphName, options = {}, requestId = randomUUID()) {
|
|
@@ -1657,7 +2498,7 @@ function createBridgeGetBlueprintGraphRequest(blueprintPath, graphName, options
|
|
|
1657
2498
|
nodeCursor: options.nodeCursor,
|
|
1658
2499
|
requestId,
|
|
1659
2500
|
type: BRIDGE_GET_BLUEPRINT_GRAPH_REQUEST_TYPE,
|
|
1660
|
-
version:
|
|
2501
|
+
version: 2
|
|
1661
2502
|
});
|
|
1662
2503
|
}
|
|
1663
2504
|
function createBridgeGetBlueprintCompileErrorsRequest(blueprintPaths, options = {}, requestId = randomUUID()) {
|
|
@@ -1667,7 +2508,7 @@ function createBridgeGetBlueprintCompileErrorsRequest(blueprintPaths, options =
|
|
|
1667
2508
|
maxResults: options.maxResults ?? 50,
|
|
1668
2509
|
requestId,
|
|
1669
2510
|
type: BRIDGE_GET_BLUEPRINT_COMPILE_ERRORS_REQUEST_TYPE,
|
|
1670
|
-
version:
|
|
2511
|
+
version: 2
|
|
1671
2512
|
});
|
|
1672
2513
|
}
|
|
1673
2514
|
function createBridgeCompileBlueprintRequest(blueprintPaths, requestId = randomUUID()) {
|
|
@@ -1675,7 +2516,7 @@ function createBridgeCompileBlueprintRequest(blueprintPaths, requestId = randomU
|
|
|
1675
2516
|
blueprintPaths,
|
|
1676
2517
|
requestId,
|
|
1677
2518
|
type: BRIDGE_COMPILE_BLUEPRINT_REQUEST_TYPE,
|
|
1678
|
-
version:
|
|
2519
|
+
version: 2
|
|
1679
2520
|
});
|
|
1680
2521
|
}
|
|
1681
2522
|
function createBridgeGetBlueprintCompileStatusRequest(compileJobId, options = {}, requestId = randomUUID()) {
|
|
@@ -1685,7 +2526,7 @@ function createBridgeGetBlueprintCompileStatusRequest(compileJobId, options = {}
|
|
|
1685
2526
|
maxResults: options.maxResults ?? 50,
|
|
1686
2527
|
requestId,
|
|
1687
2528
|
type: BRIDGE_GET_BLUEPRINT_COMPILE_STATUS_REQUEST_TYPE,
|
|
1688
|
-
version:
|
|
2529
|
+
version: 2
|
|
1689
2530
|
});
|
|
1690
2531
|
}
|
|
1691
2532
|
function createBridgeGetConfigValueRequest(input, requestId = randomUUID()) {
|
|
@@ -1695,7 +2536,7 @@ function createBridgeGetConfigValueRequest(input, requestId = randomUUID()) {
|
|
|
1695
2536
|
requestId,
|
|
1696
2537
|
section: input.section,
|
|
1697
2538
|
type: BRIDGE_GET_CONFIG_VALUE_REQUEST_TYPE,
|
|
1698
|
-
version:
|
|
2539
|
+
version: 2
|
|
1699
2540
|
});
|
|
1700
2541
|
}
|
|
1701
2542
|
function createBridgeSetConfigValueRequest(input, requestId = randomUUID()) {
|
|
@@ -1707,7 +2548,7 @@ function createBridgeSetConfigValueRequest(input, requestId = randomUUID()) {
|
|
|
1707
2548
|
section: input.section,
|
|
1708
2549
|
type: BRIDGE_SET_CONFIG_VALUE_REQUEST_TYPE,
|
|
1709
2550
|
value: input.value,
|
|
1710
|
-
version:
|
|
2551
|
+
version: 2
|
|
1711
2552
|
});
|
|
1712
2553
|
}
|
|
1713
2554
|
function createBridgeListConfigSectionRequest(input, requestId = randomUUID()) {
|
|
@@ -1718,28 +2559,28 @@ function createBridgeListConfigSectionRequest(input, requestId = randomUUID()) {
|
|
|
1718
2559
|
requestId,
|
|
1719
2560
|
section: input.section,
|
|
1720
2561
|
type: BRIDGE_LIST_CONFIG_SECTION_REQUEST_TYPE,
|
|
1721
|
-
version:
|
|
2562
|
+
version: 2
|
|
1722
2563
|
});
|
|
1723
2564
|
}
|
|
1724
2565
|
function createBridgePingRequest(requestId = randomUUID()) {
|
|
1725
2566
|
return {
|
|
1726
2567
|
requestId,
|
|
1727
2568
|
type: BRIDGE_PING_REQUEST_TYPE,
|
|
1728
|
-
version:
|
|
2569
|
+
version: 2
|
|
1729
2570
|
};
|
|
1730
2571
|
}
|
|
1731
2572
|
function createBridgeStartLiveCompileRequest(requestId = randomUUID()) {
|
|
1732
2573
|
return {
|
|
1733
2574
|
requestId,
|
|
1734
2575
|
type: BRIDGE_START_LIVE_COMPILE_REQUEST_TYPE,
|
|
1735
|
-
version:
|
|
2576
|
+
version: 2
|
|
1736
2577
|
};
|
|
1737
2578
|
}
|
|
1738
2579
|
function createBridgeStartHotReloadRequest(requestId = randomUUID()) {
|
|
1739
2580
|
return {
|
|
1740
2581
|
requestId,
|
|
1741
2582
|
type: BRIDGE_START_HOT_RELOAD_REQUEST_TYPE,
|
|
1742
|
-
version:
|
|
2583
|
+
version: 2
|
|
1743
2584
|
};
|
|
1744
2585
|
}
|
|
1745
2586
|
function createBridgeGetCompileStatusRequest(compileJobId, requestId = randomUUID()) {
|
|
@@ -1747,7 +2588,7 @@ function createBridgeGetCompileStatusRequest(compileJobId, requestId = randomUUI
|
|
|
1747
2588
|
compileJobId,
|
|
1748
2589
|
requestId,
|
|
1749
2590
|
type: BRIDGE_GET_COMPILE_STATUS_REQUEST_TYPE,
|
|
1750
|
-
version:
|
|
2591
|
+
version: 2
|
|
1751
2592
|
});
|
|
1752
2593
|
}
|
|
1753
2594
|
function createBridgeLogSubscribeRequest(source, filters, requestId = randomUUID()) {
|
|
@@ -1756,7 +2597,7 @@ function createBridgeLogSubscribeRequest(source, filters, requestId = randomUUID
|
|
|
1756
2597
|
requestId,
|
|
1757
2598
|
source,
|
|
1758
2599
|
type: BRIDGE_SUBSCRIBE_LOGS_REQUEST_TYPE,
|
|
1759
|
-
version:
|
|
2600
|
+
version: 2
|
|
1760
2601
|
});
|
|
1761
2602
|
}
|
|
1762
2603
|
function createBridgeLogDrainRequest(subscriptionId, cursor, maxEvents, requestId = randomUUID()) {
|
|
@@ -1766,7 +2607,7 @@ function createBridgeLogDrainRequest(subscriptionId, cursor, maxEvents, requestI
|
|
|
1766
2607
|
requestId,
|
|
1767
2608
|
subscriptionId,
|
|
1768
2609
|
type: BRIDGE_DRAIN_LOGS_REQUEST_TYPE,
|
|
1769
|
-
version:
|
|
2610
|
+
version: 2
|
|
1770
2611
|
});
|
|
1771
2612
|
}
|
|
1772
2613
|
function createBridgeStartPieRequest(mode = "new_window", map, options = {}, requestId = randomUUID()) {
|
|
@@ -1778,7 +2619,7 @@ function createBridgeStartPieRequest(mode = "new_window", map, options = {}, req
|
|
|
1778
2619
|
requestId,
|
|
1779
2620
|
runUnderOneProcess: options.runUnderOneProcess,
|
|
1780
2621
|
type: BRIDGE_START_PIE_REQUEST_TYPE,
|
|
1781
|
-
version:
|
|
2622
|
+
version: 2
|
|
1782
2623
|
});
|
|
1783
2624
|
}
|
|
1784
2625
|
function createBridgeGetPieStatusRequest(pieSessionId, requestId = randomUUID()) {
|
|
@@ -1786,7 +2627,7 @@ function createBridgeGetPieStatusRequest(pieSessionId, requestId = randomUUID())
|
|
|
1786
2627
|
pieSessionId,
|
|
1787
2628
|
requestId,
|
|
1788
2629
|
type: BRIDGE_GET_PIE_STATUS_REQUEST_TYPE,
|
|
1789
|
-
version:
|
|
2630
|
+
version: 2
|
|
1790
2631
|
});
|
|
1791
2632
|
}
|
|
1792
2633
|
function createBridgeStopPieRequest(pieSessionId, requestId = randomUUID()) {
|
|
@@ -1794,14 +2635,14 @@ function createBridgeStopPieRequest(pieSessionId, requestId = randomUUID()) {
|
|
|
1794
2635
|
pieSessionId,
|
|
1795
2636
|
requestId,
|
|
1796
2637
|
type: BRIDGE_STOP_PIE_REQUEST_TYPE,
|
|
1797
|
-
version:
|
|
2638
|
+
version: 2
|
|
1798
2639
|
});
|
|
1799
2640
|
}
|
|
1800
2641
|
function createBridgeListLaunchDevicesRequest(requestId = randomUUID()) {
|
|
1801
2642
|
return {
|
|
1802
2643
|
requestId,
|
|
1803
2644
|
type: BRIDGE_LIST_LAUNCH_DEVICES_REQUEST_TYPE,
|
|
1804
|
-
version:
|
|
2645
|
+
version: 2
|
|
1805
2646
|
};
|
|
1806
2647
|
}
|
|
1807
2648
|
function createBridgeLaunchOnDeviceRequest(deviceId, map, requestId = randomUUID()) {
|
|
@@ -1810,7 +2651,7 @@ function createBridgeLaunchOnDeviceRequest(deviceId, map, requestId = randomUUID
|
|
|
1810
2651
|
map,
|
|
1811
2652
|
requestId,
|
|
1812
2653
|
type: BRIDGE_LAUNCH_ON_DEVICE_REQUEST_TYPE,
|
|
1813
|
-
version:
|
|
2654
|
+
version: 2
|
|
1814
2655
|
});
|
|
1815
2656
|
}
|
|
1816
2657
|
function createBridgeListAutomationTestsRequest(options = {}, requestId = randomUUID()) {
|
|
@@ -1821,7 +2662,7 @@ function createBridgeListAutomationTestsRequest(options = {}, requestId = random
|
|
|
1821
2662
|
nameFilter: options.nameFilter,
|
|
1822
2663
|
requestId,
|
|
1823
2664
|
type: BRIDGE_LIST_AUTOMATION_TESTS_REQUEST_TYPE,
|
|
1824
|
-
version:
|
|
2665
|
+
version: 2
|
|
1825
2666
|
});
|
|
1826
2667
|
}
|
|
1827
2668
|
function createBridgeStartAutomationRunRequest(selectors, requestId = randomUUID()) {
|
|
@@ -1831,7 +2672,7 @@ function createBridgeStartAutomationRunRequest(selectors, requestId = randomUUID
|
|
|
1831
2672
|
requestId,
|
|
1832
2673
|
testNames: selectors.testNames ?? [],
|
|
1833
2674
|
type: BRIDGE_START_AUTOMATION_RUN_REQUEST_TYPE,
|
|
1834
|
-
version:
|
|
2675
|
+
version: 2
|
|
1835
2676
|
});
|
|
1836
2677
|
}
|
|
1837
2678
|
function createBridgeGetAutomationRunStatusRequest(testRunId, options = {}, requestId = randomUUID()) {
|
|
@@ -1841,7 +2682,7 @@ function createBridgeGetAutomationRunStatusRequest(testRunId, options = {}, requ
|
|
|
1841
2682
|
requestId,
|
|
1842
2683
|
testRunId,
|
|
1843
2684
|
type: BRIDGE_GET_AUTOMATION_RUN_STATUS_REQUEST_TYPE,
|
|
1844
|
-
version:
|
|
2685
|
+
version: 2
|
|
1845
2686
|
});
|
|
1846
2687
|
}
|
|
1847
2688
|
function createBridgeCancelAutomationRunRequest(testRunId, requestId = randomUUID()) {
|
|
@@ -1849,14 +2690,14 @@ function createBridgeCancelAutomationRunRequest(testRunId, requestId = randomUUI
|
|
|
1849
2690
|
requestId,
|
|
1850
2691
|
testRunId,
|
|
1851
2692
|
type: BRIDGE_CANCEL_AUTOMATION_RUN_REQUEST_TYPE,
|
|
1852
|
-
version:
|
|
2693
|
+
version: 2
|
|
1853
2694
|
});
|
|
1854
2695
|
}
|
|
1855
2696
|
function createBridgeGetEditorStateRequest(requestId = randomUUID()) {
|
|
1856
2697
|
return {
|
|
1857
2698
|
requestId,
|
|
1858
2699
|
type: BRIDGE_GET_EDITOR_STATE_REQUEST_TYPE,
|
|
1859
|
-
version:
|
|
2700
|
+
version: 2
|
|
1860
2701
|
};
|
|
1861
2702
|
}
|
|
1862
2703
|
function createBridgeExecConsoleCommandRequest(command, requestId = randomUUID()) {
|
|
@@ -1864,14 +2705,14 @@ function createBridgeExecConsoleCommandRequest(command, requestId = randomUUID()
|
|
|
1864
2705
|
command,
|
|
1865
2706
|
requestId,
|
|
1866
2707
|
type: BRIDGE_EXEC_CONSOLE_COMMAND_REQUEST_TYPE,
|
|
1867
|
-
version:
|
|
2708
|
+
version: 2
|
|
1868
2709
|
});
|
|
1869
2710
|
}
|
|
1870
2711
|
function createBridgeStatSnapshotRequest(requestId = randomUUID()) {
|
|
1871
2712
|
return bridgeStatSnapshotRequestSchema.parse({
|
|
1872
2713
|
requestId,
|
|
1873
2714
|
type: BRIDGE_STAT_SNAPSHOT_REQUEST_TYPE,
|
|
1874
|
-
version:
|
|
2715
|
+
version: 2
|
|
1875
2716
|
});
|
|
1876
2717
|
}
|
|
1877
2718
|
function createBridgeSaveDirtyPackagesRequest(options = {}, requestId = randomUUID()) {
|
|
@@ -1880,7 +2721,7 @@ function createBridgeSaveDirtyPackagesRequest(options = {}, requestId = randomUU
|
|
|
1880
2721
|
saveContentPackages: options.saveContentPackages,
|
|
1881
2722
|
saveMapPackages: options.saveMapPackages,
|
|
1882
2723
|
type: BRIDGE_SAVE_DIRTY_PACKAGES_REQUEST_TYPE,
|
|
1883
|
-
version:
|
|
2724
|
+
version: 2
|
|
1884
2725
|
});
|
|
1885
2726
|
}
|
|
1886
2727
|
function createBridgeStartTraceRequest(options = {}, requestId = randomUUID()) {
|
|
@@ -1889,7 +2730,7 @@ function createBridgeStartTraceRequest(options = {}, requestId = randomUUID()) {
|
|
|
1889
2730
|
fileName: options.fileName,
|
|
1890
2731
|
requestId,
|
|
1891
2732
|
type: BRIDGE_START_TRACE_REQUEST_TYPE,
|
|
1892
|
-
version:
|
|
2733
|
+
version: 2
|
|
1893
2734
|
});
|
|
1894
2735
|
}
|
|
1895
2736
|
function createBridgeGetClassReflectionRequest(className, options = {}, requestId = randomUUID()) {
|
|
@@ -1902,14 +2743,14 @@ function createBridgeGetClassReflectionRequest(className, options = {}, requestI
|
|
|
1902
2743
|
propertyCursor: options.propertyCursor,
|
|
1903
2744
|
requestId,
|
|
1904
2745
|
type: BRIDGE_GET_CLASS_REFLECTION_REQUEST_TYPE,
|
|
1905
|
-
version:
|
|
2746
|
+
version: 2
|
|
1906
2747
|
});
|
|
1907
2748
|
}
|
|
1908
2749
|
function createBridgeCaptureViewportRequest(requestId = randomUUID()) {
|
|
1909
2750
|
return {
|
|
1910
2751
|
requestId,
|
|
1911
2752
|
type: BRIDGE_CAPTURE_VIEWPORT_REQUEST_TYPE,
|
|
1912
|
-
version:
|
|
2753
|
+
version: 2
|
|
1913
2754
|
};
|
|
1914
2755
|
}
|
|
1915
2756
|
function createBridgeGetCdoDefaultsRequest(className, options = {}, requestId = randomUUID()) {
|
|
@@ -1921,7 +2762,7 @@ function createBridgeGetCdoDefaultsRequest(className, options = {}, requestId =
|
|
|
1921
2762
|
nameFilter: options.nameFilter,
|
|
1922
2763
|
requestId,
|
|
1923
2764
|
type: BRIDGE_GET_CDO_DEFAULTS_REQUEST_TYPE,
|
|
1924
|
-
version:
|
|
2765
|
+
version: 2
|
|
1925
2766
|
});
|
|
1926
2767
|
}
|
|
1927
2768
|
function createBridgeGetCrashCallstackRequest(maxRecords = 1, maxFrames = 32, requestId = randomUUID()) {
|
|
@@ -1930,14 +2771,14 @@ function createBridgeGetCrashCallstackRequest(maxRecords = 1, maxFrames = 32, re
|
|
|
1930
2771
|
maxRecords,
|
|
1931
2772
|
requestId,
|
|
1932
2773
|
type: BRIDGE_GET_CRASH_CALLSTACK_REQUEST_TYPE,
|
|
1933
|
-
version:
|
|
2774
|
+
version: 2
|
|
1934
2775
|
});
|
|
1935
2776
|
}
|
|
1936
2777
|
function createBridgeStopTraceRequest(requestId = randomUUID()) {
|
|
1937
2778
|
return bridgeStopTraceRequestSchema.parse({
|
|
1938
2779
|
requestId,
|
|
1939
2780
|
type: BRIDGE_STOP_TRACE_REQUEST_TYPE,
|
|
1940
|
-
version:
|
|
2781
|
+
version: 2
|
|
1941
2782
|
});
|
|
1942
2783
|
}
|
|
1943
2784
|
function createBridgeCreateCppClassRequest(className, parentClass, options = {}, requestId = randomUUID()) {
|
|
@@ -1948,7 +2789,7 @@ function createBridgeCreateCppClassRequest(className, parentClass, options = {},
|
|
|
1948
2789
|
parentClass,
|
|
1949
2790
|
requestId,
|
|
1950
2791
|
type: BRIDGE_CREATE_CPP_CLASS_REQUEST_TYPE,
|
|
1951
|
-
version:
|
|
2792
|
+
version: 2
|
|
1952
2793
|
});
|
|
1953
2794
|
}
|
|
1954
2795
|
function createBridgeGetCreateClassStatusRequest(createClassJobId, requestId = randomUUID()) {
|
|
@@ -1956,7 +2797,7 @@ function createBridgeGetCreateClassStatusRequest(createClassJobId, requestId = r
|
|
|
1956
2797
|
createClassJobId,
|
|
1957
2798
|
requestId,
|
|
1958
2799
|
type: BRIDGE_GET_CREATE_CLASS_STATUS_REQUEST_TYPE,
|
|
1959
|
-
version:
|
|
2800
|
+
version: 2
|
|
1960
2801
|
});
|
|
1961
2802
|
}
|
|
1962
2803
|
//#endregion
|
|
@@ -2053,10 +2894,70 @@ async function sendBridgeStartTraceRequest(request, options) {
|
|
|
2053
2894
|
async function sendBridgeStopTraceRequest(request, options) {
|
|
2054
2895
|
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeStopTraceResponseSchema, request.requestId);
|
|
2055
2896
|
}
|
|
2056
|
-
async function
|
|
2057
|
-
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options),
|
|
2897
|
+
async function sendBridgeReadDataTableRequest(request, options) {
|
|
2898
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeReadDataTableResponseSchema, request.requestId);
|
|
2058
2899
|
}
|
|
2059
|
-
async function
|
|
2900
|
+
async function sendBridgeWriteDataTableRowRequest(request, options) {
|
|
2901
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeWriteDataTableRowResponseSchema, request.requestId);
|
|
2902
|
+
}
|
|
2903
|
+
async function sendBridgeExportDataTableRequest(request, options) {
|
|
2904
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeExportDataTableResponseSchema, request.requestId);
|
|
2905
|
+
}
|
|
2906
|
+
async function sendBridgeImportDataTableRequest(request, options) {
|
|
2907
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeImportDataTableResponseSchema, request.requestId);
|
|
2908
|
+
}
|
|
2909
|
+
async function sendBridgeCreateDataTableRequest(request, options) {
|
|
2910
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateDataTableResponseSchema, request.requestId);
|
|
2911
|
+
}
|
|
2912
|
+
async function sendBridgeRenameDataTableRequest(request, options) {
|
|
2913
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeRenameDataTableResponseSchema, request.requestId);
|
|
2914
|
+
}
|
|
2915
|
+
async function sendBridgeDeleteDataTableRequest(request, options) {
|
|
2916
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeDeleteDataTableResponseSchema, request.requestId);
|
|
2917
|
+
}
|
|
2918
|
+
async function sendBridgeRenameDataTableRowRequest(request, options) {
|
|
2919
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeRenameDataTableRowResponseSchema, request.requestId);
|
|
2920
|
+
}
|
|
2921
|
+
async function sendBridgeFindAssetsRequest(request, options) {
|
|
2922
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeFindAssetsResponseSchema, request.requestId);
|
|
2923
|
+
}
|
|
2924
|
+
async function sendBridgeListActorsRequest(request, options) {
|
|
2925
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeListActorsResponseSchema, request.requestId);
|
|
2926
|
+
}
|
|
2927
|
+
async function sendBridgeGetActorDetailsRequest(request, options) {
|
|
2928
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeGetActorDetailsResponseSchema, request.requestId);
|
|
2929
|
+
}
|
|
2930
|
+
async function sendBridgeGetCurrentLevelRequest(request, options) {
|
|
2931
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeGetCurrentLevelResponseSchema, request.requestId);
|
|
2932
|
+
}
|
|
2933
|
+
async function sendBridgeSpawnActorRequest(request, options) {
|
|
2934
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSpawnActorResponseSchema, request.requestId);
|
|
2935
|
+
}
|
|
2936
|
+
async function sendBridgeDestroyActorRequest(request, options) {
|
|
2937
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeDestroyActorResponseSchema, request.requestId);
|
|
2938
|
+
}
|
|
2939
|
+
async function sendBridgeSetActorTransformRequest(request, options) {
|
|
2940
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetActorTransformResponseSchema, request.requestId);
|
|
2941
|
+
}
|
|
2942
|
+
async function sendBridgeSetActorPropertyRequest(request, options) {
|
|
2943
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetActorPropertyResponseSchema, request.requestId);
|
|
2944
|
+
}
|
|
2945
|
+
async function sendBridgeSelectActorsRequest(request, options) {
|
|
2946
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSelectActorsResponseSchema, request.requestId);
|
|
2947
|
+
}
|
|
2948
|
+
async function sendBridgeUndoRequest(request, options) {
|
|
2949
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeUndoResponseSchema, request.requestId);
|
|
2950
|
+
}
|
|
2951
|
+
async function sendBridgeRedoRequest(request, options) {
|
|
2952
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeRedoResponseSchema, request.requestId);
|
|
2953
|
+
}
|
|
2954
|
+
async function sendBridgeOpenLevelRequest(request, options) {
|
|
2955
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeOpenLevelResponseSchema, request.requestId);
|
|
2956
|
+
}
|
|
2957
|
+
async function sendBridgeGetOpenLevelStatusRequest(request, options) {
|
|
2958
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeGetOpenLevelStatusResponseSchema, request.requestId);
|
|
2959
|
+
}
|
|
2960
|
+
async function sendBridgeGetAssetDependenciesRequest(request, options) {
|
|
2060
2961
|
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeGetAssetDependenciesResponseSchema, request.requestId);
|
|
2061
2962
|
}
|
|
2062
2963
|
async function sendBridgeFindBlueprintReferencesRequest(request, options) {
|
|
@@ -5195,6 +6096,118 @@ const findAssetsInputSchema = {
|
|
|
5195
6096
|
recursiveClasses: bridgeFindAssetsRequestSchema.shape.recursiveClasses.describe("Whether classNames also match subclasses (default true)."),
|
|
5196
6097
|
recursivePaths: bridgeFindAssetsRequestSchema.shape.recursivePaths.describe("Whether packagePaths also match sub-folders (default true).")
|
|
5197
6098
|
};
|
|
6099
|
+
const readDataTableInputSchema = {
|
|
6100
|
+
assetPath: bridgeReadDataTableRequestSchema.shape.assetPath.describe("Object path of the DataTable asset, as find_assets reports it (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6101
|
+
cursor: bridgeReadDataTableRequestSchema.shape.cursor.describe("Offset into the name-ordered row list (default 0). Pass the previous response nextCursor to fetch the next page."),
|
|
6102
|
+
loadIfNeeded: bridgeReadDataTableRequestSchema.shape.loadIfNeeded.describe("Whether to load the asset when the editor does not already have it in memory (default true). A DataTable carries no Asset Registry tags describing its rows, so with this false an unloaded table reports asset_not_loaded rather than an empty table."),
|
|
6103
|
+
maxRows: bridgeReadDataTableRequestSchema.shape.maxRows.default(25).describe("Maximum number of rows to return per page (1-100, default 25). totalRowCount still reports the unbounded row count."),
|
|
6104
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable."),
|
|
6105
|
+
rowNameFilter: bridgeReadDataTableRequestSchema.shape.rowNameFilter.describe("Optional case-insensitive substring matched against each row name, applied before paging.")
|
|
6106
|
+
};
|
|
6107
|
+
const writeDataTableRowInputSchema = {
|
|
6108
|
+
assetPath: bridgeWriteDataTableRowRequestSchema.shape.assetPath.describe("Object path of the DataTable asset to write (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6109
|
+
dryRun: bridgeWriteDataTableRowRequestSchema.shape.dryRun.describe("When true, resolve the row struct and validate every column and value without opening a transaction or dirtying the package (default false)."),
|
|
6110
|
+
operation: bridgeWriteDataTableRowRequestSchema.shape.operation.describe("'upsert' inserts the row or replaces it if it already exists; 'delete' removes it by name. Deleting a row that is not there is reported through rowExisted=false, not as an error."),
|
|
6111
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable."),
|
|
6112
|
+
rowName: bridgeWriteDataTableRowRequestSchema.shape.rowName.describe("Name of the row to write or delete, as read_data_table reports it."),
|
|
6113
|
+
values: bridgeWriteDataTableRowRequestSchema.shape.values.describe("Column name to value, in the same ExportText format read_data_table emits (required for upsert, forbidden for delete). Every column and value is validated against the row struct before anything is written: an unknown column or a value that will not parse rejects the whole write, so a row is never partially applied. Columns omitted on an upsert of an existing row keep their current value.")
|
|
6114
|
+
};
|
|
6115
|
+
const exportDataTableInputSchema = {
|
|
6116
|
+
assetPath: bridgeExportDataTableRequestSchema.shape.assetPath.describe("Object path of the DataTable asset to export (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6117
|
+
cursor: bridgeExportDataTableRequestSchema.shape.cursor.describe("Character offset into the serialized table (default 0). Pass the previous response nextCursor to fetch the next chunk."),
|
|
6118
|
+
format: bridgeExportDataTableRequestSchema.shape.format.describe("Serialization to use: 'json' (default) or 'csv'. Both come from the engine's own DataTable exporters."),
|
|
6119
|
+
loadIfNeeded: bridgeExportDataTableRequestSchema.shape.loadIfNeeded.describe("Whether to load the asset when the editor does not already have it in memory (default true)."),
|
|
6120
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable.")
|
|
6121
|
+
};
|
|
6122
|
+
const importDataTableInputSchema = {
|
|
6123
|
+
assetPath: bridgeImportDataTableRequestSchema.shape.assetPath.describe("Object path of the DataTable asset to overwrite (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6124
|
+
content: bridgeImportDataTableRequestSchema.shape.content.describe(`Complete serialized table in the chosen format, up to ${String(BRIDGE_DATA_TABLE_MAX_IMPORT_CHARS)} characters — the whole payload travels in one bridge frame, so a table larger than that cannot be imported this way. This REPLACES every row: a row absent from the content is deleted.`),
|
|
6125
|
+
dryRun: bridgeImportDataTableRequestSchema.shape.dryRun.describe("When true, parse the content and report the row count and problems without replacing anything (default false)."),
|
|
6126
|
+
format: bridgeImportDataTableRequestSchema.shape.format.describe("Serialization the content is in: 'json' (default) or 'csv'."),
|
|
6127
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable.")
|
|
6128
|
+
};
|
|
6129
|
+
const createDataTableInputSchema = {
|
|
6130
|
+
assetPath: bridgeCreateDataTableRequestSchema.shape.assetPath.describe("Object path for the new DataTable, e.g. /Game/Data/DT_Weapons. Fails if an asset already exists there."),
|
|
6131
|
+
dryRun: bridgeCreateDataTableRequestSchema.shape.dryRun.describe("When true, resolve and validate the row struct and destination without creating anything (default false)."),
|
|
6132
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should create the table."),
|
|
6133
|
+
rowStructPath: bridgeCreateDataTableRequestSchema.shape.rowStructPath.describe("Struct backing every row. Native structs use /Script/<Module>.<Struct>; a Blueprint struct uses its object path. Must derive FTableRowBase. Cannot be changed after creation.")
|
|
6134
|
+
};
|
|
6135
|
+
const renameDataTableInputSchema = {
|
|
6136
|
+
assetPath: bridgeRenameDataTableRequestSchema.shape.assetPath.describe("Object path of the DataTable to rename or move (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6137
|
+
destinationPath: bridgeRenameDataTableRequestSchema.shape.destinationPath.describe("Package path to move the asset into, e.g. /Game/Data/Archive. Omit to keep it where it is."),
|
|
6138
|
+
dryRun: bridgeRenameDataTableRequestSchema.shape.dryRun.describe("When true, validate the destination without moving anything (default false)."),
|
|
6139
|
+
newName: bridgeRenameDataTableRequestSchema.shape.newName.describe("New asset name without any path, e.g. DT_WeaponsLegacy. Omit to keep the current name."),
|
|
6140
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable.")
|
|
6141
|
+
};
|
|
6142
|
+
const deleteDataTableInputSchema = {
|
|
6143
|
+
assetPath: bridgeDeleteDataTableRequestSchema.shape.assetPath.describe("Object path of the DataTable to delete (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6144
|
+
dryRun: bridgeDeleteDataTableRequestSchema.shape.dryRun.describe("When true, report what would be deleted and what still references it, without deleting (default false)."),
|
|
6145
|
+
force: bridgeDeleteDataTableRequestSchema.shape.force.describe("Delete even when other assets reference the table, breaking those references (default false). Without it a referenced table is refused and its referencers are reported."),
|
|
6146
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable.")
|
|
6147
|
+
};
|
|
6148
|
+
const renameDataTableRowInputSchema = {
|
|
6149
|
+
assetPath: bridgeRenameDataTableRowRequestSchema.shape.assetPath.describe("Object path of the DataTable holding the row (e.g. /Game/Data/DT_Weapons.DT_Weapons)."),
|
|
6150
|
+
dryRun: bridgeRenameDataTableRowRequestSchema.shape.dryRun.describe("When true, validate both names without renaming anything (default false)."),
|
|
6151
|
+
newRowName: bridgeRenameDataTableRowRequestSchema.shape.newRowName.describe("Name to rename the row to. Fails if a row already uses it."),
|
|
6152
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the DataTable."),
|
|
6153
|
+
rowName: bridgeRenameDataTableRowRequestSchema.shape.rowName.describe("Current name of the row to rename.")
|
|
6154
|
+
};
|
|
6155
|
+
const listActorsInputSchema = {
|
|
6156
|
+
classNames: bridgeListActorsRequestSchema.shape.classNames.describe("Actor class names to match, either short (StaticMeshActor, PointLight) or full class paths (/Script/Engine.StaticMeshActor, /Game/BP/BP_Foo.BP_Foo_C). Subclasses match too. Empty means every class."),
|
|
6157
|
+
cursor: bridgeListActorsRequestSchema.shape.cursor.describe("Offset into the stable-ordered matched list (default 0). Pass the previous response nextCursor to fetch the next page."),
|
|
6158
|
+
levelName: bridgeListActorsRequestSchema.shape.levelName.describe("Restrict the walk to a single level, by package name (/Game/Maps/MyLevel) or short name (MyLevel). Omitted means every level loaded in the editor world."),
|
|
6159
|
+
maxResults: bridgeListActorsRequestSchema.shape.maxResults.default(50).describe("Maximum number of actors to return per page (1-100, default 50). totalCount still reports the unbounded match count."),
|
|
6160
|
+
nameFilter: bridgeListActorsRequestSchema.shape.nameFilter.describe("Optional case-insensitive substring matched against each actor label and path."),
|
|
6161
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should list its actors."),
|
|
6162
|
+
tag: bridgeListActorsRequestSchema.shape.tag.describe("Optional exact-match actor tag (AActor::Tags) to filter by.")
|
|
6163
|
+
};
|
|
6164
|
+
const getActorDetailsInputSchema = {
|
|
6165
|
+
actorPath: bridgeGetActorDetailsRequestSchema.shape.actorPath.describe("Full path name of the actor, as returned by list_actors or get_editor_state (e.g. /Game/Maps/Test.Test:PersistentLevel.StaticMeshActor_3)."),
|
|
6166
|
+
componentCursor: bridgeGetActorDetailsRequestSchema.shape.componentCursor.describe("Offset into the component list (default 0). Pass the previous response nextComponentCursor to fetch the next page."),
|
|
6167
|
+
includeInherited: bridgeGetActorDetailsRequestSchema.shape.includeInherited.describe("Whether to include properties inherited from parent classes (default false). Inherited properties are the bulk of any AActor subclass."),
|
|
6168
|
+
maxResults: bridgeGetActorDetailsRequestSchema.shape.maxResults.default(25).describe("Maximum entries returned per page for each list (1-200, default 25)."),
|
|
6169
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the actor."),
|
|
6170
|
+
propertyCursor: bridgeGetActorDetailsRequestSchema.shape.propertyCursor.describe("Offset into the property list (default 0). Pass the previous response nextPropertyCursor to fetch the next page.")
|
|
6171
|
+
};
|
|
6172
|
+
const getCurrentLevelInputSchema = { projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should report its loaded level.") };
|
|
6173
|
+
const spawnActorInputSchema = {
|
|
6174
|
+
dryRun: bridgeSpawnActorRequestSchema.shape.dryRun.describe("When true, validate every entry and report what would be spawned without opening a transaction or touching the world (default false)."),
|
|
6175
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should spawn the actors."),
|
|
6176
|
+
spawns: bridgeSpawnActorRequestSchema.shape.spawns.describe("Actors to spawn (1-64). Each entry needs a classPath — a native class path (/Script/Engine.StaticMeshActor) or a Blueprint generated class (/Game/BP/BP_Foo.BP_Foo_C) — plus an optional transform, label, outliner folderPath, and tags. The whole batch spawns inside one transaction, so Ctrl+Z removes all of it as a single step.")
|
|
6177
|
+
};
|
|
6178
|
+
const destroyActorInputSchema = {
|
|
6179
|
+
actorPaths: bridgeDestroyActorRequestSchema.shape.actorPaths.describe("Full path names of the actors to destroy (1-64), as returned by list_actors. The whole batch is destroyed inside one transaction, so Ctrl+Z restores all of it as a single step."),
|
|
6180
|
+
dryRun: bridgeDestroyActorRequestSchema.shape.dryRun.describe("When true, check that every actorPath resolves and report what would be destroyed without opening a transaction or touching the world (default false)."),
|
|
6181
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the actors.")
|
|
6182
|
+
};
|
|
6183
|
+
const setActorTransformInputSchema = {
|
|
6184
|
+
dryRun: bridgeSetActorTransformRequestSchema.shape.dryRun.describe("When true, check that every actorPath resolves and report what would move without opening a transaction (default false)."),
|
|
6185
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the actors."),
|
|
6186
|
+
transforms: bridgeSetActorTransformRequestSchema.shape.transforms.describe("Transform edits to apply (1-64). Each entry needs an actorPath plus any of location, rotation, and scale — an omitted component keeps its current value, so you can move an actor without restating its rotation. The whole batch runs in one transaction.")
|
|
6187
|
+
};
|
|
6188
|
+
const setActorPropertyInputSchema = {
|
|
6189
|
+
dryRun: bridgeSetActorPropertyRequestSchema.shape.dryRun.describe("When true, resolve every property path and check the value coerces, without opening a transaction or writing anything (default false)."),
|
|
6190
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the actors."),
|
|
6191
|
+
properties: bridgeSetActorPropertyRequestSchema.shape.properties.describe("Property writes to apply (1-64). Each entry needs an actorPath, a propertyPath — 'bHidden' for an actor property or 'StaticMeshComponent.RelativeScale3D' for a component's — and a value in the same ExportText format get_actor_details and get_cdo_defaults emit. Non-editable (EditConst) properties are rejected with an error rather than silently ignored.")
|
|
6192
|
+
};
|
|
6193
|
+
const selectActorsInputSchema = {
|
|
6194
|
+
actorPaths: bridgeSelectActorsRequestSchema.shape.actorPaths.describe("Actor paths to select (up to 64). An empty list clears the selection. These are the same actorPath values list_actors and get_editor_state report."),
|
|
6195
|
+
addToSelection: bridgeSelectActorsRequestSchema.shape.addToSelection.describe("When true, add the listed actors to the current selection instead of replacing it (default false)."),
|
|
6196
|
+
dryRun: bridgeSelectActorsRequestSchema.shape.dryRun.describe("When true, check that every actorPath resolves and report what would be selected without changing the selection (default false)."),
|
|
6197
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor holds the actors.")
|
|
6198
|
+
};
|
|
6199
|
+
const undoInputSchema = { projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should undo its last transaction.") };
|
|
6200
|
+
const redoInputSchema = { projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should redo its last undone transaction.") };
|
|
6201
|
+
const openLevelInputSchema = {
|
|
6202
|
+
dryRun: bridgeOpenLevelRequestSchema.shape.dryRun.describe("When true, check that the level package exists and report what would be opened without loading it (default false)."),
|
|
6203
|
+
levelPath: bridgeOpenLevelRequestSchema.shape.levelPath.describe("Package name of the level to open (e.g. /Game/Maps/MyLevel), as get_current_level and find_assets report it."),
|
|
6204
|
+
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should open the level."),
|
|
6205
|
+
saveDirtyPackages: bridgeOpenLevelRequestSchema.shape.saveDirtyPackages.describe("When true, save dirty packages before tearing down the current world; otherwise unsaved changes are discarded (default false).")
|
|
6206
|
+
};
|
|
6207
|
+
const getOpenLevelStatusInputSchema = {
|
|
6208
|
+
openLevelJobId: bridgeGetOpenLevelStatusRequestSchema.shape.openLevelJobId.describe("openLevelJobId returned by open_level identifying the load job to poll."),
|
|
6209
|
+
projectId: projectIdSchema
|
|
6210
|
+
};
|
|
5198
6211
|
const getAssetDependenciesInputSchema = {
|
|
5199
6212
|
assetPath: bridgeGetAssetDependenciesRequestSchema.shape.assetPath.describe("Package name or object path of the asset to inspect (e.g. /Game/BP/BP_Player or /Game/BP/BP_Player.BP_Player)."),
|
|
5200
6213
|
categories: bridgeGetAssetDependenciesRequestSchema.shape.categories.describe("Dependency categories to include: 'package' (default), 'searchable_name', 'manage'."),
|
|
@@ -5585,7 +6598,7 @@ function registerMcpTools(server, dependencies) {
|
|
|
5585
6598
|
}, dependencies));
|
|
5586
6599
|
});
|
|
5587
6600
|
server.registerTool("get_editor_state", {
|
|
5588
|
-
description: "Report the registered Unreal Editor's current state for a project: the open map name and package path, the
|
|
6601
|
+
description: "Report the registered Unreal Editor's current state for a project: the open map name and package path, the selected actors as { actorPath, label } objects whose actorPath the level tools accept directly, the active editor modes, and whether Play-in-Editor is running. Selected actors are capped per response; selectedActorCount reports the full selection size. activeModes is empty until the level editor has finished initializing, so an empty list right after the editor starts means 'not ready yet', not 'no mode'.",
|
|
5589
6602
|
inputSchema: getEditorStateInputSchema,
|
|
5590
6603
|
title: "Get Editor State"
|
|
5591
6604
|
}, async ({ projectId }) => {
|
|
@@ -5712,6 +6725,134 @@ function registerMcpTools(server, dependencies) {
|
|
|
5712
6725
|
projectId
|
|
5713
6726
|
}, dependencies));
|
|
5714
6727
|
});
|
|
6728
|
+
server.registerTool("list_actors", {
|
|
6729
|
+
description: "Enumerate actors in the editor's currently loaded level(s), optionally filtered by class, name substring, tag, or level. Returns each actor's canonical actorPath (the identifier every other level tool takes), display label, class, level, and World Outliner folder. Results are paged: pass the previous response nextCursor to fetch the next page, and totalCount reports the full match count even when a page truncates. Use this to find an actor before calling get_actor_details.",
|
|
6730
|
+
inputSchema: listActorsInputSchema,
|
|
6731
|
+
title: "List Actors"
|
|
6732
|
+
}, async ({ classNames, cursor, levelName, maxResults, nameFilter, projectId, tag }) => {
|
|
6733
|
+
return toToolSuccess(await listActors({
|
|
6734
|
+
classNames,
|
|
6735
|
+
cursor,
|
|
6736
|
+
levelName,
|
|
6737
|
+
maxResults,
|
|
6738
|
+
nameFilter,
|
|
6739
|
+
projectId,
|
|
6740
|
+
tag
|
|
6741
|
+
}, dependencies));
|
|
6742
|
+
});
|
|
6743
|
+
server.registerTool("get_actor_details", {
|
|
6744
|
+
description: "Inspect one actor in the loaded level by its actorPath: world transform, attached component hierarchy (each component's name, class, attachment parent, and relative transform), and reflected UPROPERTY values. Property values use the same ExportText format get_cdo_defaults emits, so a value read here can be written back verbatim. Components and properties page independently — pass nextComponentCursor / nextPropertyCursor to continue each list. Inherited properties are excluded unless includeInherited is true.",
|
|
6745
|
+
inputSchema: getActorDetailsInputSchema,
|
|
6746
|
+
title: "Get Actor Details"
|
|
6747
|
+
}, async ({ actorPath, componentCursor, includeInherited, maxResults, projectId, propertyCursor }) => {
|
|
6748
|
+
return toToolSuccess(await getActorDetails({
|
|
6749
|
+
actorPath,
|
|
6750
|
+
componentCursor,
|
|
6751
|
+
includeInherited,
|
|
6752
|
+
maxResults,
|
|
6753
|
+
projectId,
|
|
6754
|
+
propertyCursor
|
|
6755
|
+
}, dependencies));
|
|
6756
|
+
});
|
|
6757
|
+
server.registerTool("get_current_level", {
|
|
6758
|
+
description: "Report the level the editor currently has open — its short name and package path — plus every streaming level registered on that world with its loaded and visible state. worldPartition=true means the map streams cells through World Partition rather than through the listed ULevelStreaming entries, so the streamingLevels list will usually be empty for such a map. Returns no level fields when the editor has no world loaded.",
|
|
6759
|
+
inputSchema: getCurrentLevelInputSchema,
|
|
6760
|
+
title: "Get Current Level"
|
|
6761
|
+
}, async ({ projectId }) => {
|
|
6762
|
+
return toToolSuccess(await getCurrentLevel({ projectId }, dependencies));
|
|
6763
|
+
});
|
|
6764
|
+
server.registerTool("spawn_actor", {
|
|
6765
|
+
description: "Spawn one or more actors into the editor's loaded level. Each entry takes a classPath (native or Blueprint generated class) and an optional transform, label, outliner folder, and tags. The whole batch runs inside a single editor transaction, so a human pressing Ctrl+Z removes every actor the call spawned as one step, and save_dirty_packages will report the level afterwards. Returns a per-entry result carrying the new actorPath or the reason that entry failed; a failed entry does not abort the rest of the batch. Pass dryRun: true to validate the batch and see what would be spawned without changing anything.",
|
|
6766
|
+
inputSchema: spawnActorInputSchema,
|
|
6767
|
+
title: "Spawn Actor"
|
|
6768
|
+
}, async ({ dryRun, projectId, spawns }) => {
|
|
6769
|
+
return toToolSuccess(await spawnActor({
|
|
6770
|
+
dryRun,
|
|
6771
|
+
projectId,
|
|
6772
|
+
spawns
|
|
6773
|
+
}, dependencies));
|
|
6774
|
+
});
|
|
6775
|
+
server.registerTool("destroy_actor", {
|
|
6776
|
+
description: "Destroy one or more actors in the loaded level, addressed by the actorPath list_actors returns. The whole batch runs inside a single editor transaction, so Ctrl+Z restores every actor the call destroyed as one step. Returns a per-entry result; an actorPath that no longer resolves fails only its own entry. Pass dryRun: true to check the paths and see what would be destroyed without changing anything.",
|
|
6777
|
+
inputSchema: destroyActorInputSchema,
|
|
6778
|
+
title: "Destroy Actor"
|
|
6779
|
+
}, async ({ actorPaths, dryRun, projectId }) => {
|
|
6780
|
+
return toToolSuccess(await destroyActor({
|
|
6781
|
+
actorPaths,
|
|
6782
|
+
dryRun,
|
|
6783
|
+
projectId
|
|
6784
|
+
}, dependencies));
|
|
6785
|
+
});
|
|
6786
|
+
server.registerTool("set_actor_transform", {
|
|
6787
|
+
description: "Move, rotate, and/or scale one or more actors in the loaded level. Each entry addresses an actor by actorPath and supplies any of location, rotation, and scale — an omitted component keeps its current value. The whole batch runs inside a single editor transaction, so Ctrl+Z restores every original transform as one step. Returns a per-entry result; pass dryRun: true to check the paths without moving anything.",
|
|
6788
|
+
inputSchema: setActorTransformInputSchema,
|
|
6789
|
+
title: "Set Actor Transform"
|
|
6790
|
+
}, async ({ dryRun, projectId, transforms }) => {
|
|
6791
|
+
return toToolSuccess(await setActorTransform({
|
|
6792
|
+
dryRun,
|
|
6793
|
+
projectId,
|
|
6794
|
+
transforms
|
|
6795
|
+
}, dependencies));
|
|
6796
|
+
});
|
|
6797
|
+
server.registerTool("set_actor_property", {
|
|
6798
|
+
description: "Write reflected UPROPERTY values on actors or their components in the loaded level. Each entry takes an actorPath, a propertyPath ('bHidden' on the actor, 'StaticMeshComponent.RelativeScale3D' on a component), and a value in the same ExportText format get_actor_details and get_cdo_defaults emit — so you can read a value, edit it, and write it back without translating. Properties marked EditConst or not exposed for editing are rejected with an explicit error rather than silently ignored. The whole batch runs in one transaction; pass dryRun: true to resolve paths and check coercion without writing.",
|
|
6799
|
+
inputSchema: setActorPropertyInputSchema,
|
|
6800
|
+
title: "Set Actor Property"
|
|
6801
|
+
}, async ({ dryRun, projectId, properties }) => {
|
|
6802
|
+
return toToolSuccess(await setActorProperty({
|
|
6803
|
+
dryRun,
|
|
6804
|
+
projectId,
|
|
6805
|
+
properties
|
|
6806
|
+
}, dependencies));
|
|
6807
|
+
});
|
|
6808
|
+
server.registerTool("select_actors", {
|
|
6809
|
+
description: "Set the editor's actor selection — the write-side counterpart to get_editor_state, using the same actorPath identifiers list_actors returns. An empty actorPaths list clears the selection; addToSelection adds to it instead of replacing it. Runs inside a transaction, so Ctrl+Z restores the previous selection. Returns the resulting selectedActorCount plus a per-entry result for any path that no longer resolves.",
|
|
6810
|
+
inputSchema: selectActorsInputSchema,
|
|
6811
|
+
title: "Select Actors"
|
|
6812
|
+
}, async ({ actorPaths, addToSelection, dryRun, projectId }) => {
|
|
6813
|
+
return toToolSuccess(await selectActors({
|
|
6814
|
+
actorPaths,
|
|
6815
|
+
addToSelection,
|
|
6816
|
+
dryRun,
|
|
6817
|
+
projectId
|
|
6818
|
+
}, dependencies));
|
|
6819
|
+
});
|
|
6820
|
+
server.registerTool("undo", {
|
|
6821
|
+
description: "Undo the editor's most recent transaction — the same action as pressing Ctrl+Z in the editor — and report the title of the transaction that was undone. Use this to roll back your own level edits without a human in the loop. Returns state 'nothing_to_undo' when the transaction buffer is empty. Note this undoes whatever is at the head of the buffer, which may be a human's edit rather than yours, so check the returned transactionTitle.",
|
|
6822
|
+
inputSchema: undoInputSchema,
|
|
6823
|
+
title: "Undo"
|
|
6824
|
+
}, async ({ projectId }) => {
|
|
6825
|
+
return toToolSuccess(await undo({ projectId }, dependencies));
|
|
6826
|
+
});
|
|
6827
|
+
server.registerTool("redo", {
|
|
6828
|
+
description: "Redo the editor's most recently undone transaction — the same action as pressing Ctrl+Y in the editor — and report the title of the transaction that was redone. Returns state 'nothing_to_redo' when there is nothing to reapply.",
|
|
6829
|
+
inputSchema: redoInputSchema,
|
|
6830
|
+
title: "Redo"
|
|
6831
|
+
}, async ({ projectId }) => {
|
|
6832
|
+
return toToolSuccess(await redo({ projectId }, dependencies));
|
|
6833
|
+
});
|
|
6834
|
+
server.registerTool("open_level", {
|
|
6835
|
+
description: "Open a level in the editor by package name. Loading a map tears down and rebuilds the world, which takes far longer than a bridge request can wait, so this only accepts the job: it returns state 'opening' with an openLevelJobId to poll with get_open_level_status. Unsaved changes in the current world are discarded unless saveDirtyPackages is true. This is NOT undoable — loading a map clears the editor's transaction buffer, so undo cannot bring the previous level back.",
|
|
6836
|
+
inputSchema: openLevelInputSchema,
|
|
6837
|
+
title: "Open Level"
|
|
6838
|
+
}, async ({ dryRun, levelPath, projectId, saveDirtyPackages }) => {
|
|
6839
|
+
return toToolSuccess(await openLevel({
|
|
6840
|
+
dryRun,
|
|
6841
|
+
levelPath,
|
|
6842
|
+
projectId,
|
|
6843
|
+
saveDirtyPackages
|
|
6844
|
+
}, dependencies));
|
|
6845
|
+
});
|
|
6846
|
+
server.registerTool("get_open_level_status", {
|
|
6847
|
+
description: "Poll a level load started by open_level for a projectId; returns state (opening, succeeded, failed, unknown_job), the loaded levelPath, and timing once finished. Poll until the state leaves 'opening' before issuing further level tools — actor paths from the previous world do not survive the load.",
|
|
6848
|
+
inputSchema: getOpenLevelStatusInputSchema,
|
|
6849
|
+
title: "Get Open Level Status"
|
|
6850
|
+
}, async ({ openLevelJobId, projectId }) => {
|
|
6851
|
+
return toToolSuccess(await getOpenLevelStatus({
|
|
6852
|
+
openLevelJobId,
|
|
6853
|
+
projectId
|
|
6854
|
+
}, dependencies));
|
|
6855
|
+
});
|
|
5715
6856
|
server.registerTool("find_assets", {
|
|
5716
6857
|
description: "Query a project's Unreal Asset Registry for assets by class and/or content path, without loading them; returns each match's name, class, package name, package path, and object path. Requires at least one of classNames or packagePaths — an unfiltered query would stall the editor enumerating every asset. Results are paged: pass the previous response nextCursor to fetch the next page (totalCount reports the full match count). scanning=true means the registry is still indexing, so an empty result does not prove the asset is absent.",
|
|
5717
6858
|
inputSchema: findAssetsInputSchema,
|
|
@@ -5728,6 +6869,110 @@ function registerMcpTools(server, dependencies) {
|
|
|
5728
6869
|
recursivePaths
|
|
5729
6870
|
}, dependencies));
|
|
5730
6871
|
});
|
|
6872
|
+
server.registerTool("read_data_table", {
|
|
6873
|
+
description: "Read a DataTable asset's contents: the row struct it is typed on, its ordered column list (name plus the same type rendering get_class_reflection emits), and its rows as column-name-to-value maps. Values are ExportText, the format write_data_table_row accepts back, so a value read here round-trips. Rows are paged by name order: pass the previous response nextCursor to fetch the next page (totalRowCount reports the full count). A DataTable is a binary .uasset with no Asset Registry tags describing its rows, so there is no way to read one off disk instead — this tool loads it.",
|
|
6874
|
+
inputSchema: readDataTableInputSchema,
|
|
6875
|
+
title: "Read Data Table"
|
|
6876
|
+
}, async ({ assetPath, cursor, loadIfNeeded, maxRows, projectId, rowNameFilter }) => {
|
|
6877
|
+
return toToolSuccess(await readDataTable({
|
|
6878
|
+
assetPath,
|
|
6879
|
+
cursor,
|
|
6880
|
+
loadIfNeeded,
|
|
6881
|
+
maxRows,
|
|
6882
|
+
projectId,
|
|
6883
|
+
rowNameFilter
|
|
6884
|
+
}, dependencies));
|
|
6885
|
+
});
|
|
6886
|
+
server.registerTool("write_data_table_row", {
|
|
6887
|
+
description: "Insert, update, or delete a single DataTable row. Every column name and value is validated against the row struct before anything is written — an unknown column or a value that will not parse rejects the whole write with an error naming the field, so a row is never partially applied and there is no silent coercion. The write runs inside one transaction, so a human at the editor can Ctrl+Z it, and it marks the package dirty without saving: call save_dirty_packages to persist. Deleting a row that does not exist reports rowExisted=false rather than failing. Use dryRun to validate first. For a whole-table replace use import_data_table instead.",
|
|
6888
|
+
inputSchema: writeDataTableRowInputSchema,
|
|
6889
|
+
title: "Write Data Table Row"
|
|
6890
|
+
}, async ({ assetPath, dryRun, operation, projectId, rowName, values }) => {
|
|
6891
|
+
return toToolSuccess(await writeDataTableRow({
|
|
6892
|
+
assetPath,
|
|
6893
|
+
dryRun,
|
|
6894
|
+
operation,
|
|
6895
|
+
projectId,
|
|
6896
|
+
rowName,
|
|
6897
|
+
values
|
|
6898
|
+
}, dependencies));
|
|
6899
|
+
});
|
|
6900
|
+
server.registerTool("export_data_table", {
|
|
6901
|
+
description: "Serialize a whole DataTable through the engine's own JSON or CSV exporter. Returned in chunks by character offset because the engine produces one string rather than something row-addressable: concatenate the chunks in cursor order to reassemble, and note a single chunk is not valid JSON or CSV on its own. Use read_data_table when you want structured, per-row access; use this when you want the table in the same text form the editor's own export produces.",
|
|
6902
|
+
inputSchema: exportDataTableInputSchema,
|
|
6903
|
+
title: "Export Data Table"
|
|
6904
|
+
}, async ({ assetPath, cursor, format, loadIfNeeded, projectId }) => {
|
|
6905
|
+
return toToolSuccess(await exportDataTable({
|
|
6906
|
+
assetPath,
|
|
6907
|
+
cursor,
|
|
6908
|
+
format,
|
|
6909
|
+
loadIfNeeded,
|
|
6910
|
+
projectId
|
|
6911
|
+
}, dependencies));
|
|
6912
|
+
});
|
|
6913
|
+
server.registerTool("import_data_table", {
|
|
6914
|
+
description: "REPLACE every row of a DataTable from a JSON or CSV payload, using the engine's own importer. This is destructive: any row not present in the content is deleted, so it is the wrong tool for changing one value — use write_data_table_row for that. The whole payload travels in one bridge frame, so a table beyond the content character bound cannot be imported this way. Runs inside one transaction (Ctrl+Z reverses it) and marks the package dirty without saving. Rows the importer rejects come back in problems while the rest still apply, so check problemCount even on success; dryRun reports the row count and problems without replacing anything.",
|
|
6915
|
+
inputSchema: importDataTableInputSchema,
|
|
6916
|
+
title: "Import Data Table"
|
|
6917
|
+
}, async ({ assetPath, content, dryRun, format, projectId }) => {
|
|
6918
|
+
return toToolSuccess(await importDataTable({
|
|
6919
|
+
assetPath,
|
|
6920
|
+
content,
|
|
6921
|
+
dryRun,
|
|
6922
|
+
format,
|
|
6923
|
+
projectId
|
|
6924
|
+
}, dependencies));
|
|
6925
|
+
});
|
|
6926
|
+
server.registerTool("create_data_table", {
|
|
6927
|
+
description: "Create a new empty DataTable asset backed by a row struct. The struct is fixed at creation — UDataTable can have its RowStruct swapped later, but that reinterprets existing rows through the new layout, so the bridge does not expose it; create a new table instead. The struct must derive FTableRowBase, and creation fails if an asset already exists at the path. The new table is marked dirty but not written to disk: call save_dirty_packages to persist it, or it disappears when the editor closes. Use read_data_table to confirm the column set the struct produced.",
|
|
6928
|
+
inputSchema: createDataTableInputSchema,
|
|
6929
|
+
title: "Create Data Table"
|
|
6930
|
+
}, async ({ assetPath, dryRun, projectId, rowStructPath }) => {
|
|
6931
|
+
return toToolSuccess(await createDataTable({
|
|
6932
|
+
assetPath,
|
|
6933
|
+
dryRun,
|
|
6934
|
+
projectId,
|
|
6935
|
+
rowStructPath
|
|
6936
|
+
}, dependencies));
|
|
6937
|
+
});
|
|
6938
|
+
server.registerTool("rename_data_table", {
|
|
6939
|
+
description: "Rename a DataTable, move it to another package path, or both. Goes through the editor's asset tools, so references from other assets are fixed up and a redirector is left at the old path to keep hard references resolving. Renaming is not a transaction the editor can Ctrl+Z — it rewrites packages on disk. Use dryRun to check the destination is free first.",
|
|
6940
|
+
inputSchema: renameDataTableInputSchema,
|
|
6941
|
+
title: "Rename Data Table"
|
|
6942
|
+
}, async ({ assetPath, destinationPath, dryRun, newName, projectId }) => {
|
|
6943
|
+
return toToolSuccess(await renameDataTable({
|
|
6944
|
+
assetPath,
|
|
6945
|
+
destinationPath,
|
|
6946
|
+
dryRun,
|
|
6947
|
+
newName,
|
|
6948
|
+
projectId
|
|
6949
|
+
}, dependencies));
|
|
6950
|
+
});
|
|
6951
|
+
server.registerTool("delete_data_table", {
|
|
6952
|
+
description: "Delete a DataTable asset from the project. This is the one DataTable tool that cannot be undone — asset deletion is not a transaction, so there is no Ctrl+Z and no dirty-package step to reconsider at. A table other assets still reference is refused, and those referencers are reported; force deletes anyway and breaks them. Always dryRun first on a table you did not create: it reports the referencers without touching anything.",
|
|
6953
|
+
inputSchema: deleteDataTableInputSchema,
|
|
6954
|
+
title: "Delete Data Table"
|
|
6955
|
+
}, async ({ assetPath, dryRun, force, projectId }) => {
|
|
6956
|
+
return toToolSuccess(await deleteDataTable({
|
|
6957
|
+
assetPath,
|
|
6958
|
+
dryRun,
|
|
6959
|
+
force,
|
|
6960
|
+
projectId
|
|
6961
|
+
}, dependencies));
|
|
6962
|
+
});
|
|
6963
|
+
server.registerTool("rename_data_table_row", {
|
|
6964
|
+
description: "Rename a single row, keeping its position in the table and its values intact. Not the same as an upsert under the new name followed by a delete of the old one: that pair costs two transactions and moves the row to the end. Fails if the row does not exist or the new name is already taken. Runs inside one transaction (Ctrl+Z reverses it) and marks the package dirty without saving. Note that row names are how other assets address rows, so a rename breaks any FDataTableRowHandle pointing at the old name — nothing fixes those up.",
|
|
6965
|
+
inputSchema: renameDataTableRowInputSchema,
|
|
6966
|
+
title: "Rename Data Table Row"
|
|
6967
|
+
}, async ({ assetPath, dryRun, newRowName, projectId, rowName }) => {
|
|
6968
|
+
return toToolSuccess(await renameDataTableRow({
|
|
6969
|
+
assetPath,
|
|
6970
|
+
dryRun,
|
|
6971
|
+
newRowName,
|
|
6972
|
+
projectId,
|
|
6973
|
+
rowName
|
|
6974
|
+
}, dependencies));
|
|
6975
|
+
});
|
|
5731
6976
|
server.registerTool("get_asset_dependencies", {
|
|
5732
6977
|
description: "Report an asset's package-level dependencies (what it needs) and referencers (what needs it) from the Unreal Asset Registry — the Reference Viewer data — so you can judge the blast radius before changing it. Depth is 1: transitive links are not walked. Each list pages independently via nextDependencyCursor / nextReferencerCursor.",
|
|
5733
6978
|
inputSchema: getAssetDependenciesInputSchema,
|
|
@@ -5821,6 +7066,285 @@ function registerMcpTools(server, dependencies) {
|
|
|
5821
7066
|
}, dependencies));
|
|
5822
7067
|
});
|
|
5823
7068
|
}
|
|
7069
|
+
async function listActors(input, dependencies) {
|
|
7070
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7071
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7072
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7073
|
+
const response = await sendBridgeListActorsRequest(createBridgeListActorsRequest({
|
|
7074
|
+
classNames: input.classNames,
|
|
7075
|
+
cursor: input.cursor,
|
|
7076
|
+
levelName: input.levelName,
|
|
7077
|
+
maxResults: input.maxResults,
|
|
7078
|
+
nameFilter: input.nameFilter,
|
|
7079
|
+
tag: input.tag
|
|
7080
|
+
}), {
|
|
7081
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7082
|
+
host: "127.0.0.1",
|
|
7083
|
+
port: entry.port,
|
|
7084
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7085
|
+
});
|
|
7086
|
+
if (!response.ok) throw new Error(`Bridge list_actors failed (${response.error.code}): ${response.error.message}`);
|
|
7087
|
+
return {
|
|
7088
|
+
actors: response.actors,
|
|
7089
|
+
message: response.message,
|
|
7090
|
+
nextCursor: response.nextCursor,
|
|
7091
|
+
projectId: entry.projectId,
|
|
7092
|
+
totalCount: response.totalCount,
|
|
7093
|
+
truncated: response.truncated
|
|
7094
|
+
};
|
|
7095
|
+
}
|
|
7096
|
+
async function getActorDetails(input, dependencies) {
|
|
7097
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7098
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7099
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7100
|
+
const response = await sendBridgeGetActorDetailsRequest(createBridgeGetActorDetailsRequest(input.actorPath, {
|
|
7101
|
+
componentCursor: input.componentCursor,
|
|
7102
|
+
includeInherited: input.includeInherited,
|
|
7103
|
+
maxResults: input.maxResults,
|
|
7104
|
+
propertyCursor: input.propertyCursor
|
|
7105
|
+
}), {
|
|
7106
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7107
|
+
host: "127.0.0.1",
|
|
7108
|
+
port: entry.port,
|
|
7109
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7110
|
+
});
|
|
7111
|
+
if (!response.ok) throw new Error(`Bridge get_actor_details failed (${response.error.code}): ${response.error.message}`);
|
|
7112
|
+
return {
|
|
7113
|
+
actorPath: response.actorPath,
|
|
7114
|
+
className: response.className,
|
|
7115
|
+
componentCount: response.componentCount,
|
|
7116
|
+
components: response.components,
|
|
7117
|
+
componentTruncated: response.componentTruncated,
|
|
7118
|
+
folderPath: response.folderPath,
|
|
7119
|
+
label: response.label,
|
|
7120
|
+
levelName: response.levelName,
|
|
7121
|
+
nextComponentCursor: response.nextComponentCursor,
|
|
7122
|
+
nextPropertyCursor: response.nextPropertyCursor,
|
|
7123
|
+
projectId: entry.projectId,
|
|
7124
|
+
properties: response.properties,
|
|
7125
|
+
propertyCount: response.propertyCount,
|
|
7126
|
+
propertyTruncated: response.propertyTruncated,
|
|
7127
|
+
transform: response.transform
|
|
7128
|
+
};
|
|
7129
|
+
}
|
|
7130
|
+
async function getCurrentLevel(input, dependencies) {
|
|
7131
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7132
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7133
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7134
|
+
const response = await sendBridgeGetCurrentLevelRequest(createBridgeGetCurrentLevelRequest(), {
|
|
7135
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7136
|
+
host: "127.0.0.1",
|
|
7137
|
+
port: entry.port,
|
|
7138
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7139
|
+
});
|
|
7140
|
+
if (!response.ok) throw new Error(`Bridge get_current_level failed (${response.error.code}): ${response.error.message}`);
|
|
7141
|
+
return {
|
|
7142
|
+
levelName: response.levelName,
|
|
7143
|
+
levelPath: response.levelPath,
|
|
7144
|
+
message: response.message,
|
|
7145
|
+
projectId: entry.projectId,
|
|
7146
|
+
streamingLevelCount: response.streamingLevelCount,
|
|
7147
|
+
streamingLevels: response.streamingLevels,
|
|
7148
|
+
truncated: response.truncated,
|
|
7149
|
+
worldPartition: response.worldPartition
|
|
7150
|
+
};
|
|
7151
|
+
}
|
|
7152
|
+
async function spawnActor(input, dependencies) {
|
|
7153
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7154
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7155
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7156
|
+
const response = await sendBridgeSpawnActorRequest(createBridgeSpawnActorRequest(input.spawns, { dryRun: input.dryRun }), {
|
|
7157
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7158
|
+
host: "127.0.0.1",
|
|
7159
|
+
port: entry.port,
|
|
7160
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7161
|
+
});
|
|
7162
|
+
if (!response.ok) throw new Error(`Bridge spawn_actor failed (${response.error.code}): ${response.error.message}`);
|
|
7163
|
+
return {
|
|
7164
|
+
dryRun: response.dryRun,
|
|
7165
|
+
failureCount: response.failureCount,
|
|
7166
|
+
message: response.message,
|
|
7167
|
+
projectId: entry.projectId,
|
|
7168
|
+
results: response.results,
|
|
7169
|
+
state: response.state,
|
|
7170
|
+
successCount: response.successCount,
|
|
7171
|
+
transactionTitle: response.transactionTitle
|
|
7172
|
+
};
|
|
7173
|
+
}
|
|
7174
|
+
async function destroyActor(input, dependencies) {
|
|
7175
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7176
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7177
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7178
|
+
const response = await sendBridgeDestroyActorRequest(createBridgeDestroyActorRequest(input.actorPaths, { dryRun: input.dryRun }), {
|
|
7179
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7180
|
+
host: "127.0.0.1",
|
|
7181
|
+
port: entry.port,
|
|
7182
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7183
|
+
});
|
|
7184
|
+
if (!response.ok) throw new Error(`Bridge destroy_actor failed (${response.error.code}): ${response.error.message}`);
|
|
7185
|
+
return {
|
|
7186
|
+
dryRun: response.dryRun,
|
|
7187
|
+
failureCount: response.failureCount,
|
|
7188
|
+
message: response.message,
|
|
7189
|
+
projectId: entry.projectId,
|
|
7190
|
+
results: response.results,
|
|
7191
|
+
state: response.state,
|
|
7192
|
+
successCount: response.successCount,
|
|
7193
|
+
transactionTitle: response.transactionTitle
|
|
7194
|
+
};
|
|
7195
|
+
}
|
|
7196
|
+
async function setActorTransform(input, dependencies) {
|
|
7197
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7198
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7199
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7200
|
+
const response = await sendBridgeSetActorTransformRequest(createBridgeSetActorTransformRequest(input.transforms, { dryRun: input.dryRun }), {
|
|
7201
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7202
|
+
host: "127.0.0.1",
|
|
7203
|
+
port: entry.port,
|
|
7204
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7205
|
+
});
|
|
7206
|
+
if (!response.ok) throw new Error(`Bridge set_actor_transform failed (${response.error.code}): ${response.error.message}`);
|
|
7207
|
+
return {
|
|
7208
|
+
dryRun: response.dryRun,
|
|
7209
|
+
failureCount: response.failureCount,
|
|
7210
|
+
message: response.message,
|
|
7211
|
+
projectId: entry.projectId,
|
|
7212
|
+
results: response.results,
|
|
7213
|
+
state: response.state,
|
|
7214
|
+
successCount: response.successCount,
|
|
7215
|
+
transactionTitle: response.transactionTitle
|
|
7216
|
+
};
|
|
7217
|
+
}
|
|
7218
|
+
async function setActorProperty(input, dependencies) {
|
|
7219
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7220
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7221
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7222
|
+
const response = await sendBridgeSetActorPropertyRequest(createBridgeSetActorPropertyRequest(input.properties, { dryRun: input.dryRun }), {
|
|
7223
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7224
|
+
host: "127.0.0.1",
|
|
7225
|
+
port: entry.port,
|
|
7226
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7227
|
+
});
|
|
7228
|
+
if (!response.ok) throw new Error(`Bridge set_actor_property failed (${response.error.code}): ${response.error.message}`);
|
|
7229
|
+
return {
|
|
7230
|
+
dryRun: response.dryRun,
|
|
7231
|
+
failureCount: response.failureCount,
|
|
7232
|
+
message: response.message,
|
|
7233
|
+
projectId: entry.projectId,
|
|
7234
|
+
results: response.results,
|
|
7235
|
+
state: response.state,
|
|
7236
|
+
successCount: response.successCount,
|
|
7237
|
+
transactionTitle: response.transactionTitle
|
|
7238
|
+
};
|
|
7239
|
+
}
|
|
7240
|
+
async function selectActors(input, dependencies) {
|
|
7241
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7242
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7243
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7244
|
+
const response = await sendBridgeSelectActorsRequest(createBridgeSelectActorsRequest(input.actorPaths, {
|
|
7245
|
+
addToSelection: input.addToSelection,
|
|
7246
|
+
dryRun: input.dryRun
|
|
7247
|
+
}), {
|
|
7248
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7249
|
+
host: "127.0.0.1",
|
|
7250
|
+
port: entry.port,
|
|
7251
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7252
|
+
});
|
|
7253
|
+
if (!response.ok) throw new Error(`Bridge select_actors failed (${response.error.code}): ${response.error.message}`);
|
|
7254
|
+
return {
|
|
7255
|
+
dryRun: response.dryRun,
|
|
7256
|
+
failureCount: response.failureCount,
|
|
7257
|
+
message: response.message,
|
|
7258
|
+
projectId: entry.projectId,
|
|
7259
|
+
results: response.results,
|
|
7260
|
+
selectedActorCount: response.selectedActorCount,
|
|
7261
|
+
state: response.state,
|
|
7262
|
+
successCount: response.successCount,
|
|
7263
|
+
transactionTitle: response.transactionTitle
|
|
7264
|
+
};
|
|
7265
|
+
}
|
|
7266
|
+
async function undo(input, dependencies) {
|
|
7267
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7268
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7269
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7270
|
+
const response = await sendBridgeUndoRequest(createBridgeUndoRequest(), {
|
|
7271
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7272
|
+
host: "127.0.0.1",
|
|
7273
|
+
port: entry.port,
|
|
7274
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7275
|
+
});
|
|
7276
|
+
if (!response.ok) throw new Error(`Bridge undo failed (${response.error.code}): ${response.error.message}`);
|
|
7277
|
+
return {
|
|
7278
|
+
message: response.message,
|
|
7279
|
+
projectId: entry.projectId,
|
|
7280
|
+
state: response.state,
|
|
7281
|
+
transactionTitle: response.transactionTitle
|
|
7282
|
+
};
|
|
7283
|
+
}
|
|
7284
|
+
async function redo(input, dependencies) {
|
|
7285
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7286
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7287
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7288
|
+
const response = await sendBridgeRedoRequest(createBridgeRedoRequest(), {
|
|
7289
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7290
|
+
host: "127.0.0.1",
|
|
7291
|
+
port: entry.port,
|
|
7292
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7293
|
+
});
|
|
7294
|
+
if (!response.ok) throw new Error(`Bridge redo failed (${response.error.code}): ${response.error.message}`);
|
|
7295
|
+
return {
|
|
7296
|
+
message: response.message,
|
|
7297
|
+
projectId: entry.projectId,
|
|
7298
|
+
state: response.state,
|
|
7299
|
+
transactionTitle: response.transactionTitle
|
|
7300
|
+
};
|
|
7301
|
+
}
|
|
7302
|
+
async function openLevel(input, dependencies) {
|
|
7303
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7304
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7305
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7306
|
+
const request = createBridgeOpenLevelRequest(input.levelPath, {
|
|
7307
|
+
dryRun: input.dryRun,
|
|
7308
|
+
saveDirtyPackages: input.saveDirtyPackages
|
|
7309
|
+
});
|
|
7310
|
+
const response = await sendBridgeOpenLevelRequest(request, {
|
|
7311
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7312
|
+
host: "127.0.0.1",
|
|
7313
|
+
port: entry.port,
|
|
7314
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7315
|
+
});
|
|
7316
|
+
if (!response.ok) throw new Error(`Bridge open_level failed (${response.error.code}): ${response.error.message}`);
|
|
7317
|
+
const result = {
|
|
7318
|
+
levelPath: response.levelPath ?? request.levelPath,
|
|
7319
|
+
projectId: entry.projectId,
|
|
7320
|
+
state: response.state
|
|
7321
|
+
};
|
|
7322
|
+
if (response.openLevelJobId !== void 0) result.openLevelJobId = response.openLevelJobId;
|
|
7323
|
+
if (response.message !== void 0) result.message = response.message;
|
|
7324
|
+
return result;
|
|
7325
|
+
}
|
|
7326
|
+
async function getOpenLevelStatus(input, dependencies) {
|
|
7327
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7328
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7329
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7330
|
+
const response = await sendBridgeGetOpenLevelStatusRequest(createBridgeGetOpenLevelStatusRequest(input.openLevelJobId), {
|
|
7331
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7332
|
+
host: "127.0.0.1",
|
|
7333
|
+
port: entry.port,
|
|
7334
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7335
|
+
});
|
|
7336
|
+
if (!response.ok) throw new Error(`Bridge get_open_level_status failed (${response.error.code}): ${response.error.message}`);
|
|
7337
|
+
const result = {
|
|
7338
|
+
openLevelJobId: response.openLevelJobId,
|
|
7339
|
+
projectId: normalizedProjectId,
|
|
7340
|
+
state: response.state
|
|
7341
|
+
};
|
|
7342
|
+
if (response.levelPath !== void 0) result.levelPath = response.levelPath;
|
|
7343
|
+
if (response.message !== void 0) result.message = response.message;
|
|
7344
|
+
if (response.finishedAt !== void 0) result.finishedAt = response.finishedAt;
|
|
7345
|
+
if (response.durationMs !== void 0) result.durationMs = response.durationMs;
|
|
7346
|
+
return result;
|
|
7347
|
+
}
|
|
5824
7348
|
async function findAssets(input, dependencies) {
|
|
5825
7349
|
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
5826
7350
|
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
@@ -5849,6 +7373,213 @@ async function findAssets(input, dependencies) {
|
|
|
5849
7373
|
truncated: response.truncated
|
|
5850
7374
|
};
|
|
5851
7375
|
}
|
|
7376
|
+
async function readDataTable(input, dependencies) {
|
|
7377
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7378
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7379
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7380
|
+
const response = await sendBridgeReadDataTableRequest(createBridgeReadDataTableRequest(input.assetPath, {
|
|
7381
|
+
cursor: input.cursor,
|
|
7382
|
+
loadIfNeeded: input.loadIfNeeded,
|
|
7383
|
+
maxRows: input.maxRows,
|
|
7384
|
+
rowNameFilter: input.rowNameFilter
|
|
7385
|
+
}), {
|
|
7386
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7387
|
+
host: "127.0.0.1",
|
|
7388
|
+
port: entry.port,
|
|
7389
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7390
|
+
});
|
|
7391
|
+
if (!response.ok) throw new Error(`Bridge read_data_table failed (${response.error.code}): ${response.error.message}`);
|
|
7392
|
+
return {
|
|
7393
|
+
assetPath: response.assetPath,
|
|
7394
|
+
columns: response.columns,
|
|
7395
|
+
columnsTruncated: response.columnsTruncated,
|
|
7396
|
+
nextCursor: response.nextCursor,
|
|
7397
|
+
projectId: entry.projectId,
|
|
7398
|
+
rows: response.rows,
|
|
7399
|
+
rowStructName: response.rowStructName,
|
|
7400
|
+
rowStructPath: response.rowStructPath,
|
|
7401
|
+
totalRowCount: response.totalRowCount,
|
|
7402
|
+
truncated: response.truncated,
|
|
7403
|
+
valueTruncated: response.valueTruncated
|
|
7404
|
+
};
|
|
7405
|
+
}
|
|
7406
|
+
async function writeDataTableRow(input, dependencies) {
|
|
7407
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7408
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7409
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7410
|
+
const response = await sendBridgeWriteDataTableRowRequest(createBridgeWriteDataTableRowRequest(input.assetPath, input.rowName, input.operation, {
|
|
7411
|
+
dryRun: input.dryRun,
|
|
7412
|
+
values: input.values
|
|
7413
|
+
}), {
|
|
7414
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7415
|
+
host: "127.0.0.1",
|
|
7416
|
+
port: entry.port,
|
|
7417
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7418
|
+
});
|
|
7419
|
+
if (!response.ok) throw new Error(`Bridge write_data_table_row failed (${response.error.code}): ${response.error.message}`);
|
|
7420
|
+
return {
|
|
7421
|
+
applied: response.applied,
|
|
7422
|
+
assetPath: response.assetPath,
|
|
7423
|
+
created: response.created,
|
|
7424
|
+
dryRun: response.dryRun,
|
|
7425
|
+
message: response.message,
|
|
7426
|
+
packageDirty: response.packageDirty,
|
|
7427
|
+
projectId: entry.projectId,
|
|
7428
|
+
rowExisted: response.rowExisted,
|
|
7429
|
+
rowName: response.rowName,
|
|
7430
|
+
state: response.state,
|
|
7431
|
+
transactionTitle: response.transactionTitle
|
|
7432
|
+
};
|
|
7433
|
+
}
|
|
7434
|
+
async function exportDataTable(input, dependencies) {
|
|
7435
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7436
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7437
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7438
|
+
const response = await sendBridgeExportDataTableRequest(createBridgeExportDataTableRequest(input.assetPath, {
|
|
7439
|
+
cursor: input.cursor,
|
|
7440
|
+
format: input.format,
|
|
7441
|
+
loadIfNeeded: input.loadIfNeeded
|
|
7442
|
+
}), {
|
|
7443
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7444
|
+
host: "127.0.0.1",
|
|
7445
|
+
port: entry.port,
|
|
7446
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7447
|
+
});
|
|
7448
|
+
if (!response.ok) throw new Error(`Bridge export_data_table failed (${response.error.code}): ${response.error.message}`);
|
|
7449
|
+
return {
|
|
7450
|
+
assetPath: response.assetPath,
|
|
7451
|
+
content: response.content,
|
|
7452
|
+
format: response.format,
|
|
7453
|
+
nextCursor: response.nextCursor,
|
|
7454
|
+
projectId: entry.projectId,
|
|
7455
|
+
rowCount: response.rowCount,
|
|
7456
|
+
totalChars: response.totalChars,
|
|
7457
|
+
truncated: response.truncated
|
|
7458
|
+
};
|
|
7459
|
+
}
|
|
7460
|
+
async function importDataTable(input, dependencies) {
|
|
7461
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7462
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7463
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7464
|
+
const response = await sendBridgeImportDataTableRequest(createBridgeImportDataTableRequest(input.assetPath, input.content, {
|
|
7465
|
+
dryRun: input.dryRun,
|
|
7466
|
+
format: input.format
|
|
7467
|
+
}), {
|
|
7468
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7469
|
+
host: "127.0.0.1",
|
|
7470
|
+
port: entry.port,
|
|
7471
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7472
|
+
});
|
|
7473
|
+
if (!response.ok) throw new Error(`Bridge import_data_table failed (${response.error.code}): ${response.error.message}`);
|
|
7474
|
+
return {
|
|
7475
|
+
assetPath: response.assetPath,
|
|
7476
|
+
dryRun: response.dryRun,
|
|
7477
|
+
message: response.message,
|
|
7478
|
+
packageDirty: response.packageDirty,
|
|
7479
|
+
problemCount: response.problemCount,
|
|
7480
|
+
problems: response.problems,
|
|
7481
|
+
projectId: entry.projectId,
|
|
7482
|
+
replacedRowCount: response.replacedRowCount,
|
|
7483
|
+
rowCount: response.rowCount,
|
|
7484
|
+
state: response.state,
|
|
7485
|
+
transactionTitle: response.transactionTitle
|
|
7486
|
+
};
|
|
7487
|
+
}
|
|
7488
|
+
async function createDataTable(input, dependencies) {
|
|
7489
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7490
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7491
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7492
|
+
const response = await sendBridgeCreateDataTableRequest(createBridgeCreateDataTableRequest(input.assetPath, input.rowStructPath, { dryRun: input.dryRun }), {
|
|
7493
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7494
|
+
host: "127.0.0.1",
|
|
7495
|
+
port: entry.port,
|
|
7496
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7497
|
+
});
|
|
7498
|
+
if (!response.ok) throw new Error(`Bridge create_data_table failed (${response.error.code}): ${response.error.message}`);
|
|
7499
|
+
return {
|
|
7500
|
+
assetPath: response.assetPath,
|
|
7501
|
+
created: response.created,
|
|
7502
|
+
dryRun: response.dryRun,
|
|
7503
|
+
packageDirty: response.packageDirty,
|
|
7504
|
+
projectId: entry.projectId,
|
|
7505
|
+
rowStructPath: response.rowStructPath,
|
|
7506
|
+
state: response.state
|
|
7507
|
+
};
|
|
7508
|
+
}
|
|
7509
|
+
async function renameDataTable(input, dependencies) {
|
|
7510
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7511
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7512
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7513
|
+
const response = await sendBridgeRenameDataTableRequest(createBridgeRenameDataTableRequest(input.assetPath, {
|
|
7514
|
+
destinationPath: input.destinationPath,
|
|
7515
|
+
dryRun: input.dryRun,
|
|
7516
|
+
newName: input.newName
|
|
7517
|
+
}), {
|
|
7518
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7519
|
+
host: "127.0.0.1",
|
|
7520
|
+
port: entry.port,
|
|
7521
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7522
|
+
});
|
|
7523
|
+
if (!response.ok) throw new Error(`Bridge rename_data_table failed (${response.error.code}): ${response.error.message}`);
|
|
7524
|
+
return {
|
|
7525
|
+
assetPath: response.assetPath,
|
|
7526
|
+
dryRun: response.dryRun,
|
|
7527
|
+
leftRedirector: response.leftRedirector,
|
|
7528
|
+
newAssetPath: response.newAssetPath,
|
|
7529
|
+
packageDirty: response.packageDirty,
|
|
7530
|
+
projectId: entry.projectId,
|
|
7531
|
+
renamed: response.renamed,
|
|
7532
|
+
state: response.state
|
|
7533
|
+
};
|
|
7534
|
+
}
|
|
7535
|
+
async function deleteDataTable(input, dependencies) {
|
|
7536
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7537
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7538
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7539
|
+
const response = await sendBridgeDeleteDataTableRequest(createBridgeDeleteDataTableRequest(input.assetPath, {
|
|
7540
|
+
dryRun: input.dryRun,
|
|
7541
|
+
force: input.force
|
|
7542
|
+
}), {
|
|
7543
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7544
|
+
host: "127.0.0.1",
|
|
7545
|
+
port: entry.port,
|
|
7546
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7547
|
+
});
|
|
7548
|
+
if (!response.ok) throw new Error(`Bridge delete_data_table failed (${response.error.code}): ${response.error.message}`);
|
|
7549
|
+
return {
|
|
7550
|
+
assetPath: response.assetPath,
|
|
7551
|
+
deleted: response.deleted,
|
|
7552
|
+
dryRun: response.dryRun,
|
|
7553
|
+
forced: response.forced,
|
|
7554
|
+
projectId: entry.projectId,
|
|
7555
|
+
referencerCount: response.referencerCount,
|
|
7556
|
+
referencers: response.referencers,
|
|
7557
|
+
state: response.state
|
|
7558
|
+
};
|
|
7559
|
+
}
|
|
7560
|
+
async function renameDataTableRow(input, dependencies) {
|
|
7561
|
+
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
7562
|
+
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
7563
|
+
if (!entry) throw new Error(`No registered Unreal engine was found for projectId '${normalizedProjectId}'.`);
|
|
7564
|
+
const response = await sendBridgeRenameDataTableRowRequest(createBridgeRenameDataTableRowRequest(input.assetPath, input.rowName, input.newRowName, { dryRun: input.dryRun }), {
|
|
7565
|
+
connectTimeoutMs: deriveBridgeConnectTimeoutMs$1(dependencies.pingTimeoutMs),
|
|
7566
|
+
host: "127.0.0.1",
|
|
7567
|
+
port: entry.port,
|
|
7568
|
+
readTimeoutMs: deriveEditorWorkTimeoutMs(dependencies.pingTimeoutMs)
|
|
7569
|
+
});
|
|
7570
|
+
if (!response.ok) throw new Error(`Bridge rename_data_table_row failed (${response.error.code}): ${response.error.message}`);
|
|
7571
|
+
return {
|
|
7572
|
+
assetPath: response.assetPath,
|
|
7573
|
+
dryRun: response.dryRun,
|
|
7574
|
+
newRowName: response.newRowName,
|
|
7575
|
+
packageDirty: response.packageDirty,
|
|
7576
|
+
projectId: entry.projectId,
|
|
7577
|
+
renamed: response.renamed,
|
|
7578
|
+
rowName: response.rowName,
|
|
7579
|
+
state: response.state,
|
|
7580
|
+
transactionTitle: response.transactionTitle
|
|
7581
|
+
};
|
|
7582
|
+
}
|
|
5852
7583
|
async function getAssetDependencies(input, dependencies) {
|
|
5853
7584
|
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
5854
7585
|
const entry = dependencies.registry.getProject(normalizedProjectId);
|
|
@@ -7214,7 +8945,7 @@ function isMissingFileError(error) {
|
|
|
7214
8945
|
//#endregion
|
|
7215
8946
|
//#region src/server.ts
|
|
7216
8947
|
const SERVER_NAME = "ue-mcp-server";
|
|
7217
|
-
const SERVER_VERSION = "
|
|
8948
|
+
const SERVER_VERSION = "1.1.0";
|
|
7218
8949
|
const logger = createModuleLogger("bootstrap");
|
|
7219
8950
|
const enginePingLogger = createModuleLogger("engine-ping");
|
|
7220
8951
|
const httpApiLogger = createModuleLogger("http-api");
|