unreal-engine-mcp-server 0.4.7 → 0.5.1

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.
Files changed (454) hide show
  1. package/.env.example +26 -0
  2. package/.env.production +38 -7
  3. package/.eslintrc.json +0 -54
  4. package/.eslintrc.override.json +8 -0
  5. package/.github/ISSUE_TEMPLATE/bug_report.yml +94 -0
  6. package/.github/ISSUE_TEMPLATE/config.yml +8 -0
  7. package/.github/ISSUE_TEMPLATE/feature_request.yml +56 -0
  8. package/.github/copilot-instructions.md +478 -45
  9. package/.github/dependabot.yml +19 -0
  10. package/.github/labeler.yml +24 -0
  11. package/.github/labels.yml +70 -0
  12. package/.github/pull_request_template.md +42 -0
  13. package/.github/release-drafter-config.yml +51 -0
  14. package/.github/workflows/auto-merge.yml +38 -0
  15. package/.github/workflows/ci.yml +38 -0
  16. package/.github/workflows/dependency-review.yml +17 -0
  17. package/.github/workflows/gemini-issue-triage.yml +172 -0
  18. package/.github/workflows/greetings.yml +27 -0
  19. package/.github/workflows/labeler.yml +17 -0
  20. package/.github/workflows/links.yml +80 -0
  21. package/.github/workflows/pr-size-labeler.yml +137 -0
  22. package/.github/workflows/publish-mcp.yml +13 -7
  23. package/.github/workflows/release-drafter.yml +23 -0
  24. package/.github/workflows/release.yml +112 -0
  25. package/.github/workflows/semantic-pull-request.yml +35 -0
  26. package/.github/workflows/smoke-test.yml +36 -0
  27. package/.github/workflows/stale.yml +28 -0
  28. package/CHANGELOG.md +338 -31
  29. package/CONTRIBUTING.md +140 -0
  30. package/GEMINI.md +115 -0
  31. package/Public/Plugin_setup_guide.mp4 +0 -0
  32. package/README.md +189 -128
  33. package/claude_desktop_config_example.json +7 -6
  34. package/dist/automation/bridge.d.ts +50 -0
  35. package/dist/automation/bridge.js +452 -0
  36. package/dist/automation/connection-manager.d.ts +23 -0
  37. package/dist/automation/connection-manager.js +107 -0
  38. package/dist/automation/handshake.d.ts +11 -0
  39. package/dist/automation/handshake.js +89 -0
  40. package/dist/automation/index.d.ts +3 -0
  41. package/dist/automation/index.js +3 -0
  42. package/dist/automation/message-handler.d.ts +12 -0
  43. package/dist/automation/message-handler.js +149 -0
  44. package/dist/automation/request-tracker.d.ts +25 -0
  45. package/dist/automation/request-tracker.js +98 -0
  46. package/dist/automation/types.d.ts +130 -0
  47. package/dist/automation/types.js +2 -0
  48. package/dist/cli.js +32 -5
  49. package/dist/config.d.ts +26 -0
  50. package/dist/config.js +59 -0
  51. package/dist/constants.d.ts +16 -0
  52. package/dist/constants.js +16 -0
  53. package/dist/graphql/loaders.d.ts +64 -0
  54. package/dist/graphql/loaders.js +117 -0
  55. package/dist/graphql/resolvers.d.ts +268 -0
  56. package/dist/graphql/resolvers.js +746 -0
  57. package/dist/graphql/schema.d.ts +5 -0
  58. package/dist/graphql/schema.js +437 -0
  59. package/dist/graphql/server.d.ts +26 -0
  60. package/dist/graphql/server.js +117 -0
  61. package/dist/graphql/types.d.ts +9 -0
  62. package/dist/graphql/types.js +2 -0
  63. package/dist/handlers/resource-handlers.d.ts +20 -0
  64. package/dist/handlers/resource-handlers.js +180 -0
  65. package/dist/index.d.ts +33 -18
  66. package/dist/index.js +130 -619
  67. package/dist/resources/actors.d.ts +17 -12
  68. package/dist/resources/actors.js +56 -76
  69. package/dist/resources/assets.d.ts +6 -14
  70. package/dist/resources/assets.js +115 -147
  71. package/dist/resources/levels.d.ts +13 -13
  72. package/dist/resources/levels.js +25 -34
  73. package/dist/server/resource-registry.d.ts +20 -0
  74. package/dist/server/resource-registry.js +37 -0
  75. package/dist/server/tool-registry.d.ts +23 -0
  76. package/dist/server/tool-registry.js +322 -0
  77. package/dist/server-setup.d.ts +20 -0
  78. package/dist/server-setup.js +71 -0
  79. package/dist/services/health-monitor.d.ts +34 -0
  80. package/dist/services/health-monitor.js +105 -0
  81. package/dist/services/metrics-server.d.ts +11 -0
  82. package/dist/services/metrics-server.js +105 -0
  83. package/dist/tools/actors.d.ts +163 -9
  84. package/dist/tools/actors.js +356 -311
  85. package/dist/tools/animation.d.ts +135 -4
  86. package/dist/tools/animation.js +510 -411
  87. package/dist/tools/assets.d.ts +75 -29
  88. package/dist/tools/assets.js +265 -284
  89. package/dist/tools/audio.d.ts +102 -42
  90. package/dist/tools/audio.js +272 -685
  91. package/dist/tools/base-tool.d.ts +17 -0
  92. package/dist/tools/base-tool.js +46 -0
  93. package/dist/tools/behavior-tree.d.ts +94 -0
  94. package/dist/tools/behavior-tree.js +39 -0
  95. package/dist/tools/blueprint.d.ts +208 -126
  96. package/dist/tools/blueprint.js +685 -832
  97. package/dist/tools/consolidated-tool-definitions.d.ts +5462 -1781
  98. package/dist/tools/consolidated-tool-definitions.js +829 -496
  99. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  100. package/dist/tools/consolidated-tool-handlers.js +198 -1027
  101. package/dist/tools/debug.d.ts +143 -85
  102. package/dist/tools/debug.js +234 -180
  103. package/dist/tools/dynamic-handler-registry.d.ts +13 -0
  104. package/dist/tools/dynamic-handler-registry.js +23 -0
  105. package/dist/tools/editor.d.ts +30 -83
  106. package/dist/tools/editor.js +247 -244
  107. package/dist/tools/engine.d.ts +10 -4
  108. package/dist/tools/engine.js +13 -5
  109. package/dist/tools/environment.d.ts +30 -0
  110. package/dist/tools/environment.js +267 -0
  111. package/dist/tools/foliage.d.ts +65 -99
  112. package/dist/tools/foliage.js +221 -331
  113. package/dist/tools/handlers/actor-handlers.d.ts +3 -0
  114. package/dist/tools/handlers/actor-handlers.js +227 -0
  115. package/dist/tools/handlers/animation-handlers.d.ts +3 -0
  116. package/dist/tools/handlers/animation-handlers.js +185 -0
  117. package/dist/tools/handlers/argument-helper.d.ts +16 -0
  118. package/dist/tools/handlers/argument-helper.js +80 -0
  119. package/dist/tools/handlers/asset-handlers.d.ts +3 -0
  120. package/dist/tools/handlers/asset-handlers.js +496 -0
  121. package/dist/tools/handlers/audio-handlers.d.ts +3 -0
  122. package/dist/tools/handlers/audio-handlers.js +166 -0
  123. package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
  124. package/dist/tools/handlers/blueprint-handlers.js +358 -0
  125. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  126. package/dist/tools/handlers/common-handlers.js +56 -0
  127. package/dist/tools/handlers/editor-handlers.d.ts +3 -0
  128. package/dist/tools/handlers/editor-handlers.js +119 -0
  129. package/dist/tools/handlers/effect-handlers.d.ts +3 -0
  130. package/dist/tools/handlers/effect-handlers.js +171 -0
  131. package/dist/tools/handlers/environment-handlers.d.ts +3 -0
  132. package/dist/tools/handlers/environment-handlers.js +170 -0
  133. package/dist/tools/handlers/graph-handlers.d.ts +3 -0
  134. package/dist/tools/handlers/graph-handlers.js +90 -0
  135. package/dist/tools/handlers/input-handlers.d.ts +3 -0
  136. package/dist/tools/handlers/input-handlers.js +21 -0
  137. package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
  138. package/dist/tools/handlers/inspect-handlers.js +383 -0
  139. package/dist/tools/handlers/level-handlers.d.ts +3 -0
  140. package/dist/tools/handlers/level-handlers.js +237 -0
  141. package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
  142. package/dist/tools/handlers/lighting-handlers.js +144 -0
  143. package/dist/tools/handlers/performance-handlers.d.ts +3 -0
  144. package/dist/tools/handlers/performance-handlers.js +130 -0
  145. package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
  146. package/dist/tools/handlers/pipeline-handlers.js +110 -0
  147. package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
  148. package/dist/tools/handlers/sequence-handlers.js +376 -0
  149. package/dist/tools/handlers/system-handlers.d.ts +4 -0
  150. package/dist/tools/handlers/system-handlers.js +506 -0
  151. package/dist/tools/input.d.ts +19 -0
  152. package/dist/tools/input.js +89 -0
  153. package/dist/tools/introspection.d.ts +103 -40
  154. package/dist/tools/introspection.js +425 -568
  155. package/dist/tools/landscape.d.ts +54 -93
  156. package/dist/tools/landscape.js +284 -409
  157. package/dist/tools/level.d.ts +66 -27
  158. package/dist/tools/level.js +647 -675
  159. package/dist/tools/lighting.d.ts +77 -38
  160. package/dist/tools/lighting.js +445 -943
  161. package/dist/tools/logs.d.ts +3 -3
  162. package/dist/tools/logs.js +5 -57
  163. package/dist/tools/materials.d.ts +91 -24
  164. package/dist/tools/materials.js +194 -118
  165. package/dist/tools/niagara.d.ts +149 -39
  166. package/dist/tools/niagara.js +267 -182
  167. package/dist/tools/performance.d.ts +27 -13
  168. package/dist/tools/performance.js +203 -122
  169. package/dist/tools/physics.d.ts +32 -77
  170. package/dist/tools/physics.js +175 -582
  171. package/dist/tools/property-dictionary.d.ts +13 -0
  172. package/dist/tools/property-dictionary.js +82 -0
  173. package/dist/tools/sequence.d.ts +85 -60
  174. package/dist/tools/sequence.js +208 -747
  175. package/dist/tools/tool-definition-utils.d.ts +59 -0
  176. package/dist/tools/tool-definition-utils.js +35 -0
  177. package/dist/tools/ui.d.ts +64 -34
  178. package/dist/tools/ui.js +134 -214
  179. package/dist/types/automation-responses.d.ts +115 -0
  180. package/dist/types/automation-responses.js +2 -0
  181. package/dist/types/env.d.ts +0 -3
  182. package/dist/types/env.js +0 -7
  183. package/dist/types/responses.d.ts +249 -0
  184. package/dist/types/responses.js +2 -0
  185. package/dist/types/tool-interfaces.d.ts +898 -0
  186. package/dist/types/tool-interfaces.js +2 -0
  187. package/dist/types/tool-types.d.ts +183 -19
  188. package/dist/types/tool-types.js +0 -4
  189. package/dist/unreal-bridge.d.ts +24 -131
  190. package/dist/unreal-bridge.js +364 -1506
  191. package/dist/utils/command-validator.d.ts +9 -0
  192. package/dist/utils/command-validator.js +68 -0
  193. package/dist/utils/elicitation.d.ts +1 -1
  194. package/dist/utils/elicitation.js +12 -15
  195. package/dist/utils/error-handler.d.ts +2 -51
  196. package/dist/utils/error-handler.js +11 -87
  197. package/dist/utils/ini-reader.d.ts +3 -0
  198. package/dist/utils/ini-reader.js +69 -0
  199. package/dist/utils/logger.js +9 -6
  200. package/dist/utils/normalize.d.ts +3 -0
  201. package/dist/utils/normalize.js +56 -0
  202. package/dist/utils/path-security.d.ts +2 -0
  203. package/dist/utils/path-security.js +24 -0
  204. package/dist/utils/response-factory.d.ts +7 -0
  205. package/dist/utils/response-factory.js +27 -0
  206. package/dist/utils/response-validator.d.ts +3 -24
  207. package/dist/utils/response-validator.js +130 -81
  208. package/dist/utils/result-helpers.d.ts +4 -5
  209. package/dist/utils/result-helpers.js +15 -16
  210. package/dist/utils/safe-json.js +5 -11
  211. package/dist/utils/unreal-command-queue.d.ts +24 -0
  212. package/dist/utils/unreal-command-queue.js +120 -0
  213. package/dist/utils/validation.d.ts +0 -40
  214. package/dist/utils/validation.js +1 -78
  215. package/dist/wasm/index.d.ts +70 -0
  216. package/dist/wasm/index.js +535 -0
  217. package/docs/GraphQL-API.md +888 -0
  218. package/docs/Migration-Guide-v0.5.0.md +684 -0
  219. package/docs/Roadmap.md +53 -0
  220. package/docs/WebAssembly-Integration.md +628 -0
  221. package/docs/editor-plugin-extension.md +370 -0
  222. package/docs/handler-mapping.md +242 -0
  223. package/docs/native-automation-progress.md +128 -0
  224. package/docs/testing-guide.md +423 -0
  225. package/mcp-config-example.json +6 -6
  226. package/package.json +67 -28
  227. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
  228. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
  229. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
  230. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
  231. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
  232. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
  233. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
  234. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
  235. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
  236. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
  237. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
  238. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
  239. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
  240. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
  241. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
  242. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
  243. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
  244. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
  245. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
  246. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
  247. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
  248. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
  249. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
  250. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
  251. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
  252. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
  253. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
  254. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
  255. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
  256. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
  257. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
  258. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
  259. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
  260. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
  261. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
  262. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
  263. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
  264. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
  265. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
  266. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
  267. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
  268. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
  269. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
  270. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
  272. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
  273. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
  274. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
  275. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
  276. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
  277. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
  278. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
  279. package/scripts/check-unreal-connection.mjs +19 -0
  280. package/scripts/clean-tmp.js +23 -0
  281. package/scripts/patch-wasm.js +26 -0
  282. package/scripts/run-all-tests.mjs +136 -0
  283. package/scripts/smoke-test.ts +94 -0
  284. package/scripts/sync-mcp-plugin.js +143 -0
  285. package/scripts/test-no-plugin-alternates.mjs +113 -0
  286. package/scripts/validate-server.js +46 -0
  287. package/scripts/verify-automation-bridge.js +200 -0
  288. package/server.json +58 -21
  289. package/src/automation/bridge.ts +558 -0
  290. package/src/automation/connection-manager.ts +130 -0
  291. package/src/automation/handshake.ts +99 -0
  292. package/src/automation/index.ts +2 -0
  293. package/src/automation/message-handler.ts +167 -0
  294. package/src/automation/request-tracker.ts +123 -0
  295. package/src/automation/types.ts +107 -0
  296. package/src/cli.ts +33 -6
  297. package/src/config.ts +73 -0
  298. package/src/constants.ts +19 -0
  299. package/src/graphql/loaders.ts +244 -0
  300. package/src/graphql/resolvers.ts +1008 -0
  301. package/src/graphql/schema.ts +452 -0
  302. package/src/graphql/server.ts +156 -0
  303. package/src/graphql/types.ts +10 -0
  304. package/src/handlers/resource-handlers.ts +186 -0
  305. package/src/index.ts +166 -664
  306. package/src/resources/actors.ts +58 -76
  307. package/src/resources/assets.ts +148 -134
  308. package/src/resources/levels.ts +28 -33
  309. package/src/server/resource-registry.ts +47 -0
  310. package/src/server/tool-registry.ts +354 -0
  311. package/src/server-setup.ts +114 -0
  312. package/src/services/health-monitor.ts +132 -0
  313. package/src/services/metrics-server.ts +142 -0
  314. package/src/tools/actors.ts +426 -323
  315. package/src/tools/animation.ts +672 -461
  316. package/src/tools/assets.ts +364 -289
  317. package/src/tools/audio.ts +323 -766
  318. package/src/tools/base-tool.ts +52 -0
  319. package/src/tools/behavior-tree.ts +45 -0
  320. package/src/tools/blueprint.ts +792 -970
  321. package/src/tools/consolidated-tool-definitions.ts +993 -515
  322. package/src/tools/consolidated-tool-handlers.ts +258 -1146
  323. package/src/tools/debug.ts +292 -187
  324. package/src/tools/dynamic-handler-registry.ts +33 -0
  325. package/src/tools/editor.ts +329 -253
  326. package/src/tools/engine.ts +14 -3
  327. package/src/tools/environment.ts +281 -0
  328. package/src/tools/foliage.ts +330 -392
  329. package/src/tools/handlers/actor-handlers.ts +265 -0
  330. package/src/tools/handlers/animation-handlers.ts +237 -0
  331. package/src/tools/handlers/argument-helper.ts +142 -0
  332. package/src/tools/handlers/asset-handlers.ts +532 -0
  333. package/src/tools/handlers/audio-handlers.ts +194 -0
  334. package/src/tools/handlers/blueprint-handlers.ts +380 -0
  335. package/src/tools/handlers/common-handlers.ts +87 -0
  336. package/src/tools/handlers/editor-handlers.ts +123 -0
  337. package/src/tools/handlers/effect-handlers.ts +220 -0
  338. package/src/tools/handlers/environment-handlers.ts +183 -0
  339. package/src/tools/handlers/graph-handlers.ts +116 -0
  340. package/src/tools/handlers/input-handlers.ts +28 -0
  341. package/src/tools/handlers/inspect-handlers.ts +450 -0
  342. package/src/tools/handlers/level-handlers.ts +252 -0
  343. package/src/tools/handlers/lighting-handlers.ts +147 -0
  344. package/src/tools/handlers/performance-handlers.ts +132 -0
  345. package/src/tools/handlers/pipeline-handlers.ts +127 -0
  346. package/src/tools/handlers/sequence-handlers.ts +415 -0
  347. package/src/tools/handlers/system-handlers.ts +564 -0
  348. package/src/tools/input.ts +101 -0
  349. package/src/tools/introspection.ts +493 -584
  350. package/src/tools/landscape.ts +418 -507
  351. package/src/tools/level.ts +786 -708
  352. package/src/tools/lighting.ts +588 -984
  353. package/src/tools/logs.ts +9 -57
  354. package/src/tools/materials.ts +237 -121
  355. package/src/tools/niagara.ts +335 -168
  356. package/src/tools/performance.ts +320 -169
  357. package/src/tools/physics.ts +274 -613
  358. package/src/tools/property-dictionary.ts +98 -0
  359. package/src/tools/sequence.ts +276 -820
  360. package/src/tools/tool-definition-utils.ts +35 -0
  361. package/src/tools/ui.ts +205 -283
  362. package/src/types/automation-responses.ts +119 -0
  363. package/src/types/env.ts +0 -10
  364. package/src/types/responses.ts +355 -0
  365. package/src/types/tool-interfaces.ts +250 -0
  366. package/src/types/tool-types.ts +243 -21
  367. package/src/unreal-bridge.ts +460 -1550
  368. package/src/utils/command-validator.ts +76 -0
  369. package/src/utils/elicitation.ts +10 -7
  370. package/src/utils/error-handler.ts +14 -90
  371. package/src/utils/ini-reader.ts +86 -0
  372. package/src/utils/logger.ts +8 -3
  373. package/src/utils/normalize.test.ts +162 -0
  374. package/src/utils/normalize.ts +60 -0
  375. package/src/utils/path-security.ts +43 -0
  376. package/src/utils/response-factory.ts +44 -0
  377. package/src/utils/response-validator.ts +176 -56
  378. package/src/utils/result-helpers.ts +21 -19
  379. package/src/utils/safe-json.test.ts +90 -0
  380. package/src/utils/safe-json.ts +14 -11
  381. package/src/utils/unreal-command-queue.ts +152 -0
  382. package/src/utils/validation.test.ts +184 -0
  383. package/src/utils/validation.ts +4 -1
  384. package/src/wasm/index.ts +838 -0
  385. package/test-server.mjs +100 -0
  386. package/tests/run-unreal-tool-tests.mjs +242 -14
  387. package/tests/test-animation.mjs +369 -0
  388. package/tests/test-asset-advanced.mjs +82 -0
  389. package/tests/test-asset-errors.mjs +35 -0
  390. package/tests/test-asset-graph.mjs +311 -0
  391. package/tests/test-audio.mjs +417 -0
  392. package/tests/test-automation-timeouts.mjs +98 -0
  393. package/tests/test-behavior-tree.mjs +444 -0
  394. package/tests/test-blueprint-graph.mjs +410 -0
  395. package/tests/test-blueprint.mjs +577 -0
  396. package/tests/test-client-mode.mjs +86 -0
  397. package/tests/test-console-command.mjs +56 -0
  398. package/tests/test-control-actor.mjs +425 -0
  399. package/tests/test-control-editor.mjs +112 -0
  400. package/tests/test-graphql.mjs +372 -0
  401. package/tests/test-input.mjs +349 -0
  402. package/tests/test-inspect.mjs +302 -0
  403. package/tests/test-landscape.mjs +316 -0
  404. package/tests/test-lighting.mjs +428 -0
  405. package/tests/test-manage-asset.mjs +438 -0
  406. package/tests/test-manage-level.mjs +89 -0
  407. package/tests/test-materials.mjs +356 -0
  408. package/tests/test-niagara.mjs +185 -0
  409. package/tests/test-no-inline-python.mjs +122 -0
  410. package/tests/test-performance.mjs +539 -0
  411. package/tests/test-plugin-handshake.mjs +82 -0
  412. package/tests/test-runner.mjs +933 -0
  413. package/tests/test-sequence.mjs +104 -0
  414. package/tests/test-system.mjs +96 -0
  415. package/tests/test-wasm.mjs +283 -0
  416. package/tests/test-world-partition.mjs +215 -0
  417. package/tsconfig.json +3 -3
  418. package/vitest.config.ts +35 -0
  419. package/wasm/Cargo.lock +363 -0
  420. package/wasm/Cargo.toml +42 -0
  421. package/wasm/LICENSE +21 -0
  422. package/wasm/README.md +253 -0
  423. package/wasm/src/dependency_resolver.rs +377 -0
  424. package/wasm/src/lib.rs +153 -0
  425. package/wasm/src/property_parser.rs +271 -0
  426. package/wasm/src/transform_math.rs +396 -0
  427. package/wasm/tests/integration.rs +109 -0
  428. package/.github/workflows/smithery-build.yml +0 -29
  429. package/dist/prompts/index.d.ts +0 -21
  430. package/dist/prompts/index.js +0 -217
  431. package/dist/tools/build_environment_advanced.d.ts +0 -65
  432. package/dist/tools/build_environment_advanced.js +0 -633
  433. package/dist/tools/rc.d.ts +0 -110
  434. package/dist/tools/rc.js +0 -437
  435. package/dist/tools/visual.d.ts +0 -40
  436. package/dist/tools/visual.js +0 -282
  437. package/dist/utils/http.d.ts +0 -6
  438. package/dist/utils/http.js +0 -151
  439. package/dist/utils/python-output.d.ts +0 -18
  440. package/dist/utils/python-output.js +0 -290
  441. package/dist/utils/python.d.ts +0 -2
  442. package/dist/utils/python.js +0 -4
  443. package/dist/utils/stdio-redirect.d.ts +0 -2
  444. package/dist/utils/stdio-redirect.js +0 -20
  445. package/docs/unreal-tool-test-cases.md +0 -574
  446. package/smithery.yaml +0 -29
  447. package/src/prompts/index.ts +0 -249
  448. package/src/tools/build_environment_advanced.ts +0 -732
  449. package/src/tools/rc.ts +0 -515
  450. package/src/tools/visual.ts +0 -281
  451. package/src/utils/http.ts +0 -187
  452. package/src/utils/python-output.ts +0 -351
  453. package/src/utils/python.ts +0 -3
  454. package/src/utils/stdio-redirect.ts +0 -18
@@ -0,0 +1,215 @@
1
+ import { TestRunner } from './test-runner.mjs';
2
+
3
+ const runner = new TestRunner('World Partition Tests');
4
+ const timestamp = Date.now();
5
+ const bpName = `BP_WP_Test_${timestamp}`;
6
+ const bpPath = `/Game/Tests/WP/${bpName}`;
7
+ let testActorPath = '';
8
+
9
+ runner.addStep('Create Test Blueprint', async (tools) => {
10
+ const result = await tools.executeTool('manage_blueprint', {
11
+ action: 'create',
12
+ name: bpName,
13
+ blueprintType: 'Actor',
14
+ savePath: '/Game/Tests/WP',
15
+ waitForCompletion: true
16
+ });
17
+ return result.success;
18
+ });
19
+
20
+ runner.addStep('Spawn Test Actor', async (tools) => {
21
+ // Wait for Asset Registry to catch up
22
+ await new Promise(r => setTimeout(r, 2000));
23
+
24
+ // Use spawn_blueprint which handles class resolution internally
25
+ // avoiding the need to manually construct _C paths and cleaner error handling
26
+ const result = await tools.executeTool('control_actor', {
27
+ action: 'spawn_blueprint',
28
+ blueprintPath: bpPath,
29
+ location: { x: 0, y: 0, z: 500 }
30
+ });
31
+ /* DEBUG LOGGING */
32
+ // Handle nested result structure from automation responses
33
+ const resultData = result.result || result;
34
+ const actorPathValue = resultData.actorPath || result.actorPath;
35
+ const actorNameValue = resultData.actorName || result.actorName;
36
+
37
+ const logMsg = `Spawn Result: Success=${result.success}, ActorPath=${actorPathValue}, ActorName=${actorNameValue}`;
38
+ await tools.executeTool('system_control', {
39
+ action: 'console_command',
40
+ command: `Log "${logMsg}"`
41
+ }).catch(() => { });
42
+
43
+ if (result.success && actorPathValue) {
44
+ testActorPath = actorPathValue;
45
+ // Wait for Actor to be fully registered in World Partition system
46
+ await new Promise(r => setTimeout(r, 1000));
47
+ return true;
48
+ }
49
+
50
+ // Also accept actorName as fallback for finding the actor
51
+ if (result.success && actorNameValue) {
52
+ testActorPath = actorNameValue;
53
+ await new Promise(r => setTimeout(r, 1000));
54
+ return true;
55
+ }
56
+
57
+ return false;
58
+ });
59
+
60
+
61
+ runner.addStep('Load World Partition Cells', async (tools) => {
62
+ const result = await tools.executeTool('manage_world_partition', {
63
+ action: 'load_cells',
64
+ origin: [0, 0, 0],
65
+ extent: [10000, 10000, 10000]
66
+ });
67
+ // Success or NOT_IMPLEMENTED (if not WP level) are both acceptable "pass" states for automation check
68
+ return true;
69
+ });
70
+
71
+ runner.addStep('Create Data Layer', async (tools) => {
72
+ // If we are in a WP level, we should be able to create data layers
73
+ try {
74
+ const result = await tools.executeTool('manage_world_partition', {
75
+ action: 'create_datalayer',
76
+ dataLayerName: 'TestLayer'
77
+ });
78
+
79
+ // It's robust to accept success or "already exists"
80
+ if (result.success) return true;
81
+ if (result.message && result.message.includes('already exists')) return true;
82
+
83
+ // If not supported (e.g. non-editor or no subsystem), we might skip or fail.
84
+ // Given the previous step passes on NOT_SUPPORTED, we might want to do the same here.
85
+ if (result.error === 'NOT_SUPPORTED' || result.error === 'SUBSYSTEM_NOT_FOUND') {
86
+ console.log('DEBUG: Create Data Layer not supported, skipping creation.');
87
+ return true;
88
+ }
89
+
90
+ // Fail if we expected it to work
91
+ return false;
92
+ } catch (e) {
93
+ if (e.message.includes('Unknown subAction')) {
94
+ // Plugin might not be recompiled yet, warn but don't fail hard if SetDataLayer expects failure?
95
+ // But typically we want this to work.
96
+ console.log('DEBUG: create_datalayer not implemented in plugin subAction.');
97
+ return false;
98
+ }
99
+ throw e;
100
+ }
101
+ });
102
+
103
+ runner.addStep('Set Data Layer', async (tools) => {
104
+ console.log('DEBUG: Starting Set Data Layer step');
105
+ try {
106
+ if (!testActorPath) {
107
+ throw new Error('No test actor spawned');
108
+ }
109
+
110
+ let attempt = 0;
111
+ let result;
112
+ while (attempt < 3) {
113
+ console.log(`DEBUG: Set Data Layer Attempt ${attempt + 1}`);
114
+ try {
115
+ result = await tools.executeTool('manage_world_partition', {
116
+ action: 'set_datalayer',
117
+ actorPath: testActorPath,
118
+ dataLayerName: 'TestLayer'
119
+ });
120
+ } catch (toolErr) {
121
+ console.error('DEBUG: executeTool threw:', toolErr);
122
+ throw toolErr;
123
+ }
124
+
125
+ // Debug log to Unreal console
126
+ await tools.executeTool('system_control', {
127
+ action: 'console_command',
128
+ command: `Log "SetDataLayer Attempt ${attempt + 1}: ${result.success ? 'Success' : result.error || result.message}"`
129
+ }).catch(() => { });
130
+
131
+ if (result.success) return true;
132
+ if (result.error === 'DATALAYER_NOT_FOUND') return true;
133
+ if (result.message && result.message.includes('not found')) return true;
134
+
135
+ // If actor not found, retry
136
+ if (result.error === 'ACTOR_NOT_FOUND') {
137
+ console.log('DEBUG: Actor not found, retrying...');
138
+ await new Promise(r => setTimeout(r, 1000));
139
+ attempt++;
140
+ continue;
141
+ }
142
+ break;
143
+ }
144
+
145
+ // If it failed with ACTOR_NOT_FOUND after retries, fail the test
146
+ if (result.error === 'ACTOR_NOT_FOUND') return false;
147
+
148
+ return true;
149
+ } catch (e) {
150
+ console.error('DEBUG: Set Data Layer Step FAILED with exception:', e);
151
+ await tools.executeTool('system_control', {
152
+ action: 'console_command',
153
+ command: `Log "SetDataLayer Step EXCEPTION: ${e.message}"`
154
+ }).catch(() => { });
155
+ throw e;
156
+ }
157
+ });
158
+
159
+ runner.addStep('Cleanup Actor', async (tools) => {
160
+ if (!testActorPath) return true;
161
+ try {
162
+ await tools.executeTool('control_actor', {
163
+ action: 'delete',
164
+ actorPath: testActorPath
165
+ });
166
+ } catch (e) {
167
+ console.warn(`[WARN] Failed to delete actor: ${e.message}`);
168
+ }
169
+ return true;
170
+ });
171
+
172
+ runner.addStep('Wait for Cleanup', async (tools) => {
173
+ // Multiple GC passes with delays to release all references
174
+ for (let i = 0; i < 5; i++) {
175
+ await tools.executeTool('system_control', { action: 'console_command', command: 'obj gc' });
176
+ await new Promise(r => setTimeout(r, 500));
177
+ }
178
+ // Additional wait for asset registry to update
179
+ await new Promise(r => setTimeout(r, 2000));
180
+ return true;
181
+ });
182
+
183
+ runner.addStep('Cleanup Blueprint', async (tools) => {
184
+ // Try to delete the blueprint with retries
185
+ let deleted = false;
186
+ for (let attempt = 0; attempt < 3 && !deleted; attempt++) {
187
+ try {
188
+ // Force GC before each attempt
189
+ await tools.executeTool('system_control', { action: 'console_command', command: 'obj gc' });
190
+ await new Promise(r => setTimeout(r, 500));
191
+
192
+ const result = await tools.executeTool('manage_asset', {
193
+ action: 'delete',
194
+ assetPath: bpPath,
195
+ force: true // Request force delete if supported
196
+ });
197
+
198
+ if (result.success) {
199
+ deleted = true;
200
+ }
201
+ } catch (e) {
202
+ // Quietly retry
203
+ await new Promise(r => setTimeout(r, 1000));
204
+ }
205
+ }
206
+
207
+ if (!deleted) {
208
+ console.log(`[INFO] Could not delete test blueprint ${bpPath}. This is expected if the class is still in memory.`);
209
+ }
210
+
211
+ // Always return true - cleanup failures shouldn't fail the test
212
+ return true;
213
+ });
214
+
215
+ runner.run().catch(console.error);
package/tsconfig.json CHANGED
@@ -17,8 +17,8 @@
17
17
  "alwaysStrict": true,
18
18
 
19
19
  // Additional Checks
20
- "noUnusedLocals": false,
21
- "noUnusedParameters": false,
20
+ "noUnusedLocals": true,
21
+ "noUnusedParameters": true,
22
22
  "noImplicitReturns": true,
23
23
  "noFallthroughCasesInSwitch": true,
24
24
  "allowUnreachableCode": false,
@@ -34,7 +34,7 @@
34
34
  "declaration": true,
35
35
  "declarationMap": true,
36
36
  "sourceMap": true,
37
- "removeComments": false,
37
+ "removeComments": true,
38
38
  "importHelpers": false,
39
39
  "emitDeclarationOnly": false,
40
40
 
@@ -0,0 +1,35 @@
1
+ import { defineConfig } from 'vitest/config';
2
+
3
+ export default defineConfig({
4
+ test: {
5
+ globals: true,
6
+ environment: 'node',
7
+ include: [
8
+ 'src/**/*.test.ts',
9
+ 'tests/unit/**/*.test.ts'
10
+ ],
11
+ exclude: [
12
+ '**/node_modules/**',
13
+ '**/dist/**'
14
+ ],
15
+ coverage: {
16
+ provider: 'v8',
17
+ reporter: ['text', 'text-summary', 'html'],
18
+ include: ['src/**/*.ts'],
19
+ exclude: [
20
+ 'src/**/*.test.ts',
21
+ 'src/types/**',
22
+ 'src/**/*.d.ts'
23
+ ],
24
+ thresholds: {
25
+ // Start with low thresholds, increase as coverage improves
26
+ lines: 20,
27
+ functions: 20,
28
+ branches: 20,
29
+ statements: 20
30
+ }
31
+ },
32
+ testTimeout: 10000,
33
+ hookTimeout: 10000
34
+ }
35
+ });
@@ -0,0 +1,363 @@
1
+ # This file is automatically @generated by Cargo.
2
+ # It is not intended for manual editing.
3
+ version = 4
4
+
5
+ [[package]]
6
+ name = "bumpalo"
7
+ version = "3.19.0"
8
+ source = "registry+https://github.com/rust-lang/crates.io-index"
9
+ checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43"
10
+
11
+ [[package]]
12
+ name = "cc"
13
+ version = "1.2.47"
14
+ source = "registry+https://github.com/rust-lang/crates.io-index"
15
+ checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07"
16
+ dependencies = [
17
+ "find-msvc-tools",
18
+ "shlex",
19
+ ]
20
+
21
+ [[package]]
22
+ name = "cfg-if"
23
+ version = "1.0.4"
24
+ source = "registry+https://github.com/rust-lang/crates.io-index"
25
+ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801"
26
+
27
+ [[package]]
28
+ name = "console_error_panic_hook"
29
+ version = "0.1.7"
30
+ source = "registry+https://github.com/rust-lang/crates.io-index"
31
+ checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
32
+ dependencies = [
33
+ "cfg-if",
34
+ "wasm-bindgen",
35
+ ]
36
+
37
+ [[package]]
38
+ name = "find-msvc-tools"
39
+ version = "0.1.5"
40
+ source = "registry+https://github.com/rust-lang/crates.io-index"
41
+ checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844"
42
+
43
+ [[package]]
44
+ name = "getrandom"
45
+ version = "0.2.16"
46
+ source = "registry+https://github.com/rust-lang/crates.io-index"
47
+ checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
48
+ dependencies = [
49
+ "cfg-if",
50
+ "js-sys",
51
+ "libc",
52
+ "wasi",
53
+ "wasm-bindgen",
54
+ ]
55
+
56
+ [[package]]
57
+ name = "itoa"
58
+ version = "1.0.15"
59
+ source = "registry+https://github.com/rust-lang/crates.io-index"
60
+ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c"
61
+
62
+ [[package]]
63
+ name = "js-sys"
64
+ version = "0.3.82"
65
+ source = "registry+https://github.com/rust-lang/crates.io-index"
66
+ checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65"
67
+ dependencies = [
68
+ "once_cell",
69
+ "wasm-bindgen",
70
+ ]
71
+
72
+ [[package]]
73
+ name = "libc"
74
+ version = "0.2.177"
75
+ source = "registry+https://github.com/rust-lang/crates.io-index"
76
+ checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976"
77
+
78
+ [[package]]
79
+ name = "memchr"
80
+ version = "2.7.6"
81
+ source = "registry+https://github.com/rust-lang/crates.io-index"
82
+ checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273"
83
+
84
+ [[package]]
85
+ name = "minicov"
86
+ version = "0.3.7"
87
+ source = "registry+https://github.com/rust-lang/crates.io-index"
88
+ checksum = "f27fe9f1cc3c22e1687f9446c2083c4c5fc7f0bcf1c7a86bdbded14985895b4b"
89
+ dependencies = [
90
+ "cc",
91
+ "walkdir",
92
+ ]
93
+
94
+ [[package]]
95
+ name = "once_cell"
96
+ version = "1.21.3"
97
+ source = "registry+https://github.com/rust-lang/crates.io-index"
98
+ checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
99
+
100
+ [[package]]
101
+ name = "proc-macro2"
102
+ version = "1.0.103"
103
+ source = "registry+https://github.com/rust-lang/crates.io-index"
104
+ checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8"
105
+ dependencies = [
106
+ "unicode-ident",
107
+ ]
108
+
109
+ [[package]]
110
+ name = "quote"
111
+ version = "1.0.42"
112
+ source = "registry+https://github.com/rust-lang/crates.io-index"
113
+ checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f"
114
+ dependencies = [
115
+ "proc-macro2",
116
+ ]
117
+
118
+ [[package]]
119
+ name = "rustversion"
120
+ version = "1.0.22"
121
+ source = "registry+https://github.com/rust-lang/crates.io-index"
122
+ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d"
123
+
124
+ [[package]]
125
+ name = "ryu"
126
+ version = "1.0.20"
127
+ source = "registry+https://github.com/rust-lang/crates.io-index"
128
+ checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f"
129
+
130
+ [[package]]
131
+ name = "same-file"
132
+ version = "1.0.6"
133
+ source = "registry+https://github.com/rust-lang/crates.io-index"
134
+ checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
135
+ dependencies = [
136
+ "winapi-util",
137
+ ]
138
+
139
+ [[package]]
140
+ name = "serde"
141
+ version = "1.0.228"
142
+ source = "registry+https://github.com/rust-lang/crates.io-index"
143
+ checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e"
144
+ dependencies = [
145
+ "serde_core",
146
+ "serde_derive",
147
+ ]
148
+
149
+ [[package]]
150
+ name = "serde-wasm-bindgen"
151
+ version = "0.6.5"
152
+ source = "registry+https://github.com/rust-lang/crates.io-index"
153
+ checksum = "8302e169f0eddcc139c70f139d19d6467353af16f9fce27e8c30158036a1e16b"
154
+ dependencies = [
155
+ "js-sys",
156
+ "serde",
157
+ "wasm-bindgen",
158
+ ]
159
+
160
+ [[package]]
161
+ name = "serde_core"
162
+ version = "1.0.228"
163
+ source = "registry+https://github.com/rust-lang/crates.io-index"
164
+ checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad"
165
+ dependencies = [
166
+ "serde_derive",
167
+ ]
168
+
169
+ [[package]]
170
+ name = "serde_derive"
171
+ version = "1.0.228"
172
+ source = "registry+https://github.com/rust-lang/crates.io-index"
173
+ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79"
174
+ dependencies = [
175
+ "proc-macro2",
176
+ "quote",
177
+ "syn",
178
+ ]
179
+
180
+ [[package]]
181
+ name = "serde_json"
182
+ version = "1.0.145"
183
+ source = "registry+https://github.com/rust-lang/crates.io-index"
184
+ checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c"
185
+ dependencies = [
186
+ "itoa",
187
+ "memchr",
188
+ "ryu",
189
+ "serde",
190
+ "serde_core",
191
+ ]
192
+
193
+ [[package]]
194
+ name = "shlex"
195
+ version = "1.3.0"
196
+ source = "registry+https://github.com/rust-lang/crates.io-index"
197
+ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
198
+
199
+ [[package]]
200
+ name = "syn"
201
+ version = "2.0.111"
202
+ source = "registry+https://github.com/rust-lang/crates.io-index"
203
+ checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87"
204
+ dependencies = [
205
+ "proc-macro2",
206
+ "quote",
207
+ "unicode-ident",
208
+ ]
209
+
210
+ [[package]]
211
+ name = "unicode-ident"
212
+ version = "1.0.22"
213
+ source = "registry+https://github.com/rust-lang/crates.io-index"
214
+ checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5"
215
+
216
+ [[package]]
217
+ name = "unreal-mcp-wasm"
218
+ version = "0.1.0"
219
+ dependencies = [
220
+ "console_error_panic_hook",
221
+ "getrandom",
222
+ "js-sys",
223
+ "serde",
224
+ "serde-wasm-bindgen",
225
+ "serde_json",
226
+ "wasm-bindgen",
227
+ "wasm-bindgen-test",
228
+ "web-sys",
229
+ ]
230
+
231
+ [[package]]
232
+ name = "walkdir"
233
+ version = "2.5.0"
234
+ source = "registry+https://github.com/rust-lang/crates.io-index"
235
+ checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b"
236
+ dependencies = [
237
+ "same-file",
238
+ "winapi-util",
239
+ ]
240
+
241
+ [[package]]
242
+ name = "wasi"
243
+ version = "0.11.1+wasi-snapshot-preview1"
244
+ source = "registry+https://github.com/rust-lang/crates.io-index"
245
+ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
246
+
247
+ [[package]]
248
+ name = "wasm-bindgen"
249
+ version = "0.2.105"
250
+ source = "registry+https://github.com/rust-lang/crates.io-index"
251
+ checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60"
252
+ dependencies = [
253
+ "cfg-if",
254
+ "once_cell",
255
+ "rustversion",
256
+ "serde",
257
+ "serde_json",
258
+ "wasm-bindgen-macro",
259
+ "wasm-bindgen-shared",
260
+ ]
261
+
262
+ [[package]]
263
+ name = "wasm-bindgen-futures"
264
+ version = "0.4.55"
265
+ source = "registry+https://github.com/rust-lang/crates.io-index"
266
+ checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0"
267
+ dependencies = [
268
+ "cfg-if",
269
+ "js-sys",
270
+ "once_cell",
271
+ "wasm-bindgen",
272
+ "web-sys",
273
+ ]
274
+
275
+ [[package]]
276
+ name = "wasm-bindgen-macro"
277
+ version = "0.2.105"
278
+ source = "registry+https://github.com/rust-lang/crates.io-index"
279
+ checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2"
280
+ dependencies = [
281
+ "quote",
282
+ "wasm-bindgen-macro-support",
283
+ ]
284
+
285
+ [[package]]
286
+ name = "wasm-bindgen-macro-support"
287
+ version = "0.2.105"
288
+ source = "registry+https://github.com/rust-lang/crates.io-index"
289
+ checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc"
290
+ dependencies = [
291
+ "bumpalo",
292
+ "proc-macro2",
293
+ "quote",
294
+ "syn",
295
+ "wasm-bindgen-shared",
296
+ ]
297
+
298
+ [[package]]
299
+ name = "wasm-bindgen-shared"
300
+ version = "0.2.105"
301
+ source = "registry+https://github.com/rust-lang/crates.io-index"
302
+ checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76"
303
+ dependencies = [
304
+ "unicode-ident",
305
+ ]
306
+
307
+ [[package]]
308
+ name = "wasm-bindgen-test"
309
+ version = "0.3.55"
310
+ source = "registry+https://github.com/rust-lang/crates.io-index"
311
+ checksum = "bfc379bfb624eb59050b509c13e77b4eb53150c350db69628141abce842f2373"
312
+ dependencies = [
313
+ "js-sys",
314
+ "minicov",
315
+ "wasm-bindgen",
316
+ "wasm-bindgen-futures",
317
+ "wasm-bindgen-test-macro",
318
+ ]
319
+
320
+ [[package]]
321
+ name = "wasm-bindgen-test-macro"
322
+ version = "0.3.55"
323
+ source = "registry+https://github.com/rust-lang/crates.io-index"
324
+ checksum = "085b2df989e1e6f9620c1311df6c996e83fe16f57792b272ce1e024ac16a90f1"
325
+ dependencies = [
326
+ "proc-macro2",
327
+ "quote",
328
+ "syn",
329
+ ]
330
+
331
+ [[package]]
332
+ name = "web-sys"
333
+ version = "0.3.82"
334
+ source = "registry+https://github.com/rust-lang/crates.io-index"
335
+ checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1"
336
+ dependencies = [
337
+ "js-sys",
338
+ "wasm-bindgen",
339
+ ]
340
+
341
+ [[package]]
342
+ name = "winapi-util"
343
+ version = "0.1.11"
344
+ source = "registry+https://github.com/rust-lang/crates.io-index"
345
+ checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22"
346
+ dependencies = [
347
+ "windows-sys",
348
+ ]
349
+
350
+ [[package]]
351
+ name = "windows-link"
352
+ version = "0.2.1"
353
+ source = "registry+https://github.com/rust-lang/crates.io-index"
354
+ checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5"
355
+
356
+ [[package]]
357
+ name = "windows-sys"
358
+ version = "0.61.2"
359
+ source = "registry+https://github.com/rust-lang/crates.io-index"
360
+ checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc"
361
+ dependencies = [
362
+ "windows-link",
363
+ ]
@@ -0,0 +1,42 @@
1
+ [package]
2
+ name = "unreal-mcp-wasm"
3
+ version = "0.1.0"
4
+ edition = "2021"
5
+ authors = ["Unreal Engine MCP Team"]
6
+ description = "WebAssembly module for performance-critical operations in Unreal Engine MCP Server"
7
+ license = "MIT"
8
+ repository = "https://github.com/ChiR24/unreal-engine-mcp-server"
9
+
10
+ [lib]
11
+ crate-type = ["cdylib"]
12
+
13
+ [dependencies]
14
+ wasm-bindgen = { version = "0.2", features = ["serde-serialize"] }
15
+ serde = { version = "1.0", features = ["derive"] }
16
+ serde_json = "1.0"
17
+ js-sys = "0.3"
18
+ getrandom = { version = "0.2", features = ["js"] }
19
+ console_error_panic_hook = "0.1"
20
+ serde-wasm-bindgen = "0.6"
21
+
22
+ [dependencies.web-sys]
23
+ version = "0.3"
24
+ features = [
25
+ "console",
26
+ "Performance",
27
+ "Window",
28
+ "Document"
29
+ ]
30
+
31
+ [dev-dependencies]
32
+ wasm-bindgen-test = "0.3"
33
+
34
+ [profile.release]
35
+ opt-level = 3
36
+ lto = true
37
+ codegen-units = 1
38
+ panic = "abort"
39
+ strip = true
40
+
41
+ [package.metadata.wasm-pack.profile.release]
42
+ wasm-opt = false
package/wasm/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Unreal Engine MCP Server Contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.