ue-mcp 1.2.3 → 1.3.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 +4 -3
- package/dist/action-class.js +56 -3
- package/dist/action-class.js.map +1 -1
- package/dist/bridge-timeouts.d.ts +64 -0
- package/dist/bridge-timeouts.js +118 -0
- package/dist/bridge-timeouts.js.map +1 -0
- package/dist/bridge.js +10 -2
- package/dist/bridge.js.map +1 -1
- package/dist/editor-control.d.ts +72 -5
- package/dist/editor-control.js +164 -140
- package/dist/editor-control.js.map +1 -1
- package/dist/editor-target.d.ts +55 -1
- package/dist/editor-target.js +107 -10
- package/dist/editor-target.js.map +1 -1
- package/dist/engine-observer.d.ts +59 -5
- package/dist/engine-observer.js +249 -29
- package/dist/engine-observer.js.map +1 -1
- package/dist/engine-root.d.ts +91 -0
- package/dist/engine-root.js +448 -0
- package/dist/engine-root.js.map +1 -0
- package/dist/epic-enrich.js +16 -1
- package/dist/epic-enrich.js.map +1 -1
- package/dist/feedback-cli.js +4 -0
- package/dist/feedback-cli.js.map +1 -1
- package/dist/feedback-deferred.d.ts +9 -0
- package/dist/feedback-deferred.js +2 -0
- package/dist/feedback-deferred.js.map +1 -1
- package/dist/feedback-fallback.d.ts +99 -0
- package/dist/feedback-fallback.js +173 -0
- package/dist/feedback-fallback.js.map +1 -0
- package/dist/flow/write-methods.js +20 -0
- package/dist/flow/write-methods.js.map +1 -1
- package/dist/index.js +41 -2
- package/dist/index.js.map +1 -1
- package/dist/lean-context.js +8 -3
- package/dist/lean-context.js.map +1 -1
- package/dist/locking.js +11 -2
- package/dist/locking.js.map +1 -1
- package/dist/plugin/loader.d.ts +4 -0
- package/dist/plugin/loader.js +22 -8
- package/dist/plugin/loader.js.map +1 -1
- package/dist/plugin/manifest.d.ts +72 -52
- package/dist/plugin/manifest.js +118 -21
- package/dist/plugin/manifest.js.map +1 -1
- package/dist/plugin-cli.js +16 -3
- package/dist/plugin-cli.js.map +1 -1
- package/dist/project.d.ts +11 -0
- package/dist/project.js +23 -2
- package/dist/project.js.map +1 -1
- package/dist/python-gate.d.ts +95 -0
- package/dist/python-gate.js +175 -0
- package/dist/python-gate.js.map +1 -0
- package/dist/tool-counts.json +16 -16
- package/dist/tools/animation.js +288 -24
- package/dist/tools/animation.js.map +1 -1
- package/dist/tools/asset.js +79 -14
- package/dist/tools/asset.js.map +1 -1
- package/dist/tools/audio.js +59 -5
- package/dist/tools/audio.js.map +1 -1
- package/dist/tools/blueprint.js +29 -12
- package/dist/tools/blueprint.js.map +1 -1
- package/dist/tools/chooser.js +4 -1
- package/dist/tools/chooser.js.map +1 -1
- package/dist/tools/editor.js +81 -43
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/feedback.js +214 -48
- package/dist/tools/feedback.js.map +1 -1
- package/dist/tools/foliage.js +27 -1
- package/dist/tools/foliage.js.map +1 -1
- package/dist/tools/gameplay.js +38 -11
- package/dist/tools/gameplay.js.map +1 -1
- package/dist/tools/gas.js +17 -5
- package/dist/tools/gas.js.map +1 -1
- package/dist/tools/landscape.js +22 -7
- package/dist/tools/landscape.js.map +1 -1
- package/dist/tools/level.js +322 -51
- package/dist/tools/level.js.map +1 -1
- package/dist/tools/material.js +10 -4
- package/dist/tools/material.js.map +1 -1
- package/dist/tools/niagara.js +3 -2
- package/dist/tools/niagara.js.map +1 -1
- package/dist/tools/pcg.js +6 -5
- package/dist/tools/pcg.js.map +1 -1
- package/dist/tools/plugins.js +2 -0
- package/dist/tools/plugins.js.map +1 -1
- package/dist/tools/project.js +47 -20
- package/dist/tools/project.js.map +1 -1
- package/dist/types.d.ts +24 -0
- package/dist/types.js +46 -3
- package/dist/types.js.map +1 -1
- package/dist/ue-mcp.default.yml +493 -125
- package/package.json +2 -2
- package/plugin/ue_mcp_bridge/NATIVE_RUNTIME_VISIBILITY.md +53 -0
- package/plugin/ue_mcp_bridge/NATIVE_STATIC_MESH_USAGE_PROGRESS.md +115 -0
- package/plugin/ue_mcp_bridge/README_MassHandlers.md +97 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +14 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.cpp +21 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.h +9 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerJsonProperty.h +395 -69
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.cpp +79 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.h +25 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRig.cpp +3 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRigSequencer.cpp +3061 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRetargeterAuthoring.cpp +961 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRigAuthoring.cpp +900 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Pose.cpp +769 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Sequence.cpp +44 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_SkeletalLive.cpp +217 -11
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_StateMachine.cpp +551 -24
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Validation.cpp +735 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.cpp +352 -73
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.h +8 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkProperties.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkRead.cpp +503 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkRead.h +21 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkUpsert.cpp +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Enum.cpp +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Geometry.cpp +902 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Geometry.h +33 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Import.cpp +478 -134
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Mesh.cpp +5 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_MeshBoolean.cpp +933 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_MeshBoolean.h +35 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Redirectors.cpp +478 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_RenderTarget.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Sockets.cpp +4 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Struct.cpp +2 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Subobject.cpp +319 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_SoundCue.cpp +3 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.cpp +482 -35
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.h +10 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Collision.cpp +502 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Collision.h +43 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Functions.cpp +89 -7
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Graph.cpp +17 -51
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Internal.h +107 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Properties.cpp +10 -10
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Search.cpp +648 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DemoHandlers.cpp +5 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.cpp +252 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.h +10 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +252 -41
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.h +4 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_Build.cpp +250 -27
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIE.cpp +303 -125
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIERuntime.cpp +73 -50
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_RuntimeVisibility.cpp +757 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.cpp +11 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.h +3 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers_Batch.cpp +419 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +39 -161
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +66 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BTAuthoring.cpp +1323 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BehaviorTree.cpp +1211 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +2 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +60 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Runtime.cpp +363 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/HandlerEditorState.h +84 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.cpp +1288 -36
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.h +3 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers_Sculpt.cpp +41 -16
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.cpp +959 -213
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.h +66 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_BatchWrite.cpp +1571 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Convert.cpp +316 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Inspection.cpp +280 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection.cpp +666 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection_Internal.h +63 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Lights.cpp +43 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_MultiLevel.cpp +13 -47
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_PostProcess.cpp +527 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Query.cpp +1169 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Refresh.cpp +723 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Save.cpp +325 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Spatial.cpp +360 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Trace.cpp +178 -58
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Transient.cpp +337 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Volumes.cpp +25 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartition.cpp +10 -9
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartitionSettings.cpp +686 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MassHandlers.cpp +467 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MassHandlers.h +22 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.cpp +452 -175
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.h +5 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Build.cpp +597 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.cpp +17 -15
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PCGHandlers.cpp +38 -168
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PhysicsHandlers.cpp +39 -30
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.cpp +392 -78
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.h +2 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers_Internal.h +83 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.cpp +200 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.h +15 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SplineHandlers.cpp +19 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers.cpp +31 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.cpp +307 -69
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.h +84 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Extraction.cpp +8 -41
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Properties.cpp +33 -52
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/ActorSelectorTests.cpp +344 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AnimationControlRigTimelineTests.cpp +60 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AnimationPoseTests.cpp +115 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetBulkReadTests.cpp +177 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetDeleteGuardTests.cpp +276 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetPathResolutionTests.cpp +243 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetPropertyPersistTests.cpp +213 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetSubobjectTests.cpp +235 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AutomationRunnerTests.cpp +72 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BehaviorTreeAuthoringTests.cpp +526 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BehaviorTreeNodeTests.cpp +334 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BlueprintHandlerSurfaceTests.cpp +362 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BridgeProtocolTests.cpp +14 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/CollisionQueryTests.cpp +288 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/DataTableRowWriteTests.cpp +453 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/EditorFunctionCallTests.cpp +223 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/FoliageBatchTests.cpp +147 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/GameThreadGateTests.cpp +82 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/GasLiveAttributeTests.cpp +183 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LandscapeSampleTests.cpp +119 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelBatchWriteTests.cpp +176 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelComponentTreeInstanceCountTests.cpp +189 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelConvertBrushesTests.cpp +100 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelInstanceProjectionTests.cpp +265 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelPostProcessOverrideTests.cpp +258 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelQueryComponentsTests.cpp +195 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelRefreshTests.cpp +142 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelSaveReportTests.cpp +125 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelScriptHandlersTests.cpp +42 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelStaticMeshUsageTests.cpp +412 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelTraceWorldScopeTests.cpp +133 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelTransientActorTests.cpp +205 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelWorldPartitionSettingsTests.cpp +168 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MCPInstancedStructPathTestTypes.h +51 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MCPInstancedStructPathTests.cpp +379 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MaterialBuildTests.cpp +238 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MeshBooleanTests.cpp +170 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MeshGeometryTests.cpp +116 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/PackageSaveExtensionTests.cpp +161 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/PackageWriteGuardTests.cpp +253 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/RuntimeVisibilityTests.cpp +143 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SequencerHandlerTests.cpp +660 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SequencerScrubTests.cpp +50 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SkeletonDiffTests.cpp +685 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/WidgetBlueprintResolveTests.cpp +145 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +80 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerFunctionCall.h +509 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerQuery.h +407 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerUtils.h +1008 -77
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/UE_MCP_Bridge.Build.cs +87 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Private/MCPEngineStatus.cpp +152 -14
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Private/Tests/MCPEngineStatusTests.cpp +65 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Public/MCPEngineStatus.h +32 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/UE_MCP_BridgeStatus.Build.cs +2 -0
- package/skills/ue-mcp-animation/SKILL.md +154 -0
- package/skills/ue-mcp-blueprint/SKILL.md +71 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-observer.js","sourceRoot":"","sources":["../src/engine-observer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine-observer.js","sourceRoot":"","sources":["../src/engine-observer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/** Where a candidate engine came from. Printed verbatim in failures. */
|
|
2
|
+
export type EngineCandidateSource = "UE_MCP_TEST_ENGINE_ROOT" | "UE_BUILD_TOOL_PATH" | "editor.buildToolPath" | "UE_EDITOR_PATH" | "editor.path" | "EngineAssociation path" | "project-relative engine tree" | "EngineAssociation" | "last editor launch" | "default engine install";
|
|
3
|
+
/**
|
|
4
|
+
* A place an engine might be, before anything has been probed.
|
|
5
|
+
*
|
|
6
|
+
* `buildTool` is set only when the source names a build script directly, which
|
|
7
|
+
* is the one case where a usable tool can exist without a recognisable engine
|
|
8
|
+
* root above it.
|
|
9
|
+
*/
|
|
10
|
+
export interface EngineCandidate {
|
|
11
|
+
source: EngineCandidateSource;
|
|
12
|
+
engineRoot: string | null;
|
|
13
|
+
buildTool: string | null;
|
|
14
|
+
/** True when a person configured this explicitly, so a miss is their typo. */
|
|
15
|
+
explicit: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface SelectedEngine {
|
|
18
|
+
source: EngineCandidateSource;
|
|
19
|
+
engineRoot: string | null;
|
|
20
|
+
buildTool: string | null;
|
|
21
|
+
editorExecutable: string | null;
|
|
22
|
+
}
|
|
23
|
+
export interface EngineLookup {
|
|
24
|
+
/** Path to the .uproject. Everything project-relative needs it. */
|
|
25
|
+
projectPath?: string | null;
|
|
26
|
+
/** EngineAssociation, when the caller already parsed the .uproject. */
|
|
27
|
+
engineAssociation?: string | null;
|
|
28
|
+
/** `editor.buildToolPath` from the project's ue-mcp.yml (#817). */
|
|
29
|
+
configBuildToolPath?: string | null;
|
|
30
|
+
/** `editor.path` from the project's ue-mcp.yml (#817). */
|
|
31
|
+
configEditorPath?: string | null;
|
|
32
|
+
env?: NodeJS.ProcessEnv;
|
|
33
|
+
platform?: NodeJS.Platform;
|
|
34
|
+
hooks?: Partial<EngineLookupHooks>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* The I/O the resolver does, injectable so the ordering can be tested against
|
|
38
|
+
* synthetic layouts without a registry, a launcher manifest or an editor log.
|
|
39
|
+
*/
|
|
40
|
+
export interface EngineLookupHooks {
|
|
41
|
+
exists(candidatePath: string): boolean;
|
|
42
|
+
/** GUID -> registered build, version string -> launcher install. */
|
|
43
|
+
associationInstall(association: string): string | null;
|
|
44
|
+
/** The engine a project's own log says it was last opened with. */
|
|
45
|
+
lastEngineRoot(projectPath: string): string | null;
|
|
46
|
+
}
|
|
47
|
+
/** The Build.bat / Build.sh an engine root would hold on this platform. */
|
|
48
|
+
export declare function engineBuildTool(engineRoot: string, platform?: NodeJS.Platform): string;
|
|
49
|
+
/** The editor binaries an engine root would hold, best first. */
|
|
50
|
+
export declare function engineEditorBinaries(engineRoot: string, platform?: NodeJS.Platform): string[];
|
|
51
|
+
/**
|
|
52
|
+
* Walk up from a path inside an engine tree to the root that contains `Engine`.
|
|
53
|
+
* Covers build scripts and editor binaries on every platform.
|
|
54
|
+
*/
|
|
55
|
+
export declare function engineRootFromEnginePath(enginePath: string, platform?: NodeJS.Platform): string | null;
|
|
56
|
+
export declare function protectedEngineRoots(env?: NodeJS.ProcessEnv): string[];
|
|
57
|
+
/** Thrown when nothing usable was found. `tried` is every path probed. */
|
|
58
|
+
export declare class EngineResolutionError extends Error {
|
|
59
|
+
readonly tried: string[];
|
|
60
|
+
constructor(message: string, tried: string[]);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Every place this project's engine might be, in order, before probing.
|
|
64
|
+
*
|
|
65
|
+
* Exported so a caller can report the search without triggering it, and so the
|
|
66
|
+
* ordering can be asserted directly in tests.
|
|
67
|
+
*/
|
|
68
|
+
export declare function engineCandidates(lookup?: EngineLookup, probed?: string[]): EngineCandidate[];
|
|
69
|
+
/**
|
|
70
|
+
* What a selection needs: a usable build script, a launchable editor, or a
|
|
71
|
+
* readable engine source tree. They are asked for separately because an engine
|
|
72
|
+
* can satisfy one and not another - a binary-only distribution launches but
|
|
73
|
+
* cannot answer engine-source questions.
|
|
74
|
+
*/
|
|
75
|
+
export type EngineNeed = "buildTool" | "editor" | "engineRoot";
|
|
76
|
+
/**
|
|
77
|
+
* Pick the engine for one project, or throw an error naming every path probed.
|
|
78
|
+
*
|
|
79
|
+
* An explicitly configured location that does not exist is reported on its own
|
|
80
|
+
* rather than quietly falling through to a default install nobody asked for.
|
|
81
|
+
*/
|
|
82
|
+
export declare function selectEngine(lookup?: EngineLookup, need?: EngineNeed): SelectedEngine;
|
|
83
|
+
/** `selectEngine` without the throw, for callers that have their own fallback. */
|
|
84
|
+
export declare function trySelectEngine(lookup?: EngineLookup, need?: EngineNeed): SelectedEngine | null;
|
|
85
|
+
/**
|
|
86
|
+
* The engine root for reading engine source, or null.
|
|
87
|
+
*
|
|
88
|
+
* Callers that used `findEngineInstall(association)` want this: it still
|
|
89
|
+
* honours the association, it just no longer stops there.
|
|
90
|
+
*/
|
|
91
|
+
export declare function resolveEngineRoot(lookup?: EngineLookup): string | null;
|
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One resolver for "which engine does this project use" (#959, #961, #962, #974).
|
|
3
|
+
*
|
|
4
|
+
* Two separate discovery paths used to answer that question and they answered
|
|
5
|
+
* it differently. `findUEBuildTool` probed launcher install locations, and the
|
|
6
|
+
* engine-source readers in `tools/project.ts` asked `findEngineInstall` about
|
|
7
|
+
* the .uproject's EngineAssociation and gave up when that came back null. A
|
|
8
|
+
* source build sitting beside the project - the standard Perforce stream layout
|
|
9
|
+
* of `<root>/Engine` next to `<root>/MyProject/MyProject.uproject` - was
|
|
10
|
+
* invisible to both, even though `Build.bat` was right there and the editor
|
|
11
|
+
* launched out of that same tree.
|
|
12
|
+
*
|
|
13
|
+
* Everything that needs an engine now goes through `selectEngine` here, so the
|
|
14
|
+
* build tool and the engine-source readers cannot drift apart again.
|
|
15
|
+
*
|
|
16
|
+
* Order, most specific first:
|
|
17
|
+
*
|
|
18
|
+
* 1. `UE_MCP_TEST_ENGINE_ROOT` an explicit pin for the whole process
|
|
19
|
+
* 2. `UE_BUILD_TOOL_PATH` an explicit build tool for the process
|
|
20
|
+
* 3. `editor.buildToolPath` the per-project equivalent (#817)
|
|
21
|
+
* 4. `UE_EDITOR_PATH` an explicit editor binary names its tree
|
|
22
|
+
* 5. `editor.path` the per-project equivalent (#817)
|
|
23
|
+
* 6. EngineAssociation as a path relative or absolute, which is what a
|
|
24
|
+
* project beside a source build carries
|
|
25
|
+
* 7. project-relative engine tree walk up from the project directory for
|
|
26
|
+
* `Engine/Build/BatchFiles/<Build script>`
|
|
27
|
+
* 8. EngineAssociation registered a GUID through HKCU registered builds,
|
|
28
|
+
* a version string through the launcher
|
|
29
|
+
* 9. last editor launch the engine the project's own log says it
|
|
30
|
+
* was last opened with
|
|
31
|
+
* 10. default engine install the launcher locations probed before
|
|
32
|
+
*
|
|
33
|
+
* `UE_MCP_PROTECTED_ENGINE_ROOTS` outranks every one of them, including an
|
|
34
|
+
* explicit pin: a root named there is never selected, the same contract
|
|
35
|
+
* `scripts/build-utils.js` enforces for test builds.
|
|
36
|
+
*/
|
|
37
|
+
import * as fs from "node:fs";
|
|
38
|
+
import * as path from "node:path";
|
|
39
|
+
import { findEngineInstall } from "./deployer.js";
|
|
40
|
+
import { readEngineRootFromLog } from "./engine-observer.js";
|
|
41
|
+
const DEFAULT_HOOKS = {
|
|
42
|
+
exists: (candidatePath) => {
|
|
43
|
+
try {
|
|
44
|
+
return fs.existsSync(candidatePath);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
associationInstall: (association) => findEngineInstall(association),
|
|
51
|
+
lastEngineRoot: (projectPath) => readEngineRootFromLog(projectPath),
|
|
52
|
+
};
|
|
53
|
+
/** Engine versions probed in the default install locations, newest first. */
|
|
54
|
+
const DEFAULT_VERSIONS = ["5.8", "5.7", "5.6", "5.5", "5.4", "5.3"];
|
|
55
|
+
function pathImpl(platform) {
|
|
56
|
+
return platform === "win32" ? path.win32 : path.posix;
|
|
57
|
+
}
|
|
58
|
+
/** The Build.bat / Build.sh an engine root would hold on this platform. */
|
|
59
|
+
export function engineBuildTool(engineRoot, platform = process.platform) {
|
|
60
|
+
const impl = pathImpl(platform);
|
|
61
|
+
const batchFiles = impl.join(engineRoot, "Engine", "Build", "BatchFiles");
|
|
62
|
+
if (platform === "win32")
|
|
63
|
+
return impl.join(batchFiles, "Build.bat");
|
|
64
|
+
if (platform === "darwin")
|
|
65
|
+
return impl.join(batchFiles, "Mac", "Build.sh");
|
|
66
|
+
return impl.join(batchFiles, "Linux", "Build.sh");
|
|
67
|
+
}
|
|
68
|
+
/** The editor binaries an engine root would hold, best first. */
|
|
69
|
+
export function engineEditorBinaries(engineRoot, platform = process.platform) {
|
|
70
|
+
const impl = pathImpl(platform);
|
|
71
|
+
const binaries = impl.join(engineRoot, "Engine", "Binaries");
|
|
72
|
+
if (platform === "win32")
|
|
73
|
+
return [impl.join(binaries, "Win64", "UnrealEditor.exe")];
|
|
74
|
+
if (platform === "darwin") {
|
|
75
|
+
return [
|
|
76
|
+
impl.join(binaries, "Mac", "UnrealEditor.app", "Contents", "MacOS", "UnrealEditor"),
|
|
77
|
+
impl.join(binaries, "Mac", "UnrealEditor"),
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
return [impl.join(binaries, "Linux", "UnrealEditor")];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Walk up from a path inside an engine tree to the root that contains `Engine`.
|
|
84
|
+
* Covers build scripts and editor binaries on every platform.
|
|
85
|
+
*/
|
|
86
|
+
export function engineRootFromEnginePath(enginePath, platform = process.platform) {
|
|
87
|
+
const impl = pathImpl(platform);
|
|
88
|
+
let directory = impl.dirname(enginePath);
|
|
89
|
+
while (directory && directory !== impl.dirname(directory)) {
|
|
90
|
+
if (impl.basename(directory).toLowerCase() === "engine")
|
|
91
|
+
return impl.dirname(directory);
|
|
92
|
+
directory = impl.dirname(directory);
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function comparisonPath(value, platform) {
|
|
97
|
+
const normalized = pathImpl(platform).normalize(value).replace(/[\\/]+$/, "");
|
|
98
|
+
return platform === "win32" ? normalized.toLowerCase() : normalized;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* True when `candidate` is `parent` itself or lives beneath it. The trailing
|
|
102
|
+
* separator on the parent is what stops `/ue/engine-test` from counting as a
|
|
103
|
+
* child of `/ue/engine`.
|
|
104
|
+
*/
|
|
105
|
+
function isSameOrUnder(candidate, parent, platform) {
|
|
106
|
+
const normalizedCandidate = comparisonPath(candidate, platform);
|
|
107
|
+
const normalizedParent = comparisonPath(parent, platform);
|
|
108
|
+
return (normalizedCandidate === normalizedParent ||
|
|
109
|
+
normalizedCandidate.startsWith(`${normalizedParent}${pathImpl(platform).sep}`));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Roots this server must never touch, from `UE_MCP_PROTECTED_ENGINE_ROOTS`.
|
|
113
|
+
*
|
|
114
|
+
* A relative entry is rejected rather than resolved against the working
|
|
115
|
+
* directory: turning a mistyped deny entry into a path that can never match
|
|
116
|
+
* would leave the caller believing an engine is protected when it is not. Same
|
|
117
|
+
* rule as `scripts/build-utils.js`.
|
|
118
|
+
*/
|
|
119
|
+
/** Split a deny-list value into entries.
|
|
120
|
+
*
|
|
121
|
+
* `path.delimiter` is ":" on POSIX, which cuts a Windows path in half at its
|
|
122
|
+
* drive letter: "D:\protected" becomes "D" and "\protected". That matters
|
|
123
|
+
* because this list is a SAFETY deny list, and a mangled entry does not fail
|
|
124
|
+
* loudly, it silently protects nothing. A value authored on Windows and read
|
|
125
|
+
* anywhere else has to survive.
|
|
126
|
+
*
|
|
127
|
+
* Semicolons always separate. A colon separates only when it is not the colon
|
|
128
|
+
* of a drive letter. */
|
|
129
|
+
function splitDenyList(value) {
|
|
130
|
+
const out = [];
|
|
131
|
+
let current = "";
|
|
132
|
+
for (let i = 0; i < value.length; i++) {
|
|
133
|
+
const ch = value[i];
|
|
134
|
+
if (ch === ";") {
|
|
135
|
+
out.push(current);
|
|
136
|
+
current = "";
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
if (ch === ":") {
|
|
140
|
+
// Compare on the trimmed value: a list may be written with spaces
|
|
141
|
+
// around its separators, and " C" is still a drive letter.
|
|
142
|
+
const head = current.trim();
|
|
143
|
+
const isDriveColon = head.length === 1 && /[A-Za-z]/.test(head);
|
|
144
|
+
if (!isDriveColon) {
|
|
145
|
+
out.push(current);
|
|
146
|
+
current = "";
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
current += ch;
|
|
151
|
+
}
|
|
152
|
+
out.push(current);
|
|
153
|
+
return out;
|
|
154
|
+
}
|
|
155
|
+
/** Absolute in the POSIX sense, or a Windows drive-letter or UNC root, whatever
|
|
156
|
+
* platform is doing the parsing. A deny list written on one machine is often
|
|
157
|
+
* read on another. */
|
|
158
|
+
function isAbsoluteAnyPlatform(entry) {
|
|
159
|
+
const driveRooted = /^[A-Za-z]:[\\/]/.test(entry);
|
|
160
|
+
const uncRooted = /^\\\\/.test(entry);
|
|
161
|
+
return path.isAbsolute(entry) || driveRooted || uncRooted;
|
|
162
|
+
}
|
|
163
|
+
export function protectedEngineRoots(env = process.env) {
|
|
164
|
+
return splitDenyList(env.UE_MCP_PROTECTED_ENGINE_ROOTS || "")
|
|
165
|
+
.map((entry) => entry.trim())
|
|
166
|
+
.filter(Boolean)
|
|
167
|
+
.map((entry) => {
|
|
168
|
+
if (!isAbsoluteAnyPlatform(entry)) {
|
|
169
|
+
throw new Error(`UE_MCP_PROTECTED_ENGINE_ROOTS entry '${entry}' is not an absolute path, so it would protect nothing.`);
|
|
170
|
+
}
|
|
171
|
+
return entry;
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/** Thrown when nothing usable was found. `tried` is every path probed. */
|
|
175
|
+
export class EngineResolutionError extends Error {
|
|
176
|
+
tried;
|
|
177
|
+
constructor(message, tried) {
|
|
178
|
+
super(message);
|
|
179
|
+
this.name = "EngineResolutionError";
|
|
180
|
+
this.tried = tried;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
function trimmed(value) {
|
|
184
|
+
if (typeof value !== "string")
|
|
185
|
+
return null;
|
|
186
|
+
const text = value.trim();
|
|
187
|
+
return text === "" ? null : text;
|
|
188
|
+
}
|
|
189
|
+
const GUID_RE = /^\{?[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}?$/i;
|
|
190
|
+
const VERSION_RE = /^\d+(\.\d+)*$/;
|
|
191
|
+
/**
|
|
192
|
+
* An EngineAssociation that is neither a GUID nor a version number is a path,
|
|
193
|
+
* which is how a project beside a source build names its engine. UE writes it
|
|
194
|
+
* relative to the project directory, and an absolute one is legal too.
|
|
195
|
+
*/
|
|
196
|
+
function associationAsPath(association, projectDir, platform) {
|
|
197
|
+
if (GUID_RE.test(association) || VERSION_RE.test(association))
|
|
198
|
+
return null;
|
|
199
|
+
const impl = pathImpl(platform);
|
|
200
|
+
// `../` normalizes with a trailing separator, which would then read as a
|
|
201
|
+
// different root from the same directory written without one.
|
|
202
|
+
const tidy = (value) => impl.normalize(value).replace(/(?<=[^\\/:])[\\/]+$/, "");
|
|
203
|
+
if (impl.isAbsolute(association))
|
|
204
|
+
return tidy(association);
|
|
205
|
+
if (!projectDir)
|
|
206
|
+
return null;
|
|
207
|
+
return tidy(impl.join(projectDir, association));
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Every ancestor of the project directory (and the directory itself) that holds
|
|
211
|
+
* an engine tree, nearest first. This is the sibling-engine layout: the project
|
|
212
|
+
* at `<root>/MyProject` and the engine at `<root>/Engine`.
|
|
213
|
+
*/
|
|
214
|
+
function projectRelativeEngineRoots(projectDir, platform, exists, probed) {
|
|
215
|
+
const impl = pathImpl(platform);
|
|
216
|
+
const roots = [];
|
|
217
|
+
let directory = impl.resolve(projectDir);
|
|
218
|
+
for (;;) {
|
|
219
|
+
const buildTool = engineBuildTool(directory, platform);
|
|
220
|
+
if (exists(buildTool))
|
|
221
|
+
roots.push(directory);
|
|
222
|
+
else
|
|
223
|
+
probed.push(`${buildTool} (walking up from the project)`);
|
|
224
|
+
const parent = impl.dirname(directory);
|
|
225
|
+
if (parent === directory)
|
|
226
|
+
break;
|
|
227
|
+
directory = parent;
|
|
228
|
+
}
|
|
229
|
+
return roots;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Default install locations, filtered to the base directories that exist. A
|
|
233
|
+
* machine with one Epic install should not have thirty five dead paths listed
|
|
234
|
+
* back at it when resolution fails.
|
|
235
|
+
*/
|
|
236
|
+
function defaultInstallRoots(platform, env, exists, probed) {
|
|
237
|
+
const impl = pathImpl(platform);
|
|
238
|
+
const bases = platform === "win32"
|
|
239
|
+
? [
|
|
240
|
+
"C:/Program Files/Epic Games",
|
|
241
|
+
"D:/Program Files/Epic Games",
|
|
242
|
+
"E:/Program Files/Epic Games",
|
|
243
|
+
"C:/Epic Games",
|
|
244
|
+
"D:/Epic Games",
|
|
245
|
+
"E:/Epic Games",
|
|
246
|
+
]
|
|
247
|
+
: platform === "darwin"
|
|
248
|
+
? ["/Users/Shared/Epic Games"]
|
|
249
|
+
: ["/opt/UnrealEngine"];
|
|
250
|
+
const roots = [];
|
|
251
|
+
for (const base of bases) {
|
|
252
|
+
if (!exists(base)) {
|
|
253
|
+
probed.push(`${base} (no engine install directory there)`);
|
|
254
|
+
continue;
|
|
255
|
+
}
|
|
256
|
+
for (const version of DEFAULT_VERSIONS)
|
|
257
|
+
roots.push(impl.join(base, `UE_${version}`));
|
|
258
|
+
}
|
|
259
|
+
// Linux and macOS source builds live in the home directory with no version
|
|
260
|
+
// suffix, which is the layout the engine's own Setup.sh produces.
|
|
261
|
+
if (platform !== "win32") {
|
|
262
|
+
const home = trimmed(env.HOME);
|
|
263
|
+
if (home)
|
|
264
|
+
roots.push(impl.join(home, "UnrealEngine"));
|
|
265
|
+
}
|
|
266
|
+
return roots;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Every place this project's engine might be, in order, before probing.
|
|
270
|
+
*
|
|
271
|
+
* Exported so a caller can report the search without triggering it, and so the
|
|
272
|
+
* ordering can be asserted directly in tests.
|
|
273
|
+
*/
|
|
274
|
+
export function engineCandidates(lookup = {}, probed = []) {
|
|
275
|
+
const platform = lookup.platform ?? process.platform;
|
|
276
|
+
const env = lookup.env ?? process.env;
|
|
277
|
+
const hooks = { ...DEFAULT_HOOKS, ...lookup.hooks };
|
|
278
|
+
const impl = pathImpl(platform);
|
|
279
|
+
const projectPath = trimmed(lookup.projectPath);
|
|
280
|
+
const projectDir = projectPath ? impl.dirname(impl.resolve(projectPath)) : null;
|
|
281
|
+
const association = trimmed(lookup.engineAssociation)?.replace(/^\{|\}$/g, "") ?? null;
|
|
282
|
+
const candidates = [];
|
|
283
|
+
const seenRoots = new Set();
|
|
284
|
+
const pushRoot = (source, engineRoot, explicit = false) => {
|
|
285
|
+
if (!engineRoot)
|
|
286
|
+
return;
|
|
287
|
+
const key = comparisonPath(engineRoot, platform);
|
|
288
|
+
if (seenRoots.has(key))
|
|
289
|
+
return;
|
|
290
|
+
seenRoots.add(key);
|
|
291
|
+
candidates.push({ source, engineRoot, buildTool: null, explicit });
|
|
292
|
+
};
|
|
293
|
+
const pushTool = (source, buildTool) => {
|
|
294
|
+
if (!buildTool)
|
|
295
|
+
return;
|
|
296
|
+
const engineRoot = engineRootFromEnginePath(buildTool, platform);
|
|
297
|
+
if (engineRoot)
|
|
298
|
+
seenRoots.add(comparisonPath(engineRoot, platform));
|
|
299
|
+
candidates.push({ source, engineRoot, buildTool, explicit: true });
|
|
300
|
+
};
|
|
301
|
+
// 1-5: everything a person configured on purpose.
|
|
302
|
+
pushRoot("UE_MCP_TEST_ENGINE_ROOT", trimmed(env.UE_MCP_TEST_ENGINE_ROOT), true);
|
|
303
|
+
pushTool("UE_BUILD_TOOL_PATH", trimmed(env.UE_BUILD_TOOL_PATH));
|
|
304
|
+
pushTool("editor.buildToolPath", trimmed(lookup.configBuildToolPath));
|
|
305
|
+
// An editor binary names its tree, but it is a statement about the editor,
|
|
306
|
+
// not about the build tool: a tree that cannot build is not the user's typo,
|
|
307
|
+
// so these are not treated as explicit build pins.
|
|
308
|
+
pushRoot("UE_EDITOR_PATH", engineRootFromEnginePath(trimmed(env.UE_EDITOR_PATH) ?? "", platform));
|
|
309
|
+
pushRoot("editor.path", engineRootFromEnginePath(trimmed(lookup.configEditorPath) ?? "", platform));
|
|
310
|
+
// 6-7: what the project itself says, which is the half that was missing.
|
|
311
|
+
if (association)
|
|
312
|
+
pushRoot("EngineAssociation path", associationAsPath(association, projectDir, platform));
|
|
313
|
+
if (projectDir) {
|
|
314
|
+
for (const root of projectRelativeEngineRoots(projectDir, platform, hooks.exists, probed)) {
|
|
315
|
+
pushRoot("project-relative engine tree", root);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// 8: the registered build or launcher install the association names.
|
|
319
|
+
if (association)
|
|
320
|
+
pushRoot("EngineAssociation", hooks.associationInstall(association));
|
|
321
|
+
// 9: whatever the project was last actually opened with.
|
|
322
|
+
if (projectPath)
|
|
323
|
+
pushRoot("last editor launch", hooks.lastEngineRoot(projectPath));
|
|
324
|
+
// 10: the launcher locations that were the only thing probed before.
|
|
325
|
+
for (const root of defaultInstallRoots(platform, env, hooks.exists, probed)) {
|
|
326
|
+
pushRoot("default engine install", root);
|
|
327
|
+
}
|
|
328
|
+
return candidates;
|
|
329
|
+
}
|
|
330
|
+
function candidatePaths(candidate, platform, need) {
|
|
331
|
+
if (need === "buildTool") {
|
|
332
|
+
if (candidate.buildTool)
|
|
333
|
+
return [candidate.buildTool];
|
|
334
|
+
return candidate.engineRoot ? [engineBuildTool(candidate.engineRoot, platform)] : [];
|
|
335
|
+
}
|
|
336
|
+
if (!candidate.engineRoot)
|
|
337
|
+
return [];
|
|
338
|
+
if (need === "editor")
|
|
339
|
+
return engineEditorBinaries(candidate.engineRoot, platform);
|
|
340
|
+
return [pathImpl(platform).join(candidate.engineRoot, "Engine", "Source")];
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* The path a junction, symlink or short name actually points at, or the path
|
|
344
|
+
* itself when it cannot be resolved. Used only for the deny-list comparison, so
|
|
345
|
+
* a protected engine cannot be reached under a second name.
|
|
346
|
+
*/
|
|
347
|
+
function canonicalIfPossible(candidatePath) {
|
|
348
|
+
try {
|
|
349
|
+
return fs.realpathSync.native(candidatePath);
|
|
350
|
+
}
|
|
351
|
+
catch {
|
|
352
|
+
return candidatePath;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
function assertNotProtected(engineRoot, roots, platform, source) {
|
|
356
|
+
const forms = [engineRoot, canonicalIfPossible(engineRoot)];
|
|
357
|
+
const match = roots.find((root) => [root, canonicalIfPossible(root)].some((denied) => forms.some((form) => isSameOrUnder(form, denied, platform))));
|
|
358
|
+
if (match) {
|
|
359
|
+
throw new EngineResolutionError(`Engine root '${engineRoot}' (from ${source}) is listed in UE_MCP_PROTECTED_ENGINE_ROOTS ('${match}'). ` +
|
|
360
|
+
"UE-MCP refuses to use a protected engine.", []);
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
function failureMessage(need, lookup, tried) {
|
|
364
|
+
const subject = need === "buildTool"
|
|
365
|
+
? "Unreal Engine build tool not found"
|
|
366
|
+
: need === "editor"
|
|
367
|
+
? "Unreal Editor executable not found"
|
|
368
|
+
: "Unreal Engine source tree not found";
|
|
369
|
+
const projectPath = trimmed(lookup.projectPath);
|
|
370
|
+
const forProject = projectPath ? ` for ${projectPath}` : "";
|
|
371
|
+
const remedy = need === "editor"
|
|
372
|
+
? "Set UE_EDITOR_PATH (or editor.path in the project's ue-mcp.yml) to the editor binary (on macOS that is inside " +
|
|
373
|
+
"UnrealEditor.app/Contents/MacOS/), put the engine beside the project as Engine/, point EngineAssociation at it, " +
|
|
374
|
+
"or install UE 5.3+ to a default location."
|
|
375
|
+
: need === "buildTool"
|
|
376
|
+
? "Set UE_BUILD_TOOL_PATH (or editor.buildToolPath in the project's ue-mcp.yml) to a Build.bat / Build.sh, " +
|
|
377
|
+
"put the engine beside the project as Engine/, point EngineAssociation at it, or install UE 5.3+ to a default location."
|
|
378
|
+
: "Set UE_MCP_TEST_ENGINE_ROOT (or editor.path in the project's ue-mcp.yml) to an engine root, " +
|
|
379
|
+
"put the engine beside the project as Engine/, point EngineAssociation at it, or install UE 5.3+ to a default location. " +
|
|
380
|
+
"A launcher install without the Source/ tree cannot answer engine-source questions.";
|
|
381
|
+
return `${subject}${forProject}. Tried:\n ${tried.join("\n ") || "(no candidate locations)"}\n${remedy}`;
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Pick the engine for one project, or throw an error naming every path probed.
|
|
385
|
+
*
|
|
386
|
+
* An explicitly configured location that does not exist is reported on its own
|
|
387
|
+
* rather than quietly falling through to a default install nobody asked for.
|
|
388
|
+
*/
|
|
389
|
+
export function selectEngine(lookup = {}, need = "buildTool") {
|
|
390
|
+
const platform = lookup.platform ?? process.platform;
|
|
391
|
+
const env = lookup.env ?? process.env;
|
|
392
|
+
const hooks = { ...DEFAULT_HOOKS, ...lookup.hooks };
|
|
393
|
+
const denied = protectedEngineRoots(env);
|
|
394
|
+
// Locations ruled out while the candidate list was being built (the walk up
|
|
395
|
+
// from the project, the default install directories that are not there) are
|
|
396
|
+
// part of the answer to "why did this not find my engine", so they are
|
|
397
|
+
// reported alongside the candidates that were probed and missed.
|
|
398
|
+
const tried = [];
|
|
399
|
+
for (const candidate of engineCandidates(lookup, tried)) {
|
|
400
|
+
const probes = candidatePaths(candidate, platform, need);
|
|
401
|
+
const hit = probes.find((probe) => hooks.exists(probe));
|
|
402
|
+
if (!hit) {
|
|
403
|
+
// A candidate with nothing to probe cannot answer this need at all. That
|
|
404
|
+
// is not a misconfiguration, so it is recorded and stepped over.
|
|
405
|
+
if (probes.length === 0) {
|
|
406
|
+
tried.push(`(${candidate.source} names no ${need})`);
|
|
407
|
+
continue;
|
|
408
|
+
}
|
|
409
|
+
for (const probe of probes)
|
|
410
|
+
tried.push(`${probe} (from ${candidate.source})`);
|
|
411
|
+
if (candidate.explicit) {
|
|
412
|
+
throw new EngineResolutionError(`${candidate.source} does not point at a usable Unreal engine: ${probes[0]} is missing.`, tried);
|
|
413
|
+
}
|
|
414
|
+
continue;
|
|
415
|
+
}
|
|
416
|
+
assertNotProtected(candidate.engineRoot ?? hit, denied, platform, candidate.source);
|
|
417
|
+
const buildTool = candidate.buildTool ?? (candidate.engineRoot ? engineBuildTool(candidate.engineRoot, platform) : null);
|
|
418
|
+
const editorExecutable = candidate.engineRoot
|
|
419
|
+
? (engineEditorBinaries(candidate.engineRoot, platform).find((binary) => hooks.exists(binary)) ?? null)
|
|
420
|
+
: null;
|
|
421
|
+
return {
|
|
422
|
+
source: candidate.source,
|
|
423
|
+
engineRoot: candidate.engineRoot,
|
|
424
|
+
buildTool: buildTool && hooks.exists(buildTool) ? buildTool : null,
|
|
425
|
+
editorExecutable,
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
throw new EngineResolutionError(failureMessage(need, lookup, tried), tried);
|
|
429
|
+
}
|
|
430
|
+
/** `selectEngine` without the throw, for callers that have their own fallback. */
|
|
431
|
+
export function trySelectEngine(lookup = {}, need = "buildTool") {
|
|
432
|
+
try {
|
|
433
|
+
return selectEngine(lookup, need);
|
|
434
|
+
}
|
|
435
|
+
catch {
|
|
436
|
+
return null;
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* The engine root for reading engine source, or null.
|
|
441
|
+
*
|
|
442
|
+
* Callers that used `findEngineInstall(association)` want this: it still
|
|
443
|
+
* honours the association, it just no longer stops there.
|
|
444
|
+
*/
|
|
445
|
+
export function resolveEngineRoot(lookup = {}) {
|
|
446
|
+
return trySelectEngine(lookup, "engineRoot")?.engineRoot ?? null;
|
|
447
|
+
}
|
|
448
|
+
//# sourceMappingURL=engine-root.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine-root.js","sourceRoot":"","sources":["../src/engine-root.ts"],"names":[],"mappings":"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"}
|