ue-mcp 1.3.0 → 1.3.1-beta.2
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 +5 -3
- package/dist/action-class.js +141 -3
- package/dist/action-class.js.map +1 -1
- package/dist/action-schema.d.ts +157 -0
- package/dist/action-schema.js +731 -0
- package/dist/action-schema.js.map +1 -0
- package/dist/bridge-timeouts.js +23 -0
- package/dist/bridge-timeouts.js.map +1 -1
- package/dist/bridge.js +28 -11
- package/dist/bridge.js.map +1 -1
- package/dist/call-pipeline.d.ts +126 -0
- package/dist/call-pipeline.js +144 -0
- package/dist/call-pipeline.js.map +1 -0
- package/dist/content-index.d.ts +41 -0
- package/dist/content-index.js +149 -0
- package/dist/content-index.js.map +1 -0
- package/dist/cpp-correctness.d.ts +165 -0
- package/dist/cpp-correctness.js +562 -0
- package/dist/cpp-correctness.js.map +1 -0
- package/dist/dialog-cli.d.ts +15 -0
- package/dist/dialog-cli.js +146 -0
- package/dist/dialog-cli.js.map +1 -0
- package/dist/editor-control.d.ts +268 -18
- package/dist/editor-control.js +789 -54
- package/dist/editor-control.js.map +1 -1
- package/dist/editor-target.d.ts +31 -0
- package/dist/editor-target.js +34 -0
- package/dist/editor-target.js.map +1 -1
- package/dist/engine-analysis.d.ts +286 -0
- package/dist/engine-analysis.js +874 -0
- package/dist/engine-analysis.js.map +1 -0
- package/dist/engine-index.d.ts +159 -0
- package/dist/engine-index.js +496 -0
- package/dist/engine-index.js.map +1 -0
- package/dist/epic-enrich.js +2 -2
- package/dist/epic-enrich.js.map +1 -1
- package/dist/field-select.d.ts +57 -0
- package/dist/field-select.js +204 -0
- package/dist/field-select.js.map +1 -0
- package/dist/flow/bridge-task.d.ts +5 -0
- package/dist/flow/bridge-task.js +11 -1
- package/dist/flow/bridge-task.js.map +1 -1
- package/dist/flow/flow-tool.js +207 -34
- package/dist/flow/flow-tool.js.map +1 -1
- package/dist/flow/guarded-bridge.js +23 -7
- package/dist/flow/guarded-bridge.js.map +1 -1
- package/dist/flow/handler-outcome.d.ts +97 -0
- package/dist/flow/handler-outcome.js +127 -0
- package/dist/flow/handler-outcome.js.map +1 -0
- package/dist/flow/journal-actions.d.ts +24 -0
- package/dist/flow/journal-actions.js +364 -0
- package/dist/flow/journal-actions.js.map +1 -0
- package/dist/flow/registry.js +18 -2
- package/dist/flow/registry.js.map +1 -1
- package/dist/flow/schema.d.ts +30 -30
- package/dist/flow/skill-actions.d.ts +14 -0
- package/dist/flow/skill-actions.js +269 -0
- package/dist/flow/skill-actions.js.map +1 -0
- package/dist/flow/task-factory.d.ts +9 -3
- package/dist/flow/task-factory.js +55 -11
- package/dist/flow/task-factory.js.map +1 -1
- package/dist/index.js +169 -13
- package/dist/index.js.map +1 -1
- package/dist/init.js +14 -0
- package/dist/init.js.map +1 -1
- package/dist/install-check.d.ts +101 -0
- package/dist/install-check.js +366 -0
- package/dist/install-check.js.map +1 -0
- package/dist/journal.d.ts +212 -0
- package/dist/journal.js +406 -0
- package/dist/journal.js.map +1 -0
- package/dist/lean-context.js +22 -5
- package/dist/lean-context.js.map +1 -1
- package/dist/offline.d.ts +162 -0
- package/dist/offline.js +303 -0
- package/dist/offline.js.map +1 -0
- package/dist/pagination.d.ts +99 -0
- package/dist/pagination.js +175 -0
- package/dist/pagination.js.map +1 -0
- package/dist/path-params.d.ts +61 -0
- package/dist/path-params.js +120 -0
- package/dist/path-params.js.map +1 -0
- package/dist/plugin/injection.js +2 -2
- package/dist/plugin/injection.js.map +1 -1
- package/dist/plugin/manifest.d.ts +15 -15
- package/dist/plugin/provision.js +2 -2
- package/dist/plugin/provision.js.map +1 -1
- package/dist/project.d.ts +35 -0
- package/dist/project.js +72 -8
- package/dist/project.js.map +1 -1
- package/dist/session-env.js +12 -0
- package/dist/session-env.js.map +1 -1
- package/dist/session-surface.js +2 -19
- package/dist/session-surface.js.map +1 -1
- package/dist/session.d.ts +29 -0
- package/dist/session.js +54 -1
- package/dist/session.js.map +1 -1
- package/dist/skill-packs.d.ts +141 -0
- package/dist/skill-packs.js +478 -0
- package/dist/skill-packs.js.map +1 -0
- package/dist/skills.d.ts +14 -11
- package/dist/skills.js +38 -65
- package/dist/skills.js.map +1 -1
- package/dist/tool-counts.json +20 -20
- package/dist/tools/animation.js +81 -17
- package/dist/tools/animation.js.map +1 -1
- package/dist/tools/asset.js +237 -39
- package/dist/tools/asset.js.map +1 -1
- package/dist/tools/audio.js +43 -8
- package/dist/tools/audio.js.map +1 -1
- package/dist/tools/blueprint.js +76 -10
- package/dist/tools/blueprint.js.map +1 -1
- package/dist/tools/demo.js +3 -3
- package/dist/tools/demo.js.map +1 -1
- package/dist/tools/editor.js +159 -42
- package/dist/tools/editor.js.map +1 -1
- package/dist/tools/fab.js +7 -7
- package/dist/tools/fab.js.map +1 -1
- package/dist/tools/feedback.js +14 -4
- package/dist/tools/feedback.js.map +1 -1
- package/dist/tools/foliage.js +50 -4
- package/dist/tools/foliage.js.map +1 -1
- package/dist/tools/gameplay.js +137 -51
- package/dist/tools/gameplay.js.map +1 -1
- package/dist/tools/gas.js +74 -9
- package/dist/tools/gas.js.map +1 -1
- package/dist/tools/landscape.js +158 -10
- package/dist/tools/landscape.js.map +1 -1
- package/dist/tools/level.js +37 -18
- package/dist/tools/level.js.map +1 -1
- package/dist/tools/material.js +43 -8
- package/dist/tools/material.js.map +1 -1
- package/dist/tools/networking.js +10 -10
- package/dist/tools/networking.js.map +1 -1
- package/dist/tools/niagara.js +44 -8
- package/dist/tools/niagara.js.map +1 -1
- package/dist/tools/pcg.js +25 -8
- package/dist/tools/pcg.js.map +1 -1
- package/dist/tools/plugins.js +1 -1
- package/dist/tools/plugins.js.map +1 -1
- package/dist/tools/project.d.ts +17 -1
- package/dist/tools/project.js +571 -17
- package/dist/tools/project.js.map +1 -1
- package/dist/tools/reflection.js +15 -5
- package/dist/tools/reflection.js.map +1 -1
- package/dist/tools/statetree.js +44 -3
- package/dist/tools/statetree.js.map +1 -1
- package/dist/tools/widget.js +70 -4
- package/dist/tools/widget.js.map +1 -1
- package/dist/types.d.ts +75 -10
- package/dist/types.js +95 -20
- package/dist/types.js.map +1 -1
- package/dist/ue-mcp.default.yml +1571 -201
- package/dist/user-state.d.ts +42 -0
- package/dist/user-state.js +366 -38
- package/dist/user-state.js.map +1 -1
- package/dist/version-check.js +46 -5
- package/dist/version-check.js.map +1 -1
- package/package.json +4 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +130 -24
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.h +44 -8
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/EngineStatusHooks.cpp +22 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.cpp +135 -66
- 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 +117 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerPoseSearchSchema.h +92 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerStateTreeSchema.h +224 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.cpp +467 -13
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.h +36 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRig.cpp +4 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRigSequencer.cpp +132 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Depth.cpp +1432 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRetargeterAuthoring.cpp +41 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRigAuthoring.cpp +45 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_MotionMatching.cpp +186 -15
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Sequence.cpp +319 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_SkeletalLive.cpp +45 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Skeleton.cpp +2866 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_StateMachine.cpp +547 -10
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Validation.cpp +28 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.cpp +551 -57
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.h +40 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_GeometryScript.cpp +2697 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Hygiene.cpp +1700 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Import.cpp +494 -57
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Mesh.cpp +121 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Redirectors.cpp +11 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Sockets.cpp +55 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Subobject.cpp +12 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_UV.cpp +2972 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers.cpp +55 -22
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers.h +32 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_Depth.cpp +1559 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_MetaSound.cpp +562 -67
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_MetaSoundRead.cpp +1415 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_Mixing.cpp +210 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_SoundCue.cpp +61 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.cpp +506 -25
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.h +43 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Depth.cpp +2579 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Functions.cpp +162 -13
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Graph.cpp +694 -25
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Internal.h +96 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Properties.cpp +124 -11
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Search.cpp +73 -24
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_UserTypes.cpp +1344 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ChooserHandlers.cpp +136 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ChooserHandlers_Nested.cpp +14 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DemoHandlers.cpp +120 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DialogHandlers.cpp +588 -133
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DialogHandlers.h +65 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +679 -26
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.h +50 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_Build.cpp +70 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIE.cpp +261 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIERuntime.cpp +270 -23
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_Profiling.cpp +1665 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_RuntimeVisibility.cpp +41 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_ViewportControl.cpp +1229 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EpicHandlers.cpp +22 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FabHandlers.cpp +103 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.cpp +120 -12
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.h +14 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers_Batch.cpp +87 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers_Depth.cpp +1482 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +954 -168
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +63 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BTAuthoring.cpp +12 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BTRuntime.cpp +1556 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_EQS.cpp +760 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_Input.cpp +1297 -4
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_Mass.cpp +1303 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_Perception.cpp +1493 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +164 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +77 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Abilities.cpp +1392 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Runtime.cpp +882 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Snapshot.cpp +1002 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.cpp +113 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.h +31 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers_Sculpt.cpp +3778 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.cpp +790 -44
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_BatchWrite.cpp +44 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Convert.cpp +6 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection.cpp +37 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Lights.cpp +64 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_MultiLevel.cpp +13 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_PostProcess.cpp +156 -2
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Query.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Refresh.cpp +18 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Save.cpp +9 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Transient.cpp +79 -11
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Volumes.cpp +174 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartition.cpp +77 -14
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartitionSettings.cpp +79 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.cpp +591 -32
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.h +16 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Advanced.cpp +168 -8
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Build.cpp +30 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Function.cpp +106 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Graph.cpp +156 -23
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_RVT.cpp +1510 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NetworkingHandlers.cpp +232 -13
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.cpp +471 -45
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.h +23 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers_Advanced.cpp +1936 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers_Compile.cpp +300 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PCGHandlers.cpp +520 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PhysicsHandlers.cpp +369 -13
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ProjectHandlers.cpp +44 -5
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ProjectHandlers.h +13 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ProjectHandlers_Plugins.cpp +482 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.cpp +346 -31
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.h +5 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers_Schema.cpp +842 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.cpp +270 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.cpp +65 -3
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers.cpp +912 -23
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers.h +22 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers_Depth.cpp +1782 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.cpp +579 -185
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.h +37 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Animation.cpp +2691 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_CommonUI.cpp +612 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Extraction.cpp +14 -11
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Properties.cpp +253 -7
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_RuntimeState.cpp +1 -1
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/DataTableRowWriteTests.cpp +352 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +48 -25
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerPagination.h +404 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerUtils.h +593 -18
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/JsonSerializer.cpp +19 -0
- package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/UE_MCP_Bridge.Build.cs +31 -0
- package/plugin/ue_mcp_bridge/UE_MCP_Bridge.uplugin +2 -2
- package/skills/ue-mcp-animation/ue-mcp.yml +14 -0
- package/skills/ue-mcp-blueprint/ue-mcp.yml +8 -0
- package/skills/ue-mcp-epic-routing/ue-mcp.yml +6 -0
- package/skills/ue-mcp-native-cpp/ue-mcp.yml +7 -0
- package/skills/ue-mcp-niagara/ue-mcp.yml +9 -0
- package/skills/ue-mcp-workflow/SKILL.md +3 -2
- package/skills/ue-mcp-workflow/ue-mcp.yml +3 -0
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://github.com/db-lyon/ue-mcp/stargazers)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
|
-
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->24<!-- /count --> category tools covering <!-- count:actions -->
|
|
8
|
+
**Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->24<!-- /count --> category tools covering <!-- count:actions -->1090+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows and an npm plugin system for extending the surface.
|
|
9
9
|
|
|
10
10
|
On UE 5.8+ it also wraps Epic's entire native AI Toolset Registry - 830 official Unreal tools, called in-process and surfaced as `epic_*` actions in the matching category: Sequencer in `animation`, PCG in `pcg`, static meshes in `asset`.
|
|
11
11
|
|
|
@@ -137,7 +137,7 @@ flows:
|
|
|
137
137
|
flow(action="run", flowName="build_and_check")
|
|
138
138
|
```
|
|
139
139
|
|
|
140
|
-
Every one of the <!-- count:actions -->
|
|
140
|
+
Every one of the <!-- count:actions -->1090+<!-- /count --> actions is also a flow task. Flows support step references, retries, rollback, custom tasks in your own `.js`/`.ts`, and shell steps. See [Flows](https://ue-mcp.com/docs/flows/).
|
|
141
141
|
|
|
142
142
|
## Plugins
|
|
143
143
|
|
|
@@ -177,7 +177,7 @@ Details: [Guards](https://ue-mcp.com/docs/plugins-guards/) and [Handler Conventi
|
|
|
177
177
|
|
|
178
178
|
| | |
|
|
179
179
|
|---|---|
|
|
180
|
-
| **Unreal Engine** | 5.4-5.8 (Windows), 5.6+ (Linux and macOS). `epic` category needs 5.8+. |
|
|
180
|
+
| **Unreal Engine** | 5.4-5.8 (Windows), 5.6+ (Linux and macOS). Compiled and verified on 5.7 and 5.8; 5.4 to 5.6 are version-gated in source but not built here. `epic` category needs 5.8+. |
|
|
181
181
|
| **Node.js** | 18 or newer |
|
|
182
182
|
| **UE plugins** | `PythonScriptPlugin` (ships with the engine); `init` enables the rest for you |
|
|
183
183
|
| **C++ toolchain** | Required - the bridge is a C++ plugin and compiles on first editor launch. On Windows that means Visual Studio with the C++ workload; on macOS, Xcode command line tools. |
|
|
@@ -192,6 +192,8 @@ Editor process control (`editor(start_editor)` / `stop_editor` / `restart_editor
|
|
|
192
192
|
- [Tool Reference](https://ue-mcp.com/docs/tool-reference/) - Every tool, action, and parameter
|
|
193
193
|
- [Architecture](https://ue-mcp.com/docs/architecture/) - How the server, bridge, and editor fit together
|
|
194
194
|
- [Flows](https://ue-mcp.com/docs/flows/) - Multi-step YAML workflows, custom tasks, rollback
|
|
195
|
+
- [Journal](https://ue-mcp.com/docs/journal/) - The per-project record of what a session did, produced, and how it ended
|
|
196
|
+
- [Skill Packs](https://ue-mcp.com/docs/skill-packs/) - Written workflows an agent reads, and checking that the calls they teach still exist
|
|
195
197
|
- [Plugins](https://ue-mcp.com/docs/plugins/) - Extending the surface through npm
|
|
196
198
|
- [Configuration](https://ue-mcp.com/docs/configuration/) - `ue-mcp.yml` and MCP client config
|
|
197
199
|
- [Troubleshooting](https://ue-mcp.com/docs/troubleshooting/) - Connection, build, and asset path issues
|
package/dist/action-class.js
CHANGED
|
@@ -61,7 +61,7 @@ const MUTATE_VERBS = new Set([
|
|
|
61
61
|
"pause", "resume", "teleport", "respond", "stage", "capture", "render", "scrub",
|
|
62
62
|
// Authoring verbs the asset lexicon has no reason to know about.
|
|
63
63
|
"author", "edit", "place", "load", "reload", "force", "regenerate", "recompile",
|
|
64
|
-
"rebuild", "reparent", "auto", "populate", "bind", "rebind", "fill", "append",
|
|
64
|
+
"rebuild", "reparent", "auto", "populate", "bind", "rebind", "unbind", "fill", "append",
|
|
65
65
|
"reindex", "migrate", "override", "flush", "cleanup", "configure", "init",
|
|
66
66
|
"initialize", "step", "go", "submit", "remap", "login", "logout", "sync",
|
|
67
67
|
"toggle", "reactivate", "reorder", "wrap", "sculpt", "paint", "snap", "aim",
|
|
@@ -113,6 +113,54 @@ const OVERRIDES = {
|
|
|
113
113
|
// is a mutation by the lexicon, which is correct: a flow is whatever its
|
|
114
114
|
// steps are.
|
|
115
115
|
"flow.plan": "read",
|
|
116
|
+
// ── Read the engine tree and the project's own sources ──────────────
|
|
117
|
+
// These answer questions about C++ before any is written. They touch the
|
|
118
|
+
// engine install and the project's Source/ read-only, and the index they
|
|
119
|
+
// build is a cache under the user directory, not editor state. `verify` and
|
|
120
|
+
// `lint` are not in the verb lexicon because nothing else on the surface
|
|
121
|
+
// uses them.
|
|
122
|
+
"project.verify_symbols": "read",
|
|
123
|
+
"project.lint_cpp_header": "read",
|
|
124
|
+
// The relational half of the same reading: what a class derives from, what
|
|
125
|
+
// derives from it, and the lines around a declaration. `class` and `symbol`
|
|
126
|
+
// are nouns rather than verbs, so the lexicon has nothing to go on. The
|
|
127
|
+
// `find_*` analysis actions resolve through the lexicon already and are not
|
|
128
|
+
// listed here.
|
|
129
|
+
"project.class_hierarchy": "read",
|
|
130
|
+
"project.symbol_context": "read",
|
|
131
|
+
// ── Viewport, transactions and AI runtime ───────────────────────────
|
|
132
|
+
// Repaints the viewport. Nothing about the editor, the project on disk or
|
|
133
|
+
// the process changes; it is the visual equivalent of a read.
|
|
134
|
+
"editor.redraw_viewport": "read",
|
|
135
|
+
// Pure reads whose verb is not in the lexicon.
|
|
136
|
+
"editor.get_undo_state": "read",
|
|
137
|
+
"asset.read_skeletal_mesh_build_settings": "read",
|
|
138
|
+
// Rewrites a mesh's UV layout in place, so it changes the asset on disk.
|
|
139
|
+
"asset.unwrap_uvs": "mutate",
|
|
140
|
+
// Reports UV faults and writes nothing.
|
|
141
|
+
"asset.check_uvs": "read",
|
|
142
|
+
// Records another skeleton as compatible on this one, so it writes the asset.
|
|
143
|
+
"animation.register_compatible_skeleton": "mutate",
|
|
144
|
+
// Discards an open transaction, restoring what it touched. That is a change
|
|
145
|
+
// to editor state, so it is gated like one even though its purpose is undo.
|
|
146
|
+
"editor.cancel_transaction": "mutate",
|
|
147
|
+
// Asks whether A perceives B. Reads the perception component and nothing
|
|
148
|
+
// more; the verb is simply not in the lexicon.
|
|
149
|
+
"gameplay.check_perception": "read",
|
|
150
|
+
// Injects a stimulus into the running world, which AI then reacts to.
|
|
151
|
+
"gameplay.report_noise_event": "mutate",
|
|
152
|
+
// Creates the config asset when it is absent, so it can create.
|
|
153
|
+
"gameplay.ensure_mass_entity_config": "mutate",
|
|
154
|
+
// ── GAS granting and diagnosis ──────────────────────────────────────
|
|
155
|
+
// grant/revoke change a live actor's AbilitySystemComponent, so they are
|
|
156
|
+
// mutations even though neither verb is in the lexicon.
|
|
157
|
+
"gas.grant_ability": "mutate",
|
|
158
|
+
"gas.revoke_ability": "mutate",
|
|
159
|
+
// Reads by default. `activate: true` really does activate the ability, and
|
|
160
|
+
// an action whose effect a parameter decides is exactly what `unknown` is
|
|
161
|
+
// for: it is gated like a mutation, which is the safe answer, and the label
|
|
162
|
+
// stays honest.
|
|
163
|
+
"gas.trace_ability_activation": "unknown",
|
|
116
164
|
// ── Arbitrary payload decides the effect ────────────────────────────
|
|
117
165
|
"epic.call_tool": "unknown",
|
|
118
166
|
"editor.execute_python": "mutate",
|
|
@@ -124,6 +172,16 @@ const OVERRIDES = {
|
|
|
124
172
|
"editor.invoke_function": "unknown",
|
|
125
173
|
"widget.invoke_runtime_function": "unknown",
|
|
126
174
|
"niagara.batch": "mutate",
|
|
175
|
+
// ── Terrain reads the verb lexicon has no word for ──────────────────
|
|
176
|
+
// "analyze", "plan" and "project" are not in either list, and adding them as
|
|
177
|
+
// verbs would classify every future action containing those segments from a
|
|
178
|
+
// guess. All three of these only measure: they read the height field, or in
|
|
179
|
+
// the case of plan_real_world read nothing but a file the caller named, and
|
|
180
|
+
// return arithmetic. Nothing about them reaches an editor that could be the
|
|
181
|
+
// wrong one.
|
|
182
|
+
"landscape.analyze_terrain": "read",
|
|
183
|
+
"landscape.plan_real_world": "read",
|
|
184
|
+
"landscape.project_geo_coordinates": "read",
|
|
127
185
|
// ── Reads whose verb reads as a write ───────────────────────────────
|
|
128
186
|
// Serializers: they render a graph as text or JSON and return it.
|
|
129
187
|
"blueprint.export_nodes_t3d": "read",
|
|
@@ -139,6 +197,12 @@ const OVERRIDES = {
|
|
|
139
197
|
"level.load_actor_descs": "read",
|
|
140
198
|
// Extracts a widget subtree as a description. `widget.author` writes one.
|
|
141
199
|
"widget.extract_subtree": "read",
|
|
200
|
+
// Both walk a widget tree and report on it. "focus" is a mutate verb because
|
|
201
|
+
// the editor focuses a viewport on an actor, and a mutate verb anywhere in the
|
|
202
|
+
// name wins, which is wrong for a report about focus and for a read of where
|
|
203
|
+
// focus currently sits. `widget.set_runtime_focus` is the action that moves it.
|
|
204
|
+
"widget.audit_focus_chain": "read",
|
|
205
|
+
"widget.get_runtime_focus_path": "read",
|
|
142
206
|
// Cache metadata about the Fab library, not a cache write.
|
|
143
207
|
"fab.cache_info": "read",
|
|
144
208
|
// Computes bounds, area, volume and topology over mesh data already in the
|
|
@@ -182,6 +246,10 @@ const OVERRIDES = {
|
|
|
182
246
|
"gameplay.find_nav_path": "read",
|
|
183
247
|
"editor.hit_test_viewport_pixel": "read",
|
|
184
248
|
"editor.check_for_crashes": "read",
|
|
249
|
+
// Inspects the project descriptor, the engine tree and the deployed plugin
|
|
250
|
+
// on disk. It deploys nothing, enables nothing and builds nothing; the
|
|
251
|
+
// "install" in its name is the subject it reports on, not what it does.
|
|
252
|
+
"project.check_install": "read",
|
|
185
253
|
"editor.search_log": "read",
|
|
186
254
|
"project.live_coding_status": "read",
|
|
187
255
|
"feedback.route": "read",
|
|
@@ -195,7 +263,17 @@ const OVERRIDES = {
|
|
|
195
263
|
"asset.export": "mutate",
|
|
196
264
|
"asset.export_texture": "mutate",
|
|
197
265
|
"level.export_actor_fbx": "mutate",
|
|
198
|
-
|
|
266
|
+
// Writes a 16-bit heightmap to a path the caller chose. It changes no
|
|
267
|
+
// terrain, but a file appearing on disk is an external side effect and the
|
|
268
|
+
// taxonomy above counts that as a mutation.
|
|
269
|
+
"landscape.export_heightmap": "mutate",
|
|
270
|
+
// Not one of the exports above, despite sitting next to them here since it
|
|
271
|
+
// was written. It decodes a USoundWave's imported audio into memory and
|
|
272
|
+
// returns the samples base64-encoded in the response: no intermediate file,
|
|
273
|
+
// no path parameter to write one to, nothing dirtied and nothing saved. It
|
|
274
|
+
// was classified `mutate` by association with the file-writing exports, and
|
|
275
|
+
// the handler body settles it the other way.
|
|
276
|
+
"audio.extract_pcm": "read",
|
|
199
277
|
// Rebuilds the full-text index in the editor's own database.
|
|
200
278
|
"asset.reindex_fts": "mutate",
|
|
201
279
|
// Loads, rewrites and saves the packages that reference a set of
|
|
@@ -216,6 +294,53 @@ const OVERRIDES = {
|
|
|
216
294
|
// The verb says read; what it can do says mutate, and the gate follows what
|
|
217
295
|
// it can do.
|
|
218
296
|
"gas.get_live_attribute_value": "mutate",
|
|
297
|
+
// Runs an EQS query through FEnvQueryManager::RunInstantQuery against an
|
|
298
|
+
// already-spawned querier and serialises the scored items. `run` is a mutate
|
|
299
|
+
// verb and this one does not: no spawn, no Modify, no save, nothing written
|
|
300
|
+
// back to the query asset or the world. Landing it in the wrong editor
|
|
301
|
+
// returns the wrong scores and changes nothing.
|
|
302
|
+
"gameplay.run_eqs_query": "read",
|
|
303
|
+
// ── Reads whose name leads with a subsystem, not a verb ─────────────
|
|
304
|
+
// The lexicon only trusts a read verb in the leading segment, so these say
|
|
305
|
+
// out loud what they read. Each one was confirmed against its handler: they
|
|
306
|
+
// open an asset, walk a graph or a document, and write nothing back.
|
|
307
|
+
"audio.metasound_get_graph": "read",
|
|
308
|
+
"audio.metasound_read_document": "read",
|
|
309
|
+
"audio.metasound_list_node_classes": "read",
|
|
310
|
+
"audio.metasound_list_node_pins": "read",
|
|
311
|
+
"audio.metasound_list_connections": "read",
|
|
312
|
+
"audio.metasound_list_variables": "read",
|
|
313
|
+
"audio.metasound_search_nodes": "read",
|
|
314
|
+
"audio.metasound_inspect_node": "read",
|
|
315
|
+
// Runs the MetaSound builder's own validation over a document and reports
|
|
316
|
+
// the errors. It builds nothing and saves nothing.
|
|
317
|
+
"audio.metasound_validate": "read",
|
|
318
|
+
"audio.cue_get_graph": "read",
|
|
319
|
+
// Answers whether a named weightmap layer is present on a landscape. The
|
|
320
|
+
// `exists` question never creates the layer it asks about.
|
|
321
|
+
"landscape.layer_exists": "read",
|
|
322
|
+
// ── The workflow journal and the skill packs ────────────────────────
|
|
323
|
+
// Neither reaches a bridge, so nothing here can land in the wrong EDITOR.
|
|
324
|
+
// Both are still per project: the journal file is keyed by absolute project
|
|
325
|
+
// root and skill packs install under a project's own `.claude/skills/`, so a
|
|
326
|
+
// write that guessed the wrong session would record one project's history,
|
|
327
|
+
// or install into one project's checkout, under another project's name.
|
|
328
|
+
// Spelled out rather than left to the verb lexicon, which has no reason to
|
|
329
|
+
// know what "note", "attach", "finish" or "cancel" do.
|
|
330
|
+
"flow.journal_start": "mutate",
|
|
331
|
+
"flow.journal_note": "mutate",
|
|
332
|
+
"flow.journal_attach": "mutate",
|
|
333
|
+
"flow.journal_finish": "mutate",
|
|
334
|
+
"flow.journal_cancel": "mutate",
|
|
335
|
+
"flow.journal_delete": "mutate",
|
|
336
|
+
"flow.journal_list": "read",
|
|
337
|
+
"flow.journal_get": "read",
|
|
338
|
+
"flow.journal_status": "read",
|
|
339
|
+
"flow.skill_install": "mutate",
|
|
340
|
+
"flow.skill_remove": "mutate",
|
|
341
|
+
"flow.skill_list": "read",
|
|
342
|
+
"flow.skill_get": "read",
|
|
343
|
+
"flow.skill_check": "read",
|
|
219
344
|
};
|
|
220
345
|
/** Split `category.action`, tolerating an action name that contains a dot. */
|
|
221
346
|
export function splitTaskName(taskName) {
|
|
@@ -239,7 +364,20 @@ export function classifyActionClass(tool, action) {
|
|
|
239
364
|
const segments = action.toLowerCase().split(/[._]/).filter(Boolean);
|
|
240
365
|
if (segments.some((s) => MUTATE_VERBS.has(s)))
|
|
241
366
|
return { class: "mutate", source: "lexicon" };
|
|
242
|
-
|
|
367
|
+
// A read verb only settles the question from the FRONT of the name. Anywhere
|
|
368
|
+
// else it is a noun as often as a verb, and the direction of that mistake is
|
|
369
|
+
// the dangerous one: `wire_rvt_sample` was a mutation that classified as a
|
|
370
|
+
// read on the strength of `sample`, and untargeted dispatch would have let it
|
|
371
|
+
// edit whichever editor happened to be active. It reached a human review
|
|
372
|
+
// rather than a release, and was renamed to `add_rvt_sampler`, which is a fix
|
|
373
|
+
// to one name and not to the rule that produced it.
|
|
374
|
+
//
|
|
375
|
+
// So a trailing read verb now decides nothing and falls through to
|
|
376
|
+
// `unresolved`, which is gated exactly like a mutation and which the drift
|
|
377
|
+
// guard fails on. The cost is an override line for every genuine read whose
|
|
378
|
+
// name leads with a subsystem instead of a verb; those are below, each saying
|
|
379
|
+
// what it reads. The alternative costs a silent wrong-editor write.
|
|
380
|
+
if (READ_VERBS.has(segments[0] ?? ""))
|
|
243
381
|
return { class: "read", source: "lexicon" };
|
|
244
382
|
// Epic's wrapped engine tools are injected at runtime from a live catalog, so
|
|
245
383
|
// no build-time guard can enumerate them: enrichment can invent whole
|
package/dist/action-class.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action-class.js","sourceRoot":"","sources":["../src/action-class.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAY9D;;;;;;;;;;GAUG;AACH,MAAM,YAAY,GAAwB,IAAI,GAAG,CAAS;IACxD,GAAG,eAAe;IAClB,gDAAgD;IAChD,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM;IAC1C,iCAAiC;IACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ;IACxF,yEAAyE;IACzE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;IAC1E,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO;IAC/E,iEAAiE;IACjE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW;IAC/E,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"action-class.js","sourceRoot":"","sources":["../src/action-class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { ActionSpec, ToolDef } from "./types.js";
|
|
2
|
+
import { type ActionClass } from "./action-class.js";
|
|
3
|
+
export interface ParamSchema {
|
|
4
|
+
name: string;
|
|
5
|
+
/** Wire type, unwrapped through optional/default/nullable. */
|
|
6
|
+
type: string;
|
|
7
|
+
required: boolean;
|
|
8
|
+
description?: string;
|
|
9
|
+
/** Allowed values, when the parameter is an enum or a union of literals. */
|
|
10
|
+
enumValues?: string[];
|
|
11
|
+
/** Default applied by the schema when the caller omits the parameter. */
|
|
12
|
+
default?: unknown;
|
|
13
|
+
/**
|
|
14
|
+
* Where this name was found. A parameter missing `declared` is stripped
|
|
15
|
+
* before the handler sees it, whatever the description promises.
|
|
16
|
+
*/
|
|
17
|
+
sources: Array<"documented" | "forwards" | "declared">;
|
|
18
|
+
/**
|
|
19
|
+
* Index into the action's `alternatives` when this parameter is one of a
|
|
20
|
+
* choice. `required` is false for every member of a choice, because the
|
|
21
|
+
* handler takes either one; what has to be satisfied is the group.
|
|
22
|
+
*/
|
|
23
|
+
alternativeGroup?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface ActionSchema {
|
|
26
|
+
tool: string;
|
|
27
|
+
action: string;
|
|
28
|
+
description: string;
|
|
29
|
+
/** The C++ bridge method this dispatches to, when it dispatches to one. */
|
|
30
|
+
bridge?: string;
|
|
31
|
+
/** True when the action runs in the server process with no editor call. */
|
|
32
|
+
local: boolean;
|
|
33
|
+
/** Longer wait this action declares for itself, in milliseconds. */
|
|
34
|
+
timeoutMs?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this observes the editor or changes it (#817's taxonomy).
|
|
37
|
+
*
|
|
38
|
+
* MCP's own readOnlyHint is per TOOL, and every tool here is a category
|
|
39
|
+
* holding both reads and mutations, so the manifest cannot carry this. A
|
|
40
|
+
* harness that wants to auto-approve reads and prompt on writes reads it
|
|
41
|
+
* from here instead of maintaining its own list.
|
|
42
|
+
*
|
|
43
|
+
* read observes; landing it in the wrong editor changes nothing
|
|
44
|
+
* mutate may change the editor, its project on disk, or its process
|
|
45
|
+
* unknown decided by a parameter (an arbitrary python string, a wrapped
|
|
46
|
+
* tool name), and therefore gated exactly like mutate
|
|
47
|
+
*/
|
|
48
|
+
class: ActionClass;
|
|
49
|
+
params: ParamSchema[];
|
|
50
|
+
/**
|
|
51
|
+
* Choices the action offers, when it offers any.
|
|
52
|
+
*
|
|
53
|
+
* `level.delete_actor` takes `actorLabel OR actorPath`, and reporting both
|
|
54
|
+
* as required would have a caller send two ways of naming one actor, while
|
|
55
|
+
* reporting both as optional would have it send neither. Neither is
|
|
56
|
+
* individually required and the group is, so the group is what is published:
|
|
57
|
+
* each branch is a set of names that go together, and `required` says
|
|
58
|
+
* whether one of the branches has to be supplied.
|
|
59
|
+
*/
|
|
60
|
+
alternatives?: AlternativeGroup[];
|
|
61
|
+
/**
|
|
62
|
+
* Names promised by the description or read by `mapParams` that the category
|
|
63
|
+
* does not declare. Passing one of these has no effect.
|
|
64
|
+
*/
|
|
65
|
+
drift: string[];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* A parameter named by an action's `Params:` clause.
|
|
69
|
+
*
|
|
70
|
+
* `group` is set when the clause offered the name as one of a choice
|
|
71
|
+
* (`actorLabel OR actorPath`). A member of a choice is never individually
|
|
72
|
+
* required, however the clause marks it, because the handler takes either.
|
|
73
|
+
*/
|
|
74
|
+
export interface DocumentedParam {
|
|
75
|
+
name: string;
|
|
76
|
+
optional: boolean;
|
|
77
|
+
/** Index into the parse's `alternatives`, when this name is one of a choice. */
|
|
78
|
+
group?: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* A choice the clause offered.
|
|
82
|
+
*
|
|
83
|
+
* Each branch is the set of names that go together, so `name + packagePath? OR
|
|
84
|
+
* materialPath` has branches `[["name", "packagePath"], ["materialPath"]]`:
|
|
85
|
+
* what the caller supplies is one branch, not one name.
|
|
86
|
+
*/
|
|
87
|
+
export interface AlternativeGroup {
|
|
88
|
+
branches: string[][];
|
|
89
|
+
/** True when the action needs one of the branches. */
|
|
90
|
+
required: boolean;
|
|
91
|
+
}
|
|
92
|
+
export interface DocumentedParams {
|
|
93
|
+
params: DocumentedParam[];
|
|
94
|
+
alternatives: AlternativeGroup[];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Pull the parameters out of the `Params:` clause every action carries.
|
|
98
|
+
*
|
|
99
|
+
* `known`, when given, is the category's declared keys. It settles the two
|
|
100
|
+
* places where the clause alone is ambiguous - a name behind a head connective
|
|
101
|
+
* and a name inside a bracket - by asking whether the wire would accept it.
|
|
102
|
+
* It only ever admits a name, never refuses one that stands in plain parameter
|
|
103
|
+
* position, so a name the description invents is still reported and still
|
|
104
|
+
* shows up as drift.
|
|
105
|
+
*/
|
|
106
|
+
export declare function parseParams(description: string, known?: ReadonlySet<string>): DocumentedParams;
|
|
107
|
+
/** The parameters the `Params:` clause names, without the choice structure. */
|
|
108
|
+
export declare function parseParamsClause(description: string, known?: ReadonlySet<string>): DocumentedParam[];
|
|
109
|
+
/**
|
|
110
|
+
* The parameter keys an action's `mapParams` closure reads.
|
|
111
|
+
*
|
|
112
|
+
* Reading the compiled source is the only way to see this: `mapParams` is an
|
|
113
|
+
* opaque function by the time the registry is built. It is a best-effort
|
|
114
|
+
* signal - a closure that spreads its argument reads everything and shows
|
|
115
|
+
* nothing here - so it only ever adds names, never removes them.
|
|
116
|
+
*/
|
|
117
|
+
export declare function forwardedParams(spec: ActionSpec): string[];
|
|
118
|
+
/** Build the full schema for one action of one tool. */
|
|
119
|
+
export declare function actionSchema(tool: ToolDef, action: string): ActionSchema;
|
|
120
|
+
/**
|
|
121
|
+
* Resolve an action reference to the tools that provide it.
|
|
122
|
+
*
|
|
123
|
+
* Accepts `tool.action`, `tool:action`, `tool action`, or a bare action name,
|
|
124
|
+
* which may be provided by more than one category (`list`, `save`, `create`).
|
|
125
|
+
* All matches come back so the caller can disambiguate rather than being
|
|
126
|
+
* handed whichever one sorted first.
|
|
127
|
+
*/
|
|
128
|
+
export declare function resolveActionRef(ref: string, tools: ToolDef[]): Array<{
|
|
129
|
+
tool: ToolDef;
|
|
130
|
+
action: string;
|
|
131
|
+
}>;
|
|
132
|
+
/** Close spellings for an action name that did not resolve. */
|
|
133
|
+
export declare function suggestActions(ref: string, tools: ToolDef[], limit?: number): string[];
|
|
134
|
+
/**
|
|
135
|
+
* How close two action names are, on 0..1.
|
|
136
|
+
*
|
|
137
|
+
* Substring containment dominates, because the realistic miss is a caller who
|
|
138
|
+
* remembers part of the name (`bones` for `list_skeleton_bones`) rather than
|
|
139
|
+
* one who transposes two letters. Edit distance catches the typo case below
|
|
140
|
+
* that, and anything under a third of the name matching scores zero so the
|
|
141
|
+
* suggestion list stays short enough to read.
|
|
142
|
+
*/
|
|
143
|
+
export declare function similarity(a: string, b: string): number;
|
|
144
|
+
/**
|
|
145
|
+
* The closest spellings to a missed action name, out of a plain name list.
|
|
146
|
+
*
|
|
147
|
+
* Separate from `suggestActions` because the dispatcher has only its own
|
|
148
|
+
* category's keys at the point it fails, and importing the whole graph there
|
|
149
|
+
* would tie a per-call error path to the session registry.
|
|
150
|
+
*/
|
|
151
|
+
export declare function nearestActions(ref: string, available: string[], limit?: number): string[];
|
|
152
|
+
/**
|
|
153
|
+
* Every action on the surface, with the drift each one carries. Used by the
|
|
154
|
+
* schema-drift unit test and by `project(describe_action)` when it is asked
|
|
155
|
+
* for a whole category rather than one action.
|
|
156
|
+
*/
|
|
157
|
+
export declare function allActionSchemas(tools: ToolDef[]): ActionSchema[];
|