unreal-engine-mcp-server 0.5.4 → 0.5.5
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/dist/automation/bridge.d.ts.map +1 -0
- 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.map +1 -0
- package/dist/automation/types.js.map +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -3
- 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.map +1 -0
- package/dist/graphql/resolvers.js +29 -29
- 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 +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +64 -7
- package/dist/index.js.map +1 -0
- package/dist/resources/actors.d.ts.map +1 -0
- package/dist/resources/actors.js.map +1 -0
- package/dist/resources/assets.d.ts.map +1 -0
- package/dist/resources/assets.js +6 -4
- package/dist/resources/assets.js.map +1 -0
- package/dist/resources/levels.d.ts.map +1 -0
- package/dist/resources/levels.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.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.map +1 -0
- 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.map +1 -0
- package/dist/tools/actors.js +3 -1
- package/dist/tools/actors.js.map +1 -0
- package/dist/tools/animation.d.ts.map +1 -0
- package/dist/tools/animation.js +2 -2
- package/dist/tools/animation.js.map +1 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js.map +1 -0
- 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.map +1 -0
- package/dist/tools/behavior-tree.js.map +1 -0
- package/dist/tools/blueprint.d.ts.map +1 -0
- package/dist/tools/blueprint.js +4 -2
- package/dist/tools/blueprint.js.map +1 -0
- 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.map +1 -0
- package/dist/tools/consolidated-tool-handlers.js.map +1 -0
- 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.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 +1 -1
- package/dist/tools/editor.js.map +1 -0
- package/dist/tools/engine.d.ts.map +1 -0
- package/dist/tools/engine.js.map +1 -0
- package/dist/tools/environment.d.ts.map +1 -0
- package/dist/tools/environment.js +2 -2
- package/dist/tools/environment.js.map +1 -0
- package/dist/tools/foliage.d.ts.map +1 -0
- package/dist/tools/foliage.js.map +1 -0
- package/dist/tools/handlers/actor-handlers.d.ts +1 -1
- package/dist/tools/handlers/actor-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/actor-handlers.js +6 -5
- package/dist/tools/handlers/actor-handlers.js.map +1 -0
- package/dist/tools/handlers/animation-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/animation-handlers.js.map +1 -0
- package/dist/tools/handlers/argument-helper.d.ts.map +1 -0
- package/dist/tools/handlers/argument-helper.js.map +1 -0
- package/dist/tools/handlers/asset-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/asset-handlers.js +5 -1
- package/dist/tools/handlers/asset-handlers.js.map +1 -0
- package/dist/tools/handlers/audio-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/audio-handlers.js.map +1 -0
- package/dist/tools/handlers/blueprint-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/blueprint-handlers.js +2 -1
- package/dist/tools/handlers/blueprint-handlers.js.map +1 -0
- 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.map +1 -0
- package/dist/tools/handlers/effect-handlers.js.map +1 -0
- package/dist/tools/handlers/environment-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/environment-handlers.js.map +1 -0
- package/dist/tools/handlers/graph-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/graph-handlers.js +61 -1
- package/dist/tools/handlers/graph-handlers.js.map +1 -0
- package/dist/tools/handlers/input-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/input-handlers.js.map +1 -0
- package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/inspect-handlers.js.map +1 -0
- package/dist/tools/handlers/level-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/level-handlers.js.map +1 -0
- package/dist/tools/handlers/lighting-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/lighting-handlers.js +23 -1
- package/dist/tools/handlers/lighting-handlers.js.map +1 -0
- package/dist/tools/handlers/performance-handlers.d.ts.map +1 -0
- package/dist/tools/handlers/performance-handlers.js +15 -2
- 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.map +1 -0
- package/dist/tools/handlers/system-handlers.js +16 -1
- 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.map +1 -0
- package/dist/tools/introspection.js.map +1 -0
- package/dist/tools/landscape.d.ts.map +1 -0
- package/dist/tools/landscape.js +3 -1
- package/dist/tools/landscape.js.map +1 -0
- package/dist/tools/level.d.ts.map +1 -0
- package/dist/tools/level.js.map +1 -0
- package/dist/tools/lighting.d.ts.map +1 -0
- package/dist/tools/lighting.js +3 -1
- package/dist/tools/lighting.js.map +1 -0
- package/dist/tools/logs.d.ts.map +1 -0
- package/dist/tools/logs.js.map +1 -0
- package/dist/tools/materials.d.ts.map +1 -0
- package/dist/tools/materials.js +3 -1
- package/dist/tools/materials.js.map +1 -0
- package/dist/tools/niagara.d.ts.map +1 -0
- package/dist/tools/niagara.js +7 -5
- package/dist/tools/niagara.js.map +1 -0
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js.map +1 -0
- package/dist/tools/physics.d.ts.map +1 -0
- package/dist/tools/physics.js +9 -7
- 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.map +1 -0
- package/dist/tools/sequence.js +3 -1
- 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.map +1 -0
- package/dist/tools/ui.js +3 -1
- 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.map +1 -0
- package/dist/types/handler-types.js.map +1 -0
- 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.map +1 -0
- package/dist/types/tool-types.js.map +1 -0
- package/dist/unreal-bridge.d.ts +1 -0
- package/dist/unreal-bridge.d.ts.map +1 -0
- package/dist/unreal-bridge.js +8 -0
- 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.map +1 -0
- 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.map +1 -0
- package/dist/utils/ini-reader.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/normalize.d.ts.map +1 -0
- 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.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.map +1 -0
- 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.map +1 -0
- package/dist/utils/unreal-command-queue.js.map +1 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wasm/index.d.ts.map +1 -0
- 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,98 +0,0 @@
|
|
|
1
|
-
export interface PropertyDictionaryEntry {
|
|
2
|
-
description: string;
|
|
3
|
-
typeHint?: string;
|
|
4
|
-
commonValues?: Array<string | number | boolean>;
|
|
5
|
-
recommendedActions?: string[];
|
|
6
|
-
category?: string;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Minimal curated metadata for frequently surfaced Unreal Engine properties.
|
|
11
|
-
* This list can be expanded over time as we observe additional properties
|
|
12
|
-
* that benefit from richer explanations.
|
|
13
|
-
*/
|
|
14
|
-
export const PROPERTY_DICTIONARY: Record<string, PropertyDictionaryEntry> = {
|
|
15
|
-
intensity: {
|
|
16
|
-
description: 'Controls the brightness emitted by the light component.',
|
|
17
|
-
typeHint: 'float (lumens for point/spot, lux for directional)',
|
|
18
|
-
commonValues: [1000, 5000, 10000],
|
|
19
|
-
recommendedActions: ['Adjust to match the desired exposure', 'Animate via sequencer for flicker effects'],
|
|
20
|
-
category: 'Lighting'
|
|
21
|
-
},
|
|
22
|
-
lightcolor: {
|
|
23
|
-
description: 'Tint applied to emitted light. Uses linear RGBA (0-255) values.',
|
|
24
|
-
typeHint: 'FColor',
|
|
25
|
-
recommendedActions: ['Set to emphasize mood', 'Match art direction color palette'],
|
|
26
|
-
category: 'Lighting'
|
|
27
|
-
},
|
|
28
|
-
mobility: {
|
|
29
|
-
description: 'Whether the component is Static, Stationary, or Movable.',
|
|
30
|
-
typeHint: 'enum (EComponentMobility)',
|
|
31
|
-
commonValues: ['Static', 'Stationary', 'Movable'],
|
|
32
|
-
recommendedActions: ['Switch to Movable for runtime transforms', 'Use Static for baked lighting'],
|
|
33
|
-
category: 'Rendering'
|
|
34
|
-
},
|
|
35
|
-
relativelocation: {
|
|
36
|
-
description: 'Local-space translation of the component relative to its parent.',
|
|
37
|
-
typeHint: 'FVector',
|
|
38
|
-
recommendedActions: ['Adjust to reposition relative to parent', 'Consider zeroing to reset offsets'],
|
|
39
|
-
category: 'Transform'
|
|
40
|
-
},
|
|
41
|
-
relativerotation: {
|
|
42
|
-
description: 'Local-space rotation applied after parent transforms.',
|
|
43
|
-
typeHint: 'FRotator',
|
|
44
|
-
recommendedActions: ['Tweak to orient the component correctly'],
|
|
45
|
-
category: 'Transform'
|
|
46
|
-
},
|
|
47
|
-
relativescale3d: {
|
|
48
|
-
description: 'Local-space non-uniform scale relative to parent.',
|
|
49
|
-
typeHint: 'FVector',
|
|
50
|
-
commonValues: [1],
|
|
51
|
-
recommendedActions: ['Use uniform scaling to avoid skewing', 'Reset to (1,1,1) when debugging'],
|
|
52
|
-
category: 'Transform'
|
|
53
|
-
},
|
|
54
|
-
tags: {
|
|
55
|
-
description: 'Gameplay or editor tags applied to the actor for lookup operations.',
|
|
56
|
-
typeHint: 'string[]',
|
|
57
|
-
recommendedActions: ['Add descriptive tags to enable find_by_tag', 'Standardise tag prefixes for systems'],
|
|
58
|
-
category: 'Metadata'
|
|
59
|
-
},
|
|
60
|
-
collisionenabled: {
|
|
61
|
-
description: 'Specifies whether the primitive participates in collision queries.',
|
|
62
|
-
typeHint: 'enum (ECollisionEnabled)',
|
|
63
|
-
commonValues: ['NoCollision', 'QueryOnly', 'PhysicsOnly', 'QueryAndPhysics'],
|
|
64
|
-
recommendedActions: ['Disable when using purely visual meshes', 'Enable QueryAndPhysics for interactive props'],
|
|
65
|
-
category: 'Physics'
|
|
66
|
-
},
|
|
67
|
-
simulatephysics: {
|
|
68
|
-
description: 'Enables physics simulation for the component allowing forces and gravity.',
|
|
69
|
-
typeHint: 'bool',
|
|
70
|
-
recommendedActions: ['Enable for ragdolls or dynamic rigid bodies', 'Disable for static set dressing'],
|
|
71
|
-
category: 'Physics'
|
|
72
|
-
},
|
|
73
|
-
materials: {
|
|
74
|
-
description: 'Array of material slots applied to the mesh component.',
|
|
75
|
-
typeHint: 'UMaterialInterface[]',
|
|
76
|
-
recommendedActions: ['Replace slot materials to change surface look', 'Verify slot count matches mesh sections'],
|
|
77
|
-
category: 'Rendering'
|
|
78
|
-
},
|
|
79
|
-
skeletalmeshsocketnames: {
|
|
80
|
-
description: 'Sockets exposed by the skeletal mesh for attachments.',
|
|
81
|
-
typeHint: 'string[]',
|
|
82
|
-
recommendedActions: ['Attach weapons or FX to named sockets', 'Use to verify sockets exist before attaching'],
|
|
83
|
-
category: 'Animation'
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Normalizes property names to dictionary keys (lowercase, no punctuation).
|
|
89
|
-
*/
|
|
90
|
-
export function normalizeDictionaryKey(name: string | undefined): string {
|
|
91
|
-
if (!name) return '';
|
|
92
|
-
return name.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
export function lookupPropertyMetadata(property: { name?: string } | string) {
|
|
96
|
-
const key = typeof property === 'string' ? normalizeDictionaryKey(property) : normalizeDictionaryKey(property.name);
|
|
97
|
-
return PROPERTY_DICTIONARY[key];
|
|
98
|
-
}
|
package/src/tools/sequence.ts
DELETED
|
@@ -1,385 +0,0 @@
|
|
|
1
|
-
import { BaseTool } from './base-tool.js';
|
|
2
|
-
import { ISequenceTools, StandardActionResponse } from '../types/tool-interfaces.js';
|
|
3
|
-
import { SequenceResponse } from '../types/automation-responses.js';
|
|
4
|
-
import { wasmIntegration } from '../wasm/index.js';
|
|
5
|
-
|
|
6
|
-
export interface LevelSequence {
|
|
7
|
-
path: string;
|
|
8
|
-
name: string;
|
|
9
|
-
duration?: number;
|
|
10
|
-
frameRate?: number;
|
|
11
|
-
bindings?: SequenceBinding[];
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface SequenceBinding {
|
|
15
|
-
id: string;
|
|
16
|
-
name: string;
|
|
17
|
-
type: 'actor' | 'camera' | 'spawnable';
|
|
18
|
-
tracks?: SequenceTrack[];
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface SequenceTrack {
|
|
22
|
-
name: string;
|
|
23
|
-
type: string;
|
|
24
|
-
sections?: any[];
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export class SequenceTools extends BaseTool implements ISequenceTools {
|
|
28
|
-
private sequenceCache = new Map<string, LevelSequence>();
|
|
29
|
-
private activeSequencePath?: string;
|
|
30
|
-
|
|
31
|
-
private resolveSequencePath(explicitPath?: unknown): string | undefined {
|
|
32
|
-
if (typeof explicitPath === 'string' && explicitPath.trim().length > 0) {
|
|
33
|
-
return explicitPath.trim();
|
|
34
|
-
}
|
|
35
|
-
return this.activeSequencePath;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private async sendAction(action: string, payload: Record<string, unknown> = {}, timeoutMs?: number) {
|
|
39
|
-
const envDefault = Number(process.env.MCP_AUTOMATION_REQUEST_TIMEOUT_MS ?? '120000');
|
|
40
|
-
const defaultTimeout = Number.isFinite(envDefault) && envDefault > 0 ? envDefault : 120000;
|
|
41
|
-
const finalTimeout = typeof timeoutMs === 'number' && timeoutMs > 0 ? timeoutMs : defaultTimeout;
|
|
42
|
-
|
|
43
|
-
try {
|
|
44
|
-
const response = await this.sendAutomationRequest<SequenceResponse>(
|
|
45
|
-
action,
|
|
46
|
-
payload,
|
|
47
|
-
{ timeoutMs: finalTimeout, waitForEvent: false }
|
|
48
|
-
);
|
|
49
|
-
|
|
50
|
-
const success = response && response.success !== false;
|
|
51
|
-
const result = response.result ?? response;
|
|
52
|
-
|
|
53
|
-
return { success, message: response.message ?? undefined, error: response.success === false ? (response.error ?? response.message) : undefined, result, requestId: response.requestId } as any;
|
|
54
|
-
} catch (err: unknown) {
|
|
55
|
-
return { success: false, error: String(err), message: String(err) } as const;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
private isUnknownActionResponse(res: any): boolean {
|
|
60
|
-
if (!res) return false;
|
|
61
|
-
const txt = String((res.error ?? res.message ?? '')).toLowerCase();
|
|
62
|
-
// Only treat specific error codes as "not implemented"
|
|
63
|
-
return txt.includes('unknown_action') || txt.includes('unknown automation action') || txt.includes('not_implemented') || txt === 'unknown_plugin_action';
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
async create(params: { name: string; path?: string; timeoutMs?: number }): Promise<StandardActionResponse> {
|
|
67
|
-
const name = params.name?.trim();
|
|
68
|
-
const base = (params.path || '/Game/Sequences').replace(/\/$/, '');
|
|
69
|
-
if (!name) return { success: false, error: 'name is required' };
|
|
70
|
-
|
|
71
|
-
const payload = { name, path: base } as Record<string, unknown>;
|
|
72
|
-
const resp = await this.sendAction('sequence_create', payload, params.timeoutMs);
|
|
73
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
74
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_create' } as const;
|
|
75
|
-
}
|
|
76
|
-
if (resp.success && resp.result && resp.result.sequencePath) {
|
|
77
|
-
const sequence: LevelSequence = { path: resp.result.sequencePath, name };
|
|
78
|
-
this.sequenceCache.set(sequence.path, sequence);
|
|
79
|
-
return { ...resp, sequence: resp.result.sequencePath };
|
|
80
|
-
}
|
|
81
|
-
return resp;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
async open(params: { path: string }): Promise<StandardActionResponse> {
|
|
85
|
-
const path = params.path?.trim();
|
|
86
|
-
const resp = await this.sendAction('sequence_open', { path });
|
|
87
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
88
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_open' } as const;
|
|
89
|
-
}
|
|
90
|
-
if (resp && resp.success !== false && path) {
|
|
91
|
-
this.activeSequencePath = path;
|
|
92
|
-
}
|
|
93
|
-
return resp;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
async addCamera(params: { spawnable?: boolean; path?: string }): Promise<StandardActionResponse> {
|
|
97
|
-
const path = this.resolveSequencePath(params.path);
|
|
98
|
-
const resp = await this.sendAction('sequence_add_camera', { path, spawnable: params.spawnable !== false });
|
|
99
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
100
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_add_camera' } as const;
|
|
101
|
-
}
|
|
102
|
-
return resp;
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
async addActor(params: { actorName: string; createBinding?: boolean; path?: string }): Promise<StandardActionResponse> {
|
|
106
|
-
const path = this.resolveSequencePath(params.path);
|
|
107
|
-
const resp = await this.sendAction('sequence_add_actor', { path, actorName: params.actorName, createBinding: params.createBinding });
|
|
108
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
109
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_add_actor' } as const;
|
|
110
|
-
}
|
|
111
|
-
return resp;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Play the current level sequence
|
|
116
|
-
*/
|
|
117
|
-
async play(params?: { path?: string; startTime?: number; loopMode?: 'once' | 'loop' | 'pingpong' }): Promise<StandardActionResponse> {
|
|
118
|
-
const path = this.resolveSequencePath(params?.path);
|
|
119
|
-
const resp = await this.sendAction('sequence_play', { path, startTime: params?.startTime, loopMode: params?.loopMode });
|
|
120
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
121
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_play' } as const;
|
|
122
|
-
}
|
|
123
|
-
return resp;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Pause the current level sequence
|
|
128
|
-
*/
|
|
129
|
-
async pause(params?: { path?: string }): Promise<StandardActionResponse> {
|
|
130
|
-
const path = this.resolveSequencePath(params?.path);
|
|
131
|
-
const resp = await this.sendAction('sequence_pause', { path });
|
|
132
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
133
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_pause' } as const;
|
|
134
|
-
}
|
|
135
|
-
return resp;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
/**
|
|
139
|
-
* Stop/close the current level sequence
|
|
140
|
-
*/
|
|
141
|
-
async stop(params?: { path?: string }): Promise<StandardActionResponse> {
|
|
142
|
-
const path = this.resolveSequencePath(params?.path);
|
|
143
|
-
const resp = await this.sendAction('sequence_stop', { path });
|
|
144
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
145
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_stop' } as const;
|
|
146
|
-
}
|
|
147
|
-
return resp;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Set sequence properties including frame rate and length
|
|
152
|
-
*/
|
|
153
|
-
async setSequenceProperties(params: {
|
|
154
|
-
path?: string;
|
|
155
|
-
frameRate?: number;
|
|
156
|
-
lengthInFrames?: number;
|
|
157
|
-
playbackStart?: number;
|
|
158
|
-
playbackEnd?: number;
|
|
159
|
-
}): Promise<StandardActionResponse> {
|
|
160
|
-
const payload: Record<string, unknown> = {
|
|
161
|
-
path: params.path,
|
|
162
|
-
frameRate: params.frameRate,
|
|
163
|
-
lengthInFrames: params.lengthInFrames,
|
|
164
|
-
playbackStart: params.playbackStart,
|
|
165
|
-
playbackEnd: params.playbackEnd
|
|
166
|
-
};
|
|
167
|
-
const resp = await this.sendAction('sequence_set_properties', payload);
|
|
168
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
169
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_set_properties' } as const;
|
|
170
|
-
}
|
|
171
|
-
return resp;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
/**
|
|
175
|
-
* Set display rate (fps)
|
|
176
|
-
*/
|
|
177
|
-
async setDisplayRate(params: { path?: string; frameRate: string | number }): Promise<StandardActionResponse> {
|
|
178
|
-
const resp = await this.sendAction('sequence_set_display_rate', { path: params.path, frameRate: params.frameRate });
|
|
179
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
180
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_set_display_rate' } as const;
|
|
181
|
-
}
|
|
182
|
-
return resp;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Get sequence properties
|
|
187
|
-
*/
|
|
188
|
-
async getSequenceProperties(params: { path?: string }): Promise<StandardActionResponse> {
|
|
189
|
-
const resp = await this.sendAction('sequence_get_properties', { path: params.path });
|
|
190
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
191
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_get_properties' } as const;
|
|
192
|
-
}
|
|
193
|
-
return resp;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Set playback speed/rate
|
|
198
|
-
*/
|
|
199
|
-
async setPlaybackSpeed(params: { speed: number; path?: string }): Promise<StandardActionResponse> {
|
|
200
|
-
const path = this.resolveSequencePath(params.path);
|
|
201
|
-
const resp = await this.sendAction('sequence_set_playback_speed', { path, speed: params.speed });
|
|
202
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
203
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_set_playback_speed' } as const;
|
|
204
|
-
}
|
|
205
|
-
return resp;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Get all bindings in the current sequence
|
|
210
|
-
*/
|
|
211
|
-
async getBindings(params?: { path?: string }): Promise<StandardActionResponse> {
|
|
212
|
-
const resp = await this.sendAction('sequence_get_bindings', { path: params?.path });
|
|
213
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
214
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_get_bindings' } as const;
|
|
215
|
-
}
|
|
216
|
-
return resp;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
/**
|
|
220
|
-
* Add multiple actors to sequence at once
|
|
221
|
-
*/
|
|
222
|
-
async addActors(params: { actorNames: string[]; path?: string }): Promise<StandardActionResponse> {
|
|
223
|
-
const path = this.resolveSequencePath(params.path);
|
|
224
|
-
const resp = await this.sendAction('sequence_add_actors', { path, actorNames: params.actorNames });
|
|
225
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
226
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_add_actors' } as const;
|
|
227
|
-
}
|
|
228
|
-
return resp;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
/**
|
|
232
|
-
* Remove actors from binding
|
|
233
|
-
*/
|
|
234
|
-
async removeActors(params: { actorNames: string[]; path?: string }): Promise<StandardActionResponse> {
|
|
235
|
-
const path = this.resolveSequencePath(params.path);
|
|
236
|
-
const resp = await this.sendAction('sequence_remove_actors', { path, actorNames: params.actorNames });
|
|
237
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
238
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_remove_actors' } as const;
|
|
239
|
-
}
|
|
240
|
-
return resp;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* Create a spawnable from an actor class
|
|
245
|
-
*/
|
|
246
|
-
async addSpawnableFromClass(params: { className: string; path?: string }): Promise<StandardActionResponse> {
|
|
247
|
-
const resp = await this.sendAction('sequence_add_spawnable_from_class', { className: params.className, path: params.path });
|
|
248
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
249
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_add_spawnable_from_class' } as const;
|
|
250
|
-
}
|
|
251
|
-
return resp;
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
async list(params?: { path?: string }): Promise<StandardActionResponse> {
|
|
255
|
-
const resp = await this.sendAction('sequence_list', { path: params?.path });
|
|
256
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
257
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_list' } as const;
|
|
258
|
-
}
|
|
259
|
-
if (resp.success) {
|
|
260
|
-
const sequences = resp.sequences || resp.data || resp.result || [];
|
|
261
|
-
return {
|
|
262
|
-
...resp,
|
|
263
|
-
sequences,
|
|
264
|
-
count: Array.isArray(sequences) ? sequences.length : undefined
|
|
265
|
-
};
|
|
266
|
-
}
|
|
267
|
-
return resp;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
async duplicate(params: { path: string; destinationPath: string }): Promise<StandardActionResponse> {
|
|
271
|
-
const resp = await this.sendAction('sequence_duplicate', { path: params.path, destinationPath: params.destinationPath });
|
|
272
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
273
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_duplicate' } as const;
|
|
274
|
-
}
|
|
275
|
-
return resp;
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
async rename(params: { path: string; newName: string }): Promise<StandardActionResponse> {
|
|
279
|
-
const resp = await this.sendAction('sequence_rename', { path: params.path, newName: params.newName });
|
|
280
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
281
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_rename' } as const;
|
|
282
|
-
}
|
|
283
|
-
return resp;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
async deleteSequence(params: { path: string }): Promise<StandardActionResponse> {
|
|
287
|
-
const resp = await this.sendAction('sequence_delete', { path: params.path });
|
|
288
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
289
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_delete' } as const;
|
|
290
|
-
}
|
|
291
|
-
return resp;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
async getMetadata(params: { path?: string }): Promise<StandardActionResponse> {
|
|
295
|
-
const resp = await this.sendAction('sequence_get_metadata', { path: params.path });
|
|
296
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
297
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_get_metadata' } as const;
|
|
298
|
-
}
|
|
299
|
-
return resp;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/**
|
|
303
|
-
* Add a keyframe to a sequence binding
|
|
304
|
-
*/
|
|
305
|
-
async addKeyframe(params: {
|
|
306
|
-
path?: string;
|
|
307
|
-
bindingId?: string;
|
|
308
|
-
actorName?: string;
|
|
309
|
-
property: 'Transform';
|
|
310
|
-
frame: number;
|
|
311
|
-
value: {
|
|
312
|
-
location?: { x: number; y: number; z: number };
|
|
313
|
-
rotation?: { roll: number; pitch: number; yaw: number };
|
|
314
|
-
scale?: { x: number; y: number; z: number };
|
|
315
|
-
};
|
|
316
|
-
}): Promise<StandardActionResponse> {
|
|
317
|
-
const resp = await this.sendAction('sequence_add_keyframe', {
|
|
318
|
-
path: params.path,
|
|
319
|
-
bindingId: params.bindingId,
|
|
320
|
-
actorName: params.actorName,
|
|
321
|
-
property: params.property,
|
|
322
|
-
frame: params.frame,
|
|
323
|
-
value: params.value
|
|
324
|
-
});
|
|
325
|
-
|
|
326
|
-
// Use WASM for transform processing
|
|
327
|
-
if (params.property === 'Transform' && params.value) {
|
|
328
|
-
const loc = params.value.location;
|
|
329
|
-
const rot = params.value.rotation;
|
|
330
|
-
const scale = params.value.scale;
|
|
331
|
-
if (loc && rot && scale) {
|
|
332
|
-
const locArr: [number, number, number] = [loc.x, loc.y, loc.z];
|
|
333
|
-
const rotArr: [number, number, number] = [rot.pitch, rot.yaw, rot.roll];
|
|
334
|
-
const scaleArr: [number, number, number] = [scale.x, scale.y, scale.z];
|
|
335
|
-
wasmIntegration.composeTransform(locArr, rotArr, scaleArr);
|
|
336
|
-
console.error('[WASM] Using composeTransform for keyframe validation');
|
|
337
|
-
}
|
|
338
|
-
}
|
|
339
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
340
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_add_keyframe' } as const;
|
|
341
|
-
}
|
|
342
|
-
return resp;
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
/**
|
|
346
|
-
* List tracks in a sequence
|
|
347
|
-
*/
|
|
348
|
-
async listTracks(params: { path: string }): Promise<StandardActionResponse> {
|
|
349
|
-
const resp = await this.sendAction('sequence_list_tracks', { path: params.path });
|
|
350
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
351
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_list_tracks' } as const;
|
|
352
|
-
}
|
|
353
|
-
if (resp.success) {
|
|
354
|
-
const tracks = resp.tracks || resp.data || resp.result || [];
|
|
355
|
-
return {
|
|
356
|
-
...resp,
|
|
357
|
-
tracks,
|
|
358
|
-
count: Array.isArray(tracks) ? tracks.length : undefined
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
return resp;
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
/**
|
|
365
|
-
* List available track types
|
|
366
|
-
*/
|
|
367
|
-
async listTrackTypes(): Promise<StandardActionResponse> {
|
|
368
|
-
const resp = await this.sendAction('list_track_types', {});
|
|
369
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
370
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement list_track_types' } as const;
|
|
371
|
-
}
|
|
372
|
-
return resp;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
/**
|
|
376
|
-
* Set playback work range
|
|
377
|
-
*/
|
|
378
|
-
async setWorkRange(params: { path?: string; start: number; end: number }): Promise<StandardActionResponse> {
|
|
379
|
-
const resp = await this.sendAction('sequence_set_work_range', { path: params.path, start: params.start, end: params.end });
|
|
380
|
-
if (!resp.success && this.isUnknownActionResponse(resp)) {
|
|
381
|
-
return { success: false, error: 'UNKNOWN_PLUGIN_ACTION', message: 'Automation plugin does not implement sequence_set_work_range' } as const;
|
|
382
|
-
}
|
|
383
|
-
return resp;
|
|
384
|
-
}
|
|
385
|
-
}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export const commonSchemas = {
|
|
3
|
-
location: {
|
|
4
|
-
type: 'object',
|
|
5
|
-
properties: {
|
|
6
|
-
x: { type: 'number' },
|
|
7
|
-
y: { type: 'number' },
|
|
8
|
-
z: { type: 'number' }
|
|
9
|
-
}
|
|
10
|
-
},
|
|
11
|
-
rotation: {
|
|
12
|
-
type: 'object',
|
|
13
|
-
properties: {
|
|
14
|
-
pitch: { type: 'number' },
|
|
15
|
-
yaw: { type: 'number' },
|
|
16
|
-
roll: { type: 'number' }
|
|
17
|
-
}
|
|
18
|
-
},
|
|
19
|
-
scale: {
|
|
20
|
-
type: 'object',
|
|
21
|
-
properties: {
|
|
22
|
-
x: { type: 'number' },
|
|
23
|
-
y: { type: 'number' },
|
|
24
|
-
z: { type: 'number' }
|
|
25
|
-
}
|
|
26
|
-
},
|
|
27
|
-
vector3: {
|
|
28
|
-
type: 'object',
|
|
29
|
-
properties: {
|
|
30
|
-
x: { type: 'number' },
|
|
31
|
-
y: { type: 'number' },
|
|
32
|
-
z: { type: 'number' }
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
};
|