unreal-engine-mcp-server 0.5.4 → 0.5.6
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/CHANGELOG.md +350 -0
- package/dist/automation/bridge.d.ts.map +1 -0
- package/dist/automation/bridge.js +5 -4
- package/dist/automation/bridge.js.map +1 -0
- package/dist/automation/connection-manager.d.ts.map +1 -0
- package/dist/automation/connection-manager.js.map +1 -0
- package/dist/automation/handshake.d.ts.map +1 -0
- package/dist/automation/handshake.js.map +1 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/message-handler.d.ts.map +1 -0
- package/dist/automation/message-handler.js.map +1 -0
- package/dist/automation/request-tracker.d.ts.map +1 -0
- package/dist/automation/request-tracker.js.map +1 -0
- package/dist/automation/types.d.ts +7 -0
- package/dist/automation/types.d.ts.map +1 -0
- package/dist/automation/types.js.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +6 -4
- package/dist/cli.js.map +1 -0
- package/dist/config/class-aliases.d.ts.map +1 -0
- package/dist/config/class-aliases.js.map +1 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js.map +1 -0
- package/dist/graphql/loaders.d.ts.map +1 -0
- package/dist/graphql/loaders.js.map +1 -0
- package/dist/graphql/resolvers.d.ts +174 -69
- package/dist/graphql/resolvers.d.ts.map +1 -0
- package/dist/graphql/resolvers.js +82 -67
- package/dist/graphql/resolvers.js.map +1 -0
- package/dist/graphql/schema.d.ts.map +1 -0
- package/dist/graphql/schema.js.map +1 -0
- package/dist/graphql/server.d.ts.map +1 -0
- package/dist/graphql/server.js.map +1 -0
- package/dist/graphql/types.d.ts.map +1 -0
- package/dist/graphql/types.js.map +1 -0
- package/dist/handlers/resource-handlers.d.ts.map +1 -0
- package/dist/handlers/resource-handlers.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -9
- package/dist/index.js.map +1 -0
- package/dist/resources/actors.d.ts +7 -4
- package/dist/resources/actors.d.ts.map +1 -0
- package/dist/resources/actors.js +15 -12
- package/dist/resources/actors.js.map +1 -0
- package/dist/resources/assets.d.ts +43 -2
- package/dist/resources/assets.d.ts.map +1 -0
- package/dist/resources/assets.js +21 -12
- package/dist/resources/assets.js.map +1 -0
- package/dist/resources/levels.d.ts.map +1 -0
- package/dist/resources/levels.js +7 -5
- package/dist/resources/levels.js.map +1 -0
- package/dist/schemas/index.d.ts +4 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +4 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/schemas/parser.d.ts +20 -0
- package/dist/schemas/parser.d.ts.map +1 -0
- package/dist/schemas/parser.js +61 -0
- package/dist/schemas/parser.js.map +1 -0
- package/dist/schemas/primitives.d.ts +221 -0
- package/dist/schemas/primitives.d.ts.map +1 -0
- package/dist/schemas/primitives.js +115 -0
- package/dist/schemas/primitives.js.map +1 -0
- package/dist/schemas/responses.d.ts +362 -0
- package/dist/schemas/responses.d.ts.map +1 -0
- package/dist/schemas/responses.js +252 -0
- package/dist/schemas/responses.js.map +1 -0
- package/dist/server/resource-registry.d.ts.map +1 -0
- package/dist/server/resource-registry.js.map +1 -0
- package/dist/server/tool-registry.d.ts.map +1 -0
- package/dist/server/tool-registry.js +22 -17
- package/dist/server/tool-registry.js.map +1 -0
- package/dist/server-setup.d.ts.map +1 -0
- package/dist/server-setup.js.map +1 -0
- package/dist/services/health-monitor.d.ts +1 -1
- package/dist/services/health-monitor.d.ts.map +1 -0
- package/dist/services/health-monitor.js +4 -3
- package/dist/services/health-monitor.js.map +1 -0
- package/dist/services/metrics-server.d.ts.map +1 -0
- package/dist/services/metrics-server.js.map +1 -0
- package/dist/tools/actors.d.ts +27 -27
- package/dist/tools/actors.d.ts.map +1 -0
- package/dist/tools/actors.js +14 -10
- package/dist/tools/actors.js.map +1 -0
- package/dist/tools/animation.d.ts +15 -23
- package/dist/tools/animation.d.ts.map +1 -0
- package/dist/tools/animation.js +17 -13
- package/dist/tools/animation.js.map +1 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +18 -12
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/audio.d.ts +10 -10
- package/dist/tools/audio.d.ts.map +1 -0
- package/dist/tools/audio.js.map +1 -0
- package/dist/tools/base-tool.d.ts.map +1 -0
- package/dist/tools/base-tool.js.map +1 -0
- package/dist/tools/behavior-tree.d.ts +24 -24
- package/dist/tools/behavior-tree.d.ts.map +1 -0
- package/dist/tools/behavior-tree.js.map +1 -0
- package/dist/tools/blueprint.d.ts +14 -3
- package/dist/tools/blueprint.d.ts.map +1 -0
- package/dist/tools/blueprint.js +5 -3
- package/dist/tools/blueprint.js.map +1 -0
- package/dist/tools/consolidated-tool-definitions.d.ts +32 -32
- package/dist/tools/consolidated-tool-definitions.d.ts.map +1 -0
- package/dist/tools/consolidated-tool-definitions.js.map +1 -0
- package/dist/tools/consolidated-tool-handlers.d.ts +1 -1
- package/dist/tools/consolidated-tool-handlers.d.ts.map +1 -0
- package/dist/tools/consolidated-tool-handlers.js +26 -21
- package/dist/tools/consolidated-tool-handlers.js.map +1 -0
- package/dist/tools/debug.d.ts +25 -7
- package/dist/tools/debug.d.ts.map +1 -0
- package/dist/tools/debug.js +3 -1
- package/dist/tools/debug.js.map +1 -0
- package/dist/tools/dynamic-handler-registry.d.ts +1 -1
- package/dist/tools/dynamic-handler-registry.d.ts.map +1 -0
- package/dist/tools/dynamic-handler-registry.js +3 -1
- package/dist/tools/dynamic-handler-registry.js.map +1 -0
- package/dist/tools/editor.d.ts.map +1 -0
- package/dist/tools/editor.js +8 -6
- package/dist/tools/editor.js.map +1 -0
- package/dist/tools/engine.d.ts +1 -1
- package/dist/tools/engine.d.ts.map +1 -0
- package/dist/tools/engine.js +4 -2
- package/dist/tools/engine.js.map +1 -0
- package/dist/tools/environment.d.ts.map +1 -0
- package/dist/tools/environment.js +4 -3
- package/dist/tools/environment.js.map +1 -0
- package/dist/tools/foliage.d.ts.map +1 -0
- package/dist/tools/foliage.js +8 -8
- package/dist/tools/foliage.js.map +1 -0
- package/dist/tools/handlers/actor-handlers.d.ts +2 -1
- package/dist/tools/handlers/actor-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/actor-handlers.js +56 -33
- package/dist/tools/handlers/actor-handlers.js.map +1 -0
- package/dist/tools/handlers/animation-handlers.d.ts +2 -1
- package/dist/tools/handlers/animation-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/animation-handlers.js +74 -67
- package/dist/tools/handlers/animation-handlers.js.map +1 -0
- package/dist/tools/handlers/argument-helper.d.ts +24 -4
- package/dist/tools/handlers/argument-helper.d.ts.map +1 -0
- package/dist/tools/handlers/argument-helper.js +139 -4
- package/dist/tools/handlers/argument-helper.js.map +1 -0
- package/dist/tools/handlers/asset-handlers.d.ts +2 -1
- package/dist/tools/handlers/asset-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/asset-handlers.js +155 -94
- package/dist/tools/handlers/asset-handlers.js.map +1 -0
- package/dist/tools/handlers/audio-handlers.d.ts +2 -1
- package/dist/tools/handlers/audio-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/audio-handlers.js +82 -80
- package/dist/tools/handlers/audio-handlers.js.map +1 -0
- package/dist/tools/handlers/blueprint-handlers.d.ts +3 -5
- package/dist/tools/handlers/blueprint-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/blueprint-handlers.js +150 -142
- package/dist/tools/handlers/blueprint-handlers.js.map +1 -0
- package/dist/tools/handlers/common-handlers.d.ts +2 -3
- package/dist/tools/handlers/common-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/common-handlers.js.map +1 -0
- package/dist/tools/handlers/editor-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/editor-handlers.js +12 -2
- package/dist/tools/handlers/editor-handlers.js.map +1 -0
- package/dist/tools/handlers/effect-handlers.d.ts +2 -1
- package/dist/tools/handlers/effect-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/effect-handlers.js +70 -68
- package/dist/tools/handlers/effect-handlers.js.map +1 -0
- package/dist/tools/handlers/environment-handlers.d.ts +2 -1
- package/dist/tools/handlers/environment-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/environment-handlers.js +86 -74
- package/dist/tools/handlers/environment-handlers.js.map +1 -0
- package/dist/tools/handlers/graph-handlers.d.ts +1 -1
- package/dist/tools/handlers/graph-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/graph-handlers.js +63 -2
- package/dist/tools/handlers/graph-handlers.js.map +1 -0
- package/dist/tools/handlers/input-handlers.d.ts +2 -5
- package/dist/tools/handlers/input-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/input-handlers.js +5 -4
- package/dist/tools/handlers/input-handlers.js.map +1 -0
- package/dist/tools/handlers/inspect-handlers.d.ts +2 -1
- package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/inspect-handlers.js +61 -37
- package/dist/tools/handlers/inspect-handlers.js.map +1 -0
- package/dist/tools/handlers/level-handlers.d.ts +2 -2
- package/dist/tools/handlers/level-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/level-handlers.js +43 -39
- package/dist/tools/handlers/level-handlers.js.map +1 -0
- package/dist/tools/handlers/lighting-handlers.d.ts +12 -1
- package/dist/tools/handlers/lighting-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/lighting-handlers.js +90 -47
- package/dist/tools/handlers/lighting-handlers.js.map +1 -0
- package/dist/tools/handlers/performance-handlers.d.ts +2 -1
- package/dist/tools/handlers/performance-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/performance-handlers.js +55 -40
- package/dist/tools/handlers/performance-handlers.js.map +1 -0
- package/dist/tools/handlers/pipeline-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/pipeline-handlers.js.map +1 -0
- package/dist/tools/handlers/sequence-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/sequence-handlers.js.map +1 -0
- package/dist/tools/handlers/system-handlers.d.ts +3 -2
- package/dist/tools/handlers/system-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/system-handlers.js +105 -52
- package/dist/tools/handlers/system-handlers.js.map +1 -0
- package/dist/tools/input.d.ts.map +1 -0
- package/dist/tools/input.js +3 -1
- package/dist/tools/input.js.map +1 -0
- package/dist/tools/introspection.d.ts +14 -14
- package/dist/tools/introspection.d.ts.map +1 -0
- package/dist/tools/introspection.js +54 -45
- package/dist/tools/introspection.js.map +1 -0
- package/dist/tools/landscape.d.ts.map +1 -0
- package/dist/tools/landscape.js +15 -13
- package/dist/tools/landscape.js.map +1 -0
- package/dist/tools/level.d.ts.map +1 -0
- package/dist/tools/level.js +3 -2
- package/dist/tools/level.js.map +1 -0
- package/dist/tools/lighting.d.ts +32 -59
- package/dist/tools/lighting.d.ts.map +1 -0
- package/dist/tools/lighting.js +56 -19
- package/dist/tools/lighting.js.map +1 -0
- package/dist/tools/logs.d.ts.map +1 -0
- package/dist/tools/logs.js +2 -1
- package/dist/tools/logs.js.map +1 -0
- package/dist/tools/materials.d.ts +42 -14
- package/dist/tools/materials.d.ts.map +1 -0
- package/dist/tools/materials.js +15 -9
- package/dist/tools/materials.js.map +1 -0
- package/dist/tools/niagara.d.ts +63 -39
- package/dist/tools/niagara.d.ts.map +1 -0
- package/dist/tools/niagara.js +43 -33
- package/dist/tools/niagara.js.map +1 -0
- package/dist/tools/performance.d.ts +12 -11
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js +3 -2
- package/dist/tools/performance.js.map +1 -0
- package/dist/tools/physics.d.ts +37 -20
- package/dist/tools/physics.d.ts.map +1 -0
- package/dist/tools/physics.js +37 -30
- package/dist/tools/physics.js.map +1 -0
- package/dist/tools/property-dictionary.d.ts.map +1 -0
- package/dist/tools/property-dictionary.js.map +1 -0
- package/dist/tools/sequence.d.ts +1 -1
- package/dist/tools/sequence.d.ts.map +1 -0
- package/dist/tools/sequence.js +8 -4
- package/dist/tools/sequence.js.map +1 -0
- package/dist/tools/tool-definition-utils.d.ts.map +1 -0
- package/dist/tools/tool-definition-utils.js.map +1 -0
- package/dist/tools/ui.d.ts +11 -11
- package/dist/tools/ui.d.ts.map +1 -0
- package/dist/tools/ui.js +7 -3
- package/dist/tools/ui.js.map +1 -0
- package/dist/types/automation-responses.d.ts.map +1 -0
- package/dist/types/automation-responses.js.map +1 -0
- package/dist/types/env.d.ts.map +1 -0
- package/dist/types/env.js.map +1 -0
- package/dist/types/handler-types.d.ts +112 -3
- package/dist/types/handler-types.d.ts.map +1 -0
- package/dist/types/handler-types.js.map +1 -0
- package/dist/types/tool-interfaces.d.ts +39 -21
- package/dist/types/tool-interfaces.d.ts.map +1 -0
- package/dist/types/tool-interfaces.js.map +1 -0
- package/dist/types/tool-types.d.ts +8 -8
- package/dist/types/tool-types.d.ts.map +1 -0
- package/dist/types/tool-types.js.map +1 -0
- package/dist/unreal-bridge.d.ts +8 -6
- package/dist/unreal-bridge.d.ts.map +1 -0
- package/dist/unreal-bridge.js +16 -3
- package/dist/unreal-bridge.js.map +1 -0
- package/dist/utils/command-validator.d.ts.map +1 -0
- package/dist/utils/command-validator.js.map +1 -0
- package/dist/utils/elicitation.d.ts +2 -5
- package/dist/utils/elicitation.d.ts.map +1 -0
- package/dist/utils/elicitation.js +3 -2
- package/dist/utils/elicitation.js.map +1 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/ini-reader.d.ts +1 -1
- package/dist/utils/ini-reader.d.ts.map +1 -0
- package/dist/utils/ini-reader.js.map +1 -0
- package/dist/utils/logger.d.ts +4 -4
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/normalize.d.ts +2 -2
- package/dist/utils/normalize.d.ts.map +1 -0
- package/dist/utils/normalize.js +4 -3
- package/dist/utils/normalize.js.map +1 -0
- package/dist/utils/path-security.d.ts.map +1 -0
- package/dist/utils/path-security.js.map +1 -0
- package/dist/utils/response-factory.d.ts +2 -2
- package/dist/utils/response-factory.d.ts.map +1 -0
- package/dist/utils/response-factory.js +3 -1
- package/dist/utils/response-factory.js.map +1 -0
- package/dist/utils/response-validator.d.ts +4 -4
- package/dist/utils/response-validator.d.ts.map +1 -0
- package/dist/utils/response-validator.js +31 -23
- package/dist/utils/response-validator.js.map +1 -0
- package/dist/utils/result-helpers.d.ts.map +1 -0
- package/dist/utils/result-helpers.js.map +1 -0
- package/dist/utils/safe-json.d.ts.map +1 -0
- package/dist/utils/safe-json.js.map +1 -0
- package/dist/utils/unreal-command-queue.d.ts +2 -2
- package/dist/utils/unreal-command-queue.d.ts.map +1 -0
- package/dist/utils/unreal-command-queue.js +4 -3
- package/dist/utils/unreal-command-queue.js.map +1 -0
- package/dist/utils/validation.d.ts +1 -1
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wasm/index.d.ts +2 -2
- package/dist/wasm/index.d.ts.map +1 -0
- package/dist/wasm/index.js +11 -7
- package/dist/wasm/index.js.map +1 -0
- package/package.json +12 -34
- package/server.json +2 -2
- package/.dockerignore +0 -57
- package/.env.example +0 -26
- package/.env.production +0 -61
- package/.eslintrc.json +0 -0
- package/.eslintrc.override.json +0 -8
- package/.github/ISSUE_TEMPLATE/bug_report.yml +0 -94
- package/.github/ISSUE_TEMPLATE/config.yml +0 -8
- package/.github/ISSUE_TEMPLATE/feature_request.yml +0 -56
- package/.github/copilot-instructions.md +0 -478
- package/.github/dependabot.yml +0 -19
- package/.github/labeler.yml +0 -24
- package/.github/labels.yml +0 -70
- package/.github/pull_request_template.md +0 -42
- package/.github/release-drafter-config.yml +0 -51
- package/.github/workflows/auto-merge.yml +0 -38
- package/.github/workflows/ci.yml +0 -38
- package/.github/workflows/dependency-review.yml +0 -17
- package/.github/workflows/gemini-issue-triage.yml +0 -172
- package/.github/workflows/greetings.yml +0 -27
- package/.github/workflows/labeler.yml +0 -17
- package/.github/workflows/links.yml +0 -80
- package/.github/workflows/pr-size-labeler.yml +0 -137
- package/.github/workflows/publish-mcp.yml +0 -79
- package/.github/workflows/release-drafter.yml +0 -24
- package/.github/workflows/release.yml +0 -112
- package/.github/workflows/semantic-pull-request.yml +0 -35
- package/.github/workflows/smoke-test.yml +0 -36
- package/.github/workflows/stale.yml +0 -28
- package/CONTRIBUTING.md +0 -140
- package/Dockerfile +0 -37
- package/GEMINI.md +0 -115
- package/Public/Plugin_setup_guide.mp4 +0 -0
- package/Public/icon.png +0 -0
- package/claude_desktop_config_example.json +0 -15
- package/dist/types/responses.d.ts +0 -249
- package/dist/types/responses.js +0 -2
- package/docs/GraphQL-API.md +0 -888
- package/docs/Migration-Guide-v0.5.0.md +0 -684
- package/docs/Roadmap.md +0 -53
- package/docs/WebAssembly-Integration.md +0 -628
- package/docs/editor-plugin-extension.md +0 -370
- package/docs/handler-mapping.md +0 -249
- package/docs/native-automation-progress.md +0 -128
- package/docs/testing-guide.md +0 -423
- package/eslint.config.mjs +0 -68
- package/mcp-config-example.json +0 -14
- package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +0 -8
- package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +0 -64
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +0 -189
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +0 -22
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +0 -30
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +0 -1983
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +0 -72
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +0 -46
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +0 -846
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +0 -2393
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +0 -300
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +0 -2807
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +0 -1087
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +0 -488
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +0 -643
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +0 -31
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +0 -1094
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +0 -5750
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +0 -152
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +0 -2614
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +0 -42
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +0 -1237
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +0 -1725
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +0 -2265
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +0 -954
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +0 -209
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +0 -41
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +0 -1164
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +0 -762
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +0 -663
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +0 -136
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +0 -494
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +0 -278
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +0 -625
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +0 -401
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +0 -67
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +0 -472
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +0 -2634
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +0 -189
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +0 -917
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +0 -39
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +0 -2706
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +0 -519
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +0 -38
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +0 -668
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +0 -346
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +0 -1345
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +0 -149
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +0 -782
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +0 -115
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +0 -796
- package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +0 -117
- package/scripts/check-unreal-connection.mjs +0 -19
- package/scripts/clean-tmp.js +0 -23
- package/scripts/patch-wasm.js +0 -26
- package/scripts/run-all-tests.mjs +0 -136
- package/scripts/smoke-test.ts +0 -94
- package/scripts/sync-mcp-plugin.js +0 -143
- package/scripts/test-no-plugin-alternates.mjs +0 -113
- package/scripts/validate-server.js +0 -46
- package/scripts/verify-automation-bridge.js +0 -200
- package/src/automation/bridge.ts +0 -630
- package/src/automation/connection-manager.ts +0 -148
- package/src/automation/handshake.ts +0 -99
- package/src/automation/index.ts +0 -2
- package/src/automation/message-handler.ts +0 -192
- package/src/automation/request-tracker.ts +0 -155
- package/src/automation/types.ts +0 -108
- package/src/cli.ts +0 -34
- package/src/config/class-aliases.ts +0 -65
- package/src/config.ts +0 -73
- package/src/constants.ts +0 -29
- package/src/graphql/loaders.ts +0 -244
- package/src/graphql/resolvers.ts +0 -1008
- package/src/graphql/schema.ts +0 -452
- package/src/graphql/server.ts +0 -156
- package/src/graphql/types.ts +0 -10
- package/src/handlers/resource-handlers.ts +0 -186
- package/src/index.ts +0 -243
- package/src/resources/actors.ts +0 -127
- package/src/resources/assets.ts +0 -286
- package/src/resources/levels.ts +0 -68
- package/src/server/resource-registry.ts +0 -47
- package/src/server/tool-registry.ts +0 -354
- package/src/server-setup.ts +0 -114
- package/src/services/health-monitor.ts +0 -132
- package/src/services/metrics-server.ts +0 -176
- package/src/tools/actors.ts +0 -564
- package/src/tools/animation.ts +0 -941
- package/src/tools/assets.ts +0 -394
- package/src/tools/audio.ts +0 -499
- package/src/tools/base-tool.ts +0 -52
- package/src/tools/behavior-tree.ts +0 -45
- package/src/tools/blueprint.ts +0 -940
- package/src/tools/consolidated-tool-definitions.ts +0 -1256
- package/src/tools/consolidated-tool-handlers.ts +0 -302
- package/src/tools/debug.ts +0 -622
- package/src/tools/dynamic-handler-registry.ts +0 -33
- package/src/tools/editor.ts +0 -435
- package/src/tools/engine.ts +0 -43
- package/src/tools/environment.ts +0 -281
- package/src/tools/foliage.ts +0 -596
- package/src/tools/handlers/actor-handlers.ts +0 -244
- package/src/tools/handlers/animation-handlers.ts +0 -237
- package/src/tools/handlers/argument-helper.ts +0 -142
- package/src/tools/handlers/asset-handlers.ts +0 -550
- package/src/tools/handlers/audio-handlers.ts +0 -194
- package/src/tools/handlers/blueprint-handlers.ts +0 -380
- package/src/tools/handlers/common-handlers.ts +0 -108
- package/src/tools/handlers/editor-handlers.ts +0 -124
- package/src/tools/handlers/effect-handlers.ts +0 -224
- package/src/tools/handlers/environment-handlers.ts +0 -183
- package/src/tools/handlers/graph-handlers.ts +0 -117
- package/src/tools/handlers/input-handlers.ts +0 -28
- package/src/tools/handlers/inspect-handlers.ts +0 -450
- package/src/tools/handlers/level-handlers.ts +0 -253
- package/src/tools/handlers/lighting-handlers.ts +0 -151
- package/src/tools/handlers/performance-handlers.ts +0 -132
- package/src/tools/handlers/pipeline-handlers.ts +0 -194
- package/src/tools/handlers/sequence-handlers.ts +0 -438
- package/src/tools/handlers/system-handlers.ts +0 -564
- package/src/tools/input.ts +0 -160
- package/src/tools/introspection.ts +0 -689
- package/src/tools/landscape.ts +0 -649
- package/src/tools/level.ts +0 -989
- package/src/tools/lighting.ts +0 -1052
- package/src/tools/logs.ts +0 -219
- package/src/tools/materials.ts +0 -295
- package/src/tools/niagara.ts +0 -485
- package/src/tools/performance.ts +0 -661
- package/src/tools/physics.ts +0 -679
- package/src/tools/property-dictionary.ts +0 -98
- package/src/tools/sequence.ts +0 -385
- package/src/tools/tool-definition-utils.ts +0 -35
- package/src/tools/ui.ts +0 -452
- package/src/types/automation-responses.ts +0 -119
- package/src/types/env.ts +0 -17
- package/src/types/handler-types.ts +0 -442
- package/src/types/responses.ts +0 -355
- package/src/types/tool-interfaces.ts +0 -250
- package/src/types/tool-types.ts +0 -575
- package/src/unreal-bridge.ts +0 -693
- package/src/utils/command-validator.ts +0 -139
- package/src/utils/elicitation.ts +0 -132
- package/src/utils/error-handler.ts +0 -287
- package/src/utils/ini-reader.ts +0 -86
- package/src/utils/logger.ts +0 -35
- package/src/utils/normalize.test.ts +0 -162
- package/src/utils/normalize.ts +0 -146
- package/src/utils/path-security.ts +0 -43
- package/src/utils/response-factory.ts +0 -44
- package/src/utils/response-validator.ts +0 -395
- package/src/utils/result-helpers.ts +0 -195
- package/src/utils/safe-json.test.ts +0 -90
- package/src/utils/safe-json.ts +0 -70
- package/src/utils/unreal-command-queue.ts +0 -166
- package/src/utils/validation.test.ts +0 -184
- package/src/utils/validation.ts +0 -312
- package/src/wasm/index.ts +0 -838
- package/test-server.mjs +0 -100
- package/tests/test-animation.mjs +0 -369
- package/tests/test-asset-advanced.mjs +0 -82
- package/tests/test-asset-graph.mjs +0 -311
- package/tests/test-audio.mjs +0 -417
- package/tests/test-automation-timeouts.mjs +0 -98
- package/tests/test-behavior-tree.mjs +0 -444
- package/tests/test-blueprint-graph.mjs +0 -410
- package/tests/test-blueprint.mjs +0 -577
- package/tests/test-client-mode.mjs +0 -86
- package/tests/test-console-command.mjs +0 -56
- package/tests/test-control-actor.mjs +0 -425
- package/tests/test-control-editor.mjs +0 -112
- package/tests/test-graphql.mjs +0 -372
- package/tests/test-input.mjs +0 -349
- package/tests/test-inspect.mjs +0 -302
- package/tests/test-landscape.mjs +0 -316
- package/tests/test-lighting.mjs +0 -428
- package/tests/test-manage-asset.mjs +0 -438
- package/tests/test-manage-level.mjs +0 -89
- package/tests/test-materials.mjs +0 -356
- package/tests/test-niagara.mjs +0 -185
- package/tests/test-no-inline-python.mjs +0 -122
- package/tests/test-performance.mjs +0 -539
- package/tests/test-plugin-handshake.mjs +0 -82
- package/tests/test-runner.mjs +0 -993
- package/tests/test-sequence.mjs +0 -104
- package/tests/test-system.mjs +0 -96
- package/tests/test-wasm.mjs +0 -283
- package/tests/test-world-partition.mjs +0 -215
- package/tsconfig.json +0 -56
- package/vitest.config.ts +0 -35
- package/wasm/Cargo.lock +0 -363
- package/wasm/Cargo.toml +0 -42
- package/wasm/LICENSE +0 -21
- package/wasm/README.md +0 -253
- package/wasm/src/dependency_resolver.rs +0 -377
- package/wasm/src/lib.rs +0 -153
- package/wasm/src/property_parser.rs +0 -271
- package/wasm/src/transform_math.rs +0 -396
- package/wasm/tests/integration.rs +0 -109
package/docs/Roadmap.md
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Roadmap for Unreal Engine MCP Server
|
|
2
|
-
|
|
3
|
-
This roadmap outlines the development plan for expanding the capabilities of the Unreal Engine Model Context Protocol (MCP) server.
|
|
4
|
-
|
|
5
|
-
## Phase 1: Architecture & Foundation (✅ Completed)
|
|
6
|
-
|
|
7
|
-
- [x] **Native C++ Bridge**: Replace Python-based bridge with native C++ WebSocket plugin.
|
|
8
|
-
- [x] **Consolidated Tools**: Unify disparate tools into cohesive domains (`manage_asset`, `control_actor`, etc.).
|
|
9
|
-
- [x] **Modular Server**: Refactor monolithic `index.ts` into specialized subsystems (`ServerSetup`, `HealthMonitor`, `ResourceHandler`).
|
|
10
|
-
- [x] **WASM Acceleration**: Integrate Rust/WASM for high-performance JSON parsing and math.
|
|
11
|
-
- [x] **Robust Error Handling**: Standardize error responses, codes, and logging.
|
|
12
|
-
- [x] **Offline Capabilities**: Implement file-based fallback for project settings (`DefaultEngine.ini`).
|
|
13
|
-
|
|
14
|
-
## Phase 2: Graph & Logic Automation (✅ Completed)
|
|
15
|
-
|
|
16
|
-
- [x] **Blueprint Graphs**: Add/remove nodes, pins, and properties (`manage_blueprint_graph`).
|
|
17
|
-
- [x] **Material Graphs**: Edit material expressions and connections (`manage_material_graph`).
|
|
18
|
-
- [x] **Niagara Graphs**: Edit emitters, modules, and parameters (`manage_niagara_graph`).
|
|
19
|
-
- [x] **Behavior Trees**: Edit AI behavior trees, tasks, and decorators (`manage_behavior_tree`).
|
|
20
|
-
- [x] **Environment**: Unified environment builder (`build_environment`) for landscape, foliage, and proc-gen.
|
|
21
|
-
|
|
22
|
-
## Phase 3: Cinematic & Visual Automation (✅ Completed)
|
|
23
|
-
|
|
24
|
-
- [x] **Sequencer**: Full control over Level Sequences (create, play, tracks, keys, bindings).
|
|
25
|
-
- [x] **Audio**: Create SoundCues, play sounds, set mixes (`create_sound_cue`, `play_sound_at_location`).
|
|
26
|
-
- [x] **Landscape**: Sculpting, painting layers, modifying heightmaps (`sculpt_landscape`, `paint_landscape_layer`).
|
|
27
|
-
- [x] **Foliage**: Painting foliage instances and procedural spawning (`paint_foliage`).
|
|
28
|
-
|
|
29
|
-
## Phase 4: System & Developer Experience (Current)
|
|
30
|
-
|
|
31
|
-
- [x] **GraphQL API**: Read/write access to assets and actors via GraphQL.
|
|
32
|
-
- [x] **Pipeline Integration**: Direct UBT execution with output streaming.
|
|
33
|
-
- [x] **Documentation**: Comprehensive handler mappings and API references.
|
|
34
|
-
- [ ] **Real-time Streaming**: Streaming logs and test results via SSE or chunked responses.
|
|
35
|
-
- [ ] **Advanced Rendering**: Nanite/Lumen-specific tools (partially implemented).
|
|
36
|
-
- [x] **Metrics Dashboard**: `ue://health` view backed by bridge/server metrics.
|
|
37
|
-
- [x] **UE 5.7 Support**: Full compatibility with Unreal Engine 5.7 (Control Rig, Subobject Data).
|
|
38
|
-
|
|
39
|
-
## Phase 5: Future Horizons
|
|
40
|
-
|
|
41
|
-
- [ ] **WASM Expansion**: Move more tools (for example, graph handlers) into Rust/WASM for performance and safety.
|
|
42
|
-
- [x] **GraphQL Leverage**: Let tools query via GraphQL (for example, asset search) and explore schema stitching for composite APIs.
|
|
43
|
-
- [x] **Monitoring & Metrics**: Prometheus-compatible endpoint for tool latency/errors and bridge metrics (pending requests, queue depth).
|
|
44
|
-
- [ ] **Extensibility Framework**: Dynamic handler registry via JSON config and support for custom C++ handlers via plugins.
|
|
45
|
-
- [ ] **Remote Profiling**: Deep integration with Unreal Insights for remote performance tuning.
|
|
46
|
-
- [ ] **AI-Driven Optimization**: Automated asset auditing and optimization suggestions.
|
|
47
|
-
- [ ] **Packaged Build Control**: Limited control over packaged executables (via sidecar or IPC).
|
|
48
|
-
|
|
49
|
-
## Legend
|
|
50
|
-
|
|
51
|
-
- ✅ **Completed**: Feature is implemented and verified.
|
|
52
|
-
- 🚧 **In Progress**: Feature is under active development.
|
|
53
|
-
- 📅 **Planned**: Feature is scheduled for a future release.
|
|
@@ -1,628 +0,0 @@
|
|
|
1
|
-
# WebAssembly Integration for Performance-Critical Operations
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
WebAssembly (WASM) is a binary instruction format for a stack-based virtual machine, designed for high-performance applications. Integrating WebAssembly into the Unreal Engine MCP Server will provide significant performance improvements for computational-heavy operations.
|
|
6
|
-
|
|
7
|
-
## Performance Benefits
|
|
8
|
-
|
|
9
|
-
### Current TypeScript Performance
|
|
10
|
-
|
|
11
|
-
| Operation | Approximate Time | Limitations |
|
|
12
|
-
|-----------|------------------|-------------|
|
|
13
|
-
| Property parsing (1000 props) | ~150-300ms | Large JSON parsing overhead |
|
|
14
|
-
| Asset dependency resolution | ~500-1000ms | Recursive traversal bottleneck |
|
|
15
|
-
| Transform calculations | ~5-10ms | Per-object processing |
|
|
16
|
-
| Blueprint compilation validation | ~200-500ms | Complex string parsing |
|
|
17
|
-
| Bulk actor queries (500 actors) | ~800-1200ms | Object serialization cost |
|
|
18
|
-
|
|
19
|
-
### Projected WASM Performance
|
|
20
|
-
|
|
21
|
-
| Operation | Approximate Time | Improvement |
|
|
22
|
-
|-----------|------------------|-------------|
|
|
23
|
-
| Property parsing (1000 props) | ~20-40ms | **5-8x faster** |
|
|
24
|
-
| Asset dependency resolution | ~100-200ms | **3-5x faster** |
|
|
25
|
-
| Transform calculations | ~1-2ms | **5x faster** |
|
|
26
|
-
| Blueprint compilation validation | ~50-100ms | **4x faster** |
|
|
27
|
-
| Bulk actor queries (500 actors) | ~200-300ms | **3-4x faster** |
|
|
28
|
-
|
|
29
|
-
## Integration Strategy
|
|
30
|
-
|
|
31
|
-
### 1. Target Operations for WASM
|
|
32
|
-
|
|
33
|
-
#### High-Priority Operations (Immediate Implementation)
|
|
34
|
-
|
|
35
|
-
1. **Property Parsing and Serialization**
|
|
36
|
-
- Parse complex property hierarchies
|
|
37
|
-
- Serialize/deserialize Blueprint data
|
|
38
|
-
- Transform property values between formats
|
|
39
|
-
|
|
40
|
-
2. **Asset Dependency Resolution**
|
|
41
|
-
- Traverse dependency graphs
|
|
42
|
-
- Detect circular dependencies
|
|
43
|
-
- Calculate dependency depth and relationships
|
|
44
|
-
|
|
45
|
-
3. **Transform Calculations**
|
|
46
|
-
- Vector math (addition, subtraction, multiplication, division)
|
|
47
|
-
- Matrix transformations
|
|
48
|
-
- Rotation conversions (Euler → Quaternion → Matrix)
|
|
49
|
-
- Transform composition and decomposition
|
|
50
|
-
|
|
51
|
-
4. **Data Validation**
|
|
52
|
-
- Blueprint node structure validation
|
|
53
|
-
- Property type checking
|
|
54
|
-
- Schema validation for complex objects
|
|
55
|
-
|
|
56
|
-
#### Medium-Priority Operations (Phase 2)
|
|
57
|
-
|
|
58
|
-
1. **Bulk Object Processing**
|
|
59
|
-
- Batch process multiple assets
|
|
60
|
-
- Parallel transform calculations
|
|
61
|
-
- Bulk property updates
|
|
62
|
-
|
|
63
|
-
2. **Path Manipulation**
|
|
64
|
-
- Resolve asset paths
|
|
65
|
-
- Normalize path formats
|
|
66
|
-
- Path pattern matching
|
|
67
|
-
|
|
68
|
-
3. **String Processing**
|
|
69
|
-
- Blueprint name generation
|
|
70
|
-
- Pattern matching for assets
|
|
71
|
-
- Tokenization of complex strings
|
|
72
|
-
|
|
73
|
-
### 2. Technology Stack
|
|
74
|
-
|
|
75
|
-
#### Rust → WebAssembly
|
|
76
|
-
|
|
77
|
-
**Why Rust?**
|
|
78
|
-
- Excellent WebAssembly support via `wasm-bindgen`
|
|
79
|
-
- Memory safety without garbage collection
|
|
80
|
-
- Zero-cost abstractions
|
|
81
|
-
- Strong performance characteristics
|
|
82
|
-
- Great tooling (`cargo`, `wasm-pack`)
|
|
83
|
-
|
|
84
|
-
**Alternative Options:**
|
|
85
|
-
- **C/C++**: Direct compilation to WebAssembly
|
|
86
|
-
- Pros: Mature ecosystem, direct control
|
|
87
|
-
- Cons: Manual memory management, more complex build setup
|
|
88
|
-
- **AssemblyScript**: TypeScript-like syntax
|
|
89
|
-
- Pros: Familiar syntax for JS developers
|
|
90
|
-
- Cons: Less mature, some TypeScript features not supported
|
|
91
|
-
|
|
92
|
-
#### Recommendation: **Rust**
|
|
93
|
-
|
|
94
|
-
### 3. Architecture Design
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
┌─────────────────────────────────────┐
|
|
98
|
-
│ TypeScript Layer │
|
|
99
|
-
│ - API Layer │
|
|
100
|
-
│ - Validation │
|
|
101
|
-
│ - Error Handling │
|
|
102
|
-
│ - Fallback Logic │
|
|
103
|
-
└─────────────┬───────────────────────┘
|
|
104
|
-
│ wasm-bindgen
|
|
105
|
-
│ (function calls)
|
|
106
|
-
┌─────────────▼───────────────────────┐
|
|
107
|
-
│ WebAssembly Module │
|
|
108
|
-
│ - Property parsing │
|
|
109
|
-
│ - Dependency resolution │
|
|
110
|
-
│ - Transform math │
|
|
111
|
-
│ - Data validation │
|
|
112
|
-
└─────────────┬───────────────────────┘
|
|
113
|
-
│ FFI calls
|
|
114
|
-
┌─────────────▼───────────────────────┐
|
|
115
|
-
│ Rust Core │
|
|
116
|
-
│ - Zero-cost abstractions │
|
|
117
|
-
│ - Memory safety │
|
|
118
|
-
│ - High performance │
|
|
119
|
-
└─────────────────────────────────────┘
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### 4. Project Structure
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
wasm/
|
|
126
|
-
├── Cargo.toml # Rust project configuration
|
|
127
|
-
├── src/
|
|
128
|
-
│ ├── lib.rs # Entry point
|
|
129
|
-
│ ├── property_parser.rs # Property parsing functions
|
|
130
|
-
│ ├── dependency_resolver.rs # Dependency graph traversal
|
|
131
|
-
│ ├── transform_math.rs # Vector/matrix calculations
|
|
132
|
-
│ ├── validation.rs # Data validation functions
|
|
133
|
-
│ └── utils.rs # Utility functions
|
|
134
|
-
├── package.json # Node.js integration
|
|
135
|
-
├── build.rs # Build script
|
|
136
|
-
├── README.md # Build instructions
|
|
137
|
-
└── tests/
|
|
138
|
-
└── integration.rs # Rust tests
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
### 5. Implementation Details
|
|
142
|
-
|
|
143
|
-
#### 5.1 Rust Library (`src/lib.rs`)
|
|
144
|
-
|
|
145
|
-
```rust
|
|
146
|
-
use wasm_bindgen::prelude::*;
|
|
147
|
-
use serde::{Serialize, Deserialize};
|
|
148
|
-
|
|
149
|
-
#[wasm_bindgen]
|
|
150
|
-
pub struct PropertyParser {
|
|
151
|
-
// Internal state
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
#[wasm_bindgen]
|
|
155
|
-
impl PropertyParser {
|
|
156
|
-
#[wasm_bindgen(constructor)]
|
|
157
|
-
pub fn new() -> PropertyParser {
|
|
158
|
-
PropertyParser { }
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
#[wasm_bindgen]
|
|
162
|
-
pub fn parse_properties(&self, json_str: &str) -> Result<JsValue, JsValue> {
|
|
163
|
-
// Parse JSON efficiently using serde
|
|
164
|
-
// Return structured data
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
#[wasm_bindgen]
|
|
168
|
-
pub fn serialize_properties(&self, properties: &JsValue) -> Result<String, JsValue> {
|
|
169
|
-
// Serialize back to JSON
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
#[wasm_bindgen]
|
|
174
|
-
pub struct TransformCalculator {
|
|
175
|
-
// Transform calculation state
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
#[wasm_bindgen]
|
|
179
|
-
impl TransformCalculator {
|
|
180
|
-
#[wasm_bindgen(constructor)]
|
|
181
|
-
pub fn new() -> TransformCalculator {
|
|
182
|
-
TransformCalculator { }
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
#[wasm_bindgen]
|
|
186
|
-
pub fn compose_transform(
|
|
187
|
-
&self,
|
|
188
|
-
location: &[f32; 3],
|
|
189
|
-
rotation: &[f32; 3],
|
|
190
|
-
scale: &[f32; 3]
|
|
191
|
-
) -> Vec<f32> {
|
|
192
|
-
// Efficient matrix composition
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
#[wasm_bindgen]
|
|
196
|
-
pub fn decompose_transform(&self, matrix: &[f32; 16]) -> Vec<f32> {
|
|
197
|
-
// Extract location, rotation, scale
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
```
|
|
201
|
-
|
|
202
|
-
#### 5.2 TypeScript Integration (`src/wasm/`)
|
|
203
|
-
|
|
204
|
-
```typescript
|
|
205
|
-
import init, { PropertyParser, TransformCalculator } from './pkg/unreal_mcp_wasm.js';
|
|
206
|
-
|
|
207
|
-
interface WASMModule {
|
|
208
|
-
propertyParser: PropertyParser;
|
|
209
|
-
transformCalculator: TransformCalculator;
|
|
210
|
-
initialized: boolean;
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
class WASMIntegration {
|
|
214
|
-
private module: WASMModule | null = null;
|
|
215
|
-
|
|
216
|
-
async initialize(): Promise<void> {
|
|
217
|
-
if (this.module?.initialized) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
try {
|
|
222
|
-
// Load the WASM module
|
|
223
|
-
const wasmModule = await init();
|
|
224
|
-
|
|
225
|
-
this.module = {
|
|
226
|
-
propertyParser: new PropertyParser(),
|
|
227
|
-
transformCalculator: new TransformCalculator(),
|
|
228
|
-
initialized: true
|
|
229
|
-
};
|
|
230
|
-
|
|
231
|
-
console.log('WebAssembly module initialized successfully');
|
|
232
|
-
} catch (error) {
|
|
233
|
-
console.error('Failed to initialize WebAssembly module:', error);
|
|
234
|
-
// Fallback to TypeScript implementation
|
|
235
|
-
this.module = null;
|
|
236
|
-
throw error;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
isInitialized(): boolean {
|
|
241
|
-
return this.module?.initialized === true;
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
// Property parsing with WASM fallback
|
|
245
|
-
async parseProperties(jsonStr: string): Promise<any> {
|
|
246
|
-
if (!this.module) {
|
|
247
|
-
await this.initialize();
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
if (this.module) {
|
|
251
|
-
try {
|
|
252
|
-
return this.module.propertyParser.parse_properties(jsonStr);
|
|
253
|
-
} catch (error) {
|
|
254
|
-
console.warn('WASM property parsing failed, falling back to TypeScript:', error);
|
|
255
|
-
// Fallback to TypeScript implementation
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
|
|
259
|
-
// TypeScript fallback
|
|
260
|
-
return JSON.parse(jsonStr);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Transform calculations with WASM
|
|
264
|
-
composeTransform(
|
|
265
|
-
location: [number, number, number],
|
|
266
|
-
rotation: [number, number, number],
|
|
267
|
-
scale: [number, number, number]
|
|
268
|
-
): Float32Array {
|
|
269
|
-
if (!this.module) {
|
|
270
|
-
throw new Error('WASM module not initialized');
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
try {
|
|
274
|
-
return this.module.transformCalculator.compose_transform(
|
|
275
|
-
location,
|
|
276
|
-
rotation,
|
|
277
|
-
scale
|
|
278
|
-
);
|
|
279
|
-
} catch (error) {
|
|
280
|
-
console.warn('WASM transform calculation failed, falling back to TypeScript:', error);
|
|
281
|
-
// TypeScript fallback implementation
|
|
282
|
-
return this.fallbackComposeTransform(location, rotation, scale);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
private fallbackComposeTransform(
|
|
287
|
-
location: [number, number, number],
|
|
288
|
-
rotation: [number, number, number],
|
|
289
|
-
scale: [number, number, number]
|
|
290
|
-
): Float32Array {
|
|
291
|
-
// Pure TypeScript implementation
|
|
292
|
-
const [x, y, z] = location;
|
|
293
|
-
const [pitch, yaw, roll] = rotation;
|
|
294
|
-
const [sx, sy, sz] = scale;
|
|
295
|
-
|
|
296
|
-
// Create transformation matrix
|
|
297
|
-
const matrix = new Float32Array(16);
|
|
298
|
-
// ... matrix composition logic
|
|
299
|
-
return matrix;
|
|
300
|
-
}
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
export const wasmIntegration = new WASMIntegration();
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
### 6. Build System
|
|
307
|
-
|
|
308
|
-
#### 6.1 Cargo.toml
|
|
309
|
-
|
|
310
|
-
```toml
|
|
311
|
-
[package]
|
|
312
|
-
name = "unreal-mcp-wasm"
|
|
313
|
-
version = "0.1.0"
|
|
314
|
-
edition = "2021"
|
|
315
|
-
|
|
316
|
-
[lib]
|
|
317
|
-
crate-type = ["cdylib"]
|
|
318
|
-
|
|
319
|
-
[dependencies]
|
|
320
|
-
wasm-bindgen = "0.2"
|
|
321
|
-
serde = { version = "1.0", features = ["derive"] }
|
|
322
|
-
serde_json = "1.0"
|
|
323
|
-
js-sys = "0.3"
|
|
324
|
-
|
|
325
|
-
[dependencies.web-sys]
|
|
326
|
-
version = "0.3"
|
|
327
|
-
features = ["console"]
|
|
328
|
-
|
|
329
|
-
[dev-dependencies]
|
|
330
|
-
wasm-bindgen-test = "0.3"
|
|
331
|
-
|
|
332
|
-
[profile.release]
|
|
333
|
-
opt-level = 3
|
|
334
|
-
lto = true
|
|
335
|
-
codegen-units = 1
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
#### 6.2 Build Script (`build.rs`)
|
|
339
|
-
|
|
340
|
-
```rust
|
|
341
|
-
use wasm_pack::wasm_pack;
|
|
342
|
-
|
|
343
|
-
fn main() {
|
|
344
|
-
wasm_pack::build_package(&wasm_pack::Target::Web);
|
|
345
|
-
}
|
|
346
|
-
```
|
|
347
|
-
|
|
348
|
-
#### 6.3 NPM Build Script
|
|
349
|
-
|
|
350
|
-
```json
|
|
351
|
-
{
|
|
352
|
-
"scripts": {
|
|
353
|
-
"build:wasm": "wasm-pack build wasm --target web --out-dir src/wasm/pkg",
|
|
354
|
-
"build": "npm run build:wasm && tsc",
|
|
355
|
-
"dev:wasm": "wasm-pack build wasm --target web --out-dir src/wasm/pkg --watch",
|
|
356
|
-
"test:wasm": "cd wasm && cargo test"
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
```
|
|
360
|
-
|
|
361
|
-
### 7. Performance Optimizations
|
|
362
|
-
|
|
363
|
-
#### 7.1 Memory Management
|
|
364
|
-
|
|
365
|
-
- **Reuse Memory**: Avoid frequent allocation/deallocation
|
|
366
|
-
- **Typed Arrays**: Use `Float32Array`, `Int32Array` for numerical data
|
|
367
|
-
- **Struct of Arrays (SoA)**: Better cache locality than Array of Structs (AoS)
|
|
368
|
-
- **Memory Pooling**: Pre-allocate buffers for frequently used operations
|
|
369
|
-
|
|
370
|
-
#### 7.2 SIMD Instructions
|
|
371
|
-
|
|
372
|
-
Use SIMD (Single Instruction, Multiple Data) for parallel operations:
|
|
373
|
-
|
|
374
|
-
```rust
|
|
375
|
-
#[cfg(target_feature = "simd128")]
|
|
376
|
-
use wasm_bindgen::prelude::wasm_bindgen_simd;
|
|
377
|
-
|
|
378
|
-
#[wasm_bindgen]
|
|
379
|
-
pub fn batch_transform_actors(actors: &[Actor]) -> Vec<Matrix> {
|
|
380
|
-
// Use SIMD for parallel transform calculations
|
|
381
|
-
}
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
#### 7.3 Parallel Processing
|
|
385
|
-
|
|
386
|
-
For bulk operations, use Web Workers:
|
|
387
|
-
|
|
388
|
-
```typescript
|
|
389
|
-
// wasm-worker.ts
|
|
390
|
-
import { wasmIntegration } from '../wasm-integration';
|
|
391
|
-
|
|
392
|
-
self.onmessage = async (e) => {
|
|
393
|
-
const { operation, data } = e.data;
|
|
394
|
-
|
|
395
|
-
if (operation === 'batch_transform') {
|
|
396
|
-
const results = await wasmIntegration.batchTransform(data);
|
|
397
|
-
self.postMessage({ success: true, results });
|
|
398
|
-
}
|
|
399
|
-
};
|
|
400
|
-
```
|
|
401
|
-
|
|
402
|
-
### 8. Error Handling and Fallbacks
|
|
403
|
-
|
|
404
|
-
#### 8.1 Graceful Degradation
|
|
405
|
-
|
|
406
|
-
```typescript
|
|
407
|
-
async function withWASMFallback<T>(
|
|
408
|
-
wasmOperation: () => Promise<T>,
|
|
409
|
-
tsFallback: () => Promise<T>,
|
|
410
|
-
operationName: string
|
|
411
|
-
): Promise<T> {
|
|
412
|
-
try {
|
|
413
|
-
if (wasmIntegration.isInitialized()) {
|
|
414
|
-
return await wasmOperation();
|
|
415
|
-
}
|
|
416
|
-
} catch (error) {
|
|
417
|
-
console.warn(`${operationName} failed with WASM, falling back to TypeScript:`, error);
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
return await tsFallback();
|
|
421
|
-
}
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
#### 8.2 Feature Detection
|
|
425
|
-
|
|
426
|
-
```typescript
|
|
427
|
-
function detectWASMSupport(): boolean {
|
|
428
|
-
return typeof WebAssembly === 'object' &&
|
|
429
|
-
typeof WebAssembly.instantiate === 'function' &&
|
|
430
|
-
typeof SharedArrayBuffer !== 'undefined'; // For advanced features
|
|
431
|
-
}
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
### 9. Testing Strategy
|
|
435
|
-
|
|
436
|
-
#### 9.1 Rust Tests (`wasm/tests/integration.rs`)
|
|
437
|
-
|
|
438
|
-
```rust
|
|
439
|
-
#[cfg(test)]
|
|
440
|
-
mod tests {
|
|
441
|
-
use super::*;
|
|
442
|
-
|
|
443
|
-
#[test]
|
|
444
|
-
fn test_property_parser() {
|
|
445
|
-
let parser = PropertyParser::new();
|
|
446
|
-
let json = r#"{"name": "Test", "value": 42}"#;
|
|
447
|
-
let result = parser.parse_properties(json).unwrap();
|
|
448
|
-
// Verify result
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
#[test]
|
|
452
|
-
fn test_transform_composition() {
|
|
453
|
-
let calc = TransformCalculator::new();
|
|
454
|
-
let location = [0.0, 0.0, 0.0];
|
|
455
|
-
let rotation = [0.0, 0.0, 0.0];
|
|
456
|
-
let scale = [1.0, 1.0, 1.0];
|
|
457
|
-
|
|
458
|
-
let matrix = calc.compose_transform(location, rotation, scale);
|
|
459
|
-
assert_eq!(matrix.len(), 16);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
#### 9.2 TypeScript Tests
|
|
465
|
-
|
|
466
|
-
```typescript
|
|
467
|
-
import { wasmIntegration } from '../src/wasm-integration';
|
|
468
|
-
|
|
469
|
-
describe('WASM Integration', () => {
|
|
470
|
-
beforeAll(async () => {
|
|
471
|
-
await wasmIntegration.initialize();
|
|
472
|
-
});
|
|
473
|
-
|
|
474
|
-
test('property parsing performance', async () => {
|
|
475
|
-
const properties = { /* test data */ };
|
|
476
|
-
const start = performance.now();
|
|
477
|
-
|
|
478
|
-
const result = await wasmIntegration.parseProperties(JSON.stringify(properties));
|
|
479
|
-
|
|
480
|
-
const end = performance.now();
|
|
481
|
-
expect(end - start).toBeLessThan(50); // Should be under 50ms
|
|
482
|
-
});
|
|
483
|
-
|
|
484
|
-
test('transform calculation accuracy', () => {
|
|
485
|
-
const location = [100, 200, 300];
|
|
486
|
-
const rotation = [0, 90, 0];
|
|
487
|
-
const scale = [1, 1, 1];
|
|
488
|
-
|
|
489
|
-
const result = wasmIntegration.composeTransform(location, rotation, scale);
|
|
490
|
-
|
|
491
|
-
// Verify transformation matrix is correct
|
|
492
|
-
expect(result[12]).toBe(100); // X translation
|
|
493
|
-
expect(result[13]).toBe(200); // Y translation
|
|
494
|
-
expect(result[14]).toBe(300); // Z translation
|
|
495
|
-
});
|
|
496
|
-
});
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### 10. Deployment
|
|
500
|
-
|
|
501
|
-
#### 10.1 Build Pipeline
|
|
502
|
-
|
|
503
|
-
1. **Rust Compilation**
|
|
504
|
-
```bash
|
|
505
|
-
wasm-pack build --release --target web
|
|
506
|
-
```
|
|
507
|
-
|
|
508
|
-
2. **Binary Optimization**
|
|
509
|
-
```bash
|
|
510
|
-
# Strip debug info
|
|
511
|
-
wasm-strip pkg/unreal_mcp_wasm_bg.wasm
|
|
512
|
-
```
|
|
513
|
-
|
|
514
|
-
3. **TypeScript Compilation**
|
|
515
|
-
```bash
|
|
516
|
-
tsc --project tsconfig.json
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
#### 10.2 Distribution
|
|
520
|
-
|
|
521
|
-
```
|
|
522
|
-
dist/
|
|
523
|
-
├── index.js
|
|
524
|
-
├── cli.js
|
|
525
|
-
├── wasm/
|
|
526
|
-
│ ├── pkg/
|
|
527
|
-
│ │ ├── unreal_mcp_wasm.js
|
|
528
|
-
│ │ ├── unreal_mcp_wasm_bg.wasm
|
|
529
|
-
│ │ └── unreal_mcp_wasm_bg.wasm.d.ts
|
|
530
|
-
│ └── index.d.ts
|
|
531
|
-
└── ...
|
|
532
|
-
```
|
|
533
|
-
|
|
534
|
-
### 11. Monitoring and Metrics
|
|
535
|
-
|
|
536
|
-
#### 11.1 Performance Monitoring
|
|
537
|
-
|
|
538
|
-
```typescript
|
|
539
|
-
class WASMPerformanceMonitor {
|
|
540
|
-
private metrics = new Map<string, number[]>();
|
|
541
|
-
|
|
542
|
-
measureOperation(operation: string, fn: () => Promise<any>): Promise<any> {
|
|
543
|
-
const start = performance.now();
|
|
544
|
-
|
|
545
|
-
return fn().then(result => {
|
|
546
|
-
const end = performance.now();
|
|
547
|
-
const duration = end - start;
|
|
548
|
-
|
|
549
|
-
if (!this.metrics.has(operation)) {
|
|
550
|
-
this.metrics.set(operation, []);
|
|
551
|
-
}
|
|
552
|
-
this.metrics.get(operation)!.push(duration);
|
|
553
|
-
|
|
554
|
-
return result;
|
|
555
|
-
});
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
getAverageTime(operation: string): number {
|
|
559
|
-
const times = this.metrics.get(operation) || [];
|
|
560
|
-
return times.reduce((a, b) => a + b, 0) / times.length;
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
report(): string {
|
|
564
|
-
const report = [];
|
|
565
|
-
for (const [operation, times] of this.metrics) {
|
|
566
|
-
const avg = this.getAverageTime(operation);
|
|
567
|
-
report.push(`${operation}: ${avg.toFixed(2)}ms (${times.length} samples)`);
|
|
568
|
-
}
|
|
569
|
-
return report.join('\n');
|
|
570
|
-
}
|
|
571
|
-
}
|
|
572
|
-
```
|
|
573
|
-
|
|
574
|
-
### 12. Migration Plan
|
|
575
|
-
|
|
576
|
-
#### Phase 1: Core Operations (Weeks 1-2)
|
|
577
|
-
- Implement property parser
|
|
578
|
-
- Add transform calculations
|
|
579
|
-
- Create Rust tests
|
|
580
|
-
- Add TypeScript integration
|
|
581
|
-
|
|
582
|
-
#### Phase 2: Advanced Features (Weeks 3-4)
|
|
583
|
-
- Implement dependency resolver
|
|
584
|
-
- Add batch operations
|
|
585
|
-
- Optimize memory usage
|
|
586
|
-
- Add performance monitoring
|
|
587
|
-
|
|
588
|
-
#### Phase 3: Testing and Optimization (Week 5)
|
|
589
|
-
- Comprehensive testing
|
|
590
|
-
- Performance benchmarking
|
|
591
|
-
- Bug fixes
|
|
592
|
-
- Documentation
|
|
593
|
-
|
|
594
|
-
### 13. Risks and Mitigations
|
|
595
|
-
|
|
596
|
-
#### Risk 1: WASM Loading Failures
|
|
597
|
-
**Mitigation**: Robust fallback to TypeScript implementations
|
|
598
|
-
|
|
599
|
-
#### Risk 2: Performance Regression
|
|
600
|
-
**Mitigation**: Comprehensive benchmarking and monitoring
|
|
601
|
-
|
|
602
|
-
#### Risk 3: Binary Size Bloat
|
|
603
|
-
**Mitigation**: Careful feature selection, tree shaking, compression
|
|
604
|
-
|
|
605
|
-
#### Risk 4: Compatibility Issues
|
|
606
|
-
**Mitigation**: Feature detection, polyfills, graceful degradation
|
|
607
|
-
|
|
608
|
-
### 14. Success Metrics
|
|
609
|
-
|
|
610
|
-
- **Performance**: 3-8x improvement in target operations
|
|
611
|
-
- **Memory Usage**: < 10MB overhead for WASM module
|
|
612
|
-
- **Reliability**: 99.9% success rate with fallbacks
|
|
613
|
-
- **Compatibility**: Works in all modern browsers
|
|
614
|
-
- **Bundle Size**: < 500KB additional bundle size
|
|
615
|
-
|
|
616
|
-
### 15. Future Enhancements
|
|
617
|
-
|
|
618
|
-
1. **Threading**: Use SharedArrayBuffer and Web Workers
|
|
619
|
-
2. **Streaming**: Stream large datasets through WASM
|
|
620
|
-
3. **SIMD**: Leverage SIMD instructions for parallel processing
|
|
621
|
-
4. **Custom Allocators**: Implement domain-specific memory allocators
|
|
622
|
-
5. **Caching**: Cache compiled WASM modules for reuse
|
|
623
|
-
|
|
624
|
-
## Conclusion
|
|
625
|
-
|
|
626
|
-
WebAssembly integration will provide significant performance improvements for the Unreal Engine MCP Server's most computationally intensive operations. By carefully targeting specific operations and providing robust fallbacks, we can achieve 3-8x performance gains while maintaining full compatibility and reliability.
|
|
627
|
-
|
|
628
|
-
The Rust-based implementation offers the best balance of performance, safety, and developer productivity. With proper testing, monitoring, and optimization, WASM integration will be a valuable addition to the MCP server's capabilities.
|