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
|
@@ -1,684 +0,0 @@
|
|
|
1
|
-
# Migration Guide: v0.5.0 - GraphQL API & WebAssembly Integration
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
Version 0.5.0 introduces two major new features to the Unreal Engine MCP Server:
|
|
6
|
-
|
|
7
|
-
1. **GraphQL API** - A flexible query interface for complex data retrieval
|
|
8
|
-
2. **WebAssembly Integration** - High-performance operations for critical tasks
|
|
9
|
-
|
|
10
|
-
This guide explains what's new, how to upgrade, and how to take advantage of these features.
|
|
11
|
-
|
|
12
|
-
## What's New in v0.5.0
|
|
13
|
-
|
|
14
|
-
### GraphQL API
|
|
15
|
-
|
|
16
|
-
The GraphQL API provides a modern alternative to MCP tools for complex queries:
|
|
17
|
-
|
|
18
|
-
- **Flexible Queries**: Request exactly the data you need
|
|
19
|
-
- **Nested Queries**: Fetch related data in a single request
|
|
20
|
-
- **Real-time Schema**: Introspection and strongly-typed API
|
|
21
|
-
- **Multiple Endpoints**: Run alongside existing MCP tools
|
|
22
|
-
- **Better Performance**: Reduce over-fetching and under-fetching
|
|
23
|
-
|
|
24
|
-
**Endpoint**: `http://127.0.0.1:4000/graphql` (configurable)
|
|
25
|
-
|
|
26
|
-
### WebAssembly Integration
|
|
27
|
-
|
|
28
|
-
WebAssembly provides 3-8x performance improvements for computational tasks:
|
|
29
|
-
|
|
30
|
-
- **Property Parsing**: 5-8x faster JSON parsing
|
|
31
|
-
- **Transform Math**: 5-10x faster vector/matrix operations
|
|
32
|
-
- **Dependency Resolution**: 3-5x faster asset dependency traversal
|
|
33
|
-
- **Graceful Fallbacks**: Automatic TypeScript fallback if WASM unavailable
|
|
34
|
-
|
|
35
|
-
## Breaking Changes
|
|
36
|
-
|
|
37
|
-
### None! ✅
|
|
38
|
-
|
|
39
|
-
All changes are **backward compatible**. Existing MCP tools continue to work exactly as before.
|
|
40
|
-
|
|
41
|
-
## New Dependencies
|
|
42
|
-
|
|
43
|
-
The following npm dependencies have been added:
|
|
44
|
-
|
|
45
|
-
```json
|
|
46
|
-
{
|
|
47
|
-
"@graphql-tools/schema": "^10.0.0",
|
|
48
|
-
"@graphql-tools/utils": "^10.0.0",
|
|
49
|
-
"graphql": "^16.8.1",
|
|
50
|
-
"graphql-yoga": "^5.1.0"
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Installation**: These are automatically installed when you run `npm install`.
|
|
55
|
-
|
|
56
|
-
## Configuration
|
|
57
|
-
|
|
58
|
-
### Environment Variables
|
|
59
|
-
|
|
60
|
-
#### GraphQL Configuration
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
# Enable/disable GraphQL server
|
|
64
|
-
GRAPHQL_ENABLED=true
|
|
65
|
-
|
|
66
|
-
# Server host and port (default: 127.0.0.1:4000)
|
|
67
|
-
GRAPHQL_HOST=127.0.0.1
|
|
68
|
-
GRAPHQL_PORT=4000
|
|
69
|
-
|
|
70
|
-
# GraphQL endpoint path (default: /graphql)
|
|
71
|
-
GRAPHQL_PATH=/graphql
|
|
72
|
-
|
|
73
|
-
# CORS configuration
|
|
74
|
-
GRAPHQL_CORS_ORIGIN=*
|
|
75
|
-
GRAPHQL_CORS_CREDENTIALS=false
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
#### WebAssembly Configuration
|
|
79
|
-
|
|
80
|
-
```bash
|
|
81
|
-
# Enable/disable WebAssembly
|
|
82
|
-
WASM_ENABLED=true
|
|
83
|
-
|
|
84
|
-
# Path to WASM module (default: ./pkg/unreal_mcp_wasm.js)
|
|
85
|
-
WASM_PATH=./pkg/unreal_mcp_wasm.js
|
|
86
|
-
|
|
87
|
-
# Enable/disable TypeScript fallbacks (default: true)
|
|
88
|
-
WASM_FALLBACK_ENABLED=true
|
|
89
|
-
|
|
90
|
-
# Enable/disable performance monitoring (default: true)
|
|
91
|
-
WASM_MONITORING_ENABLED=true
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
### Configuration File Example
|
|
95
|
-
|
|
96
|
-
Create a `.env` file in your project root:
|
|
97
|
-
|
|
98
|
-
```bash
|
|
99
|
-
# GraphQL Settings
|
|
100
|
-
GRAPHQL_ENABLED=true
|
|
101
|
-
GRAPHQL_PORT=4000
|
|
102
|
-
GRAPHQL_HOST=127.0.0.1
|
|
103
|
-
|
|
104
|
-
# WebAssembly Settings
|
|
105
|
-
WASM_ENABLED=true
|
|
106
|
-
WASM_MONITORING_ENABLED=true
|
|
107
|
-
|
|
108
|
-
# Existing MCP settings
|
|
109
|
-
MCP_AUTOMATION_HOST=127.0.0.1
|
|
110
|
-
MCP_AUTOMATION_PORT=8091
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
## Migration Steps
|
|
114
|
-
|
|
115
|
-
### Step 1: Update Dependencies
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
npm install
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
This installs the new GraphQL dependencies.
|
|
122
|
-
|
|
123
|
-
### Step 2: Build the Project
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
npm run build
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
### Step 3: (Optional) Build WebAssembly Module
|
|
130
|
-
|
|
131
|
-
To enable WebAssembly features:
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
# Install wasm-pack (one-time setup)
|
|
135
|
-
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
|
136
|
-
|
|
137
|
-
# Build the WebAssembly module
|
|
138
|
-
npm run build:wasm
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
This creates the WebAssembly binary in `src/wasm/pkg/`.
|
|
142
|
-
|
|
143
|
-
**Note**: WebAssembly is optional. The server works with TypeScript fallbacks if WASM is not built.
|
|
144
|
-
|
|
145
|
-
### Step 4: Update Client Code (Optional)
|
|
146
|
-
|
|
147
|
-
If you want to use the new GraphQL API from your client:
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
// Old approach (MCP Tool)
|
|
151
|
-
const result = await callTool('manage_asset', {
|
|
152
|
-
action: 'list',
|
|
153
|
-
directory: '/Game'
|
|
154
|
-
});
|
|
155
|
-
|
|
156
|
-
// New approach (GraphQL)
|
|
157
|
-
const query = `
|
|
158
|
-
{
|
|
159
|
-
assets(filter: { pathStartsWith: "/Game" }) {
|
|
160
|
-
edges {
|
|
161
|
-
node {
|
|
162
|
-
name
|
|
163
|
-
path
|
|
164
|
-
class
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
totalCount
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
`;
|
|
171
|
-
|
|
172
|
-
const result = await fetch('http://127.0.0.1:4000/graphql', {
|
|
173
|
-
method: 'POST',
|
|
174
|
-
headers: { 'Content-Type': 'application/json' },
|
|
175
|
-
body: JSON.stringify({ query })
|
|
176
|
-
});
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### Step 5: Update Docker Configuration (Optional)
|
|
180
|
-
|
|
181
|
-
If you're using Docker:
|
|
182
|
-
|
|
183
|
-
```dockerfile
|
|
184
|
-
# Dockerfile
|
|
185
|
-
FROM node:18
|
|
186
|
-
|
|
187
|
-
# Install Rust and wasm-pack for WASM builds
|
|
188
|
-
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
|
189
|
-
ENV PATH="/root/.cargo/bin:${PATH}"
|
|
190
|
-
RUN curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
|
|
191
|
-
|
|
192
|
-
WORKDIR /app
|
|
193
|
-
COPY package*.json ./
|
|
194
|
-
RUN npm install
|
|
195
|
-
|
|
196
|
-
# Build TypeScript
|
|
197
|
-
RUN npm run build
|
|
198
|
-
|
|
199
|
-
# Build WebAssembly (optional)
|
|
200
|
-
RUN npm run build:wasm
|
|
201
|
-
|
|
202
|
-
EXPOSE 8090
|
|
203
|
-
EXPOSE 4000
|
|
204
|
-
|
|
205
|
-
CMD ["npm", "start"]
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
## Using the New Features
|
|
209
|
-
|
|
210
|
-
### GraphQL API
|
|
211
|
-
|
|
212
|
-
#### 1. Access the GraphQL Endpoint
|
|
213
|
-
|
|
214
|
-
The GraphQL server runs on a separate port from the MCP server:
|
|
215
|
-
|
|
216
|
-
- **URL**: `http://127.0.0.1:4000/graphql`
|
|
217
|
-
- **Default Port**: 4000
|
|
218
|
-
- **Default Host**: 127.0.0.1
|
|
219
|
-
|
|
220
|
-
#### 2. Use a GraphQL Client
|
|
221
|
-
|
|
222
|
-
You can use any GraphQL client:
|
|
223
|
-
|
|
224
|
-
**GraphiQL (In-browser IDE)**
|
|
225
|
-
```bash
|
|
226
|
-
# Start the server
|
|
227
|
-
npm start
|
|
228
|
-
|
|
229
|
-
# Open in browser:
|
|
230
|
-
# http://127.0.0.1:4000/graphql
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
**Apollo Studio**
|
|
234
|
-
```typescript
|
|
235
|
-
import { ApolloClient, InMemoryCache, gql } from '@apollo/client/core';
|
|
236
|
-
|
|
237
|
-
const client = new ApolloClient({
|
|
238
|
-
uri: 'http://127.0.0.1:4000/graphql',
|
|
239
|
-
cache: new InMemoryCache(),
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
const GET_ASSETS = gql`
|
|
243
|
-
query GetAssets {
|
|
244
|
-
assets {
|
|
245
|
-
edges {
|
|
246
|
-
node {
|
|
247
|
-
name
|
|
248
|
-
path
|
|
249
|
-
class
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
`;
|
|
255
|
-
|
|
256
|
-
const result = await client.query({ query: GET_ASSETS });
|
|
257
|
-
```
|
|
258
|
-
|
|
259
|
-
**Postman/REST Client**
|
|
260
|
-
```bash
|
|
261
|
-
curl -X POST http://127.0.0.1:4000/graphql \
|
|
262
|
-
-H "Content-Type: application/json" \
|
|
263
|
-
-d '{"query": "{ assets { edges { node { name path } } } }"}'
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
#### 3. Example Queries
|
|
267
|
-
|
|
268
|
-
**List All Assets**
|
|
269
|
-
```graphql
|
|
270
|
-
{
|
|
271
|
-
assets {
|
|
272
|
-
edges {
|
|
273
|
-
node {
|
|
274
|
-
name
|
|
275
|
-
path
|
|
276
|
-
class
|
|
277
|
-
packagePath
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
totalCount
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
**Get Actor with Properties**
|
|
286
|
-
```graphql
|
|
287
|
-
{
|
|
288
|
-
actor(name: "Cube_001") {
|
|
289
|
-
name
|
|
290
|
-
class
|
|
291
|
-
location {
|
|
292
|
-
x
|
|
293
|
-
y
|
|
294
|
-
z
|
|
295
|
-
}
|
|
296
|
-
properties
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
**Nested Query (Assets + Dependencies)**
|
|
302
|
-
```graphql
|
|
303
|
-
{
|
|
304
|
-
asset(path: "/Game/Materials/M_Master") {
|
|
305
|
-
name
|
|
306
|
-
class
|
|
307
|
-
dependencies {
|
|
308
|
-
name
|
|
309
|
-
path
|
|
310
|
-
}
|
|
311
|
-
dependents {
|
|
312
|
-
name
|
|
313
|
-
path
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
```
|
|
318
|
-
|
|
319
|
-
**Search Across Types**
|
|
320
|
-
```graphql
|
|
321
|
-
{
|
|
322
|
-
search(query: "Player", type: ALL) {
|
|
323
|
-
... on Asset {
|
|
324
|
-
name
|
|
325
|
-
path
|
|
326
|
-
__typename
|
|
327
|
-
}
|
|
328
|
-
... on Actor {
|
|
329
|
-
name
|
|
330
|
-
class
|
|
331
|
-
__typename
|
|
332
|
-
}
|
|
333
|
-
... on Blueprint {
|
|
334
|
-
name
|
|
335
|
-
path
|
|
336
|
-
__typename
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
```
|
|
341
|
-
|
|
342
|
-
### WebAssembly Features
|
|
343
|
-
|
|
344
|
-
WebAssembly features are enabled automatically if the module is built. No client changes needed!
|
|
345
|
-
|
|
346
|
-
#### Performance Monitoring
|
|
347
|
-
|
|
348
|
-
Check WASM performance from your code:
|
|
349
|
-
|
|
350
|
-
```typescript
|
|
351
|
-
import { wasmIntegration } from 'unreal-mcp-server/src/wasm/index.js';
|
|
352
|
-
|
|
353
|
-
// Initialize WASM
|
|
354
|
-
await wasmIntegration.initialize();
|
|
355
|
-
|
|
356
|
-
// Get performance metrics
|
|
357
|
-
const metrics = wasmIntegration.getMetrics();
|
|
358
|
-
console.log(`WASM operations: ${metrics.wasmOperations}`);
|
|
359
|
-
console.log(`TypeScript operations: ${metrics.tsOperations}`);
|
|
360
|
-
console.log(`Average time: ${metrics.averageTime.toFixed(2)}ms`);
|
|
361
|
-
|
|
362
|
-
// Print full report
|
|
363
|
-
console.log(wasmIntegration.reportPerformance());
|
|
364
|
-
```
|
|
365
|
-
|
|
366
|
-
#### Using WASM in Your Code
|
|
367
|
-
|
|
368
|
-
The WASM integration is used automatically in:
|
|
369
|
-
|
|
370
|
-
1. **Property Parsing**: Automatic in GraphQL resolvers and MCP tools
|
|
371
|
-
2. **Transform Calculations**: Automatic in actor operations
|
|
372
|
-
3. **Dependency Resolution**: Automatic in asset management
|
|
373
|
-
|
|
374
|
-
You can also use WASM directly:
|
|
375
|
-
|
|
376
|
-
```typescript
|
|
377
|
-
import { wasmIntegration } from 'unreal-mcp-server/src/wasm/index.js';
|
|
378
|
-
|
|
379
|
-
await wasmIntegration.initialize();
|
|
380
|
-
|
|
381
|
-
// Parse properties with WASM
|
|
382
|
-
const properties = await wasmIntegration.parseProperties(jsonString);
|
|
383
|
-
|
|
384
|
-
// Compose transforms with WASM
|
|
385
|
-
const matrix = wasmIntegration.composeTransform(
|
|
386
|
-
[100, 200, 300], // location
|
|
387
|
-
[0, 90, 0], // rotation
|
|
388
|
-
[1, 1, 1] // scale
|
|
389
|
-
);
|
|
390
|
-
|
|
391
|
-
// Vector operations with WASM
|
|
392
|
-
const sum = wasmIntegration.vectorAdd([1, 2, 3], [4, 5, 6]);
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
## Migration Examples
|
|
396
|
-
|
|
397
|
-
### Example 1: Migrate from MCP Tools to GraphQL
|
|
398
|
-
|
|
399
|
-
**Before (MCP Tool)**
|
|
400
|
-
|
|
401
|
-
```typescript
|
|
402
|
-
// List assets
|
|
403
|
-
const assetsResult = await callTool('manage_asset', {
|
|
404
|
-
action: 'list',
|
|
405
|
-
directory: '/Game/Materials'
|
|
406
|
-
});
|
|
407
|
-
|
|
408
|
-
// List actors
|
|
409
|
-
const actorsResult = await callTool('control_actor', {
|
|
410
|
-
action: 'list'
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
// Requires 2 separate calls
|
|
414
|
-
```
|
|
415
|
-
|
|
416
|
-
**After (GraphQL)**
|
|
417
|
-
|
|
418
|
-
```typescript
|
|
419
|
-
// Single GraphQL query
|
|
420
|
-
const query = `
|
|
421
|
-
{
|
|
422
|
-
assets(filter: { pathStartsWith: "/Game/Materials" }) {
|
|
423
|
-
edges {
|
|
424
|
-
node { name path class }
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
actors {
|
|
428
|
-
edges {
|
|
429
|
-
node { name class location { x y z } }
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
}
|
|
433
|
-
`;
|
|
434
|
-
|
|
435
|
-
const result = await fetch('http://127.0.0.1:4000/graphql', {
|
|
436
|
-
method: 'POST',
|
|
437
|
-
headers: { 'Content-Type': 'application/json' },
|
|
438
|
-
body: JSON.stringify({ query })
|
|
439
|
-
});
|
|
440
|
-
|
|
441
|
-
// Single call retrieves everything!
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
### Example 2: Using WebAssembly for Performance
|
|
445
|
-
|
|
446
|
-
**Before (Pure TypeScript)**
|
|
447
|
-
|
|
448
|
-
```typescript
|
|
449
|
-
// Parse properties
|
|
450
|
-
function parseProperties(jsonStr) {
|
|
451
|
-
return JSON.parse(jsonStr); // Slow for large objects
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
// Calculate transform
|
|
455
|
-
function composeTransform(location, rotation, scale) {
|
|
456
|
-
// Complex matrix math in JavaScript
|
|
457
|
-
// Can be slow for many operations
|
|
458
|
-
}
|
|
459
|
-
```
|
|
460
|
-
|
|
461
|
-
**After (With WASM)**
|
|
462
|
-
|
|
463
|
-
```typescript
|
|
464
|
-
import { wasmIntegration } from 'unreal-mcp-server/src/wasm/index.js';
|
|
465
|
-
|
|
466
|
-
// WASM automatically used if available
|
|
467
|
-
const properties = await wasmIntegration.parseProperties(jsonStr);
|
|
468
|
-
const matrix = wasmIntegration.composeTransform(location, rotation, scale);
|
|
469
|
-
|
|
470
|
-
// 3-8x faster! No code changes needed.
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
### Example 3: Client Migration Pattern
|
|
474
|
-
|
|
475
|
-
**Step 1: Detect GraphQL Support**
|
|
476
|
-
|
|
477
|
-
```typescript
|
|
478
|
-
async function queryUnreal(query: string) {
|
|
479
|
-
// Try GraphQL first
|
|
480
|
-
try {
|
|
481
|
-
const response = await fetch('http://127.0.0.1:4000/graphql', {
|
|
482
|
-
method: 'POST',
|
|
483
|
-
headers: { 'Content-Type': 'application/json' },
|
|
484
|
-
body: JSON.stringify({ query })
|
|
485
|
-
});
|
|
486
|
-
|
|
487
|
-
if (response.ok) {
|
|
488
|
-
return await response.json();
|
|
489
|
-
}
|
|
490
|
-
} catch (error) {
|
|
491
|
-
console.warn('GraphQL unavailable, falling back to MCP tools');
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
// Fallback to MCP tools
|
|
495
|
-
// ... implement fallback logic
|
|
496
|
-
}
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
**Step 2: Use Optimized Queries**
|
|
500
|
-
|
|
501
|
-
```typescript
|
|
502
|
-
// Optimize for minimal data transfer
|
|
503
|
-
const query = `
|
|
504
|
-
{
|
|
505
|
-
assets(pagination: { limit: 50 }) {
|
|
506
|
-
edges {
|
|
507
|
-
node {
|
|
508
|
-
name # Only request what you need
|
|
509
|
-
path
|
|
510
|
-
class
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
}
|
|
514
|
-
}
|
|
515
|
-
`;
|
|
516
|
-
```
|
|
517
|
-
|
|
518
|
-
## Testing
|
|
519
|
-
|
|
520
|
-
### Run Tests
|
|
521
|
-
|
|
522
|
-
```bash
|
|
523
|
-
# Test GraphQL server
|
|
524
|
-
npm run test:graphql
|
|
525
|
-
|
|
526
|
-
# Test WebAssembly integration
|
|
527
|
-
npm run test:wasm
|
|
528
|
-
|
|
529
|
-
# Test WASM with full build
|
|
530
|
-
npm run test:wasm:all
|
|
531
|
-
|
|
532
|
-
# Run all existing tests
|
|
533
|
-
npm test
|
|
534
|
-
```
|
|
535
|
-
|
|
536
|
-
### Manual Testing
|
|
537
|
-
|
|
538
|
-
1. **Start the server**:
|
|
539
|
-
```bash
|
|
540
|
-
npm start
|
|
541
|
-
```
|
|
542
|
-
|
|
543
|
-
2. **Test GraphQL**:
|
|
544
|
-
```bash
|
|
545
|
-
# In another terminal
|
|
546
|
-
curl -X POST http://127.0.0.1:4000/graphql \
|
|
547
|
-
-H "Content-Type: application/json" \
|
|
548
|
-
-d '{"query": "{ assets { edges { node { name } } } }"}'
|
|
549
|
-
```
|
|
550
|
-
|
|
551
|
-
3. **Check WASM Status**:
|
|
552
|
-
```bash
|
|
553
|
-
# Check logs for WASM initialization
|
|
554
|
-
# Look for: "✅ WebAssembly module initialized successfully"
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
## Troubleshooting
|
|
558
|
-
|
|
559
|
-
### GraphQL Server Won't Start
|
|
560
|
-
|
|
561
|
-
**Problem**: Port 4000 already in use
|
|
562
|
-
|
|
563
|
-
**Solution**:
|
|
564
|
-
```bash
|
|
565
|
-
# Use a different port
|
|
566
|
-
GRAPHQL_PORT=4001 npm start
|
|
567
|
-
|
|
568
|
-
# Or kill the process using port 4000
|
|
569
|
-
lsof -ti:4000 | xargs kill
|
|
570
|
-
```
|
|
571
|
-
|
|
572
|
-
### WebAssembly Module Not Loading
|
|
573
|
-
|
|
574
|
-
**Problem**: `Failed to initialize WebAssembly module`
|
|
575
|
-
|
|
576
|
-
**Solution**:
|
|
577
|
-
```bash
|
|
578
|
-
# Build the WASM module
|
|
579
|
-
npm run build:wasm
|
|
580
|
-
|
|
581
|
-
# Check if file exists
|
|
582
|
-
ls -la src/wasm/pkg/unreal_mcp_wasm.js
|
|
583
|
-
|
|
584
|
-
# Verify WASM is enabled
|
|
585
|
-
echo $WASM_ENABLED # Should be "true"
|
|
586
|
-
```
|
|
587
|
-
|
|
588
|
-
### Performance Not Improved
|
|
589
|
-
|
|
590
|
-
**Problem**: Still using TypeScript fallbacks
|
|
591
|
-
|
|
592
|
-
**Solution**:
|
|
593
|
-
1. Build WASM: `npm run build:wasm`
|
|
594
|
-
2. Enable WASM: `WASM_ENABLED=true npm start`
|
|
595
|
-
3. Check logs for: "WebAssembly module initialized successfully"
|
|
596
|
-
4. Check metrics: `wasmIntegration.getMetrics()`
|
|
597
|
-
|
|
598
|
-
### Queries Timing Out
|
|
599
|
-
|
|
600
|
-
**Problem**: Complex GraphQL queries taking too long
|
|
601
|
-
|
|
602
|
-
**Solution**:
|
|
603
|
-
1. Use pagination: Add `pagination: { limit: 50 }`
|
|
604
|
-
2. Simplify queries: Request only needed fields
|
|
605
|
-
3. Use filtering: Add `filter` to reduce result set
|
|
606
|
-
|
|
607
|
-
## Best Practices
|
|
608
|
-
|
|
609
|
-
### GraphQL
|
|
610
|
-
|
|
611
|
-
1. **Use Specific Field Selection**: Only request fields you need
|
|
612
|
-
2. **Use Pagination**: For large datasets
|
|
613
|
-
3. **Use Filtering**: Reduce server-side processing
|
|
614
|
-
4. **Use Fragments**: Reuse common field selections
|
|
615
|
-
5. **Use Variables**: For dynamic queries
|
|
616
|
-
|
|
617
|
-
### WebAssembly
|
|
618
|
-
|
|
619
|
-
1. **Monitor Performance**: Use `getMetrics()` to track improvements
|
|
620
|
-
2. **Measure Before Optimizing**: Don't assume WASM is always faster
|
|
621
|
-
3. **Handle Fallbacks**: Ensure TypeScript fallback works correctly
|
|
622
|
-
4. **Test Both Paths**: Verify both WASM and fallback work
|
|
623
|
-
|
|
624
|
-
## Performance Comparison
|
|
625
|
-
|
|
626
|
-
### GraphQL vs MCP Tools
|
|
627
|
-
|
|
628
|
-
| Use Case | GraphQL Advantage | When to Use |
|
|
629
|
-
|----------|-------------------|-------------|
|
|
630
|
-
| Complex nested queries | Fetch all data in one request | Multi-object relationships |
|
|
631
|
-
| Custom data shapes | Request exactly what you need | Flexible UI requirements |
|
|
632
|
-
| Multiple resources | Combine queries | Dashboard/data aggregation |
|
|
633
|
-
| Client-side optimization | Reduce over-fetching | Mobile/limited bandwidth |
|
|
634
|
-
| Strong typing | Introspection & IDE support | Better DX |
|
|
635
|
-
|
|
636
|
-
**When to stick with MCP tools**:
|
|
637
|
-
- Simple, single-resource operations
|
|
638
|
-
- Existing code that works well
|
|
639
|
-
- When GraphQL overhead isn't worth it
|
|
640
|
-
|
|
641
|
-
### WebAssembly Performance
|
|
642
|
-
|
|
643
|
-
| Operation | TypeScript | WASM | Improvement |
|
|
644
|
-
|-----------|------------|------|-------------|
|
|
645
|
-
| Parse 1000 properties | 150-300ms | 20-40ms | **5-8x** |
|
|
646
|
-
| Vector math (1000 ops) | 5-10ms | 1-2ms | **5x** |
|
|
647
|
-
| Transform composition | 5ms | 0.5ms | **10x** |
|
|
648
|
-
| Dependency analysis | 50-100ms | 10-20ms | **5x** |
|
|
649
|
-
|
|
650
|
-
## Resources
|
|
651
|
-
|
|
652
|
-
### Documentation
|
|
653
|
-
- [GraphQL API Documentation](GraphQL-API.md)
|
|
654
|
-
- [WebAssembly Integration Guide](WebAssembly-Integration.md)
|
|
655
|
-
|
|
656
|
-
### Tools
|
|
657
|
-
- [GraphiQL](https://github.com/graphql/graphiql) - In-browser GraphQL IDE
|
|
658
|
-
- [Apollo Studio](https://studio.apollographql.com) - GraphQL platform
|
|
659
|
-
- [Postman](https://www.postman.com/) - API testing
|
|
660
|
-
|
|
661
|
-
### Learning
|
|
662
|
-
- [GraphQL.org](https://graphql.org/) - Official GraphQL documentation
|
|
663
|
-
- [WebAssembly.org](https://webassembly.org/) - WebAssembly specification
|
|
664
|
-
|
|
665
|
-
## Support
|
|
666
|
-
|
|
667
|
-
If you encounter issues:
|
|
668
|
-
|
|
669
|
-
1. Check this migration guide
|
|
670
|
-
2. Review the documentation files
|
|
671
|
-
3. Check the troubleshooting sections
|
|
672
|
-
4. Open an issue on GitHub
|
|
673
|
-
|
|
674
|
-
## Summary
|
|
675
|
-
|
|
676
|
-
Upgrading to v0.5.0 is straightforward:
|
|
677
|
-
|
|
678
|
-
1. **No breaking changes** - Everything works as before
|
|
679
|
-
2. **Optional features** - Enable GraphQL and WASM via environment variables
|
|
680
|
-
3. **Gradual migration** - Adopt new features at your own pace
|
|
681
|
-
4. **Better performance** - Get 3-8x improvements automatically with WASM
|
|
682
|
-
5. **Flexible querying** - Use GraphQL for complex data needs
|
|
683
|
-
|
|
684
|
-
**Start using the new features today!**
|