@uemcp/server 1.3.0 → 1.4.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 +114 -0
- package/dist/index.mjs +2352 -4
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -4569,6 +4569,1526 @@ function createBridgeLoadWpRegionRequest(action, options = {}, requestId = rando
|
|
|
4569
4569
|
version: 2
|
|
4570
4570
|
});
|
|
4571
4571
|
}
|
|
4572
|
+
const BRIDGE_GET_ASSET_PROPERTY_REQUEST_TYPE = "get_asset_property";
|
|
4573
|
+
const BRIDGE_SET_ASSET_PROPERTY_REQUEST_TYPE = "set_asset_property";
|
|
4574
|
+
const BRIDGE_ARRAY_PROPERTY_OP_REQUEST_TYPE = "array_property_op";
|
|
4575
|
+
const BRIDGE_CREATE_STRUCT_REQUEST_TYPE = "create_struct";
|
|
4576
|
+
const BRIDGE_CREATE_ENUM_REQUEST_TYPE = "create_enum";
|
|
4577
|
+
const BRIDGE_CREATE_BLUEPRINT_REQUEST_TYPE = "create_blueprint";
|
|
4578
|
+
const BRIDGE_ADD_BP_VARIABLE_REQUEST_TYPE = "add_bp_variable";
|
|
4579
|
+
const BRIDGE_ADD_BP_FUNCTION_REQUEST_TYPE = "add_bp_function";
|
|
4580
|
+
const BRIDGE_ADD_BP_EVENT_REQUEST_TYPE = "add_bp_event";
|
|
4581
|
+
const BRIDGE_ADD_BP_COMPONENT_REQUEST_TYPE = "add_bp_component";
|
|
4582
|
+
const BRIDGE_ADD_BP_INTERFACE_REQUEST_TYPE = "add_bp_interface";
|
|
4583
|
+
const BRIDGE_SET_BP_DEFAULT_REQUEST_TYPE = "set_bp_default";
|
|
4584
|
+
const BRIDGE_BATCH_EDIT_REQUEST_TYPE = "batch_edit";
|
|
4585
|
+
const BRIDGE_IMPORT_ASSET_REQUEST_TYPE = "import_asset";
|
|
4586
|
+
const BRIDGE_REIMPORT_ASSET_REQUEST_TYPE = "reimport_asset";
|
|
4587
|
+
const BRIDGE_SET_IMPORT_SETTINGS_REQUEST_TYPE = "set_import_settings";
|
|
4588
|
+
const BRIDGE_GET_IMPORT_JOB_STATUS_REQUEST_TYPE = "get_import_job_status";
|
|
4589
|
+
const BRIDGE_CREATE_BLACKBOARD_REQUEST_TYPE = "create_blackboard";
|
|
4590
|
+
const BRIDGE_SET_BLACKBOARD_KEYS_REQUEST_TYPE = "set_blackboard_keys";
|
|
4591
|
+
const BRIDGE_CREATE_EQS_QUERY_REQUEST_TYPE = "create_eqs_query";
|
|
4592
|
+
const BRIDGE_CREATE_STATE_TREE_REQUEST_TYPE = "create_state_tree";
|
|
4593
|
+
const BRIDGE_ADD_STATE_TREE_STATE_REQUEST_TYPE = "add_state_tree_state";
|
|
4594
|
+
const BRIDGE_CREATE_LEVEL_SEQUENCE_REQUEST_TYPE = "create_level_sequence";
|
|
4595
|
+
const BRIDGE_ADD_SEQUENCE_BINDING_REQUEST_TYPE = "add_sequence_binding";
|
|
4596
|
+
const BRIDGE_ADD_SEQUENCE_TRACK_REQUEST_TYPE = "add_sequence_track";
|
|
4597
|
+
const BRIDGE_ADD_SEQUENCE_KEYS_REQUEST_TYPE = "add_sequence_keys";
|
|
4598
|
+
const BRIDGE_ADD_FOLIAGE_TYPE_REQUEST_TYPE = "add_foliage_type";
|
|
4599
|
+
const BRIDGE_PAINT_FOLIAGE_REQUEST_TYPE = "paint_foliage";
|
|
4600
|
+
const BRIDGE_CREATE_SOUND_CUE_REQUEST_TYPE = "create_sound_cue";
|
|
4601
|
+
const BRIDGE_CREATE_METASOUND_REQUEST_TYPE = "create_metasound";
|
|
4602
|
+
const BRIDGE_SET_METASOUND_GRAPH_REQUEST_TYPE = "set_metasound_graph";
|
|
4603
|
+
const BRIDGE_ASSET_PROPERTY_STATES = ["reported", "unsupported"];
|
|
4604
|
+
const BRIDGE_ARRAY_PROPERTY_OPERATIONS = [
|
|
4605
|
+
"add",
|
|
4606
|
+
"insert",
|
|
4607
|
+
"remove",
|
|
4608
|
+
"clear"
|
|
4609
|
+
];
|
|
4610
|
+
const BRIDGE_ARRAY_PROPERTY_MAX_INDEX = 65535;
|
|
4611
|
+
const BRIDGE_TYPE_SPEC_KINDS = [
|
|
4612
|
+
"bool",
|
|
4613
|
+
"byte",
|
|
4614
|
+
"int",
|
|
4615
|
+
"int64",
|
|
4616
|
+
"float",
|
|
4617
|
+
"double",
|
|
4618
|
+
"name",
|
|
4619
|
+
"string",
|
|
4620
|
+
"text",
|
|
4621
|
+
"struct",
|
|
4622
|
+
"object",
|
|
4623
|
+
"class",
|
|
4624
|
+
"soft_object",
|
|
4625
|
+
"soft_class",
|
|
4626
|
+
"interface",
|
|
4627
|
+
"enum"
|
|
4628
|
+
];
|
|
4629
|
+
const BRIDGE_TYPE_SPEC_CONTAINERS = [
|
|
4630
|
+
"none",
|
|
4631
|
+
"array",
|
|
4632
|
+
"set",
|
|
4633
|
+
"map"
|
|
4634
|
+
];
|
|
4635
|
+
const TYPE_SPEC_KINDS_REQUIRING_SUBTYPE = /* @__PURE__ */ new Set([
|
|
4636
|
+
"struct",
|
|
4637
|
+
"object",
|
|
4638
|
+
"class",
|
|
4639
|
+
"soft_object",
|
|
4640
|
+
"soft_class",
|
|
4641
|
+
"interface",
|
|
4642
|
+
"enum"
|
|
4643
|
+
]);
|
|
4644
|
+
const BRIDGE_CREATE_BLUEPRINT_KINDS = [
|
|
4645
|
+
"normal",
|
|
4646
|
+
"const",
|
|
4647
|
+
"macro_library",
|
|
4648
|
+
"interface",
|
|
4649
|
+
"function_library"
|
|
4650
|
+
];
|
|
4651
|
+
const BRIDGE_BLUEPRINT_EVENT_KINDS = ["override", "custom"];
|
|
4652
|
+
const assetPropertyStateSchema = z.enum(BRIDGE_ASSET_PROPERTY_STATES);
|
|
4653
|
+
const arrayPropertyOperationSchema = z.enum(BRIDGE_ARRAY_PROPERTY_OPERATIONS);
|
|
4654
|
+
const propertyPathSchema = z.string().trim().min(1).max(512);
|
|
4655
|
+
const propertyValueSchema = z.string().max(BRIDGE_PROPERTY_VALUE_MAX_CHARS);
|
|
4656
|
+
const typeSpecKindSchema = z.enum(BRIDGE_TYPE_SPEC_KINDS);
|
|
4657
|
+
const typeSpecContainerSchema = z.enum(BRIDGE_TYPE_SPEC_CONTAINERS);
|
|
4658
|
+
const userTypeIdentifierSchema = z.string().trim().min(1).max(128).regex(/^[A-Za-z_][A-Za-z0-9_]*$/);
|
|
4659
|
+
const userTypeDescriptionSchema = z.string().trim().max(512);
|
|
4660
|
+
const createBlueprintKindSchema = z.enum(BRIDGE_CREATE_BLUEPRINT_KINDS);
|
|
4661
|
+
const blueprintEventKindSchema = z.enum(BRIDGE_BLUEPRINT_EVENT_KINDS);
|
|
4662
|
+
const blueprintVariableNameSchema = z.string().trim().min(1).max(128);
|
|
4663
|
+
const blueprintCategorySchema = z.string().trim().max(128);
|
|
4664
|
+
const blueprintTooltipSchema = z.string().trim().max(512);
|
|
4665
|
+
const bridgeTypeSpecSchema = z.object({
|
|
4666
|
+
container: typeSpecContainerSchema.default("none"),
|
|
4667
|
+
kind: typeSpecKindSchema,
|
|
4668
|
+
keyKind: typeSpecKindSchema.optional(),
|
|
4669
|
+
keySubtype: assetPathSchema.optional(),
|
|
4670
|
+
subtype: assetPathSchema.optional()
|
|
4671
|
+
}).superRefine((value, ctx) => {
|
|
4672
|
+
if (TYPE_SPEC_KINDS_REQUIRING_SUBTYPE.has(value.kind) && value.subtype === void 0) ctx.addIssue({
|
|
4673
|
+
code: z.ZodIssueCode.custom,
|
|
4674
|
+
message: `A '${value.kind}' type spec must name what it points at through subtype.`,
|
|
4675
|
+
path: ["subtype"]
|
|
4676
|
+
});
|
|
4677
|
+
if (value.container === "map") {
|
|
4678
|
+
if (value.keyKind === void 0) {
|
|
4679
|
+
ctx.addIssue({
|
|
4680
|
+
code: z.ZodIssueCode.custom,
|
|
4681
|
+
message: "A map type spec must declare keyKind.",
|
|
4682
|
+
path: ["keyKind"]
|
|
4683
|
+
});
|
|
4684
|
+
return;
|
|
4685
|
+
}
|
|
4686
|
+
if (TYPE_SPEC_KINDS_REQUIRING_SUBTYPE.has(value.keyKind) && value.keySubtype === void 0) ctx.addIssue({
|
|
4687
|
+
code: z.ZodIssueCode.custom,
|
|
4688
|
+
message: `A '${value.keyKind}' map key must name what it points at through keySubtype.`,
|
|
4689
|
+
path: ["keySubtype"]
|
|
4690
|
+
});
|
|
4691
|
+
return;
|
|
4692
|
+
}
|
|
4693
|
+
if (value.keyKind !== void 0) ctx.addIssue({
|
|
4694
|
+
code: z.ZodIssueCode.custom,
|
|
4695
|
+
message: "keyKind is only meaningful on a map type spec.",
|
|
4696
|
+
path: ["keyKind"]
|
|
4697
|
+
});
|
|
4698
|
+
});
|
|
4699
|
+
const bridgeGetAssetPropertyRequestSchema = z.object({
|
|
4700
|
+
assetPath: assetPathSchema,
|
|
4701
|
+
propertyPath: propertyPathSchema,
|
|
4702
|
+
requestId: requestIdSchema,
|
|
4703
|
+
type: z.literal(BRIDGE_GET_ASSET_PROPERTY_REQUEST_TYPE),
|
|
4704
|
+
version: z.literal(2)
|
|
4705
|
+
});
|
|
4706
|
+
const bridgeAssetPropertyEntrySchema = z.object({
|
|
4707
|
+
propertyPath: propertyPathSchema,
|
|
4708
|
+
value: propertyValueSchema
|
|
4709
|
+
});
|
|
4710
|
+
const bridgeSetAssetPropertyRequestSchema = z.object({
|
|
4711
|
+
assetPath: assetPathSchema,
|
|
4712
|
+
properties: z.array(bridgeAssetPropertyEntrySchema).min(1).max(32),
|
|
4713
|
+
requestId: requestIdSchema,
|
|
4714
|
+
type: z.literal(BRIDGE_SET_ASSET_PROPERTY_REQUEST_TYPE),
|
|
4715
|
+
version: z.literal(2)
|
|
4716
|
+
});
|
|
4717
|
+
const bridgeArrayPropertyOpRequestFieldsSchema = z.object({
|
|
4718
|
+
assetPath: assetPathSchema,
|
|
4719
|
+
index: z.number().int().min(0).max(BRIDGE_ARRAY_PROPERTY_MAX_INDEX).optional(),
|
|
4720
|
+
operation: arrayPropertyOperationSchema,
|
|
4721
|
+
propertyPath: propertyPathSchema,
|
|
4722
|
+
requestId: requestIdSchema,
|
|
4723
|
+
type: z.literal(BRIDGE_ARRAY_PROPERTY_OP_REQUEST_TYPE),
|
|
4724
|
+
value: propertyValueSchema.optional(),
|
|
4725
|
+
version: z.literal(2)
|
|
4726
|
+
});
|
|
4727
|
+
const bridgeArrayPropertyOpRequestSchema = bridgeArrayPropertyOpRequestFieldsSchema.superRefine((request, ctx) => {
|
|
4728
|
+
if ((request.operation === "insert" || request.operation === "remove") && request.index === void 0) ctx.addIssue({
|
|
4729
|
+
code: z.ZodIssueCode.custom,
|
|
4730
|
+
message: `An array_property_op '${request.operation}' requires an index.`,
|
|
4731
|
+
path: ["index"]
|
|
4732
|
+
});
|
|
4733
|
+
if ((request.operation === "add" || request.operation === "insert") && request.value === void 0) ctx.addIssue({
|
|
4734
|
+
code: z.ZodIssueCode.custom,
|
|
4735
|
+
message: `An array_property_op '${request.operation}' requires a value.`,
|
|
4736
|
+
path: ["value"]
|
|
4737
|
+
});
|
|
4738
|
+
if (request.operation === "clear" && (request.index !== void 0 || request.value !== void 0)) ctx.addIssue({
|
|
4739
|
+
code: z.ZodIssueCode.custom,
|
|
4740
|
+
message: "An array_property_op 'clear' takes neither an index nor a value.",
|
|
4741
|
+
path: ["operation"]
|
|
4742
|
+
});
|
|
4743
|
+
});
|
|
4744
|
+
const bridgeStructFieldSchema = z.object({
|
|
4745
|
+
defaultValue: propertyValueSchema.optional(),
|
|
4746
|
+
name: userTypeIdentifierSchema,
|
|
4747
|
+
type: bridgeTypeSpecSchema
|
|
4748
|
+
});
|
|
4749
|
+
const bridgeCreateStructRequestSchema = z.object({
|
|
4750
|
+
assetName: assetNameSchema,
|
|
4751
|
+
description: userTypeDescriptionSchema.optional(),
|
|
4752
|
+
fields: z.array(bridgeStructFieldSchema).max(64).default([]),
|
|
4753
|
+
packagePath: contentPathSchema,
|
|
4754
|
+
requestId: requestIdSchema,
|
|
4755
|
+
type: z.literal(BRIDGE_CREATE_STRUCT_REQUEST_TYPE),
|
|
4756
|
+
version: z.literal(2)
|
|
4757
|
+
});
|
|
4758
|
+
const bridgeEnumEntrySchema = z.object({
|
|
4759
|
+
description: userTypeDescriptionSchema.optional(),
|
|
4760
|
+
displayName: userTypeDescriptionSchema.optional(),
|
|
4761
|
+
name: userTypeIdentifierSchema
|
|
4762
|
+
});
|
|
4763
|
+
const bridgeCreateEnumRequestSchema = z.object({
|
|
4764
|
+
assetName: assetNameSchema,
|
|
4765
|
+
description: userTypeDescriptionSchema.optional(),
|
|
4766
|
+
entries: z.array(bridgeEnumEntrySchema).min(1).max(128),
|
|
4767
|
+
packagePath: contentPathSchema,
|
|
4768
|
+
requestId: requestIdSchema,
|
|
4769
|
+
type: z.literal(BRIDGE_CREATE_ENUM_REQUEST_TYPE),
|
|
4770
|
+
version: z.literal(2)
|
|
4771
|
+
});
|
|
4772
|
+
const bridgeCreateBlueprintRequestSchema = z.object({
|
|
4773
|
+
assetName: assetNameSchema,
|
|
4774
|
+
blueprintKind: createBlueprintKindSchema.default("normal"),
|
|
4775
|
+
packagePath: contentPathSchema,
|
|
4776
|
+
parentClass: assetPathSchema,
|
|
4777
|
+
requestId: requestIdSchema,
|
|
4778
|
+
type: z.literal(BRIDGE_CREATE_BLUEPRINT_REQUEST_TYPE),
|
|
4779
|
+
version: z.literal(2)
|
|
4780
|
+
});
|
|
4781
|
+
const bridgeBlueprintVariableEntrySchema = z.object({
|
|
4782
|
+
category: blueprintCategorySchema.optional(),
|
|
4783
|
+
defaultValue: propertyValueSchema.optional(),
|
|
4784
|
+
exposeOnSpawn: z.boolean().default(false),
|
|
4785
|
+
instanceEditable: z.boolean().default(false),
|
|
4786
|
+
name: blueprintVariableNameSchema,
|
|
4787
|
+
replication: blueprintReplicationSchema.default("none"),
|
|
4788
|
+
tooltip: blueprintTooltipSchema.optional(),
|
|
4789
|
+
type: bridgeTypeSpecSchema
|
|
4790
|
+
});
|
|
4791
|
+
const bridgeAddBpVariableRequestSchema = z.object({
|
|
4792
|
+
assetPath: assetPathSchema,
|
|
4793
|
+
requestId: requestIdSchema,
|
|
4794
|
+
type: z.literal(BRIDGE_ADD_BP_VARIABLE_REQUEST_TYPE),
|
|
4795
|
+
variables: z.array(bridgeBlueprintVariableEntrySchema).min(1).max(32),
|
|
4796
|
+
version: z.literal(2)
|
|
4797
|
+
});
|
|
4798
|
+
const bridgeBlueprintParameterSchema = z.object({
|
|
4799
|
+
name: userTypeIdentifierSchema,
|
|
4800
|
+
type: bridgeTypeSpecSchema
|
|
4801
|
+
});
|
|
4802
|
+
const bridgeBlueprintFunctionEntrySchema = z.object({
|
|
4803
|
+
category: blueprintCategorySchema.optional(),
|
|
4804
|
+
inputs: z.array(bridgeBlueprintParameterSchema).max(16).default([]),
|
|
4805
|
+
name: userTypeIdentifierSchema,
|
|
4806
|
+
outputs: z.array(bridgeBlueprintParameterSchema).max(16).default([]),
|
|
4807
|
+
pure: z.boolean().default(false)
|
|
4808
|
+
});
|
|
4809
|
+
const bridgeAddBpFunctionRequestSchema = z.object({
|
|
4810
|
+
assetPath: assetPathSchema,
|
|
4811
|
+
functions: z.array(bridgeBlueprintFunctionEntrySchema).min(1).max(32),
|
|
4812
|
+
requestId: requestIdSchema,
|
|
4813
|
+
type: z.literal(BRIDGE_ADD_BP_FUNCTION_REQUEST_TYPE),
|
|
4814
|
+
version: z.literal(2)
|
|
4815
|
+
});
|
|
4816
|
+
const bridgeBlueprintEventEntrySchema = z.object({
|
|
4817
|
+
eventKind: blueprintEventKindSchema.default("override"),
|
|
4818
|
+
eventName: userTypeIdentifierSchema,
|
|
4819
|
+
inputs: z.array(bridgeBlueprintParameterSchema).max(16).default([])
|
|
4820
|
+
}).refine((entry) => entry.eventKind === "custom" || entry.inputs.length === 0, {
|
|
4821
|
+
message: "An override event takes its parameters from the parent function, so inputs must be empty.",
|
|
4822
|
+
path: ["inputs"]
|
|
4823
|
+
});
|
|
4824
|
+
const bridgeAddBpEventRequestSchema = z.object({
|
|
4825
|
+
assetPath: assetPathSchema,
|
|
4826
|
+
events: z.array(bridgeBlueprintEventEntrySchema).min(1).max(32),
|
|
4827
|
+
graphName: graphNameSchema.optional(),
|
|
4828
|
+
requestId: requestIdSchema,
|
|
4829
|
+
type: z.literal(BRIDGE_ADD_BP_EVENT_REQUEST_TYPE),
|
|
4830
|
+
version: z.literal(2)
|
|
4831
|
+
});
|
|
4832
|
+
const bridgeBlueprintComponentEntrySchema = z.object({
|
|
4833
|
+
componentClass: assetPathSchema,
|
|
4834
|
+
name: blueprintVariableNameSchema,
|
|
4835
|
+
parentComponent: blueprintVariableNameSchema.optional(),
|
|
4836
|
+
transform: transformInputSchema.optional()
|
|
4837
|
+
});
|
|
4838
|
+
const bridgeAddBpComponentRequestSchema = z.object({
|
|
4839
|
+
assetPath: assetPathSchema,
|
|
4840
|
+
components: z.array(bridgeBlueprintComponentEntrySchema).min(1).max(32),
|
|
4841
|
+
requestId: requestIdSchema,
|
|
4842
|
+
type: z.literal(BRIDGE_ADD_BP_COMPONENT_REQUEST_TYPE),
|
|
4843
|
+
version: z.literal(2)
|
|
4844
|
+
});
|
|
4845
|
+
const bridgeAddBpInterfaceRequestSchema = z.object({
|
|
4846
|
+
assetPath: assetPathSchema,
|
|
4847
|
+
interfacePaths: z.array(assetPathSchema).min(1).max(32),
|
|
4848
|
+
requestId: requestIdSchema,
|
|
4849
|
+
type: z.literal(BRIDGE_ADD_BP_INTERFACE_REQUEST_TYPE),
|
|
4850
|
+
version: z.literal(2)
|
|
4851
|
+
});
|
|
4852
|
+
const bridgeSetBpDefaultRequestSchema = z.object({
|
|
4853
|
+
assetPath: assetPathSchema,
|
|
4854
|
+
properties: z.array(bridgeAssetPropertyEntrySchema).min(1).max(32),
|
|
4855
|
+
requestId: requestIdSchema,
|
|
4856
|
+
type: z.literal(BRIDGE_SET_BP_DEFAULT_REQUEST_TYPE),
|
|
4857
|
+
version: z.literal(2)
|
|
4858
|
+
});
|
|
4859
|
+
const BRIDGE_BATCH_EDIT_STATES = [
|
|
4860
|
+
"applied",
|
|
4861
|
+
"validated",
|
|
4862
|
+
"rolled_back",
|
|
4863
|
+
"unsupported"
|
|
4864
|
+
];
|
|
4865
|
+
const BRIDGE_BATCH_EDIT_OPS = [
|
|
4866
|
+
"spawn",
|
|
4867
|
+
"destroy",
|
|
4868
|
+
"transform",
|
|
4869
|
+
"property",
|
|
4870
|
+
"attach",
|
|
4871
|
+
"place",
|
|
4872
|
+
"tag"
|
|
4873
|
+
];
|
|
4874
|
+
const BRIDGE_IMPORT_JOB_ACCEPT_STATES = ["accepted", "unsupported"];
|
|
4875
|
+
const BRIDGE_IMPORT_JOB_STATES = [
|
|
4876
|
+
"running",
|
|
4877
|
+
"succeeded",
|
|
4878
|
+
"failed",
|
|
4879
|
+
"unknown_job"
|
|
4880
|
+
];
|
|
4881
|
+
const BRIDGE_IMPORT_OPERATIONS = ["import", "reimport"];
|
|
4882
|
+
const BRIDGE_IMPORT_PIPELINES = [
|
|
4883
|
+
"auto",
|
|
4884
|
+
"interchange",
|
|
4885
|
+
"legacy_factory"
|
|
4886
|
+
];
|
|
4887
|
+
const BRIDGE_IMPORT_SETTING_VALUE_MAX_CHARS = 1024;
|
|
4888
|
+
const BRIDGE_BLACKBOARD_KEY_TYPES = [
|
|
4889
|
+
"bool",
|
|
4890
|
+
"int",
|
|
4891
|
+
"float",
|
|
4892
|
+
"string",
|
|
4893
|
+
"name",
|
|
4894
|
+
"vector",
|
|
4895
|
+
"rotator",
|
|
4896
|
+
"enum",
|
|
4897
|
+
"class",
|
|
4898
|
+
"object"
|
|
4899
|
+
];
|
|
4900
|
+
const BRIDGE_BLACKBOARD_KEY_MODES = ["merge", "replace"];
|
|
4901
|
+
const BRIDGE_EQS_TEST_PURPOSES = [
|
|
4902
|
+
"filter",
|
|
4903
|
+
"score",
|
|
4904
|
+
"filter_and_score"
|
|
4905
|
+
];
|
|
4906
|
+
const BRIDGE_STATE_TREE_SCHEMAS = [
|
|
4907
|
+
"actor_component",
|
|
4908
|
+
"ai_component",
|
|
4909
|
+
"custom"
|
|
4910
|
+
];
|
|
4911
|
+
const BRIDGE_STATE_TREE_STATE_TYPES = [
|
|
4912
|
+
"state",
|
|
4913
|
+
"group",
|
|
4914
|
+
"linked",
|
|
4915
|
+
"subtree"
|
|
4916
|
+
];
|
|
4917
|
+
const BRIDGE_STATE_TREE_TRANSITION_TRIGGERS = [
|
|
4918
|
+
"on_state_completed",
|
|
4919
|
+
"on_state_succeeded",
|
|
4920
|
+
"on_state_failed",
|
|
4921
|
+
"on_tick",
|
|
4922
|
+
"on_event"
|
|
4923
|
+
];
|
|
4924
|
+
const BRIDGE_SEQUENCE_BINDING_KINDS = ["possessable", "spawnable"];
|
|
4925
|
+
const BRIDGE_SEQUENCE_TRACK_KINDS = [
|
|
4926
|
+
"transform",
|
|
4927
|
+
"skeletal_animation",
|
|
4928
|
+
"camera_cut",
|
|
4929
|
+
"audio",
|
|
4930
|
+
"visibility",
|
|
4931
|
+
"property"
|
|
4932
|
+
];
|
|
4933
|
+
const BRIDGE_SEQUENCE_TIME_UNITS = ["frames", "seconds"];
|
|
4934
|
+
const BRIDGE_SEQUENCE_INTERPOLATIONS = [
|
|
4935
|
+
"auto",
|
|
4936
|
+
"user",
|
|
4937
|
+
"break",
|
|
4938
|
+
"linear",
|
|
4939
|
+
"constant"
|
|
4940
|
+
];
|
|
4941
|
+
const BRIDGE_SEQUENCE_MAX_FRAME_RATE = 24e4;
|
|
4942
|
+
const BRIDGE_SEQUENCE_MAX_FRAME = 1e7;
|
|
4943
|
+
const BRIDGE_FOLIAGE_PLACEMENT_MODES = ["explicit", "region"];
|
|
4944
|
+
const BRIDGE_FOLIAGE_MAX_DENSITY = 1e3;
|
|
4945
|
+
const BRIDGE_FOLIAGE_COORDINATE_LIMIT = 21e6;
|
|
4946
|
+
const BRIDGE_FOLIAGE_MAX_SCALE = 1e3;
|
|
4947
|
+
const BRIDGE_SOUND_CUE_NODE_KINDS = [
|
|
4948
|
+
"wave_player",
|
|
4949
|
+
"random",
|
|
4950
|
+
"mixer",
|
|
4951
|
+
"looping",
|
|
4952
|
+
"modulator",
|
|
4953
|
+
"attenuation",
|
|
4954
|
+
"concatenator",
|
|
4955
|
+
"delay"
|
|
4956
|
+
];
|
|
4957
|
+
const BRIDGE_METASOUND_OUTPUT_FORMATS = ["mono", "stereo"];
|
|
4958
|
+
const batchEditStateSchema = z.enum(BRIDGE_BATCH_EDIT_STATES);
|
|
4959
|
+
const batchEditOpSchema = z.enum(BRIDGE_BATCH_EDIT_OPS);
|
|
4960
|
+
const batchActorRefSchema = z.string().trim().min(1).max(512);
|
|
4961
|
+
const batchHandleSchema = z.string().trim().min(1).max(64).regex(/^[A-Za-z0-9_-]+$/);
|
|
4962
|
+
const batchTransactionTitleSchema = z.string().trim().min(1).max(128);
|
|
4963
|
+
const importJobAcceptStateSchema = z.enum(BRIDGE_IMPORT_JOB_ACCEPT_STATES);
|
|
4964
|
+
const importJobStateSchema = z.enum(BRIDGE_IMPORT_JOB_STATES);
|
|
4965
|
+
const importOperationSchema = z.enum(BRIDGE_IMPORT_OPERATIONS);
|
|
4966
|
+
const importPipelineSchema = z.enum(BRIDGE_IMPORT_PIPELINES);
|
|
4967
|
+
const importJobIdSchema = z.string().trim().min(1);
|
|
4968
|
+
const importPresetNameSchema = z.string().trim().min(1).max(128);
|
|
4969
|
+
const importSettingsSchema = z.record(z.string().trim().min(1).max(128), z.string().max(BRIDGE_IMPORT_SETTING_VALUE_MAX_CHARS)).refine((value) => Object.keys(value).length <= 32, { message: `An import preset carries at most ${String(32)} settings.` });
|
|
4970
|
+
const blackboardKeyTypeSchema = z.enum(BRIDGE_BLACKBOARD_KEY_TYPES);
|
|
4971
|
+
const blackboardKeyModeSchema = z.enum(BRIDGE_BLACKBOARD_KEY_MODES);
|
|
4972
|
+
const eqsTestPurposeSchema = z.enum(BRIDGE_EQS_TEST_PURPOSES);
|
|
4973
|
+
const eqsParamsSchema = z.record(z.string().trim().min(1).max(128), z.string().max(BRIDGE_FACTORY_OPTION_VALUE_MAX_CHARS)).refine((value) => Object.keys(value).length <= 32, { message: `An EQS node carries at most ${String(32)} params.` });
|
|
4974
|
+
const stateTreeSchemaSchema = z.enum(BRIDGE_STATE_TREE_SCHEMAS);
|
|
4975
|
+
const stateTreeStateTypeSchema = z.enum(BRIDGE_STATE_TREE_STATE_TYPES);
|
|
4976
|
+
const stateTreeTransitionTriggerSchema = z.enum(BRIDGE_STATE_TREE_TRANSITION_TRIGGERS);
|
|
4977
|
+
const sequenceBindingKindSchema = z.enum(BRIDGE_SEQUENCE_BINDING_KINDS);
|
|
4978
|
+
const sequenceTrackKindSchema = z.enum(BRIDGE_SEQUENCE_TRACK_KINDS);
|
|
4979
|
+
const sequenceTimeUnitSchema = z.enum(BRIDGE_SEQUENCE_TIME_UNITS);
|
|
4980
|
+
const sequenceInterpolationSchema = z.enum(BRIDGE_SEQUENCE_INTERPOLATIONS);
|
|
4981
|
+
const sequenceBindingIdSchema = z.string().trim().min(1).max(64);
|
|
4982
|
+
const sequenceFrameSchema = z.number().int().min(-1e7).max(BRIDGE_SEQUENCE_MAX_FRAME);
|
|
4983
|
+
const foliagePlacementModeSchema = z.enum(BRIDGE_FOLIAGE_PLACEMENT_MODES);
|
|
4984
|
+
const foliageCoordinateSchema = z.number().min(-21e6).max(BRIDGE_FOLIAGE_COORDINATE_LIMIT);
|
|
4985
|
+
const foliageSlopeSchema = z.number().min(0).max(90);
|
|
4986
|
+
const soundCueNodeKindSchema = z.enum(BRIDGE_SOUND_CUE_NODE_KINDS);
|
|
4987
|
+
const metasoundOutputFormatSchema = z.enum(BRIDGE_METASOUND_OUTPUT_FORMATS);
|
|
4988
|
+
const metasoundIdentifierSchema = z.string().trim().min(1).max(128);
|
|
4989
|
+
const audioNodeIdSchema = z.string().trim().min(1).max(64);
|
|
4990
|
+
const bridgeSequenceFrameRateSchema = z.object({
|
|
4991
|
+
denominator: z.number().int().min(1).max(BRIDGE_SEQUENCE_MAX_FRAME_RATE),
|
|
4992
|
+
numerator: z.number().int().min(1).max(BRIDGE_SEQUENCE_MAX_FRAME_RATE)
|
|
4993
|
+
});
|
|
4994
|
+
const bridgeBatchEditOpSchema = z.discriminatedUnion("op", [
|
|
4995
|
+
z.object({
|
|
4996
|
+
classPath: assetPathSchema,
|
|
4997
|
+
folderPath: boundedStringSchema.optional(),
|
|
4998
|
+
handle: batchHandleSchema.optional(),
|
|
4999
|
+
label: boundedStringSchema.optional(),
|
|
5000
|
+
op: z.literal("spawn"),
|
|
5001
|
+
tags: actorTagArraySchema.default([]),
|
|
5002
|
+
transform: transformInputSchema.default({
|
|
5003
|
+
location: {
|
|
5004
|
+
x: 0,
|
|
5005
|
+
y: 0,
|
|
5006
|
+
z: 0
|
|
5007
|
+
},
|
|
5008
|
+
rotation: {
|
|
5009
|
+
pitch: 0,
|
|
5010
|
+
roll: 0,
|
|
5011
|
+
yaw: 0
|
|
5012
|
+
},
|
|
5013
|
+
scale: {
|
|
5014
|
+
x: 1,
|
|
5015
|
+
y: 1,
|
|
5016
|
+
z: 1
|
|
5017
|
+
}
|
|
5018
|
+
})
|
|
5019
|
+
}),
|
|
5020
|
+
z.object({
|
|
5021
|
+
actorRef: batchActorRefSchema,
|
|
5022
|
+
op: z.literal("destroy")
|
|
5023
|
+
}),
|
|
5024
|
+
z.object({
|
|
5025
|
+
actorRef: batchActorRefSchema,
|
|
5026
|
+
location: vectorInputSchema.optional(),
|
|
5027
|
+
op: z.literal("transform"),
|
|
5028
|
+
rotation: rotatorInputSchema.optional(),
|
|
5029
|
+
scale: vectorInputSchema.optional()
|
|
5030
|
+
}),
|
|
5031
|
+
z.object({
|
|
5032
|
+
actorRef: batchActorRefSchema,
|
|
5033
|
+
op: z.literal("property"),
|
|
5034
|
+
propertyPath: propertyPathSchema,
|
|
5035
|
+
value: propertyValueSchema
|
|
5036
|
+
}),
|
|
5037
|
+
z.object({
|
|
5038
|
+
childRef: batchActorRefSchema,
|
|
5039
|
+
locationRule: attachmentRuleSchema.optional(),
|
|
5040
|
+
op: z.literal("attach"),
|
|
5041
|
+
parentRef: z.string().trim().max(512),
|
|
5042
|
+
rotationRule: attachmentRuleSchema.optional(),
|
|
5043
|
+
scaleRule: attachmentRuleSchema.optional(),
|
|
5044
|
+
socketName: boundedStringSchema.optional(),
|
|
5045
|
+
weldSimulatedBodies: z.boolean().optional()
|
|
5046
|
+
}),
|
|
5047
|
+
z.object({
|
|
5048
|
+
assetPath: assetPathSchema,
|
|
5049
|
+
folderPath: actorFolderSchema.optional(),
|
|
5050
|
+
handle: batchHandleSchema.optional(),
|
|
5051
|
+
label: boundedStringSchema.optional(),
|
|
5052
|
+
op: z.literal("place"),
|
|
5053
|
+
transform: transformInputSchema.optional()
|
|
5054
|
+
}),
|
|
5055
|
+
z.object({
|
|
5056
|
+
actorRef: batchActorRefSchema,
|
|
5057
|
+
mode: actorTagModeSchema,
|
|
5058
|
+
op: z.literal("tag"),
|
|
5059
|
+
tags: actorTagArraySchema
|
|
5060
|
+
})
|
|
5061
|
+
]);
|
|
5062
|
+
const bridgeBatchEditRequestSchema = z.object({
|
|
5063
|
+
dryRun: z.boolean().default(false),
|
|
5064
|
+
ops: z.array(bridgeBatchEditOpSchema).min(1).max(64),
|
|
5065
|
+
requestId: requestIdSchema,
|
|
5066
|
+
transactionTitle: batchTransactionTitleSchema.optional(),
|
|
5067
|
+
type: z.literal(BRIDGE_BATCH_EDIT_REQUEST_TYPE),
|
|
5068
|
+
version: z.literal(2)
|
|
5069
|
+
});
|
|
5070
|
+
const bridgeImportAssetRequestSchema = z.object({
|
|
5071
|
+
destinationPath: contentPathSchema,
|
|
5072
|
+
pipeline: importPipelineSchema.default("auto"),
|
|
5073
|
+
presetName: importPresetNameSchema.optional(),
|
|
5074
|
+
replaceExisting: z.boolean().default(false),
|
|
5075
|
+
requestId: requestIdSchema,
|
|
5076
|
+
sourceFiles: z.array(filePathSchema).min(1).max(16),
|
|
5077
|
+
type: z.literal(BRIDGE_IMPORT_ASSET_REQUEST_TYPE),
|
|
5078
|
+
version: z.literal(2)
|
|
5079
|
+
});
|
|
5080
|
+
const bridgeReimportAssetRequestSchema = z.object({
|
|
5081
|
+
assetPaths: z.array(assetPathSchema).min(1).max(16),
|
|
5082
|
+
requestId: requestIdSchema,
|
|
5083
|
+
type: z.literal(BRIDGE_REIMPORT_ASSET_REQUEST_TYPE),
|
|
5084
|
+
version: z.literal(2)
|
|
5085
|
+
});
|
|
5086
|
+
const bridgeSetImportSettingsRequestSchema = z.object({
|
|
5087
|
+
presetName: importPresetNameSchema,
|
|
5088
|
+
requestId: requestIdSchema,
|
|
5089
|
+
settings: importSettingsSchema,
|
|
5090
|
+
type: z.literal(BRIDGE_SET_IMPORT_SETTINGS_REQUEST_TYPE),
|
|
5091
|
+
version: z.literal(2)
|
|
5092
|
+
});
|
|
5093
|
+
const bridgeGetImportJobStatusRequestSchema = z.object({
|
|
5094
|
+
importJobId: importJobIdSchema,
|
|
5095
|
+
requestId: requestIdSchema,
|
|
5096
|
+
type: z.literal(BRIDGE_GET_IMPORT_JOB_STATUS_REQUEST_TYPE),
|
|
5097
|
+
version: z.literal(2)
|
|
5098
|
+
});
|
|
5099
|
+
const bridgeBlackboardKeySchema = z.object({
|
|
5100
|
+
baseClass: assetPathSchema.optional(),
|
|
5101
|
+
description: userTypeDescriptionSchema.optional(),
|
|
5102
|
+
enumPath: assetPathSchema.optional(),
|
|
5103
|
+
instanceSynced: z.boolean().default(false),
|
|
5104
|
+
keyName: userTypeIdentifierSchema,
|
|
5105
|
+
keyType: blackboardKeyTypeSchema
|
|
5106
|
+
}).superRefine((key, ctx) => {
|
|
5107
|
+
if ((key.keyType === "object" || key.keyType === "class") && key.baseClass === void 0) ctx.addIssue({
|
|
5108
|
+
code: z.ZodIssueCode.custom,
|
|
5109
|
+
message: `A '${key.keyType}' blackboard key must name its baseClass.`,
|
|
5110
|
+
path: ["baseClass"]
|
|
5111
|
+
});
|
|
5112
|
+
if (key.keyType === "enum" && key.enumPath === void 0) ctx.addIssue({
|
|
5113
|
+
code: z.ZodIssueCode.custom,
|
|
5114
|
+
message: "An 'enum' blackboard key must name its enumPath.",
|
|
5115
|
+
path: ["enumPath"]
|
|
5116
|
+
});
|
|
5117
|
+
});
|
|
5118
|
+
const bridgeCreateBlackboardRequestSchema = z.object({
|
|
5119
|
+
assetName: assetNameSchema,
|
|
5120
|
+
keys: z.array(bridgeBlackboardKeySchema).max(64).default([]),
|
|
5121
|
+
packagePath: contentPathSchema,
|
|
5122
|
+
parentBlackboardPath: assetPathSchema.optional(),
|
|
5123
|
+
requestId: requestIdSchema,
|
|
5124
|
+
type: z.literal(BRIDGE_CREATE_BLACKBOARD_REQUEST_TYPE),
|
|
5125
|
+
version: z.literal(2)
|
|
5126
|
+
});
|
|
5127
|
+
const bridgeSetBlackboardKeysRequestSchema = z.object({
|
|
5128
|
+
assetPath: assetPathSchema,
|
|
5129
|
+
keys: z.array(bridgeBlackboardKeySchema).min(1).max(64),
|
|
5130
|
+
mode: blackboardKeyModeSchema.default("merge"),
|
|
5131
|
+
requestId: requestIdSchema,
|
|
5132
|
+
type: z.literal(BRIDGE_SET_BLACKBOARD_KEYS_REQUEST_TYPE),
|
|
5133
|
+
version: z.literal(2)
|
|
5134
|
+
});
|
|
5135
|
+
const bridgeEqsGeneratorSchema = z.object({
|
|
5136
|
+
generatorClass: assetPathSchema,
|
|
5137
|
+
params: eqsParamsSchema.default({})
|
|
5138
|
+
});
|
|
5139
|
+
const bridgeEqsTestSchema = z.object({
|
|
5140
|
+
params: eqsParamsSchema.default({}),
|
|
5141
|
+
purpose: eqsTestPurposeSchema.default("filter_and_score"),
|
|
5142
|
+
testClass: assetPathSchema
|
|
5143
|
+
});
|
|
5144
|
+
const bridgeCreateEqsQueryRequestSchema = z.object({
|
|
5145
|
+
assetName: assetNameSchema,
|
|
5146
|
+
generator: bridgeEqsGeneratorSchema,
|
|
5147
|
+
packagePath: contentPathSchema,
|
|
5148
|
+
requestId: requestIdSchema,
|
|
5149
|
+
tests: z.array(bridgeEqsTestSchema).max(16).default([]),
|
|
5150
|
+
type: z.literal(BRIDGE_CREATE_EQS_QUERY_REQUEST_TYPE),
|
|
5151
|
+
version: z.literal(2)
|
|
5152
|
+
});
|
|
5153
|
+
const bridgeCreateStateTreeRequestFieldsSchema = z.object({
|
|
5154
|
+
assetName: assetNameSchema,
|
|
5155
|
+
packagePath: contentPathSchema,
|
|
5156
|
+
requestId: requestIdSchema,
|
|
5157
|
+
schema: stateTreeSchemaSchema.default("actor_component"),
|
|
5158
|
+
schemaClass: assetPathSchema.optional(),
|
|
5159
|
+
type: z.literal(BRIDGE_CREATE_STATE_TREE_REQUEST_TYPE),
|
|
5160
|
+
version: z.literal(2)
|
|
5161
|
+
});
|
|
5162
|
+
const bridgeCreateStateTreeRequestSchema = bridgeCreateStateTreeRequestFieldsSchema.refine((request) => request.schema !== "custom" || request.schemaClass !== void 0, {
|
|
5163
|
+
message: "A 'custom' StateTree schema must name its schemaClass.",
|
|
5164
|
+
path: ["schemaClass"]
|
|
5165
|
+
});
|
|
5166
|
+
const bridgeStateTreeNodeSchema = z.object({
|
|
5167
|
+
nodeClass: assetPathSchema,
|
|
5168
|
+
params: eqsParamsSchema.default({})
|
|
5169
|
+
});
|
|
5170
|
+
const bridgeStateTreeTransitionSchema = z.object({
|
|
5171
|
+
eventTag: boundedStringSchema.optional(),
|
|
5172
|
+
targetStateName: userTypeIdentifierSchema.optional(),
|
|
5173
|
+
trigger: stateTreeTransitionTriggerSchema
|
|
5174
|
+
}).refine((transition) => transition.trigger !== "on_event" || transition.eventTag !== void 0, {
|
|
5175
|
+
message: "An 'on_event' transition must name the eventTag it listens for.",
|
|
5176
|
+
path: ["eventTag"]
|
|
5177
|
+
});
|
|
5178
|
+
const bridgeStateTreeStateSchema = z.object({
|
|
5179
|
+
enterConditions: z.array(bridgeStateTreeNodeSchema).max(8).default([]),
|
|
5180
|
+
name: userTypeIdentifierSchema,
|
|
5181
|
+
parentStateName: userTypeIdentifierSchema.optional(),
|
|
5182
|
+
stateType: stateTreeStateTypeSchema.default("state"),
|
|
5183
|
+
tasks: z.array(bridgeStateTreeNodeSchema).max(8).default([]),
|
|
5184
|
+
transitions: z.array(bridgeStateTreeTransitionSchema).max(8).default([])
|
|
5185
|
+
});
|
|
5186
|
+
const bridgeAddStateTreeStateRequestSchema = z.object({
|
|
5187
|
+
assetPath: assetPathSchema,
|
|
5188
|
+
compile: z.boolean().default(true),
|
|
5189
|
+
requestId: requestIdSchema,
|
|
5190
|
+
states: z.array(bridgeStateTreeStateSchema).min(1).max(32),
|
|
5191
|
+
type: z.literal(BRIDGE_ADD_STATE_TREE_STATE_REQUEST_TYPE),
|
|
5192
|
+
version: z.literal(2)
|
|
5193
|
+
});
|
|
5194
|
+
const bridgeCreateLevelSequenceRequestSchema = z.object({
|
|
5195
|
+
assetName: assetNameSchema,
|
|
5196
|
+
displayRate: bridgeSequenceFrameRateSchema.optional(),
|
|
5197
|
+
durationInFrames: z.number().int().min(1).max(BRIDGE_SEQUENCE_MAX_FRAME).optional(),
|
|
5198
|
+
packagePath: contentPathSchema,
|
|
5199
|
+
requestId: requestIdSchema,
|
|
5200
|
+
tickResolution: bridgeSequenceFrameRateSchema.optional(),
|
|
5201
|
+
type: z.literal(BRIDGE_CREATE_LEVEL_SEQUENCE_REQUEST_TYPE),
|
|
5202
|
+
version: z.literal(2)
|
|
5203
|
+
});
|
|
5204
|
+
const bridgeSequenceBindingSchema = z.object({
|
|
5205
|
+
actorPath: actorPathSchema.optional(),
|
|
5206
|
+
bindingKind: sequenceBindingKindSchema,
|
|
5207
|
+
name: boundedStringSchema.optional(),
|
|
5208
|
+
objectClassPath: assetPathSchema.optional()
|
|
5209
|
+
}).superRefine((binding, ctx) => {
|
|
5210
|
+
if (binding.bindingKind === "possessable" && binding.actorPath === void 0) {
|
|
5211
|
+
ctx.addIssue({
|
|
5212
|
+
code: z.ZodIssueCode.custom,
|
|
5213
|
+
message: "A possessable binding must name the actorPath it possesses.",
|
|
5214
|
+
path: ["actorPath"]
|
|
5215
|
+
});
|
|
5216
|
+
return;
|
|
5217
|
+
}
|
|
5218
|
+
if (binding.bindingKind === "spawnable" && binding.actorPath === void 0 && binding.objectClassPath === void 0) ctx.addIssue({
|
|
5219
|
+
code: z.ZodIssueCode.custom,
|
|
5220
|
+
message: "A spawnable binding needs a template, so it must carry actorPath or objectClassPath.",
|
|
5221
|
+
path: ["objectClassPath"]
|
|
5222
|
+
});
|
|
5223
|
+
});
|
|
5224
|
+
const bridgeAddSequenceBindingRequestSchema = z.object({
|
|
5225
|
+
assetPath: assetPathSchema,
|
|
5226
|
+
bindings: z.array(bridgeSequenceBindingSchema).min(1).max(32),
|
|
5227
|
+
requestId: requestIdSchema,
|
|
5228
|
+
type: z.literal(BRIDGE_ADD_SEQUENCE_BINDING_REQUEST_TYPE),
|
|
5229
|
+
version: z.literal(2)
|
|
5230
|
+
});
|
|
5231
|
+
const bridgeAddSequenceTrackRequestFieldsSchema = z.object({
|
|
5232
|
+
assetPath: assetPathSchema,
|
|
5233
|
+
bindingId: sequenceBindingIdSchema.optional(),
|
|
5234
|
+
propertyPath: propertyPathSchema.optional(),
|
|
5235
|
+
requestId: requestIdSchema,
|
|
5236
|
+
sectionEndFrame: sequenceFrameSchema.optional(),
|
|
5237
|
+
sectionStartFrame: sequenceFrameSchema.optional(),
|
|
5238
|
+
trackKind: sequenceTrackKindSchema,
|
|
5239
|
+
type: z.literal(BRIDGE_ADD_SEQUENCE_TRACK_REQUEST_TYPE),
|
|
5240
|
+
version: z.literal(2)
|
|
5241
|
+
});
|
|
5242
|
+
const bridgeAddSequenceTrackRequestSchema = bridgeAddSequenceTrackRequestFieldsSchema.superRefine((request, ctx) => {
|
|
5243
|
+
if (request.trackKind === "property" && request.propertyPath === void 0) ctx.addIssue({
|
|
5244
|
+
code: z.ZodIssueCode.custom,
|
|
5245
|
+
message: "A 'property' track must name the propertyPath it animates.",
|
|
5246
|
+
path: ["propertyPath"]
|
|
5247
|
+
});
|
|
5248
|
+
if (request.trackKind !== "camera_cut" && request.bindingId === void 0) ctx.addIssue({
|
|
5249
|
+
code: z.ZodIssueCode.custom,
|
|
5250
|
+
message: `A '${request.trackKind}' track belongs to a binding, so bindingId is required.`,
|
|
5251
|
+
path: ["bindingId"]
|
|
5252
|
+
});
|
|
5253
|
+
if (request.sectionStartFrame !== void 0 && request.sectionEndFrame !== void 0 && request.sectionEndFrame < request.sectionStartFrame) ctx.addIssue({
|
|
5254
|
+
code: z.ZodIssueCode.custom,
|
|
5255
|
+
message: "A section cannot end before it starts.",
|
|
5256
|
+
path: ["sectionEndFrame"]
|
|
5257
|
+
});
|
|
5258
|
+
});
|
|
5259
|
+
const bridgeSequenceKeySchema = z.object({
|
|
5260
|
+
arriveTangent: z.number().optional(),
|
|
5261
|
+
interpolation: sequenceInterpolationSchema.default("auto"),
|
|
5262
|
+
leaveTangent: z.number().optional(),
|
|
5263
|
+
time: z.number(),
|
|
5264
|
+
value: z.number()
|
|
5265
|
+
});
|
|
5266
|
+
const bridgeAddSequenceKeysRequestSchema = z.object({
|
|
5267
|
+
assetPath: assetPathSchema,
|
|
5268
|
+
bindingId: sequenceBindingIdSchema.optional(),
|
|
5269
|
+
channelName: boundedStringSchema,
|
|
5270
|
+
keys: z.array(bridgeSequenceKeySchema).min(1).max(128),
|
|
5271
|
+
requestId: requestIdSchema,
|
|
5272
|
+
timeUnit: sequenceTimeUnitSchema,
|
|
5273
|
+
trackName: boundedStringSchema,
|
|
5274
|
+
type: z.literal(BRIDGE_ADD_SEQUENCE_KEYS_REQUEST_TYPE),
|
|
5275
|
+
version: z.literal(2)
|
|
5276
|
+
});
|
|
5277
|
+
const bridgeFoliageSettingsSchema = z.object({
|
|
5278
|
+
alignToNormal: z.boolean().optional(),
|
|
5279
|
+
collisionEnabled: z.boolean().optional(),
|
|
5280
|
+
density: z.number().min(0).max(BRIDGE_FOLIAGE_MAX_DENSITY).optional(),
|
|
5281
|
+
groundSlopeMax: foliageSlopeSchema.optional(),
|
|
5282
|
+
groundSlopeMin: foliageSlopeSchema.optional(),
|
|
5283
|
+
randomYaw: z.boolean().optional(),
|
|
5284
|
+
scaleMax: z.number().min(0).max(BRIDGE_FOLIAGE_MAX_SCALE).optional(),
|
|
5285
|
+
scaleMin: z.number().min(0).max(BRIDGE_FOLIAGE_MAX_SCALE).optional()
|
|
5286
|
+
});
|
|
5287
|
+
const bridgeAddFoliageTypeRequestSchema = z.object({
|
|
5288
|
+
assetName: assetNameSchema,
|
|
5289
|
+
packagePath: contentPathSchema,
|
|
5290
|
+
requestId: requestIdSchema,
|
|
5291
|
+
settings: bridgeFoliageSettingsSchema.default({}),
|
|
5292
|
+
staticMeshPath: assetPathSchema,
|
|
5293
|
+
type: z.literal(BRIDGE_ADD_FOLIAGE_TYPE_REQUEST_TYPE),
|
|
5294
|
+
version: z.literal(2)
|
|
5295
|
+
});
|
|
5296
|
+
const bridgeFoliageRegionSchema = z.object({
|
|
5297
|
+
maxX: foliageCoordinateSchema,
|
|
5298
|
+
maxY: foliageCoordinateSchema,
|
|
5299
|
+
minX: foliageCoordinateSchema,
|
|
5300
|
+
minY: foliageCoordinateSchema,
|
|
5301
|
+
traceEndZ: foliageCoordinateSchema,
|
|
5302
|
+
traceStartZ: foliageCoordinateSchema
|
|
5303
|
+
}).refine((region) => region.maxX >= region.minX && region.maxY >= region.minY, { message: "A foliage region must have every max component >= its min component." }).refine((region) => region.traceStartZ > region.traceEndZ, {
|
|
5304
|
+
message: "A foliage region traces downward, so traceStartZ must be above traceEndZ.",
|
|
5305
|
+
path: ["traceStartZ"]
|
|
5306
|
+
});
|
|
5307
|
+
const bridgePaintFoliageRequestFieldsSchema = z.object({
|
|
5308
|
+
alignToNormal: z.boolean().optional(),
|
|
5309
|
+
density: z.number().min(0).max(BRIDGE_FOLIAGE_MAX_DENSITY).optional(),
|
|
5310
|
+
foliageTypePath: assetPathSchema,
|
|
5311
|
+
mode: foliagePlacementModeSchema,
|
|
5312
|
+
randomSeed: z.number().int().min(0).max(2147483647).optional(),
|
|
5313
|
+
region: bridgeFoliageRegionSchema.optional(),
|
|
5314
|
+
requestId: requestIdSchema,
|
|
5315
|
+
slopeMax: foliageSlopeSchema.optional(),
|
|
5316
|
+
slopeMin: foliageSlopeSchema.optional(),
|
|
5317
|
+
transforms: z.array(transformInputSchema).max(128).optional(),
|
|
5318
|
+
type: z.literal(BRIDGE_PAINT_FOLIAGE_REQUEST_TYPE),
|
|
5319
|
+
version: z.literal(2)
|
|
5320
|
+
});
|
|
5321
|
+
const bridgePaintFoliageRequestSchema = bridgePaintFoliageRequestFieldsSchema.superRefine((request, ctx) => {
|
|
5322
|
+
if (request.mode === "explicit") {
|
|
5323
|
+
if (request.transforms === void 0 || request.transforms.length === 0) ctx.addIssue({
|
|
5324
|
+
code: z.ZodIssueCode.custom,
|
|
5325
|
+
message: "An 'explicit' paint_foliage request must carry the transforms to place.",
|
|
5326
|
+
path: ["transforms"]
|
|
5327
|
+
});
|
|
5328
|
+
return;
|
|
5329
|
+
}
|
|
5330
|
+
if (request.region === void 0) ctx.addIssue({
|
|
5331
|
+
code: z.ZodIssueCode.custom,
|
|
5332
|
+
message: "A 'region' paint_foliage request must carry the region to scatter across.",
|
|
5333
|
+
path: ["region"]
|
|
5334
|
+
});
|
|
5335
|
+
if (request.density === void 0) ctx.addIssue({
|
|
5336
|
+
code: z.ZodIssueCode.custom,
|
|
5337
|
+
message: "A 'region' paint_foliage request must carry a density.",
|
|
5338
|
+
path: ["density"]
|
|
5339
|
+
});
|
|
5340
|
+
});
|
|
5341
|
+
const bridgeSoundCueNodeSchema = z.object({
|
|
5342
|
+
nodeId: audioNodeIdSchema,
|
|
5343
|
+
nodeKind: soundCueNodeKindSchema,
|
|
5344
|
+
params: eqsParamsSchema.default({}),
|
|
5345
|
+
wavePath: assetPathSchema.optional()
|
|
5346
|
+
}).refine((node) => node.nodeKind !== "wave_player" || node.wavePath !== void 0, {
|
|
5347
|
+
message: "A wave_player node must name the wavePath it plays.",
|
|
5348
|
+
path: ["wavePath"]
|
|
5349
|
+
});
|
|
5350
|
+
const bridgeSoundCueConnectionSchema = z.object({
|
|
5351
|
+
childNodeId: audioNodeIdSchema,
|
|
5352
|
+
inputIndex: z.number().int().min(0).max(64).default(0),
|
|
5353
|
+
parentNodeId: audioNodeIdSchema
|
|
5354
|
+
});
|
|
5355
|
+
const bridgeCreateSoundCueRequestFieldsSchema = z.object({
|
|
5356
|
+
assetName: assetNameSchema,
|
|
5357
|
+
connections: z.array(bridgeSoundCueConnectionSchema).max(64).default([]),
|
|
5358
|
+
nodes: z.array(bridgeSoundCueNodeSchema).min(1).max(32),
|
|
5359
|
+
packagePath: contentPathSchema,
|
|
5360
|
+
requestId: requestIdSchema,
|
|
5361
|
+
rootNodeId: audioNodeIdSchema,
|
|
5362
|
+
type: z.literal(BRIDGE_CREATE_SOUND_CUE_REQUEST_TYPE),
|
|
5363
|
+
version: z.literal(2)
|
|
5364
|
+
});
|
|
5365
|
+
const bridgeCreateSoundCueRequestSchema = bridgeCreateSoundCueRequestFieldsSchema.superRefine((request, ctx) => {
|
|
5366
|
+
const nodeIds = new Set(request.nodes.map((node) => node.nodeId));
|
|
5367
|
+
if (nodeIds.size !== request.nodes.length) ctx.addIssue({
|
|
5368
|
+
code: z.ZodIssueCode.custom,
|
|
5369
|
+
message: "Every sound cue nodeId must be unique within the request.",
|
|
5370
|
+
path: ["nodes"]
|
|
5371
|
+
});
|
|
5372
|
+
if (!nodeIds.has(request.rootNodeId)) ctx.addIssue({
|
|
5373
|
+
code: z.ZodIssueCode.custom,
|
|
5374
|
+
message: "rootNodeId must name one of the nodes in this request.",
|
|
5375
|
+
path: ["rootNodeId"]
|
|
5376
|
+
});
|
|
5377
|
+
for (const [index, connection] of request.connections.entries()) if (!nodeIds.has(connection.parentNodeId) || !nodeIds.has(connection.childNodeId)) ctx.addIssue({
|
|
5378
|
+
code: z.ZodIssueCode.custom,
|
|
5379
|
+
message: "A sound cue connection must join two nodes declared in this request.",
|
|
5380
|
+
path: ["connections", index]
|
|
5381
|
+
});
|
|
5382
|
+
});
|
|
5383
|
+
const bridgeCreateMetasoundRequestSchema = z.object({
|
|
5384
|
+
assetName: assetNameSchema,
|
|
5385
|
+
outputFormat: metasoundOutputFormatSchema.default("mono"),
|
|
5386
|
+
packagePath: contentPathSchema,
|
|
5387
|
+
requestId: requestIdSchema,
|
|
5388
|
+
type: z.literal(BRIDGE_CREATE_METASOUND_REQUEST_TYPE),
|
|
5389
|
+
version: z.literal(2)
|
|
5390
|
+
});
|
|
5391
|
+
const bridgeMetasoundMemberSchema = z.object({
|
|
5392
|
+
dataType: metasoundIdentifierSchema,
|
|
5393
|
+
defaultValue: propertyValueSchema.optional(),
|
|
5394
|
+
name: metasoundIdentifierSchema
|
|
5395
|
+
});
|
|
5396
|
+
const bridgeMetasoundNodeSchema = z.object({
|
|
5397
|
+
nodeClassName: metasoundIdentifierSchema,
|
|
5398
|
+
nodeId: audioNodeIdSchema,
|
|
5399
|
+
nodeNamespace: metasoundIdentifierSchema.optional()
|
|
5400
|
+
});
|
|
5401
|
+
const bridgeMetasoundConnectionSchema = z.object({
|
|
5402
|
+
fromNodeId: audioNodeIdSchema,
|
|
5403
|
+
fromOutput: metasoundIdentifierSchema,
|
|
5404
|
+
toInput: metasoundIdentifierSchema,
|
|
5405
|
+
toNodeId: audioNodeIdSchema
|
|
5406
|
+
});
|
|
5407
|
+
const bridgeSetMetasoundGraphRequestSchema = z.object({
|
|
5408
|
+
assetPath: assetPathSchema,
|
|
5409
|
+
connections: z.array(bridgeMetasoundConnectionSchema).max(64).default([]),
|
|
5410
|
+
inputs: z.array(bridgeMetasoundMemberSchema).max(32).default([]),
|
|
5411
|
+
nodes: z.array(bridgeMetasoundNodeSchema).max(32).default([]),
|
|
5412
|
+
outputs: z.array(bridgeMetasoundMemberSchema).max(32).default([]),
|
|
5413
|
+
requestId: requestIdSchema,
|
|
5414
|
+
type: z.literal(BRIDGE_SET_METASOUND_GRAPH_REQUEST_TYPE),
|
|
5415
|
+
version: z.literal(2)
|
|
5416
|
+
});
|
|
5417
|
+
const bridgeAuthoringItemResultSchema = z.object({
|
|
5418
|
+
error: z.string().optional(),
|
|
5419
|
+
index: z.number().int().min(0),
|
|
5420
|
+
ok: z.boolean(),
|
|
5421
|
+
target: z.string().optional()
|
|
5422
|
+
});
|
|
5423
|
+
const authoringBatchResponseFields = {
|
|
5424
|
+
appliedCount: z.number().int().min(0),
|
|
5425
|
+
assetPath: z.string(),
|
|
5426
|
+
failureCount: z.number().int().min(0),
|
|
5427
|
+
items: z.array(bridgeAuthoringItemResultSchema).max(64),
|
|
5428
|
+
message: nonEmptyStringSchema.optional(),
|
|
5429
|
+
ok: z.literal(true),
|
|
5430
|
+
packageDirty: z.boolean(),
|
|
5431
|
+
requestId: requestIdSchema,
|
|
5432
|
+
state: creativeEditStateSchema,
|
|
5433
|
+
version: z.literal(2)
|
|
5434
|
+
};
|
|
5435
|
+
const createdUserAssetResponseFields = {
|
|
5436
|
+
message: nonEmptyStringSchema.optional(),
|
|
5437
|
+
objectPath: z.string(),
|
|
5438
|
+
ok: z.literal(true),
|
|
5439
|
+
packageName: z.string(),
|
|
5440
|
+
requestId: requestIdSchema,
|
|
5441
|
+
state: creativeEditStateSchema,
|
|
5442
|
+
version: z.literal(2)
|
|
5443
|
+
};
|
|
5444
|
+
const bridgeGetAssetPropertySuccessResponseSchema = z.object({
|
|
5445
|
+
assetPath: z.string(),
|
|
5446
|
+
message: nonEmptyStringSchema.optional(),
|
|
5447
|
+
ok: z.literal(true),
|
|
5448
|
+
propertyPath: z.string(),
|
|
5449
|
+
propertyType: z.string(),
|
|
5450
|
+
requestId: requestIdSchema,
|
|
5451
|
+
state: assetPropertyStateSchema,
|
|
5452
|
+
type: z.literal(BRIDGE_GET_ASSET_PROPERTY_REQUEST_TYPE),
|
|
5453
|
+
value: z.string(),
|
|
5454
|
+
version: z.literal(2)
|
|
5455
|
+
});
|
|
5456
|
+
const bridgeSetAssetPropertySuccessResponseSchema = z.object({
|
|
5457
|
+
...authoringBatchResponseFields,
|
|
5458
|
+
type: z.literal(BRIDGE_SET_ASSET_PROPERTY_REQUEST_TYPE)
|
|
5459
|
+
});
|
|
5460
|
+
const bridgeArrayPropertyOpSuccessResponseSchema = z.object({
|
|
5461
|
+
assetPath: z.string(),
|
|
5462
|
+
elementCount: z.number().int().min(0),
|
|
5463
|
+
message: nonEmptyStringSchema.optional(),
|
|
5464
|
+
ok: z.literal(true),
|
|
5465
|
+
operation: arrayPropertyOperationSchema,
|
|
5466
|
+
packageDirty: z.boolean(),
|
|
5467
|
+
propertyPath: z.string(),
|
|
5468
|
+
requestId: requestIdSchema,
|
|
5469
|
+
state: creativeEditStateSchema,
|
|
5470
|
+
type: z.literal(BRIDGE_ARRAY_PROPERTY_OP_REQUEST_TYPE),
|
|
5471
|
+
version: z.literal(2)
|
|
5472
|
+
});
|
|
5473
|
+
const bridgeCreateStructSuccessResponseSchema = z.object({
|
|
5474
|
+
...createdUserAssetResponseFields,
|
|
5475
|
+
fieldCount: z.number().int().min(0),
|
|
5476
|
+
rebuiltAssets: z.array(z.string()).max(25),
|
|
5477
|
+
rebuiltCount: z.number().int().min(0),
|
|
5478
|
+
type: z.literal(BRIDGE_CREATE_STRUCT_REQUEST_TYPE)
|
|
5479
|
+
});
|
|
5480
|
+
const bridgeCreateEnumSuccessResponseSchema = z.object({
|
|
5481
|
+
...createdUserAssetResponseFields,
|
|
5482
|
+
entryCount: z.number().int().min(0),
|
|
5483
|
+
rebuiltAssets: z.array(z.string()).max(25),
|
|
5484
|
+
rebuiltCount: z.number().int().min(0),
|
|
5485
|
+
type: z.literal(BRIDGE_CREATE_ENUM_REQUEST_TYPE)
|
|
5486
|
+
});
|
|
5487
|
+
const bridgeCreateBlueprintSuccessResponseSchema = z.object({
|
|
5488
|
+
...createdUserAssetResponseFields,
|
|
5489
|
+
blueprintKind: createBlueprintKindSchema,
|
|
5490
|
+
generatedClassPath: z.string(),
|
|
5491
|
+
parentClass: z.string(),
|
|
5492
|
+
type: z.literal(BRIDGE_CREATE_BLUEPRINT_REQUEST_TYPE)
|
|
5493
|
+
});
|
|
5494
|
+
const bridgeAddBpVariableSuccessResponseSchema = z.object({
|
|
5495
|
+
...authoringBatchResponseFields,
|
|
5496
|
+
type: z.literal(BRIDGE_ADD_BP_VARIABLE_REQUEST_TYPE)
|
|
5497
|
+
});
|
|
5498
|
+
const bridgeAddBpFunctionSuccessResponseSchema = z.object({
|
|
5499
|
+
...authoringBatchResponseFields,
|
|
5500
|
+
type: z.literal(BRIDGE_ADD_BP_FUNCTION_REQUEST_TYPE)
|
|
5501
|
+
});
|
|
5502
|
+
const bridgeAddBpEventSuccessResponseSchema = z.object({
|
|
5503
|
+
...authoringBatchResponseFields,
|
|
5504
|
+
graphName: z.string(),
|
|
5505
|
+
type: z.literal(BRIDGE_ADD_BP_EVENT_REQUEST_TYPE)
|
|
5506
|
+
});
|
|
5507
|
+
const bridgeAddBpComponentSuccessResponseSchema = z.object({
|
|
5508
|
+
...authoringBatchResponseFields,
|
|
5509
|
+
type: z.literal(BRIDGE_ADD_BP_COMPONENT_REQUEST_TYPE)
|
|
5510
|
+
});
|
|
5511
|
+
const bridgeAddBpInterfaceSuccessResponseSchema = z.object({
|
|
5512
|
+
...authoringBatchResponseFields,
|
|
5513
|
+
addedGraphs: z.array(z.string()).max(200),
|
|
5514
|
+
type: z.literal(BRIDGE_ADD_BP_INTERFACE_REQUEST_TYPE)
|
|
5515
|
+
});
|
|
5516
|
+
const bridgeSetBpDefaultSuccessResponseSchema = z.object({
|
|
5517
|
+
...authoringBatchResponseFields,
|
|
5518
|
+
type: z.literal(BRIDGE_SET_BP_DEFAULT_REQUEST_TYPE)
|
|
5519
|
+
});
|
|
5520
|
+
const bridgeBatchHandleSchema = z.object({
|
|
5521
|
+
actorPath: z.string(),
|
|
5522
|
+
handle: z.string()
|
|
5523
|
+
});
|
|
5524
|
+
const bridgeBatchEditItemResultSchema = z.object({
|
|
5525
|
+
actorPath: z.string().optional(),
|
|
5526
|
+
error: z.string().optional(),
|
|
5527
|
+
index: z.number().int().min(0),
|
|
5528
|
+
ok: z.boolean(),
|
|
5529
|
+
op: batchEditOpSchema
|
|
5530
|
+
});
|
|
5531
|
+
const bridgeBatchEditSuccessResponseSchema = z.object({
|
|
5532
|
+
appliedCount: z.number().int().min(0),
|
|
5533
|
+
dryRun: z.boolean(),
|
|
5534
|
+
failedError: z.string().optional(),
|
|
5535
|
+
failedIndex: z.number().int().min(0).optional(),
|
|
5536
|
+
handles: z.array(bridgeBatchHandleSchema).max(64),
|
|
5537
|
+
items: z.array(bridgeBatchEditItemResultSchema).max(64),
|
|
5538
|
+
message: nonEmptyStringSchema.optional(),
|
|
5539
|
+
ok: z.literal(true),
|
|
5540
|
+
requestId: requestIdSchema,
|
|
5541
|
+
state: batchEditStateSchema,
|
|
5542
|
+
transactionTitle: z.string().optional(),
|
|
5543
|
+
type: z.literal(BRIDGE_BATCH_EDIT_REQUEST_TYPE),
|
|
5544
|
+
version: z.literal(2)
|
|
5545
|
+
}).refine((value) => value.state === "rolled_back" === (value.failedIndex !== void 0), {
|
|
5546
|
+
message: "A batch_edit response must carry failedIndex exactly when state is 'rolled_back'.",
|
|
5547
|
+
path: ["failedIndex"]
|
|
5548
|
+
});
|
|
5549
|
+
const importJobAcceptFields = {
|
|
5550
|
+
importJobId: importJobIdSchema.optional(),
|
|
5551
|
+
message: nonEmptyStringSchema.optional(),
|
|
5552
|
+
ok: z.literal(true),
|
|
5553
|
+
requestId: requestIdSchema,
|
|
5554
|
+
state: importJobAcceptStateSchema,
|
|
5555
|
+
version: z.literal(2)
|
|
5556
|
+
};
|
|
5557
|
+
const importJobAcceptRefinement = {
|
|
5558
|
+
message: "An import response must carry importJobId exactly when state is 'accepted'.",
|
|
5559
|
+
path: ["importJobId"]
|
|
5560
|
+
};
|
|
5561
|
+
function isImportJobAcceptConsistent(value) {
|
|
5562
|
+
return value.state === "accepted" === (value.importJobId !== void 0);
|
|
5563
|
+
}
|
|
5564
|
+
const bridgeImportAssetSuccessResponseSchema = z.object({
|
|
5565
|
+
...importJobAcceptFields,
|
|
5566
|
+
sourceFileCount: z.number().int().min(0),
|
|
5567
|
+
type: z.literal(BRIDGE_IMPORT_ASSET_REQUEST_TYPE)
|
|
5568
|
+
}).refine(isImportJobAcceptConsistent, importJobAcceptRefinement);
|
|
5569
|
+
const bridgeReimportAssetSuccessResponseSchema = z.object({
|
|
5570
|
+
...importJobAcceptFields,
|
|
5571
|
+
assetCount: z.number().int().min(0),
|
|
5572
|
+
type: z.literal(BRIDGE_REIMPORT_ASSET_REQUEST_TYPE)
|
|
5573
|
+
}).refine(isImportJobAcceptConsistent, importJobAcceptRefinement);
|
|
5574
|
+
const bridgeSetImportSettingsSuccessResponseSchema = z.object({
|
|
5575
|
+
message: nonEmptyStringSchema.optional(),
|
|
5576
|
+
ok: z.literal(true),
|
|
5577
|
+
presetName: z.string(),
|
|
5578
|
+
requestId: requestIdSchema,
|
|
5579
|
+
settingCount: z.number().int().min(0),
|
|
5580
|
+
state: creativeEditStateSchema,
|
|
5581
|
+
type: z.literal(BRIDGE_SET_IMPORT_SETTINGS_REQUEST_TYPE),
|
|
5582
|
+
version: z.literal(2)
|
|
5583
|
+
});
|
|
5584
|
+
const bridgeImportJobItemResultSchema = z.object({
|
|
5585
|
+
createdAssets: z.array(z.string()).max(25),
|
|
5586
|
+
error: z.string().optional(),
|
|
5587
|
+
index: z.number().int().min(0),
|
|
5588
|
+
ok: z.boolean(),
|
|
5589
|
+
source: z.string()
|
|
5590
|
+
});
|
|
5591
|
+
const bridgeGetImportJobStatusSuccessResponseSchema = z.object({
|
|
5592
|
+
durationMs: z.number().int().min(0).optional(),
|
|
5593
|
+
failureCount: z.number().int().min(0),
|
|
5594
|
+
finishedAt: nonEmptyStringSchema.optional(),
|
|
5595
|
+
importJobId: importJobIdSchema,
|
|
5596
|
+
message: nonEmptyStringSchema.optional(),
|
|
5597
|
+
ok: z.literal(true),
|
|
5598
|
+
operation: importOperationSchema.optional(),
|
|
5599
|
+
requestId: requestIdSchema,
|
|
5600
|
+
results: z.array(bridgeImportJobItemResultSchema).max(16),
|
|
5601
|
+
state: importJobStateSchema,
|
|
5602
|
+
successCount: z.number().int().min(0),
|
|
5603
|
+
type: z.literal(BRIDGE_GET_IMPORT_JOB_STATUS_REQUEST_TYPE),
|
|
5604
|
+
version: z.literal(2)
|
|
5605
|
+
}).superRefine((value, ctx) => {
|
|
5606
|
+
if (value.state === "succeeded" || value.state === "failed") return;
|
|
5607
|
+
if (value.durationMs !== void 0) ctx.addIssue({
|
|
5608
|
+
code: z.ZodIssueCode.custom,
|
|
5609
|
+
message: "durationMs must be absent until the job finishes",
|
|
5610
|
+
path: ["durationMs"]
|
|
5611
|
+
});
|
|
5612
|
+
if (value.finishedAt !== void 0) ctx.addIssue({
|
|
5613
|
+
code: z.ZodIssueCode.custom,
|
|
5614
|
+
message: "finishedAt must be absent until the job finishes",
|
|
5615
|
+
path: ["finishedAt"]
|
|
5616
|
+
});
|
|
5617
|
+
});
|
|
5618
|
+
const bridgeBlackboardKeyReportSchema = z.object({
|
|
5619
|
+
baseType: z.string().optional(),
|
|
5620
|
+
keyName: z.string(),
|
|
5621
|
+
keyType: blackboardKeyTypeSchema
|
|
5622
|
+
});
|
|
5623
|
+
const bridgeCreateBlackboardSuccessResponseSchema = z.object({
|
|
5624
|
+
...createdUserAssetResponseFields,
|
|
5625
|
+
inheritedKeyCount: z.number().int().min(0),
|
|
5626
|
+
keyCount: z.number().int().min(0),
|
|
5627
|
+
type: z.literal(BRIDGE_CREATE_BLACKBOARD_REQUEST_TYPE)
|
|
5628
|
+
});
|
|
5629
|
+
const bridgeSetBlackboardKeysSuccessResponseSchema = z.object({
|
|
5630
|
+
...authoringBatchResponseFields,
|
|
5631
|
+
inheritedKeys: z.array(bridgeBlackboardKeyReportSchema).max(64),
|
|
5632
|
+
keys: z.array(bridgeBlackboardKeyReportSchema).max(64),
|
|
5633
|
+
type: z.literal(BRIDGE_SET_BLACKBOARD_KEYS_REQUEST_TYPE)
|
|
5634
|
+
});
|
|
5635
|
+
const bridgeCreateEqsQuerySuccessResponseSchema = z.object({
|
|
5636
|
+
...createdUserAssetResponseFields,
|
|
5637
|
+
eqsEnabled: z.boolean(),
|
|
5638
|
+
generatorClass: z.string(),
|
|
5639
|
+
testCount: z.number().int().min(0),
|
|
5640
|
+
type: z.literal(BRIDGE_CREATE_EQS_QUERY_REQUEST_TYPE)
|
|
5641
|
+
});
|
|
5642
|
+
const bridgeCreateStateTreeSuccessResponseSchema = z.object({
|
|
5643
|
+
...createdUserAssetResponseFields,
|
|
5644
|
+
schemaClass: z.string(),
|
|
5645
|
+
supportedVersions: z.array(z.string()).max(16),
|
|
5646
|
+
type: z.literal(BRIDGE_CREATE_STATE_TREE_REQUEST_TYPE)
|
|
5647
|
+
});
|
|
5648
|
+
const bridgeAddStateTreeStateSuccessResponseSchema = z.object({
|
|
5649
|
+
...authoringBatchResponseFields,
|
|
5650
|
+
compiled: z.boolean(),
|
|
5651
|
+
compileMessages: z.array(z.string()).max(25),
|
|
5652
|
+
type: z.literal(BRIDGE_ADD_STATE_TREE_STATE_REQUEST_TYPE)
|
|
5653
|
+
});
|
|
5654
|
+
const bridgeCreateLevelSequenceSuccessResponseSchema = z.object({
|
|
5655
|
+
...createdUserAssetResponseFields,
|
|
5656
|
+
displayRate: bridgeSequenceFrameRateSchema,
|
|
5657
|
+
durationInFrames: z.number().int().min(0),
|
|
5658
|
+
tickResolution: bridgeSequenceFrameRateSchema,
|
|
5659
|
+
type: z.literal(BRIDGE_CREATE_LEVEL_SEQUENCE_REQUEST_TYPE)
|
|
5660
|
+
});
|
|
5661
|
+
const bridgeAddSequenceBindingSuccessResponseSchema = z.object({
|
|
5662
|
+
...authoringBatchResponseFields,
|
|
5663
|
+
type: z.literal(BRIDGE_ADD_SEQUENCE_BINDING_REQUEST_TYPE)
|
|
5664
|
+
});
|
|
5665
|
+
const bridgeAddSequenceTrackSuccessResponseSchema = z.object({
|
|
5666
|
+
assetPath: z.string(),
|
|
5667
|
+
message: nonEmptyStringSchema.optional(),
|
|
5668
|
+
ok: z.literal(true),
|
|
5669
|
+
packageDirty: z.boolean(),
|
|
5670
|
+
requestId: requestIdSchema,
|
|
5671
|
+
sectionIndex: z.number().int().min(0),
|
|
5672
|
+
state: creativeEditStateSchema,
|
|
5673
|
+
trackKind: sequenceTrackKindSchema,
|
|
5674
|
+
trackName: z.string(),
|
|
5675
|
+
type: z.literal(BRIDGE_ADD_SEQUENCE_TRACK_REQUEST_TYPE),
|
|
5676
|
+
version: z.literal(2)
|
|
5677
|
+
});
|
|
5678
|
+
const bridgeAddSequenceKeysSuccessResponseSchema = z.object({
|
|
5679
|
+
assetPath: z.string(),
|
|
5680
|
+
channelName: z.string(),
|
|
5681
|
+
keyCount: z.number().int().min(0),
|
|
5682
|
+
message: nonEmptyStringSchema.optional(),
|
|
5683
|
+
ok: z.literal(true),
|
|
5684
|
+
packageDirty: z.boolean(),
|
|
5685
|
+
requestId: requestIdSchema,
|
|
5686
|
+
resolvedFrames: z.array(z.number().int()).max(128),
|
|
5687
|
+
state: creativeEditStateSchema,
|
|
5688
|
+
type: z.literal(BRIDGE_ADD_SEQUENCE_KEYS_REQUEST_TYPE),
|
|
5689
|
+
version: z.literal(2)
|
|
5690
|
+
});
|
|
5691
|
+
const bridgeAddFoliageTypeSuccessResponseSchema = z.object({
|
|
5692
|
+
...createdUserAssetResponseFields,
|
|
5693
|
+
staticMeshPath: z.string(),
|
|
5694
|
+
type: z.literal(BRIDGE_ADD_FOLIAGE_TYPE_REQUEST_TYPE)
|
|
5695
|
+
});
|
|
5696
|
+
const bridgePaintFoliageSuccessResponseSchema = z.object({
|
|
5697
|
+
attemptedCount: z.number().int().min(0),
|
|
5698
|
+
foliageTypePath: z.string(),
|
|
5699
|
+
instanceCount: z.number().int().min(0),
|
|
5700
|
+
message: nonEmptyStringSchema.optional(),
|
|
5701
|
+
ok: z.literal(true),
|
|
5702
|
+
packageDirty: z.boolean(),
|
|
5703
|
+
placedCount: z.number().int().min(0),
|
|
5704
|
+
requestId: requestIdSchema,
|
|
5705
|
+
skippedCount: z.number().int().min(0),
|
|
5706
|
+
state: creativeEditStateSchema,
|
|
5707
|
+
type: z.literal(BRIDGE_PAINT_FOLIAGE_REQUEST_TYPE),
|
|
5708
|
+
version: z.literal(2)
|
|
5709
|
+
});
|
|
5710
|
+
const bridgeCreateSoundCueSuccessResponseSchema = z.object({
|
|
5711
|
+
...createdUserAssetResponseFields,
|
|
5712
|
+
connectionCount: z.number().int().min(0),
|
|
5713
|
+
nodeCount: z.number().int().min(0),
|
|
5714
|
+
type: z.literal(BRIDGE_CREATE_SOUND_CUE_REQUEST_TYPE)
|
|
5715
|
+
});
|
|
5716
|
+
const bridgeCreateMetasoundSuccessResponseSchema = z.object({
|
|
5717
|
+
...createdUserAssetResponseFields,
|
|
5718
|
+
outputFormat: metasoundOutputFormatSchema,
|
|
5719
|
+
type: z.literal(BRIDGE_CREATE_METASOUND_REQUEST_TYPE)
|
|
5720
|
+
});
|
|
5721
|
+
const bridgeSetMetasoundGraphSuccessResponseSchema = z.object({
|
|
5722
|
+
assetPath: z.string(),
|
|
5723
|
+
connectionCount: z.number().int().min(0),
|
|
5724
|
+
inputCount: z.number().int().min(0),
|
|
5725
|
+
message: nonEmptyStringSchema.optional(),
|
|
5726
|
+
nodeCount: z.number().int().min(0),
|
|
5727
|
+
ok: z.literal(true),
|
|
5728
|
+
outputCount: z.number().int().min(0),
|
|
5729
|
+
packageDirty: z.boolean(),
|
|
5730
|
+
requestId: requestIdSchema,
|
|
5731
|
+
state: creativeEditStateSchema,
|
|
5732
|
+
type: z.literal(BRIDGE_SET_METASOUND_GRAPH_REQUEST_TYPE),
|
|
5733
|
+
version: z.literal(2)
|
|
5734
|
+
});
|
|
5735
|
+
const bridgeGetAssetPropertyResponseSchema = z.union([bridgeGetAssetPropertySuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5736
|
+
const bridgeSetAssetPropertyResponseSchema = z.union([bridgeSetAssetPropertySuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5737
|
+
const bridgeArrayPropertyOpResponseSchema = z.union([bridgeArrayPropertyOpSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5738
|
+
const bridgeCreateStructResponseSchema = z.union([bridgeCreateStructSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5739
|
+
const bridgeCreateEnumResponseSchema = z.union([bridgeCreateEnumSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5740
|
+
const bridgeCreateBlueprintResponseSchema = z.union([bridgeCreateBlueprintSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5741
|
+
const bridgeAddBpVariableResponseSchema = z.union([bridgeAddBpVariableSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5742
|
+
const bridgeAddBpFunctionResponseSchema = z.union([bridgeAddBpFunctionSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5743
|
+
const bridgeAddBpEventResponseSchema = z.union([bridgeAddBpEventSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5744
|
+
const bridgeAddBpComponentResponseSchema = z.union([bridgeAddBpComponentSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5745
|
+
const bridgeAddBpInterfaceResponseSchema = z.union([bridgeAddBpInterfaceSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5746
|
+
const bridgeSetBpDefaultResponseSchema = z.union([bridgeSetBpDefaultSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5747
|
+
const bridgeBatchEditResponseSchema = z.union([bridgeBatchEditSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5748
|
+
const bridgeImportAssetResponseSchema = z.union([bridgeImportAssetSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5749
|
+
const bridgeReimportAssetResponseSchema = z.union([bridgeReimportAssetSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5750
|
+
const bridgeSetImportSettingsResponseSchema = z.union([bridgeSetImportSettingsSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5751
|
+
const bridgeGetImportJobStatusResponseSchema = z.union([bridgeGetImportJobStatusSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5752
|
+
const bridgeCreateBlackboardResponseSchema = z.union([bridgeCreateBlackboardSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5753
|
+
const bridgeSetBlackboardKeysResponseSchema = z.union([bridgeSetBlackboardKeysSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5754
|
+
const bridgeCreateEqsQueryResponseSchema = z.union([bridgeCreateEqsQuerySuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5755
|
+
const bridgeCreateStateTreeResponseSchema = z.union([bridgeCreateStateTreeSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5756
|
+
const bridgeAddStateTreeStateResponseSchema = z.union([bridgeAddStateTreeStateSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5757
|
+
const bridgeCreateLevelSequenceResponseSchema = z.union([bridgeCreateLevelSequenceSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5758
|
+
const bridgeAddSequenceBindingResponseSchema = z.union([bridgeAddSequenceBindingSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5759
|
+
const bridgeAddSequenceTrackResponseSchema = z.union([bridgeAddSequenceTrackSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5760
|
+
const bridgeAddSequenceKeysResponseSchema = z.union([bridgeAddSequenceKeysSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5761
|
+
const bridgeAddFoliageTypeResponseSchema = z.union([bridgeAddFoliageTypeSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5762
|
+
const bridgePaintFoliageResponseSchema = z.union([bridgePaintFoliageSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5763
|
+
const bridgeCreateSoundCueResponseSchema = z.union([bridgeCreateSoundCueSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5764
|
+
const bridgeCreateMetasoundResponseSchema = z.union([bridgeCreateMetasoundSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5765
|
+
const bridgeSetMetasoundGraphResponseSchema = z.union([bridgeSetMetasoundGraphSuccessResponseSchema, bridgeErrorResponseSchema]);
|
|
5766
|
+
function createBridgeGetAssetPropertyRequest(assetPath, propertyPath, requestId = randomUUID()) {
|
|
5767
|
+
return bridgeGetAssetPropertyRequestSchema.parse({
|
|
5768
|
+
assetPath,
|
|
5769
|
+
propertyPath,
|
|
5770
|
+
requestId,
|
|
5771
|
+
type: BRIDGE_GET_ASSET_PROPERTY_REQUEST_TYPE,
|
|
5772
|
+
version: 2
|
|
5773
|
+
});
|
|
5774
|
+
}
|
|
5775
|
+
function createBridgeSetAssetPropertyRequest(assetPath, properties, requestId = randomUUID()) {
|
|
5776
|
+
return bridgeSetAssetPropertyRequestSchema.parse({
|
|
5777
|
+
assetPath,
|
|
5778
|
+
properties,
|
|
5779
|
+
requestId,
|
|
5780
|
+
type: BRIDGE_SET_ASSET_PROPERTY_REQUEST_TYPE,
|
|
5781
|
+
version: 2
|
|
5782
|
+
});
|
|
5783
|
+
}
|
|
5784
|
+
function createBridgeArrayPropertyOpRequest(assetPath, propertyPath, operation, options = {}, requestId = randomUUID()) {
|
|
5785
|
+
return bridgeArrayPropertyOpRequestSchema.parse({
|
|
5786
|
+
assetPath,
|
|
5787
|
+
index: options.index,
|
|
5788
|
+
operation,
|
|
5789
|
+
propertyPath,
|
|
5790
|
+
requestId,
|
|
5791
|
+
type: BRIDGE_ARRAY_PROPERTY_OP_REQUEST_TYPE,
|
|
5792
|
+
value: options.value,
|
|
5793
|
+
version: 2
|
|
5794
|
+
});
|
|
5795
|
+
}
|
|
5796
|
+
function createBridgeCreateStructRequest(assetName, packagePath, options = {}, requestId = randomUUID()) {
|
|
5797
|
+
return bridgeCreateStructRequestSchema.parse({
|
|
5798
|
+
assetName,
|
|
5799
|
+
description: options.description,
|
|
5800
|
+
fields: options.fields,
|
|
5801
|
+
packagePath,
|
|
5802
|
+
requestId,
|
|
5803
|
+
type: BRIDGE_CREATE_STRUCT_REQUEST_TYPE,
|
|
5804
|
+
version: 2
|
|
5805
|
+
});
|
|
5806
|
+
}
|
|
5807
|
+
function createBridgeCreateEnumRequest(assetName, packagePath, entries, options = {}, requestId = randomUUID()) {
|
|
5808
|
+
return bridgeCreateEnumRequestSchema.parse({
|
|
5809
|
+
assetName,
|
|
5810
|
+
description: options.description,
|
|
5811
|
+
entries,
|
|
5812
|
+
packagePath,
|
|
5813
|
+
requestId,
|
|
5814
|
+
type: BRIDGE_CREATE_ENUM_REQUEST_TYPE,
|
|
5815
|
+
version: 2
|
|
5816
|
+
});
|
|
5817
|
+
}
|
|
5818
|
+
function createBridgeCreateBlueprintRequest(assetName, packagePath, parentClass, options = {}, requestId = randomUUID()) {
|
|
5819
|
+
return bridgeCreateBlueprintRequestSchema.parse({
|
|
5820
|
+
assetName,
|
|
5821
|
+
blueprintKind: options.blueprintKind,
|
|
5822
|
+
packagePath,
|
|
5823
|
+
parentClass,
|
|
5824
|
+
requestId,
|
|
5825
|
+
type: BRIDGE_CREATE_BLUEPRINT_REQUEST_TYPE,
|
|
5826
|
+
version: 2
|
|
5827
|
+
});
|
|
5828
|
+
}
|
|
5829
|
+
function createBridgeAddBpVariableRequest(assetPath, variables, requestId = randomUUID()) {
|
|
5830
|
+
return bridgeAddBpVariableRequestSchema.parse({
|
|
5831
|
+
assetPath,
|
|
5832
|
+
requestId,
|
|
5833
|
+
type: BRIDGE_ADD_BP_VARIABLE_REQUEST_TYPE,
|
|
5834
|
+
variables,
|
|
5835
|
+
version: 2
|
|
5836
|
+
});
|
|
5837
|
+
}
|
|
5838
|
+
function createBridgeAddBpFunctionRequest(assetPath, functions, requestId = randomUUID()) {
|
|
5839
|
+
return bridgeAddBpFunctionRequestSchema.parse({
|
|
5840
|
+
assetPath,
|
|
5841
|
+
functions,
|
|
5842
|
+
requestId,
|
|
5843
|
+
type: BRIDGE_ADD_BP_FUNCTION_REQUEST_TYPE,
|
|
5844
|
+
version: 2
|
|
5845
|
+
});
|
|
5846
|
+
}
|
|
5847
|
+
function createBridgeAddBpEventRequest(assetPath, events, options = {}, requestId = randomUUID()) {
|
|
5848
|
+
return bridgeAddBpEventRequestSchema.parse({
|
|
5849
|
+
assetPath,
|
|
5850
|
+
events,
|
|
5851
|
+
graphName: options.graphName,
|
|
5852
|
+
requestId,
|
|
5853
|
+
type: BRIDGE_ADD_BP_EVENT_REQUEST_TYPE,
|
|
5854
|
+
version: 2
|
|
5855
|
+
});
|
|
5856
|
+
}
|
|
5857
|
+
function createBridgeAddBpComponentRequest(assetPath, components, requestId = randomUUID()) {
|
|
5858
|
+
return bridgeAddBpComponentRequestSchema.parse({
|
|
5859
|
+
assetPath,
|
|
5860
|
+
components,
|
|
5861
|
+
requestId,
|
|
5862
|
+
type: BRIDGE_ADD_BP_COMPONENT_REQUEST_TYPE,
|
|
5863
|
+
version: 2
|
|
5864
|
+
});
|
|
5865
|
+
}
|
|
5866
|
+
function createBridgeAddBpInterfaceRequest(assetPath, interfacePaths, requestId = randomUUID()) {
|
|
5867
|
+
return bridgeAddBpInterfaceRequestSchema.parse({
|
|
5868
|
+
assetPath,
|
|
5869
|
+
interfacePaths,
|
|
5870
|
+
requestId,
|
|
5871
|
+
type: BRIDGE_ADD_BP_INTERFACE_REQUEST_TYPE,
|
|
5872
|
+
version: 2
|
|
5873
|
+
});
|
|
5874
|
+
}
|
|
5875
|
+
function createBridgeSetBpDefaultRequest(assetPath, properties, requestId = randomUUID()) {
|
|
5876
|
+
return bridgeSetBpDefaultRequestSchema.parse({
|
|
5877
|
+
assetPath,
|
|
5878
|
+
properties,
|
|
5879
|
+
requestId,
|
|
5880
|
+
type: BRIDGE_SET_BP_DEFAULT_REQUEST_TYPE,
|
|
5881
|
+
version: 2
|
|
5882
|
+
});
|
|
5883
|
+
}
|
|
5884
|
+
function createBridgeBatchEditRequest(ops, options = {}, requestId = randomUUID()) {
|
|
5885
|
+
return bridgeBatchEditRequestSchema.parse({
|
|
5886
|
+
dryRun: options.dryRun,
|
|
5887
|
+
ops,
|
|
5888
|
+
requestId,
|
|
5889
|
+
transactionTitle: options.transactionTitle,
|
|
5890
|
+
type: BRIDGE_BATCH_EDIT_REQUEST_TYPE,
|
|
5891
|
+
version: 2
|
|
5892
|
+
});
|
|
5893
|
+
}
|
|
5894
|
+
function createBridgeImportAssetRequest(sourceFiles, destinationPath, options = {}, requestId = randomUUID()) {
|
|
5895
|
+
return bridgeImportAssetRequestSchema.parse({
|
|
5896
|
+
destinationPath,
|
|
5897
|
+
pipeline: options.pipeline,
|
|
5898
|
+
presetName: options.presetName,
|
|
5899
|
+
replaceExisting: options.replaceExisting,
|
|
5900
|
+
requestId,
|
|
5901
|
+
sourceFiles,
|
|
5902
|
+
type: BRIDGE_IMPORT_ASSET_REQUEST_TYPE,
|
|
5903
|
+
version: 2
|
|
5904
|
+
});
|
|
5905
|
+
}
|
|
5906
|
+
function createBridgeReimportAssetRequest(assetPaths, requestId = randomUUID()) {
|
|
5907
|
+
return bridgeReimportAssetRequestSchema.parse({
|
|
5908
|
+
assetPaths,
|
|
5909
|
+
requestId,
|
|
5910
|
+
type: BRIDGE_REIMPORT_ASSET_REQUEST_TYPE,
|
|
5911
|
+
version: 2
|
|
5912
|
+
});
|
|
5913
|
+
}
|
|
5914
|
+
function createBridgeSetImportSettingsRequest(presetName, settings, requestId = randomUUID()) {
|
|
5915
|
+
return bridgeSetImportSettingsRequestSchema.parse({
|
|
5916
|
+
presetName,
|
|
5917
|
+
requestId,
|
|
5918
|
+
settings,
|
|
5919
|
+
type: BRIDGE_SET_IMPORT_SETTINGS_REQUEST_TYPE,
|
|
5920
|
+
version: 2
|
|
5921
|
+
});
|
|
5922
|
+
}
|
|
5923
|
+
function createBridgeGetImportJobStatusRequest(importJobId, requestId = randomUUID()) {
|
|
5924
|
+
return bridgeGetImportJobStatusRequestSchema.parse({
|
|
5925
|
+
importJobId,
|
|
5926
|
+
requestId,
|
|
5927
|
+
type: BRIDGE_GET_IMPORT_JOB_STATUS_REQUEST_TYPE,
|
|
5928
|
+
version: 2
|
|
5929
|
+
});
|
|
5930
|
+
}
|
|
5931
|
+
function createBridgeCreateBlackboardRequest(assetName, packagePath, options = {}, requestId = randomUUID()) {
|
|
5932
|
+
return bridgeCreateBlackboardRequestSchema.parse({
|
|
5933
|
+
assetName,
|
|
5934
|
+
keys: options.keys,
|
|
5935
|
+
packagePath,
|
|
5936
|
+
parentBlackboardPath: options.parentBlackboardPath,
|
|
5937
|
+
requestId,
|
|
5938
|
+
type: BRIDGE_CREATE_BLACKBOARD_REQUEST_TYPE,
|
|
5939
|
+
version: 2
|
|
5940
|
+
});
|
|
5941
|
+
}
|
|
5942
|
+
function createBridgeSetBlackboardKeysRequest(assetPath, keys, options = {}, requestId = randomUUID()) {
|
|
5943
|
+
return bridgeSetBlackboardKeysRequestSchema.parse({
|
|
5944
|
+
assetPath,
|
|
5945
|
+
keys,
|
|
5946
|
+
mode: options.mode,
|
|
5947
|
+
requestId,
|
|
5948
|
+
type: BRIDGE_SET_BLACKBOARD_KEYS_REQUEST_TYPE,
|
|
5949
|
+
version: 2
|
|
5950
|
+
});
|
|
5951
|
+
}
|
|
5952
|
+
function createBridgeCreateEqsQueryRequest(assetName, packagePath, generator, options = {}, requestId = randomUUID()) {
|
|
5953
|
+
return bridgeCreateEqsQueryRequestSchema.parse({
|
|
5954
|
+
assetName,
|
|
5955
|
+
generator,
|
|
5956
|
+
packagePath,
|
|
5957
|
+
requestId,
|
|
5958
|
+
tests: options.tests,
|
|
5959
|
+
type: BRIDGE_CREATE_EQS_QUERY_REQUEST_TYPE,
|
|
5960
|
+
version: 2
|
|
5961
|
+
});
|
|
5962
|
+
}
|
|
5963
|
+
function createBridgeCreateStateTreeRequest(assetName, packagePath, options = {}, requestId = randomUUID()) {
|
|
5964
|
+
return bridgeCreateStateTreeRequestSchema.parse({
|
|
5965
|
+
assetName,
|
|
5966
|
+
packagePath,
|
|
5967
|
+
requestId,
|
|
5968
|
+
schema: options.schema,
|
|
5969
|
+
schemaClass: options.schemaClass,
|
|
5970
|
+
type: BRIDGE_CREATE_STATE_TREE_REQUEST_TYPE,
|
|
5971
|
+
version: 2
|
|
5972
|
+
});
|
|
5973
|
+
}
|
|
5974
|
+
function createBridgeAddStateTreeStateRequest(assetPath, states, options = {}, requestId = randomUUID()) {
|
|
5975
|
+
return bridgeAddStateTreeStateRequestSchema.parse({
|
|
5976
|
+
assetPath,
|
|
5977
|
+
compile: options.compile,
|
|
5978
|
+
requestId,
|
|
5979
|
+
states,
|
|
5980
|
+
type: BRIDGE_ADD_STATE_TREE_STATE_REQUEST_TYPE,
|
|
5981
|
+
version: 2
|
|
5982
|
+
});
|
|
5983
|
+
}
|
|
5984
|
+
function createBridgeCreateLevelSequenceRequest(assetName, packagePath, options = {}, requestId = randomUUID()) {
|
|
5985
|
+
return bridgeCreateLevelSequenceRequestSchema.parse({
|
|
5986
|
+
assetName,
|
|
5987
|
+
displayRate: options.displayRate,
|
|
5988
|
+
durationInFrames: options.durationInFrames,
|
|
5989
|
+
packagePath,
|
|
5990
|
+
requestId,
|
|
5991
|
+
tickResolution: options.tickResolution,
|
|
5992
|
+
type: BRIDGE_CREATE_LEVEL_SEQUENCE_REQUEST_TYPE,
|
|
5993
|
+
version: 2
|
|
5994
|
+
});
|
|
5995
|
+
}
|
|
5996
|
+
function createBridgeAddSequenceBindingRequest(assetPath, bindings, requestId = randomUUID()) {
|
|
5997
|
+
return bridgeAddSequenceBindingRequestSchema.parse({
|
|
5998
|
+
assetPath,
|
|
5999
|
+
bindings,
|
|
6000
|
+
requestId,
|
|
6001
|
+
type: BRIDGE_ADD_SEQUENCE_BINDING_REQUEST_TYPE,
|
|
6002
|
+
version: 2
|
|
6003
|
+
});
|
|
6004
|
+
}
|
|
6005
|
+
function createBridgeAddSequenceTrackRequest(assetPath, trackKind, options = {}, requestId = randomUUID()) {
|
|
6006
|
+
return bridgeAddSequenceTrackRequestSchema.parse({
|
|
6007
|
+
assetPath,
|
|
6008
|
+
bindingId: options.bindingId,
|
|
6009
|
+
propertyPath: options.propertyPath,
|
|
6010
|
+
requestId,
|
|
6011
|
+
sectionEndFrame: options.sectionEndFrame,
|
|
6012
|
+
sectionStartFrame: options.sectionStartFrame,
|
|
6013
|
+
trackKind,
|
|
6014
|
+
type: BRIDGE_ADD_SEQUENCE_TRACK_REQUEST_TYPE,
|
|
6015
|
+
version: 2
|
|
6016
|
+
});
|
|
6017
|
+
}
|
|
6018
|
+
function createBridgeAddSequenceKeysRequest(assetPath, trackName, channelName, timeUnit, keys, options = {}, requestId = randomUUID()) {
|
|
6019
|
+
return bridgeAddSequenceKeysRequestSchema.parse({
|
|
6020
|
+
assetPath,
|
|
6021
|
+
bindingId: options.bindingId,
|
|
6022
|
+
channelName,
|
|
6023
|
+
keys,
|
|
6024
|
+
requestId,
|
|
6025
|
+
timeUnit,
|
|
6026
|
+
trackName,
|
|
6027
|
+
type: BRIDGE_ADD_SEQUENCE_KEYS_REQUEST_TYPE,
|
|
6028
|
+
version: 2
|
|
6029
|
+
});
|
|
6030
|
+
}
|
|
6031
|
+
function createBridgeAddFoliageTypeRequest(assetName, packagePath, staticMeshPath, options = {}, requestId = randomUUID()) {
|
|
6032
|
+
return bridgeAddFoliageTypeRequestSchema.parse({
|
|
6033
|
+
assetName,
|
|
6034
|
+
packagePath,
|
|
6035
|
+
requestId,
|
|
6036
|
+
settings: options.settings,
|
|
6037
|
+
staticMeshPath,
|
|
6038
|
+
type: BRIDGE_ADD_FOLIAGE_TYPE_REQUEST_TYPE,
|
|
6039
|
+
version: 2
|
|
6040
|
+
});
|
|
6041
|
+
}
|
|
6042
|
+
function createBridgePaintFoliageRequest(foliageTypePath, mode, options = {}, requestId = randomUUID()) {
|
|
6043
|
+
return bridgePaintFoliageRequestSchema.parse({
|
|
6044
|
+
alignToNormal: options.alignToNormal,
|
|
6045
|
+
density: options.density,
|
|
6046
|
+
foliageTypePath,
|
|
6047
|
+
mode,
|
|
6048
|
+
randomSeed: options.randomSeed,
|
|
6049
|
+
region: options.region,
|
|
6050
|
+
requestId,
|
|
6051
|
+
slopeMax: options.slopeMax,
|
|
6052
|
+
slopeMin: options.slopeMin,
|
|
6053
|
+
transforms: options.transforms,
|
|
6054
|
+
type: BRIDGE_PAINT_FOLIAGE_REQUEST_TYPE,
|
|
6055
|
+
version: 2
|
|
6056
|
+
});
|
|
6057
|
+
}
|
|
6058
|
+
function createBridgeCreateSoundCueRequest(assetName, packagePath, nodes, rootNodeId, options = {}, requestId = randomUUID()) {
|
|
6059
|
+
return bridgeCreateSoundCueRequestSchema.parse({
|
|
6060
|
+
assetName,
|
|
6061
|
+
connections: options.connections,
|
|
6062
|
+
nodes,
|
|
6063
|
+
packagePath,
|
|
6064
|
+
requestId,
|
|
6065
|
+
rootNodeId,
|
|
6066
|
+
type: BRIDGE_CREATE_SOUND_CUE_REQUEST_TYPE,
|
|
6067
|
+
version: 2
|
|
6068
|
+
});
|
|
6069
|
+
}
|
|
6070
|
+
function createBridgeCreateMetasoundRequest(assetName, packagePath, options = {}, requestId = randomUUID()) {
|
|
6071
|
+
return bridgeCreateMetasoundRequestSchema.parse({
|
|
6072
|
+
assetName,
|
|
6073
|
+
outputFormat: options.outputFormat,
|
|
6074
|
+
packagePath,
|
|
6075
|
+
requestId,
|
|
6076
|
+
type: BRIDGE_CREATE_METASOUND_REQUEST_TYPE,
|
|
6077
|
+
version: 2
|
|
6078
|
+
});
|
|
6079
|
+
}
|
|
6080
|
+
function createBridgeSetMetasoundGraphRequest(assetPath, options = {}, requestId = randomUUID()) {
|
|
6081
|
+
return bridgeSetMetasoundGraphRequestSchema.parse({
|
|
6082
|
+
assetPath,
|
|
6083
|
+
connections: options.connections,
|
|
6084
|
+
inputs: options.inputs,
|
|
6085
|
+
nodes: options.nodes,
|
|
6086
|
+
outputs: options.outputs,
|
|
6087
|
+
requestId,
|
|
6088
|
+
type: BRIDGE_SET_METASOUND_GRAPH_REQUEST_TYPE,
|
|
6089
|
+
version: 2
|
|
6090
|
+
});
|
|
6091
|
+
}
|
|
4572
6092
|
//#endregion
|
|
4573
6093
|
//#region src/bridgeSocketClient.ts
|
|
4574
6094
|
var BridgeSocketError = class extends Error {
|
|
@@ -5177,6 +6697,99 @@ function exchangeBridgeMessage(frame, options) {
|
|
|
5177
6697
|
});
|
|
5178
6698
|
});
|
|
5179
6699
|
}
|
|
6700
|
+
async function sendBridgeGetAssetPropertyRequest(request, options) {
|
|
6701
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeGetAssetPropertyResponseSchema, request.requestId);
|
|
6702
|
+
}
|
|
6703
|
+
async function sendBridgeSetAssetPropertyRequest(request, options) {
|
|
6704
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetAssetPropertyResponseSchema, request.requestId);
|
|
6705
|
+
}
|
|
6706
|
+
async function sendBridgeArrayPropertyOpRequest(request, options) {
|
|
6707
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeArrayPropertyOpResponseSchema, request.requestId);
|
|
6708
|
+
}
|
|
6709
|
+
async function sendBridgeCreateStructRequest(request, options) {
|
|
6710
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateStructResponseSchema, request.requestId);
|
|
6711
|
+
}
|
|
6712
|
+
async function sendBridgeCreateEnumRequest(request, options) {
|
|
6713
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateEnumResponseSchema, request.requestId);
|
|
6714
|
+
}
|
|
6715
|
+
async function sendBridgeCreateBlueprintRequest(request, options) {
|
|
6716
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateBlueprintResponseSchema, request.requestId);
|
|
6717
|
+
}
|
|
6718
|
+
async function sendBridgeAddBpVariableRequest(request, options) {
|
|
6719
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddBpVariableResponseSchema, request.requestId);
|
|
6720
|
+
}
|
|
6721
|
+
async function sendBridgeAddBpFunctionRequest(request, options) {
|
|
6722
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddBpFunctionResponseSchema, request.requestId);
|
|
6723
|
+
}
|
|
6724
|
+
async function sendBridgeAddBpEventRequest(request, options) {
|
|
6725
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddBpEventResponseSchema, request.requestId);
|
|
6726
|
+
}
|
|
6727
|
+
async function sendBridgeAddBpComponentRequest(request, options) {
|
|
6728
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddBpComponentResponseSchema, request.requestId);
|
|
6729
|
+
}
|
|
6730
|
+
async function sendBridgeAddBpInterfaceRequest(request, options) {
|
|
6731
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddBpInterfaceResponseSchema, request.requestId);
|
|
6732
|
+
}
|
|
6733
|
+
async function sendBridgeSetBpDefaultRequest(request, options) {
|
|
6734
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetBpDefaultResponseSchema, request.requestId);
|
|
6735
|
+
}
|
|
6736
|
+
async function sendBridgeBatchEditRequest(request, options) {
|
|
6737
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeBatchEditResponseSchema, request.requestId);
|
|
6738
|
+
}
|
|
6739
|
+
async function sendBridgeImportAssetRequest(request, options) {
|
|
6740
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeImportAssetResponseSchema, request.requestId);
|
|
6741
|
+
}
|
|
6742
|
+
async function sendBridgeReimportAssetRequest(request, options) {
|
|
6743
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeReimportAssetResponseSchema, request.requestId);
|
|
6744
|
+
}
|
|
6745
|
+
async function sendBridgeSetImportSettingsRequest(request, options) {
|
|
6746
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetImportSettingsResponseSchema, request.requestId);
|
|
6747
|
+
}
|
|
6748
|
+
async function sendBridgeGetImportJobStatusRequest(request, options) {
|
|
6749
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeGetImportJobStatusResponseSchema, request.requestId);
|
|
6750
|
+
}
|
|
6751
|
+
async function sendBridgeCreateBlackboardRequest(request, options) {
|
|
6752
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateBlackboardResponseSchema, request.requestId);
|
|
6753
|
+
}
|
|
6754
|
+
async function sendBridgeSetBlackboardKeysRequest(request, options) {
|
|
6755
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetBlackboardKeysResponseSchema, request.requestId);
|
|
6756
|
+
}
|
|
6757
|
+
async function sendBridgeCreateEqsQueryRequest(request, options) {
|
|
6758
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateEqsQueryResponseSchema, request.requestId);
|
|
6759
|
+
}
|
|
6760
|
+
async function sendBridgeCreateStateTreeRequest(request, options) {
|
|
6761
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateStateTreeResponseSchema, request.requestId);
|
|
6762
|
+
}
|
|
6763
|
+
async function sendBridgeAddStateTreeStateRequest(request, options) {
|
|
6764
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddStateTreeStateResponseSchema, request.requestId);
|
|
6765
|
+
}
|
|
6766
|
+
async function sendBridgeCreateLevelSequenceRequest(request, options) {
|
|
6767
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateLevelSequenceResponseSchema, request.requestId);
|
|
6768
|
+
}
|
|
6769
|
+
async function sendBridgeAddSequenceBindingRequest(request, options) {
|
|
6770
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddSequenceBindingResponseSchema, request.requestId);
|
|
6771
|
+
}
|
|
6772
|
+
async function sendBridgeAddSequenceTrackRequest(request, options) {
|
|
6773
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddSequenceTrackResponseSchema, request.requestId);
|
|
6774
|
+
}
|
|
6775
|
+
async function sendBridgeAddSequenceKeysRequest(request, options) {
|
|
6776
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddSequenceKeysResponseSchema, request.requestId);
|
|
6777
|
+
}
|
|
6778
|
+
async function sendBridgeAddFoliageTypeRequest(request, options) {
|
|
6779
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeAddFoliageTypeResponseSchema, request.requestId);
|
|
6780
|
+
}
|
|
6781
|
+
async function sendBridgePaintFoliageRequest(request, options) {
|
|
6782
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgePaintFoliageResponseSchema, request.requestId);
|
|
6783
|
+
}
|
|
6784
|
+
async function sendBridgeCreateSoundCueRequest(request, options) {
|
|
6785
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateSoundCueResponseSchema, request.requestId);
|
|
6786
|
+
}
|
|
6787
|
+
async function sendBridgeCreateMetasoundRequest(request, options) {
|
|
6788
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeCreateMetasoundResponseSchema, request.requestId);
|
|
6789
|
+
}
|
|
6790
|
+
async function sendBridgeSetMetasoundGraphRequest(request, options) {
|
|
6791
|
+
return parseBridgeResponse(await exchangeBridgeMessage(encodeBridgeFrame(request), options), bridgeSetMetasoundGraphResponseSchema, request.requestId);
|
|
6792
|
+
}
|
|
5180
6793
|
//#endregion
|
|
5181
6794
|
//#region src/enginePing.ts
|
|
5182
6795
|
async function pingRegistryEntry$1(entry, options) {
|
|
@@ -7162,6 +8775,7 @@ const WAIT_FOR_JOB_KINDS = [
|
|
|
7162
8775
|
"build",
|
|
7163
8776
|
"compile",
|
|
7164
8777
|
"create_class",
|
|
8778
|
+
"import",
|
|
7165
8779
|
"pie",
|
|
7166
8780
|
"source_control",
|
|
7167
8781
|
"test_run"
|
|
@@ -7171,6 +8785,7 @@ const WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS = {
|
|
|
7171
8785
|
build: WAIT_FOR_JOB_MAX_TIMEOUT_MS,
|
|
7172
8786
|
compile: 12e4,
|
|
7173
8787
|
create_class: 6e4,
|
|
8788
|
+
import: 3e5,
|
|
7174
8789
|
pie: 3e4,
|
|
7175
8790
|
source_control: 6e4,
|
|
7176
8791
|
test_run: 3e5
|
|
@@ -7188,6 +8803,10 @@ const WAIT_FOR_JOB_POLL_CADENCE_MS = {
|
|
|
7188
8803
|
capMs: 2e3,
|
|
7189
8804
|
initialMs: 250
|
|
7190
8805
|
},
|
|
8806
|
+
import: {
|
|
8807
|
+
capMs: 5e3,
|
|
8808
|
+
initialMs: 1e3
|
|
8809
|
+
},
|
|
7191
8810
|
pie: {
|
|
7192
8811
|
capMs: 2e3,
|
|
7193
8812
|
initialMs: 250
|
|
@@ -7300,10 +8919,10 @@ const getTestRunStatusInputSchema = {
|
|
|
7300
8919
|
testRunId: z.string().trim().min(1).describe("The testRunId returned by run_automation_tests for the run to poll.")
|
|
7301
8920
|
};
|
|
7302
8921
|
const waitForJobInputSchema = {
|
|
7303
|
-
jobId: z.string().trim().min(1).max(512).describe("Job identifier to wait on: compileJobId (compile), createClassJobId (create_class), testRunId (test_run), or pieSessionId (pie)."),
|
|
8922
|
+
jobId: z.string().trim().min(1).max(512).describe("Job identifier to wait on: compileJobId (compile), createClassJobId (create_class), importJobId (import), testRunId (test_run), or pieSessionId (pie)."),
|
|
7304
8923
|
kind: z.enum(WAIT_FOR_JOB_KINDS).describe("Which async job the id belongs to. Required — job ids are bare GUIDs and carry no type tag, so the kind cannot be inferred."),
|
|
7305
8924
|
projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor owns the job."),
|
|
7306
|
-
timeoutMs: z.number().int().min(1).optional().describe(`Wall-clock budget for the wait, clamped to ${String(WAIT_FOR_JOB_MAX_TIMEOUT_MS)}ms. Defaults per kind: compile ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.compile)}ms, create_class ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.create_class)}ms, pie ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.pie)}ms, source_control ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.source_control)}ms, test_run ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.test_run)}ms.`)
|
|
8925
|
+
timeoutMs: z.number().int().min(1).optional().describe(`Wall-clock budget for the wait, clamped to ${String(WAIT_FOR_JOB_MAX_TIMEOUT_MS)}ms. Defaults per kind: compile ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.compile)}ms, create_class ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.create_class)}ms, import ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.import)}ms, pie ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.pie)}ms, source_control ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.source_control)}ms, test_run ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.test_run)}ms.`)
|
|
7307
8926
|
};
|
|
7308
8927
|
const getEditorStateInputSchema = { projectId: projectIdSchema.describe("Canonical Unreal ProjectID whose registered editor should report its state.") };
|
|
7309
8928
|
const saveDirtyPackagesInputSchema = {
|
|
@@ -8502,7 +10121,7 @@ function registerMcpTools(server, dependencies) {
|
|
|
8502
10121
|
}, dependencies));
|
|
8503
10122
|
});
|
|
8504
10123
|
server.registerTool("wait_for_job", {
|
|
8505
|
-
description: `Block server-side until an async job reaches a terminal state, then return the payload its get_*_status tool would have returned under 'status'. Use instead of a poll loop after trigger_live_compile, trigger_hot_reload (kind 'compile'), create_cpp_class ('create_class'), run_automation_tests ('test_run'), or start_pie ('pie'). kind is required — job ids carry no type tag. outcome is 'completed', 'timed_out' (the last observed status is still returned; call again or poll), or 'unknown_job' (unknown/expired/cancelled id, returned immediately). timeoutMs defaults per kind (compile ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.compile)}ms, create_class ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.create_class)}ms, pie ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.pie)}ms, test_run ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.test_run)}ms) and is clamped to ${String(WAIT_FOR_JOB_MAX_TIMEOUT_MS)}ms, so a long automation run may need more than one call. For kind 'test_run' the returned status.results is the first page only — page the rest with get_test_run_status and nextCursor. For kind 'pie' only 'starting' keeps waiting; 'running', 'stopped' and 'none' are all terminal.`,
|
|
10124
|
+
description: `Block server-side until an async job reaches a terminal state, then return the payload its get_*_status tool would have returned under 'status'. Use instead of a poll loop after trigger_live_compile, trigger_hot_reload (kind 'compile'), create_cpp_class ('create_class'), import_asset or reimport_asset ('import'), run_automation_tests ('test_run'), or start_pie ('pie'). kind is required — job ids carry no type tag. outcome is 'completed', 'timed_out' (the last observed status is still returned; call again or poll), or 'unknown_job' (unknown/expired/cancelled id, returned immediately). timeoutMs defaults per kind (compile ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.compile)}ms, create_class ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.create_class)}ms, pie ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.pie)}ms, test_run ${String(WAIT_FOR_JOB_DEFAULT_TIMEOUT_MS.test_run)}ms) and is clamped to ${String(WAIT_FOR_JOB_MAX_TIMEOUT_MS)}ms, so a long automation run may need more than one call. For kind 'test_run' the returned status.results is the first page only — page the rest with get_test_run_status and nextCursor. For kind 'pie' only 'starting' keeps waiting; 'running', 'stopped' and 'none' are all terminal.`,
|
|
8506
10125
|
inputSchema: waitForJobInputSchema,
|
|
8507
10126
|
title: "Wait For Job"
|
|
8508
10127
|
}, async ({ jobId, kind, projectId, timeoutMs }) => {
|
|
@@ -9585,6 +11204,394 @@ function registerMcpTools(server, dependencies) {
|
|
|
9585
11204
|
regionId
|
|
9586
11205
|
}, dependencies));
|
|
9587
11206
|
});
|
|
11207
|
+
server.registerTool("get_asset_property", {
|
|
11208
|
+
description: "Read any reflected property on a content asset — material settings, mesh build settings, data asset fields, a Blueprint's class defaults — without loading it in an editor window. Returns the value as ExportText plus the resolved UE type, so an enum can be told apart from the integer it exports as. propertyPath walks structs with dots and arrays with subscripts ('BuildSettings.bRecomputeNormals', 'Modifiers[0].Weight'). Address a Blueprint CDO through its generated class path.",
|
|
11209
|
+
inputSchema: getAssetPropertyInputSchema,
|
|
11210
|
+
title: "Get Asset Property"
|
|
11211
|
+
}, async ({ assetPath, projectId, propertyPath }) => {
|
|
11212
|
+
return toToolSuccess(await getAssetProperty({
|
|
11213
|
+
assetPath,
|
|
11214
|
+
projectId,
|
|
11215
|
+
propertyPath
|
|
11216
|
+
}, dependencies));
|
|
11217
|
+
});
|
|
11218
|
+
server.registerTool("set_asset_property", {
|
|
11219
|
+
description: "Write reflected properties on a content asset, in one transaction and one undo step. Values are ExportText, exactly as get_asset_property returns them. The asset is marked dirty but not saved, so a run of edits is followed by a single save_dirty_packages. A transient, deprecated or EditConst property is refused by name rather than written and silently discarded. For a Blueprint's class defaults use set_bp_default, which routes through the same walker but also tells the Blueprint it changed.",
|
|
11220
|
+
inputSchema: setAssetPropertyInputSchema,
|
|
11221
|
+
title: "Set Asset Property"
|
|
11222
|
+
}, async ({ assetPath, projectId, properties }) => {
|
|
11223
|
+
return toToolSuccess(await setAssetProperty({
|
|
11224
|
+
assetPath,
|
|
11225
|
+
projectId,
|
|
11226
|
+
properties
|
|
11227
|
+
}, dependencies));
|
|
11228
|
+
});
|
|
11229
|
+
server.registerTool("array_property_op", {
|
|
11230
|
+
description: "Add, insert, remove or clear elements of an array property on an asset. Separate from set_asset_property because an array mutation needs an index and an operation rather than a whole-array value — writing a full array literal through ExportText loses element identity and is what makes generated content drift. Returns the array's length after the change; the elements themselves are read back with get_asset_property.",
|
|
11231
|
+
inputSchema: arrayPropertyOpInputSchema,
|
|
11232
|
+
title: "Array Property Op"
|
|
11233
|
+
}, async ({ assetPath, index, operation, projectId, propertyPath, value }) => {
|
|
11234
|
+
return toToolSuccess(await arrayPropertyOp({
|
|
11235
|
+
assetPath,
|
|
11236
|
+
index,
|
|
11237
|
+
operation,
|
|
11238
|
+
projectId,
|
|
11239
|
+
propertyPath,
|
|
11240
|
+
value
|
|
11241
|
+
}, dependencies));
|
|
11242
|
+
});
|
|
11243
|
+
server.registerTool("create_struct", {
|
|
11244
|
+
description: "Create a user-defined struct asset with typed fields. This is the first step of any data-driven workflow: create_data_table needs a row struct, and without this one it has to already exist. Field types use the shared type spec — { kind: 'float' }, { kind: 'object', subtype: '/Script/Engine.StaticMesh' }, { container: 'array', kind: 'struct', subtype: '/Game/Types/S_Item.S_Item' } — the same grammar add_bp_variable takes. Adding fields to a struct already in use recompiles its dependents, which are reported back.",
|
|
11245
|
+
inputSchema: createStructInputSchema,
|
|
11246
|
+
title: "Create Struct"
|
|
11247
|
+
}, async ({ assetName, description, fields, packagePath, projectId }) => {
|
|
11248
|
+
return toToolSuccess(await createStruct({
|
|
11249
|
+
assetName,
|
|
11250
|
+
description,
|
|
11251
|
+
fields,
|
|
11252
|
+
packagePath,
|
|
11253
|
+
projectId
|
|
11254
|
+
}, dependencies));
|
|
11255
|
+
});
|
|
11256
|
+
server.registerTool("create_enum", {
|
|
11257
|
+
description: "Create a user-defined enum asset. Each entry carries both the authored name the compiler sees and the display name the editor shows in a dropdown, so a generated enum reads like a hand-authored one. Use the resulting asset path as the subtype of an enum type spec in create_struct or add_bp_variable.",
|
|
11258
|
+
inputSchema: createEnumInputSchema,
|
|
11259
|
+
title: "Create Enum"
|
|
11260
|
+
}, async ({ assetName, description, entries, packagePath, projectId }) => {
|
|
11261
|
+
return toToolSuccess(await createEnum({
|
|
11262
|
+
assetName,
|
|
11263
|
+
description,
|
|
11264
|
+
entries,
|
|
11265
|
+
packagePath,
|
|
11266
|
+
projectId
|
|
11267
|
+
}, dependencies));
|
|
11268
|
+
});
|
|
11269
|
+
server.registerTool("create_blueprint", {
|
|
11270
|
+
description: "Create a Blueprint class from a parent class. Returns both the asset path and the generated class path ('/Game/BP/BP_Foo.BP_Foo_C') — the generated class is what spawn_actor and every other class reference takes, and passing the asset path there is the usual mistake. The Blueprint arrives empty: add members with add_bp_variable / add_bp_function / add_bp_event / add_bp_component, then compile it with compile_blueprint.",
|
|
11271
|
+
inputSchema: createBlueprintInputSchema,
|
|
11272
|
+
title: "Create Blueprint"
|
|
11273
|
+
}, async ({ assetName, blueprintKind, packagePath, parentClass, projectId }) => {
|
|
11274
|
+
return toToolSuccess(await createBlueprint({
|
|
11275
|
+
assetName,
|
|
11276
|
+
blueprintKind,
|
|
11277
|
+
packagePath,
|
|
11278
|
+
parentClass,
|
|
11279
|
+
projectId
|
|
11280
|
+
}, dependencies));
|
|
11281
|
+
});
|
|
11282
|
+
server.registerTool("add_bp_variable", {
|
|
11283
|
+
description: "Add member variables to a Blueprint. Types use the shared type spec, covering primitives, structs, object and class references, and array / set / map containers. instanceEditable exposes the variable in the details panel and exposeOnSpawn adds it to the spawn node; both default off. Each entry succeeds or fails on its own, so one bad type does not lose the rest. Recompile with compile_blueprint when the batch is done.",
|
|
11284
|
+
inputSchema: addBpVariableInputSchema,
|
|
11285
|
+
title: "Add Blueprint Variable"
|
|
11286
|
+
}, async ({ assetPath, projectId, variables }) => {
|
|
11287
|
+
return toToolSuccess(await addBpVariable({
|
|
11288
|
+
assetPath,
|
|
11289
|
+
projectId,
|
|
11290
|
+
variables
|
|
11291
|
+
}, dependencies));
|
|
11292
|
+
});
|
|
11293
|
+
server.registerTool("add_bp_function", {
|
|
11294
|
+
description: "Add function graphs to a Blueprint with typed inputs and outputs. This creates the graph and its entry and result nodes only — the body is authored with add_graph_node and connect_pins against the returned graph name. A pure function has no exec pins, which is decided here because changing it later rebuilds the entry node.",
|
|
11295
|
+
inputSchema: addBpFunctionInputSchema,
|
|
11296
|
+
title: "Add Blueprint Function"
|
|
11297
|
+
}, async ({ assetPath, functions, projectId }) => {
|
|
11298
|
+
return toToolSuccess(await addBpFunction({
|
|
11299
|
+
assetPath,
|
|
11300
|
+
functions,
|
|
11301
|
+
projectId
|
|
11302
|
+
}, dependencies));
|
|
11303
|
+
});
|
|
11304
|
+
server.registerTool("add_bp_event", {
|
|
11305
|
+
description: "Place event nodes in a Blueprint graph. eventKind 'override' places a node for a function the parent class already declares — BeginPlay, Tick, or any BlueprintImplementableEvent — and takes its signature from the parent, so inputs must be empty. 'custom' adds a custom event with the inputs given. Returns each node's id for wiring with connect_pins.",
|
|
11306
|
+
inputSchema: addBpEventInputSchema,
|
|
11307
|
+
title: "Add Blueprint Event"
|
|
11308
|
+
}, async ({ assetPath, events, graphName, projectId }) => {
|
|
11309
|
+
return toToolSuccess(await addBpEvent({
|
|
11310
|
+
assetPath,
|
|
11311
|
+
events,
|
|
11312
|
+
graphName,
|
|
11313
|
+
projectId
|
|
11314
|
+
}, dependencies));
|
|
11315
|
+
});
|
|
11316
|
+
server.registerTool("add_bp_component", {
|
|
11317
|
+
description: "Add components to a Blueprint's construction script, optionally attached under an existing component by name so a real hierarchy can be built in one call. This is the Blueprint-asset equivalent of add_actor_component, which edits a placed actor instead. Components added here exist on every instance of the class.",
|
|
11318
|
+
inputSchema: addBpComponentInputSchema,
|
|
11319
|
+
title: "Add Blueprint Component"
|
|
11320
|
+
}, async ({ assetPath, components, projectId }) => {
|
|
11321
|
+
return toToolSuccess(await addBpComponent({
|
|
11322
|
+
assetPath,
|
|
11323
|
+
components,
|
|
11324
|
+
projectId
|
|
11325
|
+
}, dependencies));
|
|
11326
|
+
});
|
|
11327
|
+
server.registerTool("add_bp_interface", {
|
|
11328
|
+
description: "Implement Blueprint or native interfaces on a Blueprint. The interface brings its function graphs with it; their names are returned so the bodies can be filled in with the graph tools. Compile afterwards — an interface added but not implemented is a compile error, not a silent no-op.",
|
|
11329
|
+
inputSchema: addBpInterfaceInputSchema,
|
|
11330
|
+
title: "Add Blueprint Interface"
|
|
11331
|
+
}, async ({ assetPath, interfacePaths, projectId }) => {
|
|
11332
|
+
return toToolSuccess(await addBpInterface({
|
|
11333
|
+
assetPath,
|
|
11334
|
+
interfacePaths,
|
|
11335
|
+
projectId
|
|
11336
|
+
}, dependencies));
|
|
11337
|
+
});
|
|
11338
|
+
server.registerTool("set_bp_default", {
|
|
11339
|
+
description: "Write class defaults on a Blueprint — the values every new instance starts with. Takes the same property paths and ExportText values set_asset_property does, but addresses the Blueprint's class default object and marks the Blueprint structurally modified so the change survives a recompile.",
|
|
11340
|
+
inputSchema: setBpDefaultInputSchema,
|
|
11341
|
+
title: "Set Blueprint Default"
|
|
11342
|
+
}, async ({ assetPath, projectId, properties }) => {
|
|
11343
|
+
return toToolSuccess(await setBpDefault({
|
|
11344
|
+
assetPath,
|
|
11345
|
+
projectId,
|
|
11346
|
+
properties
|
|
11347
|
+
}, dependencies));
|
|
11348
|
+
});
|
|
11349
|
+
server.registerTool("batch_edit", {
|
|
11350
|
+
description: "Apply an ordered list of level edits — spawn, destroy, transform, property, attach, place, tag — inside a single transaction, so the whole arrangement is one entry in the editor's Undo History and one Ctrl+Z. If any op fails the transaction is cancelled and the level is left exactly as it was, with the failing op's index and error reported; nothing is half-applied. A spawn or place op can carry a handle, and later ops address that actor as 'handle:<name>' before the editor has assigned it a path. Prefer this over a run of individual level-edit calls whenever the edits are only meaningful together.",
|
|
11351
|
+
inputSchema: batchEditInputSchema,
|
|
11352
|
+
title: "Batch Edit"
|
|
11353
|
+
}, async ({ dryRun, ops, projectId, transactionTitle }) => {
|
|
11354
|
+
return toToolSuccess(await batchEdit({
|
|
11355
|
+
dryRun,
|
|
11356
|
+
ops,
|
|
11357
|
+
projectId,
|
|
11358
|
+
transactionTitle
|
|
11359
|
+
}, dependencies));
|
|
11360
|
+
});
|
|
11361
|
+
server.registerTool("import_asset", {
|
|
11362
|
+
description: "Import files from disk into the project — FBX meshes and animations, textures, audio — through Interchange where the engine version owns the format, or a configured UFactory where it does not. An import runs for minutes on a large file, so this only accepts the job: it returns state 'accepted' with an importJobId to poll with get_import_job_status (or wait_for_job with kind import). The final status lists every asset each file produced, which for a skeletal mesh is the mesh, its skeleton and its physics asset. Configure the import beforehand with set_import_settings rather than relying on the defaults.",
|
|
11363
|
+
inputSchema: importAssetInputSchema,
|
|
11364
|
+
title: "Import Asset"
|
|
11365
|
+
}, async ({ destinationPath, pipeline, presetName, projectId, replaceExisting, sourceFiles }) => {
|
|
11366
|
+
return toToolSuccess(await importAsset({
|
|
11367
|
+
destinationPath,
|
|
11368
|
+
pipeline,
|
|
11369
|
+
presetName,
|
|
11370
|
+
projectId,
|
|
11371
|
+
replaceExisting,
|
|
11372
|
+
sourceFiles
|
|
11373
|
+
}, dependencies));
|
|
11374
|
+
});
|
|
11375
|
+
server.registerTool("reimport_asset", {
|
|
11376
|
+
description: "Re-read assets from the source files they were imported from, keeping their existing references intact. Like import_asset this only accepts the job and returns an importJobId to poll. An asset with no import data recorded fails its own entry rather than the batch.",
|
|
11377
|
+
inputSchema: reimportAssetInputSchema,
|
|
11378
|
+
title: "Reimport Asset"
|
|
11379
|
+
}, async ({ assetPaths, projectId }) => {
|
|
11380
|
+
return toToolSuccess(await reimportAsset({
|
|
11381
|
+
assetPaths,
|
|
11382
|
+
projectId
|
|
11383
|
+
}, dependencies));
|
|
11384
|
+
});
|
|
11385
|
+
server.registerTool("set_import_settings", {
|
|
11386
|
+
description: "Store a named set of import options — mesh combining, skeleton reuse, texture compression and sRGB, LOD import — that import_asset then applies before running. This is what makes an import deterministic and dialog-free; without it the engine's defaults for the file type are used. Settings are reflected property names on the pipeline or factory, valued as ExportText.",
|
|
11387
|
+
inputSchema: setImportSettingsInputSchema,
|
|
11388
|
+
title: "Set Import Settings"
|
|
11389
|
+
}, async ({ presetName, projectId, settings }) => {
|
|
11390
|
+
return toToolSuccess(await setImportSettings({
|
|
11391
|
+
presetName,
|
|
11392
|
+
projectId,
|
|
11393
|
+
settings
|
|
11394
|
+
}, dependencies));
|
|
11395
|
+
});
|
|
11396
|
+
server.registerTool("get_import_job_status", {
|
|
11397
|
+
description: "Poll an import job started by import_asset or reimport_asset; returns state (running, succeeded, failed, unknown_job), which operation it was, and once finished the per-file results with the assets each one created plus successCount / failureCount and timing. Poll until the state leaves 'running' before referencing any imported asset.",
|
|
11398
|
+
inputSchema: getImportJobStatusInputSchema,
|
|
11399
|
+
title: "Get Import Job Status"
|
|
11400
|
+
}, async ({ importJobId, projectId }) => {
|
|
11401
|
+
return toToolSuccess(await getImportJobStatus({
|
|
11402
|
+
importJobId,
|
|
11403
|
+
projectId
|
|
11404
|
+
}, dependencies));
|
|
11405
|
+
});
|
|
11406
|
+
server.registerTool("create_blackboard", {
|
|
11407
|
+
description: "Create a Blackboard asset, optionally with its keys and a parent blackboard to inherit from. A Behavior Tree is useless without one, so this is the first step of any AI work. Inherited keys are reported separately from local ones — redeclaring an inherited key locally is the mistake this split exists to prevent.",
|
|
11408
|
+
inputSchema: createBlackboardInputSchema,
|
|
11409
|
+
title: "Create Blackboard"
|
|
11410
|
+
}, async ({ assetName, keys, packagePath, parentBlackboardPath, projectId }) => {
|
|
11411
|
+
return toToolSuccess(await createBlackboard({
|
|
11412
|
+
assetName,
|
|
11413
|
+
keys,
|
|
11414
|
+
packagePath,
|
|
11415
|
+
parentBlackboardPath,
|
|
11416
|
+
projectId
|
|
11417
|
+
}, dependencies));
|
|
11418
|
+
});
|
|
11419
|
+
server.registerTool("set_blackboard_keys", {
|
|
11420
|
+
description: "Add, update or replace the keys on a Blackboard asset. Object and class keys must name their base class and enum keys their enum asset: without it the key still appears in the editor and simply never matches anything at runtime, which is the failure mode this tool is built to avoid. mode 'merge' leaves unlisted keys alone; 'replace' makes the local key list exactly what was sent.",
|
|
11421
|
+
inputSchema: setBlackboardKeysInputSchema,
|
|
11422
|
+
title: "Set Blackboard Keys"
|
|
11423
|
+
}, async ({ assetPath, keys, mode, projectId }) => {
|
|
11424
|
+
return toToolSuccess(await setBlackboardKeys({
|
|
11425
|
+
assetPath,
|
|
11426
|
+
keys,
|
|
11427
|
+
mode,
|
|
11428
|
+
projectId
|
|
11429
|
+
}, dependencies));
|
|
11430
|
+
});
|
|
11431
|
+
server.registerTool("create_eqs_query", {
|
|
11432
|
+
description: "Create an Environment Query asset with a generator and its tests, then rebuild it from its graph so the saved query matches what was authored. Use it for AI spatial reasoning — cover selection, flanking, item search. Generator and test settings are reflected property names valued as ExportText. If the project has the Environment Query System switched off the query is still created and eqsEnabled comes back false, naming the setting to turn on rather than failing opaquely.",
|
|
11433
|
+
inputSchema: createEqsQueryInputSchema,
|
|
11434
|
+
title: "Create EQS Query"
|
|
11435
|
+
}, async ({ assetName, generator, packagePath, projectId, tests }) => {
|
|
11436
|
+
return toToolSuccess(await createEqsQuery({
|
|
11437
|
+
assetName,
|
|
11438
|
+
generator,
|
|
11439
|
+
packagePath,
|
|
11440
|
+
projectId,
|
|
11441
|
+
tests
|
|
11442
|
+
}, dependencies));
|
|
11443
|
+
});
|
|
11444
|
+
server.registerTool("create_state_tree", {
|
|
11445
|
+
description: "Create a StateTree asset bound to a schema — Epic's newer alternative to Behavior Trees, used for AI and for general state logic. The schema decides what the tree may reference and cannot be changed afterwards without invalidating every node, so it is set here. The response reports which engine versions this plugin build can author StateTrees for; an unsupported editor says so instead of failing inside the compiler.",
|
|
11446
|
+
inputSchema: createStateTreeInputSchema,
|
|
11447
|
+
title: "Create StateTree"
|
|
11448
|
+
}, async ({ assetName, packagePath, projectId, schema, schemaClass }) => {
|
|
11449
|
+
return toToolSuccess(await createStateTree({
|
|
11450
|
+
assetName,
|
|
11451
|
+
packagePath,
|
|
11452
|
+
projectId,
|
|
11453
|
+
schema,
|
|
11454
|
+
schemaClass
|
|
11455
|
+
}, dependencies));
|
|
11456
|
+
});
|
|
11457
|
+
server.registerTool("add_state_tree_state", {
|
|
11458
|
+
description: "Add states to a StateTree, each with its enter conditions, tasks and transitions, then compile the tree. Compilation is on by default because an uncompiled StateTree fails at runtime rather than in the editor; compiler messages come back verbatim. States are added in list order, so a state may name a parent that appeared earlier in the same call.",
|
|
11459
|
+
inputSchema: addStateTreeStateInputSchema,
|
|
11460
|
+
title: "Add StateTree State"
|
|
11461
|
+
}, async ({ assetPath, compile, projectId, states }) => {
|
|
11462
|
+
return toToolSuccess(await addStateTreeState({
|
|
11463
|
+
assetPath,
|
|
11464
|
+
compile,
|
|
11465
|
+
projectId,
|
|
11466
|
+
states
|
|
11467
|
+
}, dependencies));
|
|
11468
|
+
});
|
|
11469
|
+
server.registerTool("create_level_sequence", {
|
|
11470
|
+
description: "Create a Level Sequence for cinematics, scripted scenes and camera moves. Frame rates are exact rationals rather than decimals, because 30000/1001 is not 29.97 and the difference shows up as keys landing a frame off. The response reports both the display rate and the tick resolution the sequence stores time in — add_sequence_keys converts through them.",
|
|
11471
|
+
inputSchema: createLevelSequenceInputSchema,
|
|
11472
|
+
title: "Create Level Sequence"
|
|
11473
|
+
}, async ({ assetName, displayRate, durationInFrames, packagePath, projectId, tickResolution }) => {
|
|
11474
|
+
return toToolSuccess(await createLevelSequence({
|
|
11475
|
+
assetName,
|
|
11476
|
+
displayRate,
|
|
11477
|
+
durationInFrames,
|
|
11478
|
+
packagePath,
|
|
11479
|
+
projectId,
|
|
11480
|
+
tickResolution
|
|
11481
|
+
}, dependencies));
|
|
11482
|
+
});
|
|
11483
|
+
server.registerTool("add_sequence_binding", {
|
|
11484
|
+
description: "Bind objects into a Level Sequence. A 'possessable' animates an actor that already exists in the level and dies with it; a 'spawnable' carries its own template and creates its object while the sequence plays. The two behave differently enough that the kind is explicit rather than inferred. Returns each binding's id, which add_sequence_track and add_sequence_keys take.",
|
|
11485
|
+
inputSchema: addSequenceBindingInputSchema,
|
|
11486
|
+
title: "Add Sequence Binding"
|
|
11487
|
+
}, async ({ assetPath, bindings, projectId }) => {
|
|
11488
|
+
return toToolSuccess(await addSequenceBinding({
|
|
11489
|
+
assetPath,
|
|
11490
|
+
bindings,
|
|
11491
|
+
projectId
|
|
11492
|
+
}, dependencies));
|
|
11493
|
+
});
|
|
11494
|
+
server.registerTool("add_sequence_track", {
|
|
11495
|
+
description: "Add a track and its first section to a Level Sequence binding — transform, skeletal animation, audio, visibility, or a generic property track. A camera cut track belongs to the sequence itself and takes no bindingId; every other kind requires one. Returns the trackName add_sequence_keys uses to find it again.",
|
|
11496
|
+
inputSchema: addSequenceTrackInputSchema,
|
|
11497
|
+
title: "Add Sequence Track"
|
|
11498
|
+
}, async ({ assetPath, bindingId, projectId, propertyPath, sectionEndFrame, sectionStartFrame, trackKind }) => {
|
|
11499
|
+
return toToolSuccess(await addSequenceTrack({
|
|
11500
|
+
assetPath,
|
|
11501
|
+
bindingId,
|
|
11502
|
+
projectId,
|
|
11503
|
+
propertyPath,
|
|
11504
|
+
sectionEndFrame,
|
|
11505
|
+
sectionStartFrame,
|
|
11506
|
+
trackKind
|
|
11507
|
+
}, dependencies));
|
|
11508
|
+
});
|
|
11509
|
+
server.registerTool("add_sequence_keys", {
|
|
11510
|
+
description: "Add keyframes to a channel of a sequence track. timeUnit is required and says how to read each key's time — 'frames' at the sequence's display rate, or 'seconds' — because a Level Sequence stores time in tick resolution and a bare number lands at the wrong moment on any non-default frame rate. The response reports where each key actually landed in tick resolution, which is what proves the conversion. Interpolation and tangents are per key.",
|
|
11511
|
+
inputSchema: addSequenceKeysInputSchema,
|
|
11512
|
+
title: "Add Sequence Keys"
|
|
11513
|
+
}, async ({ assetPath, bindingId, channelName, keys, projectId, timeUnit, trackName }) => {
|
|
11514
|
+
return toToolSuccess(await addSequenceKeys({
|
|
11515
|
+
assetPath,
|
|
11516
|
+
bindingId,
|
|
11517
|
+
channelName,
|
|
11518
|
+
keys,
|
|
11519
|
+
projectId,
|
|
11520
|
+
timeUnit,
|
|
11521
|
+
trackName
|
|
11522
|
+
}, dependencies));
|
|
11523
|
+
});
|
|
11524
|
+
server.registerTool("add_foliage_type", {
|
|
11525
|
+
description: "Create a foliage type asset wrapping a static mesh, with its density, scale range, alignment to normal, ground slope limits and collision. This is the reusable settings asset; paint_foliage places instances of it. Settings left out keep the engine defaults rather than being zeroed.",
|
|
11526
|
+
inputSchema: addFoliageTypeInputSchema,
|
|
11527
|
+
title: "Add Foliage Type"
|
|
11528
|
+
}, async ({ assetName, packagePath, projectId, settings, staticMeshPath }) => {
|
|
11529
|
+
return toToolSuccess(await addFoliageType({
|
|
11530
|
+
assetName,
|
|
11531
|
+
packagePath,
|
|
11532
|
+
projectId,
|
|
11533
|
+
settings,
|
|
11534
|
+
staticMeshPath
|
|
11535
|
+
}, dependencies));
|
|
11536
|
+
});
|
|
11537
|
+
server.registerTool("paint_foliage", {
|
|
11538
|
+
description: "Add instanced foliage to the loaded level. 'explicit' mode places exactly the transforms given, which is what makes a layout reproducible. 'region' mode scatters at a density across a box and traces downward onto the landscape or meshes below, honouring the slope limits — that is what the editor's paint brush actually does, and it is what makes this usable without computing every transform. Reports how many placements were attempted, placed and skipped, plus the type's total instance count in the level.",
|
|
11539
|
+
inputSchema: paintFoliageInputSchema,
|
|
11540
|
+
title: "Paint Foliage"
|
|
11541
|
+
}, async ({ alignToNormal, density, foliageTypePath, mode, projectId, randomSeed, region, slopeMax, slopeMin, transforms }) => {
|
|
11542
|
+
return toToolSuccess(await paintFoliage({
|
|
11543
|
+
alignToNormal,
|
|
11544
|
+
density,
|
|
11545
|
+
foliageTypePath,
|
|
11546
|
+
mode,
|
|
11547
|
+
projectId,
|
|
11548
|
+
randomSeed,
|
|
11549
|
+
region,
|
|
11550
|
+
slopeMax,
|
|
11551
|
+
slopeMin,
|
|
11552
|
+
transforms
|
|
11553
|
+
}, dependencies));
|
|
11554
|
+
});
|
|
11555
|
+
server.registerTool("create_sound_cue", {
|
|
11556
|
+
description: "Create a Sound Cue and build its node graph in one call — wave players, random and mixer nodes, looping, modulation, attenuation and delay. Nodes carry caller-supplied ids so connections can be expressed before the editor has created anything. The editor graph is rebuilt from the node tree afterwards, so the cue opens with its nodes laid out rather than blank. A randomised footstep cue is three wave players under a random node.",
|
|
11557
|
+
inputSchema: createSoundCueInputSchema,
|
|
11558
|
+
title: "Create Sound Cue"
|
|
11559
|
+
}, async ({ assetName, connections, nodes, packagePath, projectId, rootNodeId }) => {
|
|
11560
|
+
return toToolSuccess(await createSoundCue({
|
|
11561
|
+
assetName,
|
|
11562
|
+
connections,
|
|
11563
|
+
nodes,
|
|
11564
|
+
packagePath,
|
|
11565
|
+
projectId,
|
|
11566
|
+
rootNodeId
|
|
11567
|
+
}, dependencies));
|
|
11568
|
+
});
|
|
11569
|
+
server.registerTool("create_metasound", {
|
|
11570
|
+
description: "Create a MetaSound Source asset through the engine builder subsystem, which is the supported programmatic surface and produces an asset that opens cleanly in the MetaSound editor. Populate it with set_metasound_graph.",
|
|
11571
|
+
inputSchema: createMetasoundInputSchema,
|
|
11572
|
+
title: "Create MetaSound"
|
|
11573
|
+
}, async ({ assetName, outputFormat, packagePath, projectId }) => {
|
|
11574
|
+
return toToolSuccess(await createMetasound({
|
|
11575
|
+
assetName,
|
|
11576
|
+
outputFormat,
|
|
11577
|
+
packagePath,
|
|
11578
|
+
projectId
|
|
11579
|
+
}, dependencies));
|
|
11580
|
+
});
|
|
11581
|
+
server.registerTool("set_metasound_graph", {
|
|
11582
|
+
description: "Declare a MetaSound Source's inputs and outputs, add nodes and wire them, through the builder subsystem rather than by editing the frontend document — the document layer changes between engine versions and produces assets that fail to open. A declared float input is what a component can drive at runtime with SetFloatParameter.",
|
|
11583
|
+
inputSchema: setMetasoundGraphInputSchema,
|
|
11584
|
+
title: "Set MetaSound Graph"
|
|
11585
|
+
}, async ({ assetPath, connections, inputs, nodes, outputs, projectId }) => {
|
|
11586
|
+
return toToolSuccess(await setMetasoundGraph({
|
|
11587
|
+
assetPath,
|
|
11588
|
+
connections,
|
|
11589
|
+
inputs,
|
|
11590
|
+
nodes,
|
|
11591
|
+
outputs,
|
|
11592
|
+
projectId
|
|
11593
|
+
}, dependencies));
|
|
11594
|
+
});
|
|
9588
11595
|
}
|
|
9589
11596
|
async function listActors(input, dependencies) {
|
|
9590
11597
|
const normalizedProjectId = projectIdSchema.parse(input.projectId);
|
|
@@ -11283,6 +13290,10 @@ async function pollJobStatus(kind, jobId, projectId, dependencies) {
|
|
|
11283
13290
|
createClassJobId: jobId,
|
|
11284
13291
|
projectId
|
|
11285
13292
|
}, dependencies);
|
|
13293
|
+
case "import": return await getImportJobStatus({
|
|
13294
|
+
importJobId: jobId,
|
|
13295
|
+
projectId
|
|
13296
|
+
}, dependencies);
|
|
11286
13297
|
case "pie": return await getPieStatus({
|
|
11287
13298
|
pieSessionId: jobId,
|
|
11288
13299
|
projectId
|
|
@@ -11302,6 +13313,7 @@ function classifyJobStatus(kind, status) {
|
|
|
11302
13313
|
case "build": return status.state === "running" ? "pending" : toTerminalOutcome(status.state === "unknown_job");
|
|
11303
13314
|
case "compile": return status.state === "compiling" ? "pending" : toTerminalOutcome(status.state === "unknown_job");
|
|
11304
13315
|
case "create_class": return status.state === "creating" ? "pending" : toTerminalOutcome(status.state === "unknown_job");
|
|
13316
|
+
case "import": return status.state === "running" ? "pending" : toTerminalOutcome(status.state === "unknown_job");
|
|
11305
13317
|
case "pie": return status.state === "starting" ? "pending" : "completed";
|
|
11306
13318
|
case "source_control": return status.state === "running" ? "pending" : toTerminalOutcome(status.state === "unknown_job");
|
|
11307
13319
|
case "test_run": return status.state === "running" ? "pending" : toTerminalOutcome(status.state === "unknown_run");
|
|
@@ -11832,6 +13844,342 @@ const buildHlodInputSchema = {
|
|
|
11832
13844
|
projectId: creativeProjectIdSchema
|
|
11833
13845
|
};
|
|
11834
13846
|
const buildOnlyInputSchema = { projectId: creativeProjectIdSchema };
|
|
13847
|
+
const getAssetPropertyInputSchema = {
|
|
13848
|
+
assetPath: bridgeGetAssetPropertyRequestSchema.shape.assetPath.describe("Package name or object path of the asset to read (e.g. /Game/Materials/M_Rock or /Game/BP/BP_Player.BP_Player_C for a Blueprint CDO)."),
|
|
13849
|
+
projectId: creativeProjectIdSchema,
|
|
13850
|
+
propertyPath: bridgeGetAssetPropertyRequestSchema.shape.propertyPath.describe("Reflected property path on the asset, dotted for nested structs and subscripted for arrays: 'TwoSided', 'BuildSettings.bRecomputeNormals', 'Modifiers[0].Weight'.")
|
|
13851
|
+
};
|
|
13852
|
+
const setAssetPropertyInputSchema = {
|
|
13853
|
+
assetPath: bridgeSetAssetPropertyRequestSchema.shape.assetPath.describe("Package name or object path of the asset to write."),
|
|
13854
|
+
projectId: creativeProjectIdSchema,
|
|
13855
|
+
properties: bridgeSetAssetPropertyRequestSchema.shape.properties.describe(`Up to ${String(32)} { propertyPath, value } writes applied in one transaction. value is ExportText — exactly the spelling get_asset_property returns.`)
|
|
13856
|
+
};
|
|
13857
|
+
const arrayPropertyOpInputSchema = {
|
|
13858
|
+
assetPath: bridgeArrayPropertyOpRequestFieldsSchema.shape.assetPath.describe("Package name or object path of the asset holding the array."),
|
|
13859
|
+
index: bridgeArrayPropertyOpRequestFieldsSchema.shape.index.describe("Element index. Required for 'insert' and 'remove'; ignored by 'add' and rejected on 'clear'."),
|
|
13860
|
+
operation: bridgeArrayPropertyOpRequestFieldsSchema.shape.operation.describe("What to do to the array: 'add' appends, 'insert' places at index, 'remove' drops the element at index, 'clear' empties it."),
|
|
13861
|
+
projectId: creativeProjectIdSchema,
|
|
13862
|
+
propertyPath: bridgeArrayPropertyOpRequestFieldsSchema.shape.propertyPath.describe("Reflected path of the array property itself, not of an element."),
|
|
13863
|
+
value: bridgeArrayPropertyOpRequestFieldsSchema.shape.value.describe("ExportText for the new element. Required for 'add' and 'insert'.")
|
|
13864
|
+
};
|
|
13865
|
+
const createStructInputSchema = {
|
|
13866
|
+
assetName: bridgeCreateStructRequestSchema.shape.assetName.describe("Name of the new struct asset, e.g. 'S_WeaponRow'."),
|
|
13867
|
+
description: bridgeCreateStructRequestSchema.shape.description.describe("Tooltip shown for the struct in the editor."),
|
|
13868
|
+
fields: bridgeCreateStructRequestSchema.shape.fields.describe(`Up to ${String(64)} { name, type, defaultValue? } fields. type uses the shared type spec: { kind, container?, subtype?, keyKind?, keySubtype? }.`),
|
|
13869
|
+
packagePath: bridgeCreateStructRequestSchema.shape.packagePath.describe("Content folder to create the struct in, e.g. /Game/Data."),
|
|
13870
|
+
projectId: creativeProjectIdSchema
|
|
13871
|
+
};
|
|
13872
|
+
const createEnumInputSchema = {
|
|
13873
|
+
assetName: bridgeCreateEnumRequestSchema.shape.assetName.describe("Name of the new enum asset, e.g. 'E_DamageType'."),
|
|
13874
|
+
description: bridgeCreateEnumRequestSchema.shape.description.describe("Tooltip shown for the enum in the editor."),
|
|
13875
|
+
entries: bridgeCreateEnumRequestSchema.shape.entries.describe(`Up to ${String(128)} { name, displayName?, description? } entries, in declaration order.`),
|
|
13876
|
+
packagePath: bridgeCreateEnumRequestSchema.shape.packagePath.describe("Content folder to create the enum in."),
|
|
13877
|
+
projectId: creativeProjectIdSchema
|
|
13878
|
+
};
|
|
13879
|
+
const createBlueprintInputSchema = {
|
|
13880
|
+
assetName: bridgeCreateBlueprintRequestSchema.shape.assetName.describe("Name of the new Blueprint, e.g. 'BP_Player'."),
|
|
13881
|
+
blueprintKind: bridgeCreateBlueprintRequestSchema.shape.blueprintKind.describe("What kind of Blueprint to create. Defaults to 'normal', which is what the Content Browser's Blueprint Class entry produces."),
|
|
13882
|
+
packagePath: bridgeCreateBlueprintRequestSchema.shape.packagePath.describe("Content folder to create the Blueprint in."),
|
|
13883
|
+
parentClass: bridgeCreateBlueprintRequestSchema.shape.parentClass.describe("Class to derive from: a native class path ('/Script/Engine.Actor') or another Blueprint's generated class ('/Game/BP/BP_Base.BP_Base_C')."),
|
|
13884
|
+
projectId: creativeProjectIdSchema
|
|
13885
|
+
};
|
|
13886
|
+
const addBpVariableInputSchema = {
|
|
13887
|
+
assetPath: bridgeAddBpVariableRequestSchema.shape.assetPath.describe("Object path of the Blueprint asset to add variables to."),
|
|
13888
|
+
projectId: creativeProjectIdSchema,
|
|
13889
|
+
variables: bridgeAddBpVariableRequestSchema.shape.variables.describe(`Up to ${String(32)} variables. Each carries { name, type, defaultValue?, category?, instanceEditable?, exposeOnSpawn?, replication?, tooltip? }.`)
|
|
13890
|
+
};
|
|
13891
|
+
const addBpFunctionInputSchema = {
|
|
13892
|
+
assetPath: bridgeAddBpFunctionRequestSchema.shape.assetPath.describe("Object path of the Blueprint asset to add functions to."),
|
|
13893
|
+
functions: bridgeAddBpFunctionRequestSchema.shape.functions.describe("Functions to create, each with { name, inputs, outputs, pure?, category? }. Creates the graph and its entry/result nodes only — fill the body with the graph tools."),
|
|
13894
|
+
projectId: creativeProjectIdSchema
|
|
13895
|
+
};
|
|
13896
|
+
const addBpEventInputSchema = {
|
|
13897
|
+
assetPath: bridgeAddBpEventRequestSchema.shape.assetPath.describe("Object path of the Blueprint asset to add event nodes to."),
|
|
13898
|
+
events: bridgeAddBpEventRequestSchema.shape.events.describe("Events to place. eventKind 'override' places a node for a function the parent already declares (BeginPlay, Tick); 'custom' adds a custom event with the inputs given."),
|
|
13899
|
+
graphName: bridgeAddBpEventRequestSchema.shape.graphName.describe("Graph to place the nodes in. Defaults to the Blueprint's EventGraph."),
|
|
13900
|
+
projectId: creativeProjectIdSchema
|
|
13901
|
+
};
|
|
13902
|
+
const addBpComponentInputSchema = {
|
|
13903
|
+
assetPath: bridgeAddBpComponentRequestSchema.shape.assetPath.describe("Object path of the Blueprint asset to add components to."),
|
|
13904
|
+
components: bridgeAddBpComponentRequestSchema.shape.components.describe("Components to add to the construction script, each with { componentClass, name, parentComponent?, transform? }. parentComponent names an existing component to attach under."),
|
|
13905
|
+
projectId: creativeProjectIdSchema
|
|
13906
|
+
};
|
|
13907
|
+
const addBpInterfaceInputSchema = {
|
|
13908
|
+
assetPath: bridgeAddBpInterfaceRequestSchema.shape.assetPath.describe("Object path of the Blueprint asset to implement the interfaces on."),
|
|
13909
|
+
interfacePaths: bridgeAddBpInterfaceRequestSchema.shape.interfacePaths.describe("Interfaces to implement: a Blueprint interface's generated class path ('/Game/I/BPI_Use.BPI_Use_C') or a native one ('/Script/Module.UMyInterface')."),
|
|
13910
|
+
projectId: creativeProjectIdSchema
|
|
13911
|
+
};
|
|
13912
|
+
const setBpDefaultInputSchema = {
|
|
13913
|
+
assetPath: bridgeSetBpDefaultRequestSchema.shape.assetPath.describe("Object path of the Blueprint asset whose class defaults to write."),
|
|
13914
|
+
projectId: creativeProjectIdSchema,
|
|
13915
|
+
properties: bridgeSetBpDefaultRequestSchema.shape.properties.describe("{ propertyPath, value } writes applied to the Blueprint class default object, using the same paths and ExportText values set_asset_property takes.")
|
|
13916
|
+
};
|
|
13917
|
+
const batchEditInputSchema = {
|
|
13918
|
+
dryRun: bridgeBatchEditRequestSchema.shape.dryRun.describe("Resolve every op and report what would change without opening a transaction or touching the level."),
|
|
13919
|
+
ops: bridgeBatchEditRequestSchema.shape.ops.describe(`Ordered ops (max ${String(64)}), each discriminated by op: spawn, destroy, transform, property, attach, place, tag. A spawn or place op may carry a handle; later ops reference it as 'handle:<name>' in actorRef, childRef or parentRef.`),
|
|
13920
|
+
projectId: creativeProjectIdSchema,
|
|
13921
|
+
transactionTitle: bridgeBatchEditRequestSchema.shape.transactionTitle.describe("What the editor's Undo History shows for the whole batch.")
|
|
13922
|
+
};
|
|
13923
|
+
const importAssetInputSchema = {
|
|
13924
|
+
destinationPath: bridgeImportAssetRequestSchema.shape.destinationPath.describe("Content folder the imported assets land in, e.g. /Game/Meshes."),
|
|
13925
|
+
pipeline: bridgeImportAssetRequestSchema.shape.pipeline.describe("Which import path to use. 'auto' picks per engine version and file type; 'interchange' and 'legacy_factory' force one."),
|
|
13926
|
+
presetName: bridgeImportAssetRequestSchema.shape.presetName.describe("Name of a preset previously stored with set_import_settings. Omitted uses the engine defaults for the file type."),
|
|
13927
|
+
projectId: creativeProjectIdSchema,
|
|
13928
|
+
replaceExisting: bridgeImportAssetRequestSchema.shape.replaceExisting.describe("Overwrite an asset already at the destination. Defaults false so an import cannot silently replace edited content."),
|
|
13929
|
+
sourceFiles: bridgeImportAssetRequestSchema.shape.sourceFiles.describe(`Absolute paths of the files to import (max ${String(16)}), readable by the editor process.`)
|
|
13930
|
+
};
|
|
13931
|
+
const reimportAssetInputSchema = {
|
|
13932
|
+
assetPaths: bridgeReimportAssetRequestSchema.shape.assetPaths.describe("Object paths of assets to re-read from the source files they were imported from."),
|
|
13933
|
+
projectId: creativeProjectIdSchema
|
|
13934
|
+
};
|
|
13935
|
+
const setImportSettingsInputSchema = {
|
|
13936
|
+
presetName: bridgeSetImportSettingsRequestSchema.shape.presetName.describe("Name to store the preset under, then passed to import_asset."),
|
|
13937
|
+
projectId: creativeProjectIdSchema,
|
|
13938
|
+
settings: bridgeSetImportSettingsRequestSchema.shape.settings.describe("Reflected property names on the import pipeline or factory, valued as ExportText: { 'bCombineMeshes': 'true', 'bImportTextures': 'false' }.")
|
|
13939
|
+
};
|
|
13940
|
+
const getImportJobStatusInputSchema = {
|
|
13941
|
+
importJobId: bridgeGetImportJobStatusRequestSchema.shape.importJobId.describe("importJobId returned by import_asset or reimport_asset."),
|
|
13942
|
+
projectId: creativeProjectIdSchema
|
|
13943
|
+
};
|
|
13944
|
+
const createBlackboardInputSchema = {
|
|
13945
|
+
assetName: bridgeCreateBlackboardRequestSchema.shape.assetName.describe("Name of the new blackboard, e.g. 'BB_Guard'."),
|
|
13946
|
+
keys: bridgeCreateBlackboardRequestSchema.shape.keys.describe("Keys to create with the asset. Each is { keyName, keyType, baseClass?, enumPath?, instanceSynced?, description? }."),
|
|
13947
|
+
packagePath: bridgeCreateBlackboardRequestSchema.shape.packagePath.describe("Content folder to create the blackboard in."),
|
|
13948
|
+
parentBlackboardPath: bridgeCreateBlackboardRequestSchema.shape.parentBlackboardPath.describe("Blackboard to inherit keys from. Inherited keys are reported separately and must not be redeclared locally."),
|
|
13949
|
+
projectId: creativeProjectIdSchema
|
|
13950
|
+
};
|
|
13951
|
+
const setBlackboardKeysInputSchema = {
|
|
13952
|
+
assetPath: bridgeSetBlackboardKeysRequestSchema.shape.assetPath.describe("Object path of the blackboard asset to edit."),
|
|
13953
|
+
keys: bridgeSetBlackboardKeysRequestSchema.shape.keys.describe("Keys to write. An 'object' or 'class' key must carry baseClass; an 'enum' key must carry enumPath, or it will never match anything at runtime."),
|
|
13954
|
+
mode: bridgeSetBlackboardKeysRequestSchema.shape.mode.describe("'merge' adds or updates the named keys and leaves the rest; 'replace' makes the local key list exactly what was sent, which is the only way to remove one."),
|
|
13955
|
+
projectId: creativeProjectIdSchema
|
|
13956
|
+
};
|
|
13957
|
+
const createEqsQueryInputSchema = {
|
|
13958
|
+
assetName: bridgeCreateEqsQueryRequestSchema.shape.assetName.describe("Name of the new query, e.g. 'EQS_FindCover'."),
|
|
13959
|
+
generator: bridgeCreateEqsQueryRequestSchema.shape.generator.describe("The query's generator: { generatorClass, params }. generatorClass is a path such as '/Script/AIModule.EnvQueryGenerator_SimpleGrid'."),
|
|
13960
|
+
packagePath: bridgeCreateEqsQueryRequestSchema.shape.packagePath.describe("Content folder to create the query in."),
|
|
13961
|
+
projectId: creativeProjectIdSchema,
|
|
13962
|
+
tests: bridgeCreateEqsQueryRequestSchema.shape.tests.describe("Tests applied to the generated items, each { testClass, purpose?, params? }. purpose is 'filter', 'score' or 'filter_and_score'.")
|
|
13963
|
+
};
|
|
13964
|
+
const createStateTreeInputSchema = {
|
|
13965
|
+
assetName: bridgeCreateStateTreeRequestFieldsSchema.shape.assetName.describe("Name of the new StateTree, e.g. 'ST_Guard'."),
|
|
13966
|
+
packagePath: bridgeCreateStateTreeRequestFieldsSchema.shape.packagePath.describe("Content folder to create the StateTree in."),
|
|
13967
|
+
projectId: creativeProjectIdSchema,
|
|
13968
|
+
schema: bridgeCreateStateTreeRequestFieldsSchema.shape.schema.describe("Which schema the tree is bound to. This cannot be changed later without invalidating every node, so pick the one matching where the tree will run."),
|
|
13969
|
+
schemaClass: bridgeCreateStateTreeRequestFieldsSchema.shape.schemaClass.describe("Class path of a custom schema. Required when schema is 'custom'.")
|
|
13970
|
+
};
|
|
13971
|
+
const addStateTreeStateInputSchema = {
|
|
13972
|
+
assetPath: bridgeAddStateTreeStateRequestSchema.shape.assetPath.describe("Object path of the StateTree asset to add states to."),
|
|
13973
|
+
compile: bridgeAddStateTreeStateRequestSchema.shape.compile.describe("Run the StateTree compiler after the edit. Defaults true — an uncompiled tree fails at runtime rather than in the editor."),
|
|
13974
|
+
projectId: creativeProjectIdSchema,
|
|
13975
|
+
states: bridgeAddStateTreeStateRequestSchema.shape.states.describe("States to add, each { name, parentStateName?, stateType?, enterConditions?, tasks?, transitions? }. Parents must already exist or appear earlier in this same list.")
|
|
13976
|
+
};
|
|
13977
|
+
const createLevelSequenceInputSchema = {
|
|
13978
|
+
assetName: bridgeCreateLevelSequenceRequestSchema.shape.assetName.describe("Name of the new sequence, e.g. 'LS_Intro'."),
|
|
13979
|
+
displayRate: bridgeCreateLevelSequenceRequestSchema.shape.displayRate.describe("Editor frame rate as an exact rational { numerator, denominator } — 30000/1001 for 29.97. Omitted uses the project default."),
|
|
13980
|
+
durationInFrames: bridgeCreateLevelSequenceRequestSchema.shape.durationInFrames.describe("Playback range length in display-rate frames."),
|
|
13981
|
+
packagePath: bridgeCreateLevelSequenceRequestSchema.shape.packagePath.describe("Content folder to create the sequence in."),
|
|
13982
|
+
projectId: creativeProjectIdSchema,
|
|
13983
|
+
tickResolution: bridgeCreateLevelSequenceRequestSchema.shape.tickResolution.describe("Internal storage resolution as an exact rational. Every key time is stored in this rate, not in display rate.")
|
|
13984
|
+
};
|
|
13985
|
+
const addSequenceBindingInputSchema = {
|
|
13986
|
+
assetPath: bridgeAddSequenceBindingRequestSchema.shape.assetPath.describe("Object path of the Level Sequence asset."),
|
|
13987
|
+
bindings: bridgeAddSequenceBindingRequestSchema.shape.bindings.describe("Bindings to add. A 'possessable' binds an actor already in the level and needs actorPath; a 'spawnable' carries its own template and needs actorPath or objectClassPath."),
|
|
13988
|
+
projectId: creativeProjectIdSchema
|
|
13989
|
+
};
|
|
13990
|
+
const addSequenceTrackInputSchema = {
|
|
13991
|
+
assetPath: bridgeAddSequenceTrackRequestFieldsSchema.shape.assetPath.describe("Object path of the Level Sequence asset."),
|
|
13992
|
+
bindingId: bridgeAddSequenceTrackRequestFieldsSchema.shape.bindingId.describe("bindingId from add_sequence_binding. Required for every track kind except 'camera_cut', which belongs to the sequence itself."),
|
|
13993
|
+
projectId: creativeProjectIdSchema,
|
|
13994
|
+
propertyPath: bridgeAddSequenceTrackRequestFieldsSchema.shape.propertyPath.describe("Property a 'property' track animates, e.g. 'Intensity' on a light component."),
|
|
13995
|
+
sectionEndFrame: bridgeAddSequenceTrackRequestFieldsSchema.shape.sectionEndFrame.describe("Section end in the sequence's tick resolution. Omitted fills the playback range."),
|
|
13996
|
+
sectionStartFrame: bridgeAddSequenceTrackRequestFieldsSchema.shape.sectionStartFrame.describe("Section start in the sequence's tick resolution."),
|
|
13997
|
+
trackKind: bridgeAddSequenceTrackRequestFieldsSchema.shape.trackKind.describe("What the track animates.")
|
|
13998
|
+
};
|
|
13999
|
+
const addSequenceKeysInputSchema = {
|
|
14000
|
+
assetPath: bridgeAddSequenceKeysRequestSchema.shape.assetPath.describe("Object path of the Level Sequence asset."),
|
|
14001
|
+
bindingId: bridgeAddSequenceKeysRequestSchema.shape.bindingId.describe("bindingId the track belongs to. Omitted looks the track up on the sequence itself."),
|
|
14002
|
+
channelName: bridgeAddSequenceKeysRequestSchema.shape.channelName.describe("Channel inside the track, e.g. 'Location.X' on a transform track."),
|
|
14003
|
+
keys: bridgeAddSequenceKeysRequestSchema.shape.keys.describe("Keys to add, each { time, value, interpolation?, arriveTangent?, leaveTangent? }. Tangents are only read for user and break interpolation."),
|
|
14004
|
+
projectId: creativeProjectIdSchema,
|
|
14005
|
+
timeUnit: bridgeAddSequenceKeysRequestSchema.shape.timeUnit.describe("How to read each key's time: 'frames' at the sequence display rate, or 'seconds'. Required — a bare number is ambiguous and lands at the wrong time on a non-default rate."),
|
|
14006
|
+
trackName: bridgeAddSequenceKeysRequestSchema.shape.trackName.describe("trackName returned by add_sequence_track.")
|
|
14007
|
+
};
|
|
14008
|
+
const addFoliageTypeInputSchema = {
|
|
14009
|
+
assetName: bridgeAddFoliageTypeRequestSchema.shape.assetName.describe("Name of the new foliage type, e.g. 'FT_Grass'."),
|
|
14010
|
+
packagePath: bridgeAddFoliageTypeRequestSchema.shape.packagePath.describe("Content folder to create the foliage type in."),
|
|
14011
|
+
projectId: creativeProjectIdSchema,
|
|
14012
|
+
settings: bridgeAddFoliageTypeRequestSchema.shape.settings.describe("Placement settings. Anything omitted keeps the engine default rather than being zeroed."),
|
|
14013
|
+
staticMeshPath: bridgeAddFoliageTypeRequestSchema.shape.staticMeshPath.describe("Object path of the static mesh this foliage type instances.")
|
|
14014
|
+
};
|
|
14015
|
+
const paintFoliageInputSchema = {
|
|
14016
|
+
alignToNormal: bridgePaintFoliageRequestFieldsSchema.shape.alignToNormal.describe("Rotate each instance to the surface it landed on. Omitted uses the foliage type setting."),
|
|
14017
|
+
density: bridgePaintFoliageRequestFieldsSchema.shape.density.describe("Instances per 1000x1000 unit square. Required in 'region' mode."),
|
|
14018
|
+
foliageTypePath: bridgePaintFoliageRequestFieldsSchema.shape.foliageTypePath.describe("Object path of the foliage type to place instances of."),
|
|
14019
|
+
mode: bridgePaintFoliageRequestFieldsSchema.shape.mode.describe("'explicit' places exactly the transforms given; 'region' scatters across a box and traces down onto whatever is under it."),
|
|
14020
|
+
projectId: creativeProjectIdSchema,
|
|
14021
|
+
randomSeed: bridgePaintFoliageRequestFieldsSchema.shape.randomSeed.describe("Seed for region scattering, so the same request reproduces the same layout."),
|
|
14022
|
+
region: bridgePaintFoliageRequestFieldsSchema.shape.region.describe("Box to scatter across, plus the vertical span each placement traces through. Required in 'region' mode."),
|
|
14023
|
+
slopeMax: bridgePaintFoliageRequestFieldsSchema.shape.slopeMax.describe("Steepest ground, in degrees from horizontal, an instance may land on."),
|
|
14024
|
+
slopeMin: bridgePaintFoliageRequestFieldsSchema.shape.slopeMin.describe("Shallowest ground an instance may land on."),
|
|
14025
|
+
transforms: bridgePaintFoliageRequestFieldsSchema.shape.transforms.describe(`Exact instance transforms (max ${String(128)}). Required in 'explicit' mode.`)
|
|
14026
|
+
};
|
|
14027
|
+
const createSoundCueInputSchema = {
|
|
14028
|
+
assetName: bridgeCreateSoundCueRequestFieldsSchema.shape.assetName.describe("Name of the new cue, e.g. 'SC_Footstep'."),
|
|
14029
|
+
connections: bridgeCreateSoundCueRequestFieldsSchema.shape.connections.describe("{ parentNodeId, childNodeId, inputIndex? } wires. Both ends must be nodes declared in this same request."),
|
|
14030
|
+
nodes: bridgeCreateSoundCueRequestFieldsSchema.shape.nodes.describe("Nodes to build the cue from, each { nodeId, nodeKind, wavePath?, params? }. nodeId is caller-supplied so connections can name nodes before the editor creates them."),
|
|
14031
|
+
packagePath: bridgeCreateSoundCueRequestFieldsSchema.shape.packagePath.describe("Content folder to create the cue in."),
|
|
14032
|
+
projectId: creativeProjectIdSchema,
|
|
14033
|
+
rootNodeId: bridgeCreateSoundCueRequestFieldsSchema.shape.rootNodeId.describe("The node wired into the cue's output. Must be one of the nodes in this request.")
|
|
14034
|
+
};
|
|
14035
|
+
const createMetasoundInputSchema = {
|
|
14036
|
+
assetName: bridgeCreateMetasoundRequestSchema.shape.assetName.describe("Name of the new MetaSound Source, e.g. 'MS_Engine'."),
|
|
14037
|
+
outputFormat: bridgeCreateMetasoundRequestSchema.shape.outputFormat.describe("Channel layout of the source output."),
|
|
14038
|
+
packagePath: bridgeCreateMetasoundRequestSchema.shape.packagePath.describe("Content folder to create the MetaSound in."),
|
|
14039
|
+
projectId: creativeProjectIdSchema
|
|
14040
|
+
};
|
|
14041
|
+
const setMetasoundGraphInputSchema = {
|
|
14042
|
+
assetPath: bridgeSetMetasoundGraphRequestSchema.shape.assetPath.describe("Object path of the MetaSound Source to edit."),
|
|
14043
|
+
connections: bridgeSetMetasoundGraphRequestSchema.shape.connections.describe("{ fromNodeId, fromOutput, toNodeId, toInput } wires between declared nodes."),
|
|
14044
|
+
inputs: bridgeSetMetasoundGraphRequestSchema.shape.inputs.describe("Graph inputs to declare, each { name, dataType, defaultValue? }. A declared 'Float' input is what a component can drive at runtime."),
|
|
14045
|
+
nodes: bridgeSetMetasoundGraphRequestSchema.shape.nodes.describe("Nodes to add, each { nodeId, nodeClassName, nodeNamespace? }. nodeId is caller-supplied and only used to express connections."),
|
|
14046
|
+
outputs: bridgeSetMetasoundGraphRequestSchema.shape.outputs.describe("Graph outputs to declare, each { name, dataType }."),
|
|
14047
|
+
projectId: creativeProjectIdSchema
|
|
14048
|
+
};
|
|
14049
|
+
async function getAssetProperty(input, dependencies) {
|
|
14050
|
+
return await exchangeCreativeRequest(createBridgeGetAssetPropertyRequest(input.assetPath, input.propertyPath), sendBridgeGetAssetPropertyRequest, BRIDGE_GET_ASSET_PROPERTY_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14051
|
+
}
|
|
14052
|
+
async function setAssetProperty(input, dependencies) {
|
|
14053
|
+
return await exchangeCreativeRequest(createBridgeSetAssetPropertyRequest(input.assetPath, input.properties), sendBridgeSetAssetPropertyRequest, BRIDGE_SET_ASSET_PROPERTY_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14054
|
+
}
|
|
14055
|
+
async function arrayPropertyOp(input, dependencies) {
|
|
14056
|
+
return await exchangeCreativeRequest(createBridgeArrayPropertyOpRequest(input.assetPath, input.propertyPath, input.operation, {
|
|
14057
|
+
index: input.index,
|
|
14058
|
+
value: input.value
|
|
14059
|
+
}), sendBridgeArrayPropertyOpRequest, BRIDGE_ARRAY_PROPERTY_OP_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14060
|
+
}
|
|
14061
|
+
async function createStruct(input, dependencies) {
|
|
14062
|
+
return await exchangeCreativeRequest(createBridgeCreateStructRequest(input.assetName, input.packagePath, {
|
|
14063
|
+
description: input.description,
|
|
14064
|
+
fields: input.fields
|
|
14065
|
+
}), sendBridgeCreateStructRequest, BRIDGE_CREATE_STRUCT_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14066
|
+
}
|
|
14067
|
+
async function createEnum(input, dependencies) {
|
|
14068
|
+
return await exchangeCreativeRequest(createBridgeCreateEnumRequest(input.assetName, input.packagePath, input.entries, { description: input.description }), sendBridgeCreateEnumRequest, BRIDGE_CREATE_ENUM_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14069
|
+
}
|
|
14070
|
+
async function createBlueprint(input, dependencies) {
|
|
14071
|
+
return await exchangeCreativeRequest(createBridgeCreateBlueprintRequest(input.assetName, input.packagePath, input.parentClass, { blueprintKind: input.blueprintKind }), sendBridgeCreateBlueprintRequest, BRIDGE_CREATE_BLUEPRINT_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14072
|
+
}
|
|
14073
|
+
async function addBpVariable(input, dependencies) {
|
|
14074
|
+
return await exchangeCreativeRequest(createBridgeAddBpVariableRequest(input.assetPath, input.variables), sendBridgeAddBpVariableRequest, BRIDGE_ADD_BP_VARIABLE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14075
|
+
}
|
|
14076
|
+
async function addBpFunction(input, dependencies) {
|
|
14077
|
+
return await exchangeCreativeRequest(createBridgeAddBpFunctionRequest(input.assetPath, input.functions), sendBridgeAddBpFunctionRequest, BRIDGE_ADD_BP_FUNCTION_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14078
|
+
}
|
|
14079
|
+
async function addBpEvent(input, dependencies) {
|
|
14080
|
+
return await exchangeCreativeRequest(createBridgeAddBpEventRequest(input.assetPath, input.events, { graphName: input.graphName }), sendBridgeAddBpEventRequest, BRIDGE_ADD_BP_EVENT_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14081
|
+
}
|
|
14082
|
+
async function addBpComponent(input, dependencies) {
|
|
14083
|
+
return await exchangeCreativeRequest(createBridgeAddBpComponentRequest(input.assetPath, input.components), sendBridgeAddBpComponentRequest, BRIDGE_ADD_BP_COMPONENT_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14084
|
+
}
|
|
14085
|
+
async function addBpInterface(input, dependencies) {
|
|
14086
|
+
return await exchangeCreativeRequest(createBridgeAddBpInterfaceRequest(input.assetPath, input.interfacePaths), sendBridgeAddBpInterfaceRequest, BRIDGE_ADD_BP_INTERFACE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14087
|
+
}
|
|
14088
|
+
async function setBpDefault(input, dependencies) {
|
|
14089
|
+
return await exchangeCreativeRequest(createBridgeSetBpDefaultRequest(input.assetPath, input.properties), sendBridgeSetBpDefaultRequest, BRIDGE_SET_BP_DEFAULT_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14090
|
+
}
|
|
14091
|
+
async function batchEdit(input, dependencies) {
|
|
14092
|
+
return await exchangeCreativeRequest(createBridgeBatchEditRequest(input.ops, {
|
|
14093
|
+
dryRun: input.dryRun,
|
|
14094
|
+
transactionTitle: input.transactionTitle
|
|
14095
|
+
}), sendBridgeBatchEditRequest, BRIDGE_BATCH_EDIT_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14096
|
+
}
|
|
14097
|
+
async function importAsset(input, dependencies) {
|
|
14098
|
+
return await exchangeCreativeRequest(createBridgeImportAssetRequest(input.sourceFiles, input.destinationPath, {
|
|
14099
|
+
pipeline: input.pipeline,
|
|
14100
|
+
presetName: input.presetName,
|
|
14101
|
+
replaceExisting: input.replaceExisting
|
|
14102
|
+
}), sendBridgeImportAssetRequest, BRIDGE_IMPORT_ASSET_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14103
|
+
}
|
|
14104
|
+
async function reimportAsset(input, dependencies) {
|
|
14105
|
+
return await exchangeCreativeRequest(createBridgeReimportAssetRequest(input.assetPaths), sendBridgeReimportAssetRequest, BRIDGE_REIMPORT_ASSET_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14106
|
+
}
|
|
14107
|
+
async function setImportSettings(input, dependencies) {
|
|
14108
|
+
return await exchangeCreativeRequest(createBridgeSetImportSettingsRequest(input.presetName, input.settings), sendBridgeSetImportSettingsRequest, BRIDGE_SET_IMPORT_SETTINGS_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14109
|
+
}
|
|
14110
|
+
async function getImportJobStatus(input, dependencies) {
|
|
14111
|
+
return await exchangeCreativeRequest(createBridgeGetImportJobStatusRequest(input.importJobId), sendBridgeGetImportJobStatusRequest, BRIDGE_GET_IMPORT_JOB_STATUS_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14112
|
+
}
|
|
14113
|
+
async function createBlackboard(input, dependencies) {
|
|
14114
|
+
return await exchangeCreativeRequest(createBridgeCreateBlackboardRequest(input.assetName, input.packagePath, {
|
|
14115
|
+
keys: input.keys,
|
|
14116
|
+
parentBlackboardPath: input.parentBlackboardPath
|
|
14117
|
+
}), sendBridgeCreateBlackboardRequest, BRIDGE_CREATE_BLACKBOARD_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14118
|
+
}
|
|
14119
|
+
async function setBlackboardKeys(input, dependencies) {
|
|
14120
|
+
return await exchangeCreativeRequest(createBridgeSetBlackboardKeysRequest(input.assetPath, input.keys, { mode: input.mode }), sendBridgeSetBlackboardKeysRequest, BRIDGE_SET_BLACKBOARD_KEYS_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14121
|
+
}
|
|
14122
|
+
async function createEqsQuery(input, dependencies) {
|
|
14123
|
+
return await exchangeCreativeRequest(createBridgeCreateEqsQueryRequest(input.assetName, input.packagePath, input.generator, { tests: input.tests }), sendBridgeCreateEqsQueryRequest, BRIDGE_CREATE_EQS_QUERY_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14124
|
+
}
|
|
14125
|
+
async function createStateTree(input, dependencies) {
|
|
14126
|
+
return await exchangeCreativeRequest(createBridgeCreateStateTreeRequest(input.assetName, input.packagePath, {
|
|
14127
|
+
schema: input.schema,
|
|
14128
|
+
schemaClass: input.schemaClass
|
|
14129
|
+
}), sendBridgeCreateStateTreeRequest, BRIDGE_CREATE_STATE_TREE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14130
|
+
}
|
|
14131
|
+
async function addStateTreeState(input, dependencies) {
|
|
14132
|
+
return await exchangeCreativeRequest(createBridgeAddStateTreeStateRequest(input.assetPath, input.states, { compile: input.compile }), sendBridgeAddStateTreeStateRequest, BRIDGE_ADD_STATE_TREE_STATE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14133
|
+
}
|
|
14134
|
+
async function createLevelSequence(input, dependencies) {
|
|
14135
|
+
return await exchangeCreativeRequest(createBridgeCreateLevelSequenceRequest(input.assetName, input.packagePath, {
|
|
14136
|
+
displayRate: input.displayRate,
|
|
14137
|
+
durationInFrames: input.durationInFrames,
|
|
14138
|
+
tickResolution: input.tickResolution
|
|
14139
|
+
}), sendBridgeCreateLevelSequenceRequest, BRIDGE_CREATE_LEVEL_SEQUENCE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14140
|
+
}
|
|
14141
|
+
async function addSequenceBinding(input, dependencies) {
|
|
14142
|
+
return await exchangeCreativeRequest(createBridgeAddSequenceBindingRequest(input.assetPath, input.bindings), sendBridgeAddSequenceBindingRequest, BRIDGE_ADD_SEQUENCE_BINDING_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14143
|
+
}
|
|
14144
|
+
async function addSequenceTrack(input, dependencies) {
|
|
14145
|
+
return await exchangeCreativeRequest(createBridgeAddSequenceTrackRequest(input.assetPath, input.trackKind, {
|
|
14146
|
+
bindingId: input.bindingId,
|
|
14147
|
+
propertyPath: input.propertyPath,
|
|
14148
|
+
sectionEndFrame: input.sectionEndFrame,
|
|
14149
|
+
sectionStartFrame: input.sectionStartFrame
|
|
14150
|
+
}), sendBridgeAddSequenceTrackRequest, BRIDGE_ADD_SEQUENCE_TRACK_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14151
|
+
}
|
|
14152
|
+
async function addSequenceKeys(input, dependencies) {
|
|
14153
|
+
return await exchangeCreativeRequest(createBridgeAddSequenceKeysRequest(input.assetPath, input.trackName, input.channelName, input.timeUnit, input.keys, { bindingId: input.bindingId }), sendBridgeAddSequenceKeysRequest, BRIDGE_ADD_SEQUENCE_KEYS_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14154
|
+
}
|
|
14155
|
+
async function addFoliageType(input, dependencies) {
|
|
14156
|
+
return await exchangeCreativeRequest(createBridgeAddFoliageTypeRequest(input.assetName, input.packagePath, input.staticMeshPath, { settings: input.settings }), sendBridgeAddFoliageTypeRequest, BRIDGE_ADD_FOLIAGE_TYPE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14157
|
+
}
|
|
14158
|
+
async function paintFoliage(input, dependencies) {
|
|
14159
|
+
return await exchangeCreativeRequest(createBridgePaintFoliageRequest(input.foliageTypePath, input.mode, {
|
|
14160
|
+
alignToNormal: input.alignToNormal,
|
|
14161
|
+
density: input.density,
|
|
14162
|
+
randomSeed: input.randomSeed,
|
|
14163
|
+
region: input.region,
|
|
14164
|
+
slopeMax: input.slopeMax,
|
|
14165
|
+
slopeMin: input.slopeMin,
|
|
14166
|
+
transforms: input.transforms
|
|
14167
|
+
}), sendBridgePaintFoliageRequest, BRIDGE_PAINT_FOLIAGE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14168
|
+
}
|
|
14169
|
+
async function createSoundCue(input, dependencies) {
|
|
14170
|
+
return await exchangeCreativeRequest(createBridgeCreateSoundCueRequest(input.assetName, input.packagePath, input.nodes, input.rootNodeId, { connections: input.connections }), sendBridgeCreateSoundCueRequest, BRIDGE_CREATE_SOUND_CUE_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14171
|
+
}
|
|
14172
|
+
async function createMetasound(input, dependencies) {
|
|
14173
|
+
return await exchangeCreativeRequest(createBridgeCreateMetasoundRequest(input.assetName, input.packagePath, { outputFormat: input.outputFormat }), sendBridgeCreateMetasoundRequest, BRIDGE_CREATE_METASOUND_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14174
|
+
}
|
|
14175
|
+
async function setMetasoundGraph(input, dependencies) {
|
|
14176
|
+
return await exchangeCreativeRequest(createBridgeSetMetasoundGraphRequest(input.assetPath, {
|
|
14177
|
+
connections: input.connections,
|
|
14178
|
+
inputs: input.inputs,
|
|
14179
|
+
nodes: input.nodes,
|
|
14180
|
+
outputs: input.outputs
|
|
14181
|
+
}), sendBridgeSetMetasoundGraphRequest, BRIDGE_SET_METASOUND_GRAPH_REQUEST_TYPE, projectIdSchema.parse(input.projectId), dependencies);
|
|
14182
|
+
}
|
|
11835
14183
|
//#endregion
|
|
11836
14184
|
//#region src/projectId.ts
|
|
11837
14185
|
const GENERAL_PROJECT_SETTINGS_SECTION = "[/Script/EngineSettings.GeneralProjectSettings]";
|
|
@@ -12049,7 +14397,7 @@ function isMissingFileError(error) {
|
|
|
12049
14397
|
//#endregion
|
|
12050
14398
|
//#region src/server.ts
|
|
12051
14399
|
const SERVER_NAME = "ue-mcp-server";
|
|
12052
|
-
const SERVER_VERSION = "1.
|
|
14400
|
+
const SERVER_VERSION = "1.4.0";
|
|
12053
14401
|
const logger = createModuleLogger("bootstrap");
|
|
12054
14402
|
const enginePingLogger = createModuleLogger("engine-ping");
|
|
12055
14403
|
const httpApiLogger = createModuleLogger("http-api");
|