unreal-engine-mcp-server 0.4.7 → 0.5.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/.env.example +26 -0
- package/.env.production +38 -7
- package/.eslintrc.json +0 -54
- package/.eslintrc.override.json +8 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +94 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
- package/.github/copilot-instructions.md +478 -45
- package/.github/dependabot.yml +19 -0
- package/.github/labeler.yml +24 -0
- package/.github/labels.yml +70 -0
- package/.github/pull_request_template.md +42 -0
- package/.github/release-drafter.yml +148 -0
- package/.github/workflows/auto-merge.yml +38 -0
- package/.github/workflows/ci.yml +38 -0
- package/.github/workflows/dependency-review.yml +17 -0
- package/.github/workflows/gemini-issue-triage.yml +172 -0
- package/.github/workflows/greetings.yml +23 -0
- package/.github/workflows/labeler.yml +16 -0
- package/.github/workflows/links.yml +80 -0
- package/.github/workflows/pr-size-labeler.yml +137 -0
- package/.github/workflows/publish-mcp.yml +12 -7
- package/.github/workflows/release-drafter.yml +23 -0
- package/.github/workflows/release.yml +112 -0
- package/.github/workflows/semantic-pull-request.yml +35 -0
- package/.github/workflows/smoke-test.yml +36 -0
- package/.github/workflows/stale.yml +28 -0
- package/CHANGELOG.md +267 -31
- package/CONTRIBUTING.md +140 -0
- package/README.md +166 -71
- package/claude_desktop_config_example.json +7 -6
- package/dist/automation/bridge.d.ts +50 -0
- package/dist/automation/bridge.js +452 -0
- package/dist/automation/connection-manager.d.ts +23 -0
- package/dist/automation/connection-manager.js +107 -0
- package/dist/automation/handshake.d.ts +11 -0
- package/dist/automation/handshake.js +89 -0
- package/dist/automation/index.d.ts +3 -0
- package/dist/automation/index.js +3 -0
- package/dist/automation/message-handler.d.ts +12 -0
- package/dist/automation/message-handler.js +149 -0
- package/dist/automation/request-tracker.d.ts +25 -0
- package/dist/automation/request-tracker.js +98 -0
- package/dist/automation/types.d.ts +130 -0
- package/dist/automation/types.js +2 -0
- package/dist/cli.js +32 -5
- package/dist/config.d.ts +27 -0
- package/dist/config.js +60 -0
- package/dist/constants.d.ts +12 -0
- package/dist/constants.js +12 -0
- package/dist/graphql/resolvers.d.ts +268 -0
- package/dist/graphql/resolvers.js +743 -0
- package/dist/graphql/schema.d.ts +5 -0
- package/dist/graphql/schema.js +437 -0
- package/dist/graphql/server.d.ts +26 -0
- package/dist/graphql/server.js +115 -0
- package/dist/graphql/types.d.ts +7 -0
- package/dist/graphql/types.js +2 -0
- package/dist/handlers/resource-handlers.d.ts +20 -0
- package/dist/handlers/resource-handlers.js +180 -0
- package/dist/index.d.ts +31 -18
- package/dist/index.js +119 -619
- package/dist/prompts/index.js +4 -4
- package/dist/resources/actors.d.ts +17 -12
- package/dist/resources/actors.js +56 -76
- package/dist/resources/assets.d.ts +6 -14
- package/dist/resources/assets.js +115 -147
- package/dist/resources/levels.d.ts +13 -13
- package/dist/resources/levels.js +25 -34
- package/dist/server/resource-registry.d.ts +20 -0
- package/dist/server/resource-registry.js +37 -0
- package/dist/server/tool-registry.d.ts +23 -0
- package/dist/server/tool-registry.js +322 -0
- package/dist/server-setup.d.ts +21 -0
- package/dist/server-setup.js +111 -0
- package/dist/services/health-monitor.d.ts +34 -0
- package/dist/services/health-monitor.js +105 -0
- package/dist/services/metrics-server.d.ts +11 -0
- package/dist/services/metrics-server.js +105 -0
- package/dist/tools/actors.d.ts +147 -9
- package/dist/tools/actors.js +350 -311
- package/dist/tools/animation.d.ts +135 -4
- package/dist/tools/animation.js +510 -411
- package/dist/tools/assets.d.ts +117 -19
- package/dist/tools/assets.js +259 -284
- package/dist/tools/audio.d.ts +102 -42
- package/dist/tools/audio.js +272 -685
- package/dist/tools/base-tool.d.ts +17 -0
- package/dist/tools/base-tool.js +46 -0
- package/dist/tools/behavior-tree.d.ts +94 -0
- package/dist/tools/behavior-tree.js +39 -0
- package/dist/tools/blueprint/helpers.d.ts +29 -0
- package/dist/tools/blueprint/helpers.js +182 -0
- package/dist/tools/blueprint.d.ts +228 -118
- package/dist/tools/blueprint.js +685 -832
- package/dist/tools/consolidated-tool-definitions.d.ts +5462 -1781
- package/dist/tools/consolidated-tool-definitions.js +829 -496
- package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
- package/dist/tools/consolidated-tool-handlers.js +211 -1026
- package/dist/tools/debug.d.ts +143 -85
- package/dist/tools/debug.js +234 -180
- package/dist/tools/dynamic-handler-registry.d.ts +11 -0
- package/dist/tools/dynamic-handler-registry.js +101 -0
- package/dist/tools/editor.d.ts +139 -18
- package/dist/tools/editor.js +239 -244
- package/dist/tools/engine.d.ts +10 -4
- package/dist/tools/engine.js +13 -5
- package/dist/tools/environment.d.ts +36 -0
- package/dist/tools/environment.js +267 -0
- package/dist/tools/foliage.d.ts +105 -14
- package/dist/tools/foliage.js +219 -331
- package/dist/tools/handlers/actor-handlers.d.ts +3 -0
- package/dist/tools/handlers/actor-handlers.js +232 -0
- package/dist/tools/handlers/animation-handlers.d.ts +3 -0
- package/dist/tools/handlers/animation-handlers.js +185 -0
- package/dist/tools/handlers/argument-helper.d.ts +16 -0
- package/dist/tools/handlers/argument-helper.js +80 -0
- package/dist/tools/handlers/asset-handlers.d.ts +3 -0
- package/dist/tools/handlers/asset-handlers.js +496 -0
- package/dist/tools/handlers/audio-handlers.d.ts +3 -0
- package/dist/tools/handlers/audio-handlers.js +166 -0
- package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
- package/dist/tools/handlers/blueprint-handlers.js +358 -0
- package/dist/tools/handlers/common-handlers.d.ts +14 -0
- package/dist/tools/handlers/common-handlers.js +56 -0
- package/dist/tools/handlers/editor-handlers.d.ts +3 -0
- package/dist/tools/handlers/editor-handlers.js +119 -0
- package/dist/tools/handlers/effect-handlers.d.ts +3 -0
- package/dist/tools/handlers/effect-handlers.js +171 -0
- package/dist/tools/handlers/environment-handlers.d.ts +3 -0
- package/dist/tools/handlers/environment-handlers.js +170 -0
- package/dist/tools/handlers/graph-handlers.d.ts +3 -0
- package/dist/tools/handlers/graph-handlers.js +90 -0
- package/dist/tools/handlers/input-handlers.d.ts +3 -0
- package/dist/tools/handlers/input-handlers.js +21 -0
- package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
- package/dist/tools/handlers/inspect-handlers.js +383 -0
- package/dist/tools/handlers/level-handlers.d.ts +3 -0
- package/dist/tools/handlers/level-handlers.js +237 -0
- package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
- package/dist/tools/handlers/lighting-handlers.js +144 -0
- package/dist/tools/handlers/performance-handlers.d.ts +3 -0
- package/dist/tools/handlers/performance-handlers.js +130 -0
- package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
- package/dist/tools/handlers/pipeline-handlers.js +110 -0
- package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
- package/dist/tools/handlers/sequence-handlers.js +376 -0
- package/dist/tools/handlers/system-handlers.d.ts +4 -0
- package/dist/tools/handlers/system-handlers.js +506 -0
- package/dist/tools/input.d.ts +19 -0
- package/dist/tools/input.js +89 -0
- package/dist/tools/introspection.d.ts +103 -40
- package/dist/tools/introspection.js +425 -568
- package/dist/tools/landscape.d.ts +97 -36
- package/dist/tools/landscape.js +280 -409
- package/dist/tools/level.d.ts +130 -10
- package/dist/tools/level.js +639 -675
- package/dist/tools/lighting.d.ts +77 -38
- package/dist/tools/lighting.js +441 -943
- package/dist/tools/logs.d.ts +3 -3
- package/dist/tools/logs.js +5 -57
- package/dist/tools/materials.d.ts +91 -24
- package/dist/tools/materials.js +190 -118
- package/dist/tools/niagara.d.ts +149 -39
- package/dist/tools/niagara.js +232 -182
- package/dist/tools/performance.d.ts +27 -12
- package/dist/tools/performance.js +204 -122
- package/dist/tools/physics.d.ts +32 -77
- package/dist/tools/physics.js +171 -582
- package/dist/tools/property-dictionary.d.ts +13 -0
- package/dist/tools/property-dictionary.js +82 -0
- package/dist/tools/sequence.d.ts +73 -48
- package/dist/tools/sequence.js +196 -748
- package/dist/tools/tool-definition-utils.d.ts +59 -0
- package/dist/tools/tool-definition-utils.js +35 -0
- package/dist/tools/ui.d.ts +66 -34
- package/dist/tools/ui.js +134 -214
- package/dist/types/env.d.ts +0 -3
- package/dist/types/env.js +0 -7
- package/dist/types/tool-interfaces.d.ts +898 -0
- package/dist/types/tool-interfaces.js +2 -0
- package/dist/types/tool-types.d.ts +183 -19
- package/dist/types/tool-types.js +0 -4
- package/dist/unreal-bridge.d.ts +24 -131
- package/dist/unreal-bridge.js +364 -1506
- package/dist/utils/command-validator.d.ts +9 -0
- package/dist/utils/command-validator.js +67 -0
- package/dist/utils/elicitation.d.ts +1 -1
- package/dist/utils/elicitation.js +12 -15
- package/dist/utils/error-handler.d.ts +2 -51
- package/dist/utils/error-handler.js +11 -87
- package/dist/utils/ini-reader.d.ts +3 -0
- package/dist/utils/ini-reader.js +69 -0
- package/dist/utils/logger.js +9 -6
- package/dist/utils/normalize.d.ts +3 -0
- package/dist/utils/normalize.js +56 -0
- package/dist/utils/response-factory.d.ts +7 -0
- package/dist/utils/response-factory.js +33 -0
- package/dist/utils/response-validator.d.ts +3 -24
- package/dist/utils/response-validator.js +130 -81
- package/dist/utils/result-helpers.d.ts +4 -5
- package/dist/utils/result-helpers.js +15 -16
- package/dist/utils/safe-json.js +5 -11
- package/dist/utils/unreal-command-queue.d.ts +24 -0
- package/dist/utils/unreal-command-queue.js +120 -0
- package/dist/utils/validation.d.ts +0 -40
- package/dist/utils/validation.js +1 -78
- package/dist/wasm/index.d.ts +70 -0
- package/dist/wasm/index.js +535 -0
- package/docs/GraphQL-API.md +888 -0
- package/docs/Migration-Guide-v0.5.0.md +692 -0
- package/docs/Roadmap.md +53 -0
- package/docs/WebAssembly-Integration.md +628 -0
- package/docs/editor-plugin-extension.md +370 -0
- package/docs/handler-mapping.md +242 -0
- package/docs/native-automation-progress.md +128 -0
- package/docs/testing-guide.md +423 -0
- package/mcp-config-example.json +6 -6
- package/package.json +60 -27
- package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
- package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
- package/scripts/check-unreal-connection.mjs +19 -0
- package/scripts/clean-tmp.js +23 -0
- package/scripts/patch-wasm.js +26 -0
- package/scripts/run-all-tests.mjs +131 -0
- package/scripts/smoke-test.ts +94 -0
- package/scripts/sync-mcp-plugin.js +143 -0
- package/scripts/test-no-plugin-alternates.mjs +113 -0
- package/scripts/validate-server.js +46 -0
- package/scripts/verify-automation-bridge.js +200 -0
- package/server.json +57 -21
- package/src/automation/bridge.ts +558 -0
- package/src/automation/connection-manager.ts +130 -0
- package/src/automation/handshake.ts +99 -0
- package/src/automation/index.ts +2 -0
- package/src/automation/message-handler.ts +167 -0
- package/src/automation/request-tracker.ts +123 -0
- package/src/automation/types.ts +107 -0
- package/src/cli.ts +33 -6
- package/src/config.ts +73 -0
- package/src/constants.ts +12 -0
- package/src/graphql/resolvers.ts +1010 -0
- package/src/graphql/schema.ts +452 -0
- package/src/graphql/server.ts +154 -0
- package/src/graphql/types.ts +7 -0
- package/src/handlers/resource-handlers.ts +186 -0
- package/src/index.ts +152 -663
- package/src/prompts/index.ts +4 -4
- package/src/resources/actors.ts +58 -76
- package/src/resources/assets.ts +147 -134
- package/src/resources/levels.ts +28 -33
- package/src/server/resource-registry.ts +47 -0
- package/src/server/tool-registry.ts +354 -0
- package/src/server-setup.ts +148 -0
- package/src/services/health-monitor.ts +132 -0
- package/src/services/metrics-server.ts +142 -0
- package/src/tools/actors.ts +417 -322
- package/src/tools/animation.ts +671 -461
- package/src/tools/assets.ts +353 -289
- package/src/tools/audio.ts +323 -766
- package/src/tools/base-tool.ts +52 -0
- package/src/tools/behavior-tree.ts +45 -0
- package/src/tools/blueprint/helpers.ts +189 -0
- package/src/tools/blueprint.ts +787 -965
- package/src/tools/consolidated-tool-definitions.ts +993 -515
- package/src/tools/consolidated-tool-handlers.ts +272 -1139
- package/src/tools/debug.ts +292 -187
- package/src/tools/dynamic-handler-registry.ts +151 -0
- package/src/tools/editor.ts +309 -246
- package/src/tools/engine.ts +14 -3
- package/src/tools/environment.ts +287 -0
- package/src/tools/foliage.ts +314 -379
- package/src/tools/handlers/actor-handlers.ts +271 -0
- package/src/tools/handlers/animation-handlers.ts +237 -0
- package/src/tools/handlers/argument-helper.ts +142 -0
- package/src/tools/handlers/asset-handlers.ts +532 -0
- package/src/tools/handlers/audio-handlers.ts +194 -0
- package/src/tools/handlers/blueprint-handlers.ts +380 -0
- package/src/tools/handlers/common-handlers.ts +87 -0
- package/src/tools/handlers/editor-handlers.ts +123 -0
- package/src/tools/handlers/effect-handlers.ts +220 -0
- package/src/tools/handlers/environment-handlers.ts +183 -0
- package/src/tools/handlers/graph-handlers.ts +116 -0
- package/src/tools/handlers/input-handlers.ts +28 -0
- package/src/tools/handlers/inspect-handlers.ts +450 -0
- package/src/tools/handlers/level-handlers.ts +252 -0
- package/src/tools/handlers/lighting-handlers.ts +147 -0
- package/src/tools/handlers/performance-handlers.ts +132 -0
- package/src/tools/handlers/pipeline-handlers.ts +127 -0
- package/src/tools/handlers/sequence-handlers.ts +415 -0
- package/src/tools/handlers/system-handlers.ts +564 -0
- package/src/tools/input.ts +101 -0
- package/src/tools/introspection.ts +493 -584
- package/src/tools/landscape.ts +394 -489
- package/src/tools/level.ts +752 -694
- package/src/tools/lighting.ts +583 -984
- package/src/tools/logs.ts +9 -57
- package/src/tools/materials.ts +231 -121
- package/src/tools/niagara.ts +293 -168
- package/src/tools/performance.ts +320 -168
- package/src/tools/physics.ts +268 -613
- package/src/tools/property-dictionary.ts +98 -0
- package/src/tools/sequence.ts +255 -815
- package/src/tools/tool-definition-utils.ts +35 -0
- package/src/tools/ui.ts +207 -283
- package/src/types/env.ts +0 -10
- package/src/types/tool-interfaces.ts +250 -0
- package/src/types/tool-types.ts +243 -21
- package/src/unreal-bridge.ts +460 -1550
- package/src/utils/command-validator.ts +75 -0
- package/src/utils/elicitation.ts +10 -7
- package/src/utils/error-handler.ts +14 -90
- package/src/utils/ini-reader.ts +86 -0
- package/src/utils/logger.ts +8 -3
- package/src/utils/normalize.ts +60 -0
- package/src/utils/response-factory.ts +39 -0
- package/src/utils/response-validator.ts +176 -56
- package/src/utils/result-helpers.ts +21 -19
- package/src/utils/safe-json.ts +14 -11
- package/src/utils/unreal-command-queue.ts +152 -0
- package/src/utils/validation.ts +4 -1
- package/src/wasm/index.ts +838 -0
- package/test-server.mjs +100 -0
- package/tests/run-unreal-tool-tests.mjs +242 -14
- package/tests/test-animation.mjs +44 -0
- package/tests/test-asset-advanced.mjs +82 -0
- package/tests/test-asset-errors.mjs +35 -0
- package/tests/test-audio.mjs +219 -0
- package/tests/test-automation-timeouts.mjs +98 -0
- package/tests/test-behavior-tree.mjs +261 -0
- package/tests/test-blueprint-events.mjs +35 -0
- package/tests/test-blueprint-graph.mjs +79 -0
- package/tests/test-blueprint.mjs +577 -0
- package/tests/test-client-mode.mjs +86 -0
- package/tests/test-console-command.mjs +56 -0
- package/tests/test-control-actor.mjs +425 -0
- package/tests/test-control-editor.mjs +80 -0
- package/tests/test-extra-tools.mjs +38 -0
- package/tests/test-graphql.mjs +322 -0
- package/tests/test-inspect.mjs +72 -0
- package/tests/test-landscape.mjs +60 -0
- package/tests/test-manage-asset.mjs +438 -0
- package/tests/test-manage-level.mjs +70 -0
- package/tests/test-materials.mjs +356 -0
- package/tests/test-niagara.mjs +185 -0
- package/tests/test-no-inline-python.mjs +122 -0
- package/tests/test-plugin-handshake.mjs +82 -0
- package/tests/test-render.mjs +33 -0
- package/tests/test-runner.mjs +933 -0
- package/tests/test-search-assets.mjs +66 -0
- package/tests/test-sequence.mjs +68 -0
- package/tests/test-system.mjs +57 -0
- package/tests/test-wasm.mjs +193 -0
- package/tests/test-world-partition.mjs +215 -0
- package/tsconfig.json +3 -3
- package/wasm/Cargo.lock +363 -0
- package/wasm/Cargo.toml +42 -0
- package/wasm/LICENSE +21 -0
- package/wasm/README.md +253 -0
- package/wasm/src/dependency_resolver.rs +377 -0
- package/wasm/src/lib.rs +153 -0
- package/wasm/src/property_parser.rs +271 -0
- package/wasm/src/transform_math.rs +396 -0
- package/wasm/tests/integration.rs +109 -0
- package/.github/workflows/smithery-build.yml +0 -29
- package/dist/tools/build_environment_advanced.d.ts +0 -65
- package/dist/tools/build_environment_advanced.js +0 -633
- package/dist/tools/rc.d.ts +0 -110
- package/dist/tools/rc.js +0 -437
- package/dist/tools/visual.d.ts +0 -40
- package/dist/tools/visual.js +0 -282
- package/dist/utils/http.d.ts +0 -6
- package/dist/utils/http.js +0 -151
- package/dist/utils/python-output.d.ts +0 -18
- package/dist/utils/python-output.js +0 -290
- package/dist/utils/python.d.ts +0 -2
- package/dist/utils/python.js +0 -4
- package/dist/utils/stdio-redirect.d.ts +0 -2
- package/dist/utils/stdio-redirect.js +0 -20
- package/docs/unreal-tool-test-cases.md +0 -574
- package/smithery.yaml +0 -29
- package/src/tools/build_environment_advanced.ts +0 -732
- package/src/tools/rc.ts +0 -515
- package/src/tools/visual.ts +0 -281
- package/src/utils/http.ts +0 -187
- package/src/utils/python-output.ts +0 -351
- package/src/utils/python.ts +0 -3
- package/src/utils/stdio-redirect.ts +0 -18
|
@@ -1,660 +1,891 @@
|
|
|
1
|
-
|
|
1
|
+
import { commonSchemas } from './tool-definition-utils.js';
|
|
2
2
|
export const consolidatedToolDefinitions = [
|
|
3
|
-
// 1. ASSET MANAGER - Combines asset operations
|
|
4
3
|
{
|
|
5
4
|
name: 'manage_asset',
|
|
6
|
-
description: `
|
|
5
|
+
description: `Comprehensive asset management suite. Handles import/export, basic file operations, dependency analysis, source control, and specialized graph editing (Materials, Behavior Trees).
|
|
7
6
|
|
|
8
7
|
Use it when you need to:
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
8
|
+
- manage asset lifecycle (import, duplicate, rename, delete).
|
|
9
|
+
- organize project structure (folders, redirects).
|
|
10
|
+
- analyze dependencies or fix reference issues.
|
|
11
|
+
- edit Material graphs or Behavior Trees.
|
|
12
|
+
- generate basic assets like Materials, Textures, or Blueprints (via asset creation).
|
|
12
13
|
|
|
13
|
-
Supported actions:
|
|
14
|
+
Supported actions:
|
|
15
|
+
- Core: list, import, duplicate, rename, move, delete, delete_assets, create_folder, search_assets.
|
|
16
|
+
- Utils: get_dependencies, get_source_control_state, analyze_graph, create_thumbnail, set_tags, get_metadata, set_metadata, validate, fixup_redirectors, find_by_tag, generate_report.
|
|
17
|
+
- Creation: create_material, create_material_instance, create_render_target.
|
|
18
|
+
- Rendering: nanite_rebuild_mesh.
|
|
19
|
+
- Material Graph: add_material_node, connect_material_pins, remove_material_node, break_material_connections, get_material_node_details.
|
|
20
|
+
- Behavior Tree: add_bt_node, connect_bt_nodes, remove_bt_node, break_bt_connections, set_bt_node_properties.`,
|
|
14
21
|
inputSchema: {
|
|
15
22
|
type: 'object',
|
|
16
23
|
properties: {
|
|
17
24
|
action: {
|
|
18
25
|
type: 'string',
|
|
19
|
-
enum: [
|
|
26
|
+
enum: [
|
|
27
|
+
'list', 'import', 'duplicate', 'rename', 'move', 'delete', 'delete_asset', 'delete_assets', 'create_folder', 'search_assets',
|
|
28
|
+
'get_dependencies', 'get_source_control_state', 'analyze_graph', 'get_asset_graph', 'create_thumbnail', 'set_tags', 'get_metadata', 'set_metadata', 'validate', 'fixup_redirectors', 'find_by_tag', 'generate_report',
|
|
29
|
+
'create_material', 'create_material_instance', 'create_render_target', 'generate_lods', 'add_material_parameter', 'list_instances', 'reset_instance_parameters', 'exists', 'get_material_stats',
|
|
30
|
+
'nanite_rebuild_mesh',
|
|
31
|
+
'add_material_node', 'connect_material_pins', 'remove_material_node', 'break_material_connections', 'get_material_node_details', 'rebuild_material'
|
|
32
|
+
],
|
|
20
33
|
description: 'Action to perform'
|
|
21
34
|
},
|
|
22
|
-
|
|
23
|
-
directory: { type: 'string', description: 'Directory path to list
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
35
|
+
assetPath: { type: 'string', description: 'Target asset path (e.g., "/Game/MyAsset").' },
|
|
36
|
+
directory: { type: 'string', description: 'Directory path to list.' },
|
|
37
|
+
classNames: { type: 'array', items: { type: 'string' }, description: 'Class names filter.' },
|
|
38
|
+
packagePaths: { type: 'array', items: { type: 'string' }, description: 'Package paths to search.' },
|
|
39
|
+
recursivePaths: { type: 'boolean' },
|
|
40
|
+
recursiveClasses: { type: 'boolean' },
|
|
41
|
+
limit: { type: 'number' },
|
|
42
|
+
sourcePath: { type: 'string', description: 'Source file path on disk.' },
|
|
43
|
+
destinationPath: { type: 'string', description: 'Destination content path.' },
|
|
44
|
+
assetPaths: { type: 'array', items: { type: 'string' }, description: 'Batch asset paths.' },
|
|
45
|
+
lodCount: { type: 'number', description: 'Number of LODs to generate.' },
|
|
46
|
+
reductionSettings: { type: 'object', description: 'LOD reduction settings.' },
|
|
47
|
+
nodeName: { type: 'string', description: 'Variable name or Function name, depending on node type' },
|
|
48
|
+
eventName: { type: 'string', description: 'For Event nodes (e.g. ReceiveBeginPlay) or CustomEvent nodes' },
|
|
49
|
+
memberClass: { type: 'string', description: 'For Event nodes, the class defining the event (optional)' },
|
|
50
|
+
posX: { type: 'number' },
|
|
51
|
+
newName: { type: 'string', description: 'New name for rename/duplicate.' },
|
|
52
|
+
overwrite: { type: 'boolean' },
|
|
53
|
+
save: { type: 'boolean' },
|
|
54
|
+
fixupRedirectors: { type: 'boolean' },
|
|
55
|
+
directoryPath: { type: 'string' },
|
|
56
|
+
name: { type: 'string', description: 'Name of new asset.' },
|
|
57
|
+
path: { type: 'string', description: 'Directory to create asset in.' },
|
|
58
|
+
parentMaterial: { type: 'string', description: 'Parent material for instances.' },
|
|
59
|
+
parameters: { type: 'object', description: 'Material instance parameters.' },
|
|
60
|
+
width: { type: 'number' },
|
|
61
|
+
height: { type: 'number' },
|
|
62
|
+
format: { type: 'string' },
|
|
63
|
+
meshPath: { type: 'string' },
|
|
64
|
+
tag: { type: 'string' },
|
|
65
|
+
metadata: { type: 'object' },
|
|
66
|
+
graphName: { type: 'string' },
|
|
67
|
+
nodeType: { type: 'string' },
|
|
68
|
+
nodeId: { type: 'string' },
|
|
69
|
+
fromNodeId: { type: 'string' },
|
|
70
|
+
fromPin: { type: 'string' },
|
|
71
|
+
toNodeId: { type: 'string' },
|
|
72
|
+
toPin: { type: 'string' },
|
|
73
|
+
parameterName: { type: 'string' },
|
|
74
|
+
value: { description: 'Property value (number, string, etc).' },
|
|
75
|
+
x: { type: 'number' },
|
|
76
|
+
y: { type: 'number' },
|
|
77
|
+
comment: { type: 'string' },
|
|
78
|
+
parentNodeId: { type: 'string' },
|
|
79
|
+
childNodeId: { type: 'string' },
|
|
80
|
+
maxDepth: { type: 'number' }
|
|
30
81
|
},
|
|
31
82
|
required: ['action']
|
|
32
83
|
},
|
|
33
84
|
outputSchema: {
|
|
34
85
|
type: 'object',
|
|
35
86
|
properties: {
|
|
36
|
-
success: { type: 'boolean'
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
Path: { type: 'string' },
|
|
45
|
-
Class: { type: 'string' },
|
|
46
|
-
PackagePath: { type: 'string' }
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
paths: { type: 'array', items: { type: 'string' }, description: 'Imported asset paths (for import)' },
|
|
51
|
-
materialPath: { type: 'string', description: 'Created material path (for create_material)' },
|
|
52
|
-
message: { type: 'string', description: 'Status message' },
|
|
53
|
-
error: { type: 'string', description: 'Error message if failed' }
|
|
87
|
+
success: { type: 'boolean' },
|
|
88
|
+
message: { type: 'string' },
|
|
89
|
+
assets: { type: 'array', items: { type: 'object' } },
|
|
90
|
+
paths: { type: 'array', items: { type: 'string' } },
|
|
91
|
+
path: { type: 'string' },
|
|
92
|
+
error: { type: 'string' },
|
|
93
|
+
nodeId: { type: 'string' },
|
|
94
|
+
details: { type: 'object' }
|
|
54
95
|
}
|
|
55
96
|
}
|
|
56
97
|
},
|
|
57
|
-
// 2. ACTOR CONTROL - Combines actor operations
|
|
58
98
|
{
|
|
59
|
-
name: '
|
|
60
|
-
description: `
|
|
99
|
+
name: 'manage_blueprint',
|
|
100
|
+
description: `Blueprint authoring and editing tool.
|
|
61
101
|
|
|
62
102
|
Use it when you need to:
|
|
63
|
-
-
|
|
64
|
-
-
|
|
65
|
-
-
|
|
103
|
+
- create new Blueprints.
|
|
104
|
+
- inspect existing Blueprints (get_blueprint).
|
|
105
|
+
- modify the component hierarchy (SCS).
|
|
106
|
+
- edit the Blueprint graph (nodes, pins, properties).
|
|
66
107
|
|
|
67
|
-
Supported actions:
|
|
108
|
+
Supported actions:
|
|
109
|
+
- Lifecycle: create, get_blueprint.
|
|
110
|
+
- Components (SCS): add_component, set_default, modify_scs, get_scs, add_scs_component, remove_scs_component, reparent_scs_component, set_scs_transform, set_scs_property.
|
|
111
|
+
- Helpers: ensure_exists, probe_handle, add_variable, add_function, add_event, add_construction_script, set_variable_metadata, set_metadata.
|
|
112
|
+
- Graph: create_node, delete_node, connect_pins, break_pin_links, set_node_property, create_reroute_node, get_node_details, get_graph_details, get_pin_details.`,
|
|
68
113
|
inputSchema: {
|
|
69
114
|
type: 'object',
|
|
70
115
|
properties: {
|
|
71
116
|
action: {
|
|
72
117
|
type: 'string',
|
|
73
|
-
enum: [
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
description: 'Actor class (e.g., "StaticMeshActor", "CameraActor") OR asset path (e.g., "/Engine/BasicShapes/Cube", "/Game/MyMesh"). Asset paths will automatically spawn as StaticMeshActor with the mesh applied. Required for spawn action.'
|
|
81
|
-
},
|
|
82
|
-
// Transform
|
|
83
|
-
location: {
|
|
84
|
-
type: 'object',
|
|
85
|
-
description: 'World space location in centimeters (Unreal units). Optional for spawn, defaults to origin.',
|
|
86
|
-
properties: {
|
|
87
|
-
x: { type: 'number', description: 'X coordinate (forward axis in Unreal)' },
|
|
88
|
-
y: { type: 'number', description: 'Y coordinate (right axis in Unreal)' },
|
|
89
|
-
z: { type: 'number', description: 'Z coordinate (up axis in Unreal)' }
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
rotation: {
|
|
93
|
-
type: 'object',
|
|
94
|
-
description: 'World space rotation in degrees. Optional for spawn, defaults to zero rotation.',
|
|
95
|
-
properties: {
|
|
96
|
-
pitch: { type: 'number', description: 'Pitch rotation in degrees (Y-axis rotation)' },
|
|
97
|
-
yaw: { type: 'number', description: 'Yaw rotation in degrees (Z-axis rotation)' },
|
|
98
|
-
roll: { type: 'number', description: 'Roll rotation in degrees (X-axis rotation)' }
|
|
99
|
-
}
|
|
118
|
+
enum: [
|
|
119
|
+
'create', 'get_blueprint', 'get', 'compile',
|
|
120
|
+
'add_component', 'set_default', 'modify_scs', 'get_scs', 'add_scs_component', 'remove_scs_component', 'reparent_scs_component', 'set_scs_transform', 'set_scs_property',
|
|
121
|
+
'ensure_exists', 'probe_handle', 'add_variable', 'remove_variable', 'rename_variable', 'add_function', 'add_event', 'remove_event', 'add_construction_script', 'set_variable_metadata', 'set_metadata',
|
|
122
|
+
'create_node', 'add_node', 'delete_node', 'connect_pins', 'break_pin_links', 'set_node_property', 'create_reroute_node', 'get_node_details', 'get_graph_details', 'get_pin_details'
|
|
123
|
+
],
|
|
124
|
+
description: 'Blueprint action'
|
|
100
125
|
},
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
126
|
+
name: { type: 'string', description: 'Blueprint name.' },
|
|
127
|
+
blueprintPath: { type: 'string', description: 'Blueprint asset path.' },
|
|
128
|
+
blueprintType: { type: 'string', description: 'Parent class (e.g., Actor).' },
|
|
129
|
+
savePath: { type: 'string' },
|
|
130
|
+
componentType: { type: 'string' },
|
|
131
|
+
componentName: { type: 'string' },
|
|
132
|
+
componentClass: { type: 'string' },
|
|
133
|
+
attachTo: { type: 'string' },
|
|
134
|
+
newParent: { type: 'string' },
|
|
135
|
+
propertyName: { type: 'string' },
|
|
136
|
+
variableName: { type: 'string', description: 'Name of the variable.' },
|
|
137
|
+
oldName: { type: 'string' },
|
|
138
|
+
newName: { type: 'string' },
|
|
139
|
+
value: { description: 'Value to set.' },
|
|
140
|
+
metadata: { type: 'object' },
|
|
141
|
+
properties: { type: 'object', description: 'Initial CDO properties for new blueprints.' },
|
|
142
|
+
graphName: { type: 'string' },
|
|
143
|
+
nodeType: { type: 'string' },
|
|
144
|
+
nodeId: { type: 'string' },
|
|
145
|
+
pinName: { type: 'string' },
|
|
146
|
+
linkedTo: { type: 'string' },
|
|
147
|
+
memberName: { type: 'string' },
|
|
148
|
+
x: { type: 'number' },
|
|
149
|
+
y: { type: 'number' },
|
|
150
|
+
location: { type: 'array', items: { type: 'number' } },
|
|
151
|
+
rotation: { type: 'array', items: { type: 'number' } },
|
|
152
|
+
scale: { type: 'array', items: { type: 'number' } },
|
|
153
|
+
operations: { type: 'array', items: { type: 'object' } },
|
|
154
|
+
compile: { type: 'boolean' },
|
|
155
|
+
save: { type: 'boolean' },
|
|
156
|
+
eventType: { type: 'string', description: 'Event type (e.g. "BeginPlay", "Tick", "custom").' },
|
|
157
|
+
customEventName: { type: 'string', description: 'Name for custom event.' },
|
|
158
|
+
parameters: { type: 'array', items: { type: 'object' }, description: 'Parameters for the event.' }
|
|
111
159
|
},
|
|
112
160
|
required: ['action']
|
|
113
161
|
},
|
|
114
162
|
outputSchema: {
|
|
115
163
|
type: 'object',
|
|
116
164
|
properties: {
|
|
117
|
-
success: { type: 'boolean'
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
error: { type: 'string', description: 'Error message if failed' }
|
|
165
|
+
success: { type: 'boolean' },
|
|
166
|
+
blueprintPath: { type: 'string' },
|
|
167
|
+
message: { type: 'string' },
|
|
168
|
+
error: { type: 'string' },
|
|
169
|
+
blueprint: { type: 'object' }
|
|
123
170
|
}
|
|
124
171
|
}
|
|
125
172
|
},
|
|
126
|
-
// 3. EDITOR CONTROL - Combines editor operations
|
|
127
173
|
{
|
|
128
|
-
name: '
|
|
129
|
-
description: `
|
|
174
|
+
name: 'control_actor',
|
|
175
|
+
description: `Viewport actor manipulation.
|
|
130
176
|
|
|
131
177
|
Use it when you need to:
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
-
-
|
|
178
|
+
- spawn, destroy, or duplicate actors.
|
|
179
|
+
- move/rotate/scale actors.
|
|
180
|
+
- modify actor components or tags.
|
|
181
|
+
- apply physics forces.
|
|
135
182
|
|
|
136
|
-
Supported actions:
|
|
183
|
+
Supported actions: spawn, spawn_blueprint, delete, delete_by_tag, duplicate, apply_force, set_transform, get_transform, set_visibility, add_component, set_component_properties, get_components, add_tag, remove_tag, find_by_tag, find_by_name, list, set_blueprint_variables, create_snapshot, attach, detach.`,
|
|
137
184
|
inputSchema: {
|
|
138
185
|
type: 'object',
|
|
139
186
|
properties: {
|
|
140
187
|
action: {
|
|
141
188
|
type: 'string',
|
|
142
|
-
enum: [
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
x: { type: 'number', description: 'X coordinate in centimeters' },
|
|
151
|
-
y: { type: 'number', description: 'Y coordinate in centimeters' },
|
|
152
|
-
z: { type: 'number', description: 'Z coordinate in centimeters' }
|
|
153
|
-
}
|
|
154
|
-
},
|
|
155
|
-
rotation: {
|
|
156
|
-
type: 'object',
|
|
157
|
-
description: 'Camera rotation for set_camera action. All rotation components required.',
|
|
158
|
-
properties: {
|
|
159
|
-
pitch: { type: 'number', description: 'Pitch in degrees' },
|
|
160
|
-
yaw: { type: 'number', description: 'Yaw in degrees' },
|
|
161
|
-
roll: { type: 'number', description: 'Roll in degrees' }
|
|
162
|
-
}
|
|
189
|
+
enum: [
|
|
190
|
+
'spawn', 'spawn_blueprint', 'delete', 'delete_by_tag', 'duplicate',
|
|
191
|
+
'apply_force', 'set_transform', 'get_transform', 'set_visibility',
|
|
192
|
+
'add_component', 'set_component_properties', 'get_components',
|
|
193
|
+
'add_tag', 'remove_tag', 'find_by_tag', 'find_by_name', 'list', 'set_blueprint_variables',
|
|
194
|
+
'create_snapshot', 'attach', 'detach'
|
|
195
|
+
],
|
|
196
|
+
description: 'Action to perform'
|
|
163
197
|
},
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
}
|
|
198
|
+
actorName: { type: 'string' },
|
|
199
|
+
childActor: { type: 'string', description: 'Name of the child actor (alias for actorName in detach, or specific child for attach).' },
|
|
200
|
+
parentActor: { type: 'string' },
|
|
201
|
+
classPath: { type: 'string' },
|
|
202
|
+
meshPath: { type: 'string' },
|
|
203
|
+
blueprintPath: { type: 'string' },
|
|
204
|
+
location: commonSchemas.location,
|
|
205
|
+
rotation: commonSchemas.rotation,
|
|
206
|
+
scale: commonSchemas.scale,
|
|
207
|
+
force: commonSchemas.vector3,
|
|
208
|
+
componentType: { type: 'string' },
|
|
209
|
+
componentName: { type: 'string' },
|
|
210
|
+
properties: { type: 'object' },
|
|
211
|
+
visible: { type: 'boolean' },
|
|
212
|
+
newName: { type: 'string' },
|
|
213
|
+
tag: { type: 'string' },
|
|
214
|
+
variables: { type: 'object' },
|
|
215
|
+
snapshotName: { type: 'string' }
|
|
169
216
|
},
|
|
170
217
|
required: ['action']
|
|
171
218
|
},
|
|
172
219
|
outputSchema: {
|
|
173
220
|
type: 'object',
|
|
174
221
|
properties: {
|
|
175
|
-
success: { type: 'boolean'
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
description: 'Camera location [x, y, z]'
|
|
181
|
-
},
|
|
182
|
-
rotation: {
|
|
222
|
+
success: { type: 'boolean' },
|
|
223
|
+
actor: { type: 'string' },
|
|
224
|
+
actorPath: { type: 'string' },
|
|
225
|
+
message: { type: 'string' },
|
|
226
|
+
components: {
|
|
183
227
|
type: 'array',
|
|
184
|
-
items: {
|
|
185
|
-
|
|
228
|
+
items: {
|
|
229
|
+
type: 'object',
|
|
230
|
+
properties: {
|
|
231
|
+
name: { type: 'string' },
|
|
232
|
+
class: { type: 'string' },
|
|
233
|
+
relativeLocation: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
|
|
234
|
+
relativeRotation: { type: 'object', properties: { pitch: { type: 'number' }, yaw: { type: 'number' }, roll: { type: 'number' } } },
|
|
235
|
+
relativeScale: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
|
|
236
|
+
}
|
|
237
|
+
}
|
|
186
238
|
},
|
|
187
|
-
|
|
188
|
-
message: { type: 'string', description: 'Status message' }
|
|
239
|
+
data: { type: 'object' }
|
|
189
240
|
}
|
|
190
241
|
}
|
|
191
242
|
},
|
|
192
|
-
// 4. LEVEL MANAGER - Combines level and lighting operations
|
|
193
243
|
{
|
|
194
|
-
name: '
|
|
195
|
-
description: `
|
|
244
|
+
name: 'control_editor',
|
|
245
|
+
description: `Editor session control.
|
|
196
246
|
|
|
197
247
|
Use it when you need to:
|
|
198
|
-
-
|
|
199
|
-
-
|
|
200
|
-
-
|
|
201
|
-
-
|
|
248
|
+
- control PIE (Play In Editor).
|
|
249
|
+
- move the viewport camera.
|
|
250
|
+
- execute console commands (legacy).
|
|
251
|
+
- take screenshots/bookmarks.
|
|
252
|
+
- simulate input (UI).
|
|
202
253
|
|
|
203
|
-
Supported actions:
|
|
254
|
+
Supported actions: play, stop, stop_pie, pause, resume, set_game_speed, eject, possess, set_camera, set_camera_position, set_camera_fov, set_view_mode, set_viewport_resolution, console_command, screenshot, step_frame, start_recording, stop_recording, create_bookmark, jump_to_bookmark, set_preferences, set_viewport_realtime, open_asset, simulate_input.`,
|
|
204
255
|
inputSchema: {
|
|
205
256
|
type: 'object',
|
|
206
257
|
properties: {
|
|
207
258
|
action: {
|
|
208
259
|
type: 'string',
|
|
209
|
-
enum: [
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
shouldBeVisible: { type: 'boolean', description: 'Whether the streaming level should be visible after loading. Optional for stream action.' },
|
|
218
|
-
// Lighting
|
|
219
|
-
lightType: {
|
|
220
|
-
type: 'string',
|
|
221
|
-
enum: ['Directional', 'Point', 'Spot', 'Rect'],
|
|
222
|
-
description: 'Type of light to create. Directional for sun-like lighting, Point for omni-directional, Spot for cone-shaped, Rect for area lighting. Required for create_light.'
|
|
223
|
-
},
|
|
224
|
-
name: { type: 'string', description: 'Name for the spawned light actor. Optional, auto-generated if not provided.' },
|
|
225
|
-
location: {
|
|
226
|
-
type: 'object',
|
|
227
|
-
description: 'World space location for light placement in centimeters. Optional for create_light, defaults to origin.',
|
|
228
|
-
properties: {
|
|
229
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
230
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
231
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
232
|
-
}
|
|
260
|
+
enum: [
|
|
261
|
+
'play', 'stop', 'stop_pie', 'pause', 'resume', 'set_game_speed', 'eject', 'possess',
|
|
262
|
+
'set_camera', 'set_camera_position', 'set_camera_fov', 'set_view_mode',
|
|
263
|
+
'set_viewport_resolution', 'console_command', 'execute_command', 'screenshot', 'step_frame',
|
|
264
|
+
'start_recording', 'stop_recording', 'create_bookmark', 'jump_to_bookmark',
|
|
265
|
+
'set_preferences', 'set_viewport_realtime', 'open_asset', 'simulate_input'
|
|
266
|
+
],
|
|
267
|
+
description: 'Editor action'
|
|
233
268
|
},
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
}
|
|
269
|
+
location: commonSchemas.location,
|
|
270
|
+
rotation: commonSchemas.rotation,
|
|
271
|
+
viewMode: { type: 'string' },
|
|
272
|
+
enabled: { type: 'boolean', description: 'For set_viewport_realtime.' },
|
|
273
|
+
speed: { type: 'number' },
|
|
274
|
+
filename: { type: 'string' },
|
|
275
|
+
fov: { type: 'number' },
|
|
276
|
+
width: { type: 'number' },
|
|
277
|
+
height: { type: 'number' },
|
|
278
|
+
command: { type: 'string' },
|
|
279
|
+
steps: { type: 'integer' },
|
|
280
|
+
bookmarkName: { type: 'string' },
|
|
281
|
+
assetPath: { type: 'string' },
|
|
282
|
+
keyName: { type: 'string' },
|
|
283
|
+
eventType: { type: 'string', enum: ['KeyDown', 'KeyUp', 'Both'] }
|
|
240
284
|
},
|
|
241
285
|
required: ['action']
|
|
242
286
|
},
|
|
243
287
|
outputSchema: {
|
|
244
288
|
type: 'object',
|
|
245
289
|
properties: {
|
|
246
|
-
success: { type: 'boolean'
|
|
247
|
-
|
|
248
|
-
loaded: { type: 'boolean', description: 'Level loaded state' },
|
|
249
|
-
visible: { type: 'boolean', description: 'Level visibility' },
|
|
250
|
-
lightName: { type: 'string', description: 'Created light name' },
|
|
251
|
-
buildQuality: { type: 'string', description: 'Lighting build quality used' },
|
|
252
|
-
message: { type: 'string', description: 'Status message' }
|
|
290
|
+
success: { type: 'boolean' },
|
|
291
|
+
message: { type: 'string' }
|
|
253
292
|
}
|
|
254
293
|
}
|
|
255
294
|
},
|
|
256
|
-
// 5. ANIMATION SYSTEM - Combines animation and physics setup
|
|
257
295
|
{
|
|
258
|
-
name: '
|
|
259
|
-
description: `
|
|
296
|
+
name: 'manage_level',
|
|
297
|
+
description: `Level and World Partition management.
|
|
260
298
|
|
|
261
299
|
Use it when you need to:
|
|
262
|
-
-
|
|
263
|
-
-
|
|
264
|
-
-
|
|
300
|
+
- load/save levels.
|
|
301
|
+
- manage streaming levels.
|
|
302
|
+
- build lighting.
|
|
303
|
+
- load world partition cells or toggle data layers.
|
|
265
304
|
|
|
266
|
-
Supported actions:
|
|
305
|
+
Supported actions: load, save, stream, create_level, create_light, build_lighting, set_metadata, load_cells, set_datalayer, export_level, import_level, list_levels, get_summary, delete, validate_level.`,
|
|
267
306
|
inputSchema: {
|
|
268
307
|
type: 'object',
|
|
269
308
|
properties: {
|
|
270
309
|
action: {
|
|
271
310
|
type: 'string',
|
|
272
|
-
enum: [
|
|
273
|
-
|
|
311
|
+
enum: [
|
|
312
|
+
'load', 'save', 'save_as', 'save_level_as', 'stream', 'create_level', 'create_light', 'build_lighting',
|
|
313
|
+
'set_metadata', 'load_cells', 'set_datalayer',
|
|
314
|
+
'export_level', 'import_level', 'list_levels', 'get_summary', 'delete', 'validate_level',
|
|
315
|
+
'cleanup_invalid_datalayers', 'add_sublevel'
|
|
316
|
+
],
|
|
317
|
+
description: 'Action'
|
|
274
318
|
},
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
319
|
+
levelPath: { type: 'string', description: 'Required for load/save actions and get_summary.' },
|
|
320
|
+
levelName: { type: 'string' },
|
|
321
|
+
streaming: { type: 'boolean' },
|
|
322
|
+
shouldBeLoaded: { type: 'boolean' },
|
|
323
|
+
shouldBeVisible: { type: 'boolean' },
|
|
324
|
+
lightType: { type: 'string', enum: ['Directional', 'Point', 'Spot', 'Rect'] },
|
|
325
|
+
location: commonSchemas.location,
|
|
326
|
+
intensity: { type: 'number' },
|
|
327
|
+
quality: { type: 'string' },
|
|
328
|
+
min: { type: 'array', items: { type: 'number' } },
|
|
329
|
+
max: { type: 'array', items: { type: 'number' } },
|
|
330
|
+
dataLayerLabel: { type: 'string' },
|
|
331
|
+
dataLayerState: { type: 'string' },
|
|
332
|
+
recursive: { type: 'boolean' },
|
|
333
|
+
exportPath: { type: 'string' },
|
|
334
|
+
packagePath: { type: 'string' },
|
|
335
|
+
destinationPath: { type: 'string' },
|
|
336
|
+
note: { type: 'string' },
|
|
337
|
+
levelPaths: { type: 'array', items: { type: 'string' } },
|
|
338
|
+
subLevelPath: { type: 'string' },
|
|
339
|
+
parentLevel: { type: 'string' },
|
|
340
|
+
streamingMethod: { type: 'string', enum: ['Blueprint', 'AlwaysLoaded'] }
|
|
287
341
|
},
|
|
288
342
|
required: ['action']
|
|
289
343
|
},
|
|
290
344
|
outputSchema: {
|
|
291
345
|
type: 'object',
|
|
292
346
|
properties: {
|
|
293
|
-
success: { type: 'boolean'
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
playRate: { type: 'number', description: 'Current play rate' },
|
|
297
|
-
ragdollActive: { type: 'boolean', description: 'Ragdoll activation state' },
|
|
298
|
-
message: { type: 'string', description: 'Status message' }
|
|
347
|
+
success: { type: 'boolean' },
|
|
348
|
+
message: { type: 'string' },
|
|
349
|
+
data: { type: 'object' }
|
|
299
350
|
}
|
|
300
351
|
}
|
|
301
352
|
},
|
|
302
|
-
// 6. EFFECTS SYSTEM - Combines particles and visual effects
|
|
303
353
|
{
|
|
304
|
-
name: '
|
|
305
|
-
description: `
|
|
354
|
+
name: 'animation_physics',
|
|
355
|
+
description: `Animation and Physics tools.
|
|
306
356
|
|
|
307
357
|
Use it when you need to:
|
|
308
|
-
-
|
|
309
|
-
-
|
|
310
|
-
-
|
|
358
|
+
- create Animation Blueprints, Montages, or Blend Spaces.
|
|
359
|
+
- setup Ragdolls or Physics Assets.
|
|
360
|
+
- configure vehicles.
|
|
311
361
|
|
|
312
|
-
Supported actions:
|
|
362
|
+
Supported actions: create_animation_bp, play_montage, setup_ragdoll, configure_vehicle, create_blend_space, create_state_machine, setup_ik, create_procedural_anim, create_blend_tree, setup_retargeting, setup_physics_simulation, cleanup.`,
|
|
313
363
|
inputSchema: {
|
|
314
364
|
type: 'object',
|
|
315
365
|
properties: {
|
|
316
366
|
action: {
|
|
317
367
|
type: 'string',
|
|
318
|
-
enum: [
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
description: 'World space location where effect will be spawned in centimeters. Optional, defaults to origin.',
|
|
326
|
-
properties: {
|
|
327
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
328
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
329
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
330
|
-
}
|
|
331
|
-
},
|
|
332
|
-
// Particles
|
|
333
|
-
effectType: {
|
|
334
|
-
type: 'string',
|
|
335
|
-
description: 'Preset particle effect type (Fire, Smoke, Water, Explosion, etc.). Used for particle action to spawn common effects.'
|
|
336
|
-
},
|
|
337
|
-
systemPath: { type: 'string', description: 'Content path to Niagara system asset (e.g., "/Game/Effects/MyNiagaraSystem"). Required for niagara action.' },
|
|
338
|
-
scale: { type: 'number', description: 'Uniform scale multiplier for Niagara effect. 1.0 is normal size. Optional, defaults to 1.0.' },
|
|
339
|
-
// Debug
|
|
340
|
-
shape: {
|
|
341
|
-
type: 'string',
|
|
342
|
-
description: 'Debug shape type to draw (Line, Box, Sphere, Capsule, Cone, Cylinder, Arrow). Required for debug_shape action.'
|
|
343
|
-
},
|
|
344
|
-
size: { type: 'number', description: 'Size/radius of debug shape in centimeters. For Line, this is thickness. For shapes, this is radius/extent. Optional, defaults vary by shape.' },
|
|
345
|
-
color: {
|
|
346
|
-
type: 'array',
|
|
347
|
-
items: { type: 'number' },
|
|
348
|
-
description: 'RGBA color array with values 0-255 (e.g., [255, 0, 0, 255] for red). Optional, defaults to white.'
|
|
368
|
+
enum: [
|
|
369
|
+
'create_animation_bp', 'play_montage', 'setup_ragdoll', 'activate_ragdoll', 'configure_vehicle',
|
|
370
|
+
'create_blend_space', 'create_state_machine', 'setup_ik', 'create_procedural_anim',
|
|
371
|
+
'create_blend_tree', 'setup_retargeting', 'setup_physics_simulation', 'cleanup',
|
|
372
|
+
'create_animation_asset', 'add_notify'
|
|
373
|
+
],
|
|
374
|
+
description: 'Action'
|
|
349
375
|
},
|
|
350
|
-
|
|
376
|
+
name: { type: 'string' },
|
|
377
|
+
actorName: { type: 'string' },
|
|
378
|
+
skeletonPath: { type: 'string' },
|
|
379
|
+
montagePath: { type: 'string' },
|
|
380
|
+
animationPath: { type: 'string' },
|
|
381
|
+
playRate: { type: 'number' },
|
|
382
|
+
physicsAssetName: { type: 'string' },
|
|
383
|
+
meshPath: { type: 'string' },
|
|
384
|
+
vehicleName: { type: 'string' },
|
|
385
|
+
vehicleType: { type: 'string' },
|
|
386
|
+
savePath: { type: 'string' }
|
|
351
387
|
},
|
|
352
388
|
required: ['action']
|
|
353
389
|
},
|
|
354
390
|
outputSchema: {
|
|
355
391
|
type: 'object',
|
|
356
392
|
properties: {
|
|
357
|
-
success: { type: 'boolean'
|
|
358
|
-
|
|
359
|
-
effectPath: { type: 'string', description: 'Effect asset path' },
|
|
360
|
-
spawned: { type: 'boolean', description: 'Whether effect was spawned in level' },
|
|
361
|
-
location: {
|
|
362
|
-
type: 'array',
|
|
363
|
-
items: { type: 'number' },
|
|
364
|
-
description: 'Effect location [x, y, z]'
|
|
365
|
-
},
|
|
366
|
-
message: { type: 'string', description: 'Status message' }
|
|
393
|
+
success: { type: 'boolean' },
|
|
394
|
+
message: { type: 'string' }
|
|
367
395
|
}
|
|
368
396
|
}
|
|
369
397
|
},
|
|
370
|
-
// 7. BLUEPRINT MANAGER - Blueprint operations
|
|
371
398
|
{
|
|
372
|
-
name: '
|
|
373
|
-
description: `
|
|
399
|
+
name: 'manage_effect',
|
|
400
|
+
description: `Effects management (Niagara, Particles, Debug Shapes).
|
|
374
401
|
|
|
375
402
|
Use it when you need to:
|
|
376
|
-
-
|
|
377
|
-
-
|
|
403
|
+
- spawn effects or debug shapes.
|
|
404
|
+
- create/edit Niagara systems and emitters.
|
|
405
|
+
- edit Niagara graphs (modules, pins).
|
|
378
406
|
|
|
379
|
-
Supported actions:
|
|
407
|
+
Supported actions:
|
|
408
|
+
- Spawning: particle, niagara, debug_shape, spawn_niagara, create_dynamic_light.
|
|
409
|
+
- Asset Creation: create_niagara_system, create_niagara_emitter.
|
|
410
|
+
- Graph: add_niagara_module, connect_niagara_pins, remove_niagara_node, set_niagara_parameter.
|
|
411
|
+
- Utils: clear_debug_shapes, cleanup.`,
|
|
380
412
|
inputSchema: {
|
|
381
413
|
type: 'object',
|
|
382
414
|
properties: {
|
|
383
415
|
action: {
|
|
384
416
|
type: 'string',
|
|
385
|
-
enum: [
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
417
|
+
enum: [
|
|
418
|
+
'particle', 'niagara', 'debug_shape', 'spawn_niagara', 'create_dynamic_light',
|
|
419
|
+
'create_niagara_system', 'create_niagara_emitter',
|
|
420
|
+
'create_volumetric_fog', 'create_particle_trail', 'create_environment_effect', 'create_impact_effect', 'create_niagara_ribbon',
|
|
421
|
+
'activate', 'activate_effect', 'deactivate', 'reset', 'advance_simulation',
|
|
422
|
+
'add_niagara_module', 'connect_niagara_pins', 'remove_niagara_node', 'set_niagara_parameter',
|
|
423
|
+
'clear_debug_shapes', 'cleanup'
|
|
424
|
+
],
|
|
425
|
+
description: 'Action'
|
|
392
426
|
},
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
427
|
+
name: { type: 'string' },
|
|
428
|
+
systemName: { type: 'string' },
|
|
429
|
+
systemPath: { type: 'string', description: 'Required for spawning Niagara effects (spawn_niagara, create_volumetric_fog, etc) and most graph operations.' },
|
|
430
|
+
preset: { type: 'string', description: 'Required for particle action. Path to particle system asset.' },
|
|
431
|
+
location: commonSchemas.location,
|
|
432
|
+
scale: { type: 'number' },
|
|
433
|
+
shape: { type: 'string', description: 'Supported: sphere, box, cylinder, line, cone, capsule, arrow, plane' },
|
|
434
|
+
size: { type: 'number' },
|
|
435
|
+
color: { type: 'array', items: { type: 'number' } },
|
|
436
|
+
modulePath: { type: 'string' },
|
|
437
|
+
emitterName: { type: 'string' },
|
|
438
|
+
pinName: { type: 'string' },
|
|
439
|
+
linkedTo: { type: 'string' },
|
|
440
|
+
parameterName: { type: 'string' },
|
|
441
|
+
parameterType: { type: 'string', description: 'Float, Vector, Color, Bool, etc.' },
|
|
442
|
+
type: { type: 'string', description: 'Alias for parameterType' },
|
|
443
|
+
value: { description: 'Value.' },
|
|
444
|
+
filter: { type: 'string', description: 'Filter for cleanup action. Required.' }
|
|
396
445
|
},
|
|
397
|
-
required: ['action'
|
|
446
|
+
required: ['action']
|
|
398
447
|
},
|
|
399
448
|
outputSchema: {
|
|
400
449
|
type: 'object',
|
|
401
450
|
properties: {
|
|
402
|
-
success: { type: 'boolean'
|
|
403
|
-
|
|
404
|
-
componentAdded: { type: 'string', description: 'Added component name' },
|
|
405
|
-
message: { type: 'string', description: 'Status message' },
|
|
406
|
-
warning: { type: 'string', description: 'Warning if manual steps needed' }
|
|
451
|
+
success: { type: 'boolean' },
|
|
452
|
+
message: { type: 'string' }
|
|
407
453
|
}
|
|
408
454
|
}
|
|
409
455
|
},
|
|
410
|
-
// 8. ENVIRONMENT BUILDER - Landscape and foliage
|
|
411
456
|
{
|
|
412
457
|
name: 'build_environment',
|
|
413
|
-
description: `Environment
|
|
458
|
+
description: `Environment creation (Landscape, Foliage).
|
|
414
459
|
|
|
415
460
|
Use it when you need to:
|
|
416
|
-
- create
|
|
417
|
-
-
|
|
418
|
-
-
|
|
419
|
-
- spawn explicit foliage instances at transforms.
|
|
461
|
+
- create/sculpt landscapes.
|
|
462
|
+
- paint foliage.
|
|
463
|
+
- procedural generation.
|
|
420
464
|
|
|
421
|
-
Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances,
|
|
465
|
+
Supported actions: create_landscape, sculpt, add_foliage, paint_foliage, create_procedural_terrain, create_procedural_foliage, add_foliage_instances, get_foliage_instances, remove_foliage.`,
|
|
422
466
|
inputSchema: {
|
|
423
467
|
type: 'object',
|
|
424
468
|
properties: {
|
|
425
469
|
action: {
|
|
426
470
|
type: 'string',
|
|
427
|
-
enum: [
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
tool: {
|
|
436
|
-
type: 'string',
|
|
437
|
-
description: 'Landscape sculpt tool to use (Sculpt, Smooth, Flatten, Ramp, Erosion, Hydro, Noise). Required for sculpt action.'
|
|
438
|
-
},
|
|
439
|
-
// Advanced: procedural terrain
|
|
440
|
-
location: {
|
|
441
|
-
type: 'object',
|
|
442
|
-
description: 'World space location for terrain placement. Required for create_procedural_terrain.',
|
|
443
|
-
properties: { x: { type: 'number', description: 'X coordinate' }, y: { type: 'number', description: 'Y coordinate' }, z: { type: 'number', description: 'Z coordinate' } }
|
|
444
|
-
},
|
|
445
|
-
subdivisions: { type: 'number', description: 'Number of subdivisions for procedural terrain mesh. Higher values create more detailed terrain. Optional for create_procedural_terrain.' },
|
|
446
|
-
heightFunction: { type: 'string', description: 'Mathematical function or algorithm for terrain height generation (e.g., "perlin", "simplex", custom formula). Optional for create_procedural_terrain.' },
|
|
447
|
-
materialPath: { type: 'string', description: 'Content path to material for terrain/landscape (e.g., "/Game/Materials/TerrainMat"). Optional.' },
|
|
448
|
-
// Advanced: procedural foliage
|
|
449
|
-
bounds: {
|
|
450
|
-
type: 'object',
|
|
451
|
-
properties: {
|
|
452
|
-
location: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } },
|
|
453
|
-
size: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' }, z: { type: 'number' } } }
|
|
454
|
-
}
|
|
455
|
-
},
|
|
456
|
-
foliageTypes: {
|
|
457
|
-
type: 'array',
|
|
458
|
-
items: {
|
|
459
|
-
type: 'object',
|
|
460
|
-
properties: {
|
|
461
|
-
meshPath: { type: 'string' },
|
|
462
|
-
density: { type: 'number' },
|
|
463
|
-
minScale: { type: 'number' },
|
|
464
|
-
maxScale: { type: 'number' },
|
|
465
|
-
alignToNormal: { type: 'boolean' },
|
|
466
|
-
randomYaw: { type: 'boolean' }
|
|
467
|
-
}
|
|
468
|
-
}
|
|
471
|
+
enum: [
|
|
472
|
+
'create_landscape', 'sculpt', 'sculpt_landscape', 'add_foliage', 'paint_foliage',
|
|
473
|
+
'create_procedural_terrain', 'create_procedural_foliage', 'add_foliage_instances',
|
|
474
|
+
'get_foliage_instances', 'remove_foliage', 'paint_landscape', 'paint_landscape_layer',
|
|
475
|
+
'modify_heightmap', 'set_landscape_material', 'create_landscape_grass_type',
|
|
476
|
+
'generate_lods', 'bake_lightmap', 'export_snapshot', 'import_snapshot', 'delete'
|
|
477
|
+
],
|
|
478
|
+
description: 'Action'
|
|
469
479
|
},
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
480
|
+
name: { type: 'string', description: 'Name of landscape, foliage type, or procedural volume.' },
|
|
481
|
+
landscapeName: { type: 'string' },
|
|
482
|
+
heightData: { type: 'array', items: { type: 'number' } },
|
|
483
|
+
minX: { type: 'number' },
|
|
484
|
+
minY: { type: 'number' },
|
|
485
|
+
maxX: { type: 'number' },
|
|
486
|
+
maxY: { type: 'number' },
|
|
487
|
+
updateNormals: { type: 'boolean' },
|
|
488
|
+
location: commonSchemas.location,
|
|
489
|
+
rotation: commonSchemas.rotation,
|
|
490
|
+
scale: commonSchemas.scale,
|
|
491
|
+
sizeX: { type: 'number' },
|
|
492
|
+
sizeY: { type: 'number' },
|
|
493
|
+
sectionSize: { type: 'number' },
|
|
494
|
+
sectionsPerComponent: { type: 'number' },
|
|
495
|
+
componentCount: { type: 'object', properties: { x: { type: 'number' }, y: { type: 'number' } } },
|
|
496
|
+
materialPath: { type: 'string' },
|
|
497
|
+
tool: { type: 'string' },
|
|
498
|
+
radius: { type: 'number' },
|
|
499
|
+
strength: { type: 'number' },
|
|
500
|
+
falloff: { type: 'number' },
|
|
501
|
+
brushSize: { type: 'number' },
|
|
502
|
+
layerName: { type: 'string', description: 'Required for paint_landscape.' },
|
|
503
|
+
eraseMode: { type: 'boolean' },
|
|
504
|
+
foliageType: { type: 'string', description: 'Required for add_foliage_instances, paint_foliage.' },
|
|
505
|
+
foliageTypePath: { type: 'string' },
|
|
506
|
+
meshPath: { type: 'string' },
|
|
507
|
+
density: { type: 'number' },
|
|
508
|
+
minScale: { type: 'number' },
|
|
509
|
+
maxScale: { type: 'number' },
|
|
510
|
+
cullDistance: { type: 'number' },
|
|
511
|
+
alignToNormal: { type: 'boolean' },
|
|
512
|
+
randomYaw: { type: 'boolean' },
|
|
513
|
+
locations: { type: 'array', items: commonSchemas.location },
|
|
473
514
|
transforms: {
|
|
474
515
|
type: 'array',
|
|
475
516
|
items: {
|
|
476
517
|
type: 'object',
|
|
477
518
|
properties: {
|
|
478
|
-
location:
|
|
479
|
-
rotation:
|
|
480
|
-
scale:
|
|
519
|
+
location: commonSchemas.location,
|
|
520
|
+
rotation: commonSchemas.rotation,
|
|
521
|
+
scale: commonSchemas.scale
|
|
481
522
|
}
|
|
482
523
|
}
|
|
483
524
|
},
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
493
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
494
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
495
|
-
}
|
|
496
|
-
},
|
|
497
|
-
brushSize: { type: 'number', description: 'Radius of foliage paint brush in centimeters. Typical range: 500-5000. Required for paint_foliage action.' },
|
|
498
|
-
strength: { type: 'number', description: 'Paint tool strength/intensity (0.0 to 1.0). Higher values place more instances. Optional for paint_foliage, defaults to 0.5.' }
|
|
525
|
+
position: commonSchemas.location,
|
|
526
|
+
bounds: { type: 'object' },
|
|
527
|
+
volumeName: { type: 'string' },
|
|
528
|
+
seed: { type: 'number' },
|
|
529
|
+
foliageTypes: { type: 'array', items: { type: 'object' } },
|
|
530
|
+
path: { type: 'string' },
|
|
531
|
+
filename: { type: 'string' },
|
|
532
|
+
assetPaths: { type: 'array', items: { type: 'string' } }
|
|
499
533
|
},
|
|
500
534
|
required: ['action']
|
|
501
535
|
},
|
|
502
536
|
outputSchema: {
|
|
503
537
|
type: 'object',
|
|
504
538
|
properties: {
|
|
505
|
-
success: { type: 'boolean'
|
|
506
|
-
|
|
507
|
-
foliageTypeName: { type: 'string', description: 'Foliage type name' },
|
|
508
|
-
instancesPlaced: { type: 'number', description: 'Number of foliage instances placed' },
|
|
509
|
-
message: { type: 'string', description: 'Status message' }
|
|
539
|
+
success: { type: 'boolean' },
|
|
540
|
+
message: { type: 'string' }
|
|
510
541
|
}
|
|
511
542
|
}
|
|
512
543
|
},
|
|
513
|
-
// 9. PERFORMANCE & AUDIO - System settings
|
|
514
544
|
{
|
|
515
545
|
name: 'system_control',
|
|
516
|
-
description: `
|
|
546
|
+
description: `System-level control.
|
|
517
547
|
|
|
518
548
|
Use it when you need to:
|
|
519
|
-
-
|
|
520
|
-
-
|
|
521
|
-
-
|
|
522
|
-
-
|
|
523
|
-
-
|
|
549
|
+
- profiling & performance (stat commands).
|
|
550
|
+
- quality settings.
|
|
551
|
+
- run external tools (UBT, Tests).
|
|
552
|
+
- manage logs/insights.
|
|
553
|
+
- execute arbitrary console commands.
|
|
554
|
+
- set/get CVars and project settings.
|
|
555
|
+
- validate assets.
|
|
524
556
|
|
|
525
|
-
Supported actions:
|
|
557
|
+
Supported actions:
|
|
558
|
+
- Core: profile, show_fps, set_quality, screenshot, set_resolution, set_fullscreen, execute_command, console_command.
|
|
559
|
+
- CVars: set_cvar.
|
|
560
|
+
- Settings: get_project_settings, validate_assets.
|
|
561
|
+
- Pipeline: run_ubt, run_tests.
|
|
562
|
+
- Debug/Logs: subscribe, spawn_category, start_session.
|
|
563
|
+
- Render: lumen_update_scene.
|
|
564
|
+
- UI: play_sound, create_widget, show_widget.`,
|
|
526
565
|
inputSchema: {
|
|
527
566
|
type: 'object',
|
|
528
567
|
properties: {
|
|
529
568
|
action: {
|
|
530
569
|
type: 'string',
|
|
531
|
-
enum: [
|
|
532
|
-
|
|
570
|
+
enum: [
|
|
571
|
+
'profile', 'show_fps', 'set_quality', 'screenshot', 'set_resolution', 'set_fullscreen', 'execute_command', 'console_command',
|
|
572
|
+
'run_ubt', 'run_tests', 'subscribe', 'unsubscribe', 'spawn_category', 'start_session', 'lumen_update_scene',
|
|
573
|
+
'play_sound', 'create_widget', 'show_widget', 'add_widget_child',
|
|
574
|
+
'set_cvar', 'get_project_settings', 'validate_assets',
|
|
575
|
+
'set_project_setting'
|
|
576
|
+
],
|
|
577
|
+
description: 'Action'
|
|
533
578
|
},
|
|
534
|
-
|
|
535
|
-
|
|
579
|
+
profileType: { type: 'string' },
|
|
580
|
+
category: { type: 'string' },
|
|
581
|
+
level: { type: 'number' },
|
|
582
|
+
enabled: { type: 'boolean' },
|
|
583
|
+
resolution: { type: 'string', description: 'Resolution string (e.g. "1920x1080").' },
|
|
584
|
+
command: { type: 'string' },
|
|
585
|
+
target: { type: 'string' },
|
|
586
|
+
platform: { type: 'string' },
|
|
587
|
+
configuration: { type: 'string' },
|
|
588
|
+
arguments: { type: 'string' },
|
|
589
|
+
filter: { type: 'string' },
|
|
590
|
+
channels: { type: 'string' },
|
|
591
|
+
widgetPath: { type: 'string', description: 'Path to the widget blueprint (for add_widget_child).' },
|
|
592
|
+
childClass: { type: 'string', description: 'Class of the child widget to add (e.g. /Script/UMG.Button).' },
|
|
593
|
+
parentName: { type: 'string', description: 'Name of the parent widget to add to (optional).' },
|
|
594
|
+
section: { type: 'string', description: 'Config section (e.g. /Script/EngineSettings.GeneralProjectSettings).' },
|
|
595
|
+
key: { type: 'string', description: 'Config key (e.g. ProjectID).' },
|
|
596
|
+
value: { type: 'string', description: 'Config value.' },
|
|
597
|
+
configName: { type: 'string', description: 'Config file name (Game, Engine, Input, etc.). Defaults to Game.' }
|
|
598
|
+
},
|
|
599
|
+
required: ['action']
|
|
600
|
+
},
|
|
601
|
+
outputSchema: {
|
|
602
|
+
type: 'object',
|
|
603
|
+
properties: {
|
|
604
|
+
success: { type: 'boolean' },
|
|
605
|
+
message: { type: 'string' },
|
|
606
|
+
output: { type: 'string' }
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
},
|
|
610
|
+
{
|
|
611
|
+
name: 'manage_sequence',
|
|
612
|
+
description: `Sequencer (Cinematics) management.
|
|
613
|
+
|
|
614
|
+
Use it when you need to:
|
|
615
|
+
- create/edit level sequences.
|
|
616
|
+
- add tracks (camera, actors, audio, events).
|
|
617
|
+
- keyframe properties.
|
|
618
|
+
- manage sequence playback and settings.
|
|
619
|
+
|
|
620
|
+
Supported actions:
|
|
621
|
+
- Lifecycle: create, open, duplicate, rename, delete, list.
|
|
622
|
+
- Bindings: add_camera, add_actor, add_actors, remove_actors, get_bindings, add_spawnable_from_class.
|
|
623
|
+
- Playback: play, pause, stop, set_playback_speed.
|
|
624
|
+
- Keyframes: add_keyframe.
|
|
625
|
+
- Properties: get_properties, set_properties, get_metadata, set_metadata.
|
|
626
|
+
- Tracks: add_track, add_section, list_tracks, remove_track, set_track_muted, set_track_solo, set_track_locked.
|
|
627
|
+
- Settings: set_display_rate, set_tick_resolution, set_work_range, set_view_range.`,
|
|
628
|
+
inputSchema: {
|
|
629
|
+
type: 'object',
|
|
630
|
+
properties: {
|
|
631
|
+
action: {
|
|
536
632
|
type: 'string',
|
|
537
|
-
|
|
633
|
+
enum: [
|
|
634
|
+
'create', 'open', 'add_camera', 'add_actor', 'add_actors', 'remove_actors',
|
|
635
|
+
'get_bindings', 'play', 'pause', 'stop', 'set_playback_speed', 'add_keyframe',
|
|
636
|
+
'get_properties', 'set_properties', 'duplicate', 'rename', 'delete', 'list', 'get_metadata', 'set_metadata',
|
|
637
|
+
'add_spawnable_from_class', 'add_track', 'add_section', 'set_display_rate', 'set_tick_resolution',
|
|
638
|
+
'set_work_range', 'set_view_range', 'set_track_muted', 'set_track_solo', 'set_track_locked',
|
|
639
|
+
'list_tracks', 'remove_track'
|
|
640
|
+
],
|
|
641
|
+
description: 'Action'
|
|
538
642
|
},
|
|
539
|
-
|
|
643
|
+
name: { type: 'string', description: 'Sequence name for creation.' },
|
|
644
|
+
path: { type: 'string', description: 'Sequence asset path.' },
|
|
645
|
+
actorName: { type: 'string', description: 'Actor name for binding.' },
|
|
646
|
+
actorNames: { type: 'array', items: { type: 'string' }, description: 'Multiple actor names.' },
|
|
647
|
+
frame: { type: 'number', description: 'Frame number for keyframes.' },
|
|
648
|
+
value: { type: 'object', description: 'Value for keyframes.' },
|
|
649
|
+
property: { type: 'string', description: 'Property name for keyframes.' },
|
|
650
|
+
destinationPath: { type: 'string', description: 'Destination path for duplicate.' },
|
|
651
|
+
newName: { type: 'string', description: 'New name for rename/duplicate.' },
|
|
652
|
+
overwrite: { type: 'boolean', description: 'Overwrite existing on duplicate.' },
|
|
653
|
+
speed: { type: 'number', description: 'Playback speed multiplier.' },
|
|
654
|
+
startTime: { type: 'number', description: 'Start time for playback.' },
|
|
655
|
+
loopMode: { type: 'string', description: 'Loop mode for playback.' },
|
|
656
|
+
className: { type: 'string', description: 'Class name for spawnables.' },
|
|
657
|
+
spawnable: { type: 'boolean', description: 'Create as spawnable.' },
|
|
658
|
+
trackType: { type: 'string', description: 'Track type (Animation, Transform, Audio, Event).' },
|
|
659
|
+
trackName: { type: 'string', description: 'Track name for track operations.' },
|
|
660
|
+
muted: { type: 'boolean', description: 'Mute state for set_track_muted.' },
|
|
661
|
+
solo: { type: 'boolean', description: 'Solo state for set_track_solo.' },
|
|
662
|
+
locked: { type: 'boolean', description: 'Lock state for set_track_locked.' },
|
|
663
|
+
assetPath: { type: 'string', description: 'Asset path for section content.' },
|
|
664
|
+
startFrame: { type: 'number', description: 'Section start frame.' },
|
|
665
|
+
endFrame: { type: 'number', description: 'Section end frame.' },
|
|
666
|
+
frameRate: { type: 'string', description: 'Display frame rate (e.g., "30fps").' },
|
|
667
|
+
resolution: { type: 'string', description: 'Tick resolution (e.g., "24000fps").' },
|
|
668
|
+
start: { type: 'number', description: 'Range start.' },
|
|
669
|
+
end: { type: 'number', description: 'Range end.' },
|
|
670
|
+
lengthInFrames: { type: 'number', description: 'Sequence length in frames.' },
|
|
671
|
+
playbackStart: { type: 'number', description: 'Playback start frame.' },
|
|
672
|
+
playbackEnd: { type: 'number', description: 'Playback end frame.' },
|
|
673
|
+
metadata: { type: 'object', description: 'Metadata object.' }
|
|
674
|
+
},
|
|
675
|
+
required: ['action']
|
|
676
|
+
},
|
|
677
|
+
outputSchema: {
|
|
678
|
+
type: 'object',
|
|
679
|
+
properties: {
|
|
680
|
+
success: { type: 'boolean' },
|
|
681
|
+
message: { type: 'string' }
|
|
682
|
+
}
|
|
683
|
+
}
|
|
684
|
+
},
|
|
685
|
+
{
|
|
686
|
+
name: 'manage_input',
|
|
687
|
+
description: `Enhanced Input management.
|
|
688
|
+
|
|
689
|
+
Use it when you need to:
|
|
690
|
+
- create Input Actions (IA_*)
|
|
691
|
+
- create Input Mapping Contexts (IMC_*)
|
|
692
|
+
- bind keys to actions in a mapping context.
|
|
693
|
+
|
|
694
|
+
Supported actions:
|
|
695
|
+
- create_input_action: Create a UInputAction asset.
|
|
696
|
+
- create_input_mapping_context: Create a UInputMappingContext asset.
|
|
697
|
+
- add_mapping: Add a key mapping to a context.
|
|
698
|
+
- remove_mapping: Remove a mapping from a context.`,
|
|
699
|
+
inputSchema: {
|
|
700
|
+
type: 'object',
|
|
701
|
+
properties: {
|
|
702
|
+
action: {
|
|
540
703
|
type: 'string',
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
location: {
|
|
549
|
-
type: 'object',
|
|
550
|
-
description: 'World space location for 3D sound playback. Required if is3D is true for play_sound action.',
|
|
551
|
-
properties: {
|
|
552
|
-
x: { type: 'number', description: 'X coordinate' },
|
|
553
|
-
y: { type: 'number', description: 'Y coordinate' },
|
|
554
|
-
z: { type: 'number', description: 'Z coordinate' }
|
|
555
|
-
}
|
|
704
|
+
enum: [
|
|
705
|
+
'create_input_action',
|
|
706
|
+
'create_input_mapping_context',
|
|
707
|
+
'add_mapping',
|
|
708
|
+
'remove_mapping'
|
|
709
|
+
],
|
|
710
|
+
description: 'Action to perform'
|
|
556
711
|
},
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
712
|
+
name: { type: 'string', description: 'Name of the asset (for creation).' },
|
|
713
|
+
path: { type: 'string', description: 'Path to save the asset (e.g. /Game/Input).' },
|
|
714
|
+
contextPath: { type: 'string', description: 'Path to the Input Mapping Context.' },
|
|
715
|
+
actionPath: { type: 'string', description: 'Path to the Input Action.' },
|
|
716
|
+
key: { type: 'string', description: 'Key name (e.g. "SpaceBar", "W", "Gamepad_FaceButton_Bottom").' }
|
|
717
|
+
},
|
|
718
|
+
required: ['action']
|
|
719
|
+
},
|
|
720
|
+
outputSchema: {
|
|
721
|
+
type: 'object',
|
|
722
|
+
properties: {
|
|
723
|
+
success: { type: 'boolean' },
|
|
724
|
+
message: { type: 'string' },
|
|
725
|
+
assetPath: { type: 'string' }
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
name: 'inspect',
|
|
731
|
+
description: `Low-level object inspection and property manipulation.
|
|
732
|
+
|
|
733
|
+
Use it when you need to:
|
|
734
|
+
- read/write properties of any UObject or component.
|
|
735
|
+
- list objects/components.
|
|
736
|
+
- manage actor tags and snapshots.
|
|
737
|
+
- find objects by class or tag.
|
|
738
|
+
|
|
739
|
+
Supported actions:
|
|
740
|
+
- Object: inspect_object, inspect_class, list_objects, find_by_class, delete_object, export.
|
|
741
|
+
- Properties: get_property, set_property, get_component_property, set_component_property.
|
|
742
|
+
- Components: get_components, get_bounding_box.
|
|
743
|
+
- Tags: add_tag, find_by_tag, get_metadata.
|
|
744
|
+
- Snapshots: create_snapshot, restore_snapshot.`,
|
|
745
|
+
inputSchema: {
|
|
746
|
+
type: 'object',
|
|
747
|
+
properties: {
|
|
748
|
+
action: {
|
|
562
749
|
type: 'string',
|
|
563
|
-
|
|
750
|
+
enum: [
|
|
751
|
+
'inspect_object', 'set_property', 'get_property', 'get_components', 'inspect_class', 'list_objects',
|
|
752
|
+
'get_component_property', 'set_component_property', 'get_metadata', 'add_tag', 'find_by_tag',
|
|
753
|
+
'create_snapshot', 'restore_snapshot', 'export', 'delete_object', 'find_by_class', 'get_bounding_box'
|
|
754
|
+
],
|
|
755
|
+
description: 'Action'
|
|
564
756
|
},
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
757
|
+
objectPath: { type: 'string', description: 'UObject path to inspect/modify.' },
|
|
758
|
+
propertyName: { type: 'string', description: 'Property name to get/set.' },
|
|
759
|
+
propertyPath: { type: 'string', description: 'Alternate property path parameter.' },
|
|
760
|
+
value: { description: 'Value to set.' },
|
|
761
|
+
actorName: { type: 'string', description: 'Actor name (required for snapshots, export, and component resolution).' },
|
|
762
|
+
name: { type: 'string', description: 'Object name (alternative to objectPath).' },
|
|
763
|
+
componentName: { type: 'string', description: 'Component name for component property access.' },
|
|
764
|
+
className: { type: 'string', description: 'Class name for find_by_class.' },
|
|
765
|
+
classPath: { type: 'string', description: 'Class path (alternative to className).' },
|
|
766
|
+
tag: { type: 'string', description: 'Tag for add_tag/find_by_tag.' },
|
|
767
|
+
filter: { type: 'string', description: 'Filter for list_objects.' },
|
|
768
|
+
snapshotName: { type: 'string', description: 'Snapshot name for create/restore.' },
|
|
769
|
+
destinationPath: { type: 'string', description: 'Export destination path.' },
|
|
770
|
+
outputPath: { type: 'string', description: 'Alternative export path.' },
|
|
771
|
+
format: { type: 'string', description: 'Export format (e.g., JSON).' }
|
|
578
772
|
},
|
|
579
773
|
required: ['action']
|
|
580
774
|
},
|
|
581
775
|
outputSchema: {
|
|
582
776
|
type: 'object',
|
|
583
777
|
properties: {
|
|
584
|
-
success: { type: 'boolean'
|
|
585
|
-
|
|
586
|
-
fpsVisible: { type: 'boolean', description: 'FPS display state' },
|
|
587
|
-
qualityLevel: { type: 'number', description: 'Current quality level' },
|
|
588
|
-
soundPlaying: { type: 'boolean', description: 'Sound playback state' },
|
|
589
|
-
widgetPath: { type: 'string', description: 'Created widget path' },
|
|
590
|
-
widgetVisible: { type: 'boolean', description: 'Widget visibility state' },
|
|
591
|
-
imagePath: { type: 'string', description: 'Saved screenshot path' },
|
|
592
|
-
imageBase64: { type: 'string', description: 'Screenshot image base64 (truncated)' },
|
|
593
|
-
pid: { type: 'number', description: 'Process ID for launched editor' },
|
|
594
|
-
message: { type: 'string', description: 'Status message' },
|
|
595
|
-
error: { type: 'string', description: 'Error message if failed' },
|
|
596
|
-
logPath: { type: 'string', description: 'Log file path used for read_log' },
|
|
597
|
-
entries: {
|
|
598
|
-
type: 'array',
|
|
599
|
-
items: { type: 'object', properties: { timestamp: { type: 'string' }, category: { type: 'string' }, level: { type: 'string' }, message: { type: 'string' } } },
|
|
600
|
-
description: 'Parsed Output Log entries'
|
|
601
|
-
},
|
|
602
|
-
filteredCount: { type: 'number', description: 'Count of entries after filtering' }
|
|
778
|
+
success: { type: 'boolean' },
|
|
779
|
+
value: { description: 'Property value.' }
|
|
603
780
|
}
|
|
604
781
|
}
|
|
605
782
|
},
|
|
606
|
-
// 10. CONSOLE COMMAND - Universal tool
|
|
607
783
|
{
|
|
608
|
-
name: '
|
|
609
|
-
description: `
|
|
784
|
+
name: 'manage_audio',
|
|
785
|
+
description: `Audio asset and component management.
|
|
610
786
|
|
|
611
|
-
Use it when
|
|
787
|
+
Use it when you need to:
|
|
788
|
+
- create sound cues/mixes.
|
|
789
|
+
- play sounds (3D/2D).
|
|
790
|
+
- control audio components.
|
|
791
|
+
|
|
792
|
+
Supported actions:
|
|
793
|
+
- Assets: create_sound_cue, create_sound_mix, create_sound_class, create_reverb_zone, create_ambient_sound.
|
|
794
|
+
- Playback: play_sound_at_location, play_sound_2d, play_sound_attached, spawn_sound_at_location.
|
|
795
|
+
- Components: create_audio_component, fade_sound, fade_sound_in, fade_sound_out.
|
|
796
|
+
- Mixes: push_sound_mix, pop_sound_mix, set_sound_mix_class_override, clear_sound_mix_class_override, set_base_sound_mix.
|
|
797
|
+
- Global: enable_audio_analysis, set_doppler_effect, set_audio_occlusion, set_sound_attenuation.`,
|
|
612
798
|
inputSchema: {
|
|
613
799
|
type: 'object',
|
|
614
800
|
properties: {
|
|
615
|
-
|
|
801
|
+
action: {
|
|
802
|
+
type: 'string',
|
|
803
|
+
enum: [
|
|
804
|
+
'create_sound_cue', 'play_sound_at_location', 'play_sound_2d', 'create_audio_component',
|
|
805
|
+
'create_sound_mix', 'push_sound_mix', 'pop_sound_mix',
|
|
806
|
+
'set_sound_mix_class_override', 'clear_sound_mix_class_override', 'set_base_sound_mix',
|
|
807
|
+
'prime_sound', 'play_sound_attached', 'spawn_sound_at_location',
|
|
808
|
+
'fade_sound_in', 'fade_sound_out', 'create_ambient_sound',
|
|
809
|
+
'create_sound_class', 'set_sound_attenuation', 'create_reverb_zone',
|
|
810
|
+
'enable_audio_analysis', 'fade_sound', 'set_doppler_effect', 'set_audio_occlusion'
|
|
811
|
+
],
|
|
812
|
+
description: 'Action'
|
|
813
|
+
},
|
|
814
|
+
name: { type: 'string' },
|
|
815
|
+
soundPath: { type: 'string', description: 'Required for create_sound_cue, play_sound_*, create_audio_component, create_ambient_sound.' },
|
|
816
|
+
location: commonSchemas.location,
|
|
817
|
+
rotation: commonSchemas.rotation,
|
|
818
|
+
volume: { type: 'number' },
|
|
819
|
+
pitch: { type: 'number' },
|
|
820
|
+
startTime: { type: 'number' },
|
|
821
|
+
attenuationPath: { type: 'string' },
|
|
822
|
+
concurrencyPath: { type: 'string' },
|
|
823
|
+
mixName: { type: 'string' },
|
|
824
|
+
soundClassName: { type: 'string' },
|
|
825
|
+
fadeInTime: { type: 'number' },
|
|
826
|
+
fadeOutTime: { type: 'number' },
|
|
827
|
+
fadeTime: { type: 'number' },
|
|
828
|
+
targetVolume: { type: 'number' },
|
|
829
|
+
attachPointName: { type: 'string' },
|
|
830
|
+
actorName: { type: 'string' },
|
|
831
|
+
componentName: { type: 'string' },
|
|
832
|
+
parentClass: { type: 'string' },
|
|
833
|
+
properties: { type: 'object' },
|
|
834
|
+
innerRadius: { type: 'number' },
|
|
835
|
+
falloffDistance: { type: 'number' },
|
|
836
|
+
attenuationShape: { type: 'string' },
|
|
837
|
+
falloffMode: { type: 'string' },
|
|
838
|
+
reverbEffect: { type: 'string' },
|
|
839
|
+
size: commonSchemas.scale,
|
|
840
|
+
fftSize: { type: 'number' },
|
|
841
|
+
outputType: { type: 'string' },
|
|
842
|
+
soundName: { type: 'string' },
|
|
843
|
+
fadeType: { type: 'string' },
|
|
844
|
+
scale: { type: 'number' },
|
|
845
|
+
lowPassFilterFrequency: { type: 'number' },
|
|
846
|
+
volumeAttenuation: { type: 'number' },
|
|
847
|
+
enabled: { type: 'boolean' }
|
|
616
848
|
},
|
|
617
|
-
required: ['
|
|
849
|
+
required: ['action']
|
|
618
850
|
},
|
|
619
851
|
outputSchema: {
|
|
620
852
|
type: 'object',
|
|
621
853
|
properties: {
|
|
622
|
-
success: { type: 'boolean'
|
|
623
|
-
|
|
624
|
-
result: { type: 'object', description: 'Command execution result' },
|
|
625
|
-
warning: { type: 'string', description: 'Warning if command may be unrecognized' },
|
|
626
|
-
info: { type: 'string', description: 'Additional information' },
|
|
627
|
-
error: { type: 'string', description: 'Error message if failed' }
|
|
854
|
+
success: { type: 'boolean' },
|
|
855
|
+
message: { type: 'string' }
|
|
628
856
|
}
|
|
629
857
|
}
|
|
630
858
|
},
|
|
631
|
-
// 11. REMOTE CONTROL PRESETS
|
|
632
859
|
{
|
|
633
|
-
name: '
|
|
634
|
-
description: `
|
|
860
|
+
name: 'manage_behavior_tree',
|
|
861
|
+
description: `Behavior Tree editing tool.
|
|
635
862
|
|
|
636
863
|
Use it when you need to:
|
|
637
|
-
- create
|
|
638
|
-
-
|
|
639
|
-
-
|
|
640
|
-
-
|
|
864
|
+
- create new Behavior Tree assets.
|
|
865
|
+
- add nodes (Sequence, Selector, Tasks).
|
|
866
|
+
- connect nodes.
|
|
867
|
+
- set properties.
|
|
641
868
|
|
|
642
|
-
Supported actions:
|
|
869
|
+
Supported actions: create, add_node, connect_nodes, remove_node, break_connections, set_node_properties.`,
|
|
643
870
|
inputSchema: {
|
|
644
871
|
type: 'object',
|
|
645
872
|
properties: {
|
|
646
873
|
action: {
|
|
647
874
|
type: 'string',
|
|
648
|
-
enum: ['
|
|
649
|
-
description: '
|
|
875
|
+
enum: ['create', 'add_node', 'connect_nodes', 'remove_node', 'break_connections', 'set_node_properties'],
|
|
876
|
+
description: 'Action'
|
|
650
877
|
},
|
|
651
|
-
name: { type: 'string', description: 'Name
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
878
|
+
name: { type: 'string', description: 'Name of the new Behavior Tree asset' },
|
|
879
|
+
savePath: { type: 'string', description: 'Path to save the new Behavior Tree (e.g., /Game/AI)' },
|
|
880
|
+
assetPath: { type: 'string' },
|
|
881
|
+
nodeType: { type: 'string' },
|
|
882
|
+
nodeId: { type: 'string' },
|
|
883
|
+
parentNodeId: { type: 'string' },
|
|
884
|
+
childNodeId: { type: 'string' },
|
|
885
|
+
x: { type: 'number' },
|
|
886
|
+
y: { type: 'number' },
|
|
887
|
+
comment: { type: 'string' },
|
|
888
|
+
properties: { type: 'object' }
|
|
658
889
|
},
|
|
659
890
|
required: ['action']
|
|
660
891
|
},
|
|
@@ -663,49 +894,124 @@ Supported actions: create_preset, expose_actor, expose_property, list_fields, se
|
|
|
663
894
|
properties: {
|
|
664
895
|
success: { type: 'boolean' },
|
|
665
896
|
message: { type: 'string' },
|
|
666
|
-
|
|
667
|
-
fields: { type: 'array', items: { type: 'object' } },
|
|
668
|
-
value: {},
|
|
669
|
-
error: { type: 'string' }
|
|
897
|
+
nodeId: { type: 'string' }
|
|
670
898
|
}
|
|
671
899
|
}
|
|
672
900
|
},
|
|
673
|
-
// 12. SEQUENCER / CINEMATICS
|
|
674
901
|
{
|
|
675
|
-
name: '
|
|
676
|
-
description: `
|
|
902
|
+
name: 'manage_blueprint_graph',
|
|
903
|
+
description: `Direct Blueprint Graph manipulation.
|
|
677
904
|
|
|
678
905
|
Use it when you need to:
|
|
679
|
-
-
|
|
680
|
-
-
|
|
681
|
-
-
|
|
682
|
-
-
|
|
906
|
+
- add nodes (Function, Variable, Event, Macro).
|
|
907
|
+
- connect/disconnect pins.
|
|
908
|
+
- create reroute nodes.
|
|
909
|
+
- set node properties.
|
|
910
|
+
- get node/graph details.
|
|
683
911
|
|
|
684
|
-
Supported actions:
|
|
912
|
+
Supported actions: create_node, delete_node, connect_pins, break_pin_links, set_node_property, create_reroute_node, get_node_details, get_graph_details, get_pin_details.`,
|
|
685
913
|
inputSchema: {
|
|
686
914
|
type: 'object',
|
|
687
915
|
properties: {
|
|
688
916
|
action: {
|
|
689
917
|
type: 'string',
|
|
690
918
|
enum: [
|
|
691
|
-
'
|
|
692
|
-
'
|
|
693
|
-
'play', 'pause', 'stop', 'set_properties', 'get_properties', 'set_playback_speed'
|
|
919
|
+
'create_node', 'delete_node', 'connect_pins', 'break_pin_links', 'set_node_property',
|
|
920
|
+
'create_reroute_node', 'get_node_details', 'get_graph_details', 'get_pin_details'
|
|
694
921
|
],
|
|
695
|
-
description: '
|
|
922
|
+
description: 'Action'
|
|
696
923
|
},
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
924
|
+
blueprintPath: { type: 'string' },
|
|
925
|
+
graphName: { type: 'string' },
|
|
926
|
+
nodeType: { type: 'string' },
|
|
927
|
+
nodeId: { type: 'string' },
|
|
928
|
+
pinName: { type: 'string' },
|
|
929
|
+
linkedTo: { type: 'string' },
|
|
930
|
+
memberName: { type: 'string' },
|
|
931
|
+
x: { type: 'number' },
|
|
932
|
+
y: { type: 'number' },
|
|
933
|
+
propertyName: { type: 'string' },
|
|
934
|
+
value: { description: 'Value.' }
|
|
935
|
+
},
|
|
936
|
+
required: ['action']
|
|
937
|
+
},
|
|
938
|
+
outputSchema: {
|
|
939
|
+
type: 'object',
|
|
940
|
+
properties: {
|
|
941
|
+
success: { type: 'boolean' },
|
|
942
|
+
nodeId: { type: 'string' },
|
|
943
|
+
details: { type: 'object' }
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
},
|
|
947
|
+
{
|
|
948
|
+
name: 'manage_lighting',
|
|
949
|
+
description: `Lighting and Rendering configuration.
|
|
950
|
+
|
|
951
|
+
Use it when you need to:
|
|
952
|
+
- spawn and configure lights (Directional, Point, Spot, Rect, Sky).
|
|
953
|
+
- configure Global Illumination (Lumen, Lightmass) and Shadows.
|
|
954
|
+
- setup Volumetric Fog and Atmosphere.
|
|
955
|
+
- build lighting (bake).
|
|
956
|
+
- set exposure and post-process settings.
|
|
957
|
+
|
|
958
|
+
Supported actions:
|
|
959
|
+
- Spawning: spawn_light, create_light, spawn_sky_light, create_sky_light, ensure_single_sky_light, create_lightmass_volume, create_lighting_enabled_level, create_dynamic_light.
|
|
960
|
+
- Configuration: setup_global_illumination, configure_shadows, set_exposure, set_ambient_occlusion, setup_volumetric_fog.
|
|
961
|
+
- Building: build_lighting.`,
|
|
962
|
+
inputSchema: {
|
|
963
|
+
type: 'object',
|
|
964
|
+
properties: {
|
|
965
|
+
action: {
|
|
966
|
+
type: 'string',
|
|
967
|
+
enum: [
|
|
968
|
+
'spawn_light', 'create_light', 'spawn_sky_light', 'create_sky_light', 'ensure_single_sky_light',
|
|
969
|
+
'create_lightmass_volume', 'create_lighting_enabled_level', 'create_dynamic_light',
|
|
970
|
+
'setup_global_illumination', 'configure_shadows', 'set_exposure', 'set_ambient_occlusion', 'setup_volumetric_fog',
|
|
971
|
+
'build_lighting'
|
|
972
|
+
],
|
|
973
|
+
description: 'Action'
|
|
974
|
+
},
|
|
975
|
+
name: { type: 'string' },
|
|
976
|
+
location: commonSchemas.location,
|
|
977
|
+
rotation: commonSchemas.rotation,
|
|
978
|
+
lightType: { type: 'string', enum: ['Directional', 'Point', 'Spot', 'Rect'] },
|
|
979
|
+
intensity: { type: 'number' },
|
|
980
|
+
color: { type: 'array', items: { type: 'number' } },
|
|
981
|
+
castShadows: { type: 'boolean' },
|
|
982
|
+
useAsAtmosphereSunLight: { type: 'boolean', description: 'For Directional Lights, use as Atmosphere Sun Light.' },
|
|
983
|
+
temperature: { type: 'number' },
|
|
984
|
+
radius: { type: 'number' },
|
|
985
|
+
falloffExponent: { type: 'number' },
|
|
986
|
+
innerCone: { type: 'number' },
|
|
987
|
+
outerCone: { type: 'number' },
|
|
988
|
+
width: { type: 'number' },
|
|
989
|
+
height: { type: 'number' },
|
|
990
|
+
sourceType: { type: 'string', enum: ['CapturedScene', 'SpecifiedCubemap'] },
|
|
991
|
+
cubemapPath: { type: 'string' },
|
|
992
|
+
recapture: { type: 'boolean' },
|
|
993
|
+
method: { type: 'string', enum: ['Lightmass', 'LumenGI', 'ScreenSpace', 'None'] },
|
|
994
|
+
quality: { type: 'string' },
|
|
995
|
+
indirectLightingIntensity: { type: 'number' },
|
|
996
|
+
bounces: { type: 'number' },
|
|
997
|
+
shadowQuality: { type: 'string' },
|
|
998
|
+
cascadedShadows: { type: 'boolean' },
|
|
999
|
+
shadowDistance: { type: 'number' },
|
|
1000
|
+
contactShadows: { type: 'boolean' },
|
|
1001
|
+
rayTracedShadows: { type: 'boolean' },
|
|
1002
|
+
compensationValue: { type: 'number' },
|
|
1003
|
+
minBrightness: { type: 'number' },
|
|
1004
|
+
maxBrightness: { type: 'number' },
|
|
1005
|
+
enabled: { type: 'boolean' },
|
|
1006
|
+
density: { type: 'number' },
|
|
1007
|
+
scatteringIntensity: { type: 'number' },
|
|
1008
|
+
fogHeight: { type: 'number' },
|
|
1009
|
+
buildOnlySelected: { type: 'boolean' },
|
|
1010
|
+
buildReflectionCaptures: { type: 'boolean' },
|
|
1011
|
+
levelName: { type: 'string' },
|
|
1012
|
+
copyActors: { type: 'boolean' },
|
|
1013
|
+
useTemplate: { type: 'boolean' },
|
|
1014
|
+
size: commonSchemas.scale
|
|
709
1015
|
},
|
|
710
1016
|
required: ['action']
|
|
711
1017
|
},
|
|
@@ -713,40 +1019,68 @@ Supported actions: create, open, add_camera, add_actor, add_actors, remove_actor
|
|
|
713
1019
|
type: 'object',
|
|
714
1020
|
properties: {
|
|
715
1021
|
success: { type: 'boolean' },
|
|
716
|
-
sequencePath: { type: 'string' },
|
|
717
|
-
cameraBindingId: { type: 'string' },
|
|
718
|
-
bindings: { type: 'array', items: { type: 'object' } },
|
|
719
|
-
actorsAdded: { type: 'array', items: { type: 'string' } },
|
|
720
|
-
removedActors: { type: 'array', items: { type: 'string' } },
|
|
721
|
-
notFound: { type: 'array', items: { type: 'string' } },
|
|
722
|
-
spawnableId: { type: 'string' },
|
|
723
|
-
frameRate: { type: 'object' },
|
|
724
|
-
playbackStart: { type: 'number' },
|
|
725
|
-
playbackEnd: { type: 'number' },
|
|
726
|
-
duration: { type: 'number' },
|
|
727
|
-
playbackSpeed: { type: 'number' },
|
|
728
1022
|
message: { type: 'string' },
|
|
729
|
-
|
|
1023
|
+
actorName: { type: 'string' }
|
|
730
1024
|
}
|
|
731
1025
|
}
|
|
732
1026
|
},
|
|
733
|
-
// 13. INTROSPECTION
|
|
734
1027
|
{
|
|
735
|
-
name: '
|
|
736
|
-
description: `
|
|
1028
|
+
name: 'manage_performance',
|
|
1029
|
+
description: `Performance profiling and optimization.
|
|
737
1030
|
|
|
738
1031
|
Use it when you need to:
|
|
739
|
-
-
|
|
740
|
-
-
|
|
1032
|
+
- profiling (CPU, GPU, Memory, RenderThread).
|
|
1033
|
+
- optimize content (LODs, texture streaming, draw calls).
|
|
1034
|
+
- benchmark the scene.
|
|
1035
|
+
- configure rendering features (Nanite, Lumen, World Partition).
|
|
741
1036
|
|
|
742
|
-
Supported actions:
|
|
1037
|
+
Supported actions:
|
|
1038
|
+
- Profiling: start_profiling, stop_profiling, run_benchmark, show_fps, show_stats, generate_memory_report.
|
|
1039
|
+
- Settings: set_scalability, set_resolution_scale, set_vsync, set_frame_rate_limit, enable_gpu_timing.
|
|
1040
|
+
- Optimization: configure_texture_streaming, configure_lod, apply_baseline_settings, optimize_draw_calls, merge_actors, configure_occlusion_culling, optimize_shaders.
|
|
1041
|
+
- Features: configure_nanite, configure_world_partition.`,
|
|
743
1042
|
inputSchema: {
|
|
744
1043
|
type: 'object',
|
|
745
1044
|
properties: {
|
|
746
|
-
action: {
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
1045
|
+
action: {
|
|
1046
|
+
type: 'string',
|
|
1047
|
+
enum: [
|
|
1048
|
+
'start_profiling', 'stop_profiling', 'run_benchmark', 'show_fps', 'show_stats', 'generate_memory_report',
|
|
1049
|
+
'set_scalability', 'set_resolution_scale', 'set_vsync', 'set_frame_rate_limit', 'enable_gpu_timing',
|
|
1050
|
+
'configure_texture_streaming', 'configure_lod', 'apply_baseline_settings', 'optimize_draw_calls', 'merge_actors',
|
|
1051
|
+
'configure_occlusion_culling', 'optimize_shaders', 'configure_nanite', 'configure_world_partition'
|
|
1052
|
+
],
|
|
1053
|
+
description: 'Action'
|
|
1054
|
+
},
|
|
1055
|
+
type: { type: 'string', enum: ['CPU', 'GPU', 'Memory', 'RenderThread', 'GameThread', 'All'] },
|
|
1056
|
+
duration: { type: 'number' },
|
|
1057
|
+
outputPath: { type: 'string' },
|
|
1058
|
+
detailed: { type: 'boolean' },
|
|
1059
|
+
category: { type: 'string' },
|
|
1060
|
+
level: { type: 'number' },
|
|
1061
|
+
scale: { type: 'number' },
|
|
1062
|
+
enabled: { type: 'boolean' },
|
|
1063
|
+
maxFPS: { type: 'number' },
|
|
1064
|
+
verbose: { type: 'boolean' },
|
|
1065
|
+
poolSize: { type: 'number' },
|
|
1066
|
+
boostPlayerLocation: { type: 'boolean' },
|
|
1067
|
+
forceLOD: { type: 'number' },
|
|
1068
|
+
lodBias: { type: 'number' },
|
|
1069
|
+
distanceScale: { type: 'number' },
|
|
1070
|
+
skeletalBias: { type: 'number' },
|
|
1071
|
+
hzb: { type: 'boolean' },
|
|
1072
|
+
enableInstancing: { type: 'boolean' },
|
|
1073
|
+
enableBatching: { type: 'boolean' },
|
|
1074
|
+
mergeActors: { type: 'boolean' },
|
|
1075
|
+
actors: { type: 'array', items: { type: 'string' } },
|
|
1076
|
+
freezeRendering: { type: 'boolean' },
|
|
1077
|
+
compileOnDemand: { type: 'boolean' },
|
|
1078
|
+
cacheShaders: { type: 'boolean' },
|
|
1079
|
+
reducePermutations: { type: 'boolean' },
|
|
1080
|
+
maxPixelsPerEdge: { type: 'number' },
|
|
1081
|
+
streamingPoolSize: { type: 'number' },
|
|
1082
|
+
streamingDistance: { type: 'number' },
|
|
1083
|
+
cellSize: { type: 'number' }
|
|
750
1084
|
},
|
|
751
1085
|
required: ['action']
|
|
752
1086
|
},
|
|
@@ -754,9 +1088,8 @@ Supported actions: inspect_object, set_property.`,
|
|
|
754
1088
|
type: 'object',
|
|
755
1089
|
properties: {
|
|
756
1090
|
success: { type: 'boolean' },
|
|
757
|
-
info: { type: 'object' },
|
|
758
1091
|
message: { type: 'string' },
|
|
759
|
-
|
|
1092
|
+
params: { type: 'object' }
|
|
760
1093
|
}
|
|
761
1094
|
}
|
|
762
1095
|
}
|