unreal-engine-mcp-server 0.4.6 โ†’ 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) 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.yml +148 -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 +23 -0
  19. package/.github/workflows/labeler.yml +16 -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 +12 -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 +269 -22
  29. package/CONTRIBUTING.md +140 -0
  30. package/README.md +166 -72
  31. package/claude_desktop_config_example.json +7 -6
  32. package/dist/automation/bridge.d.ts +50 -0
  33. package/dist/automation/bridge.js +452 -0
  34. package/dist/automation/connection-manager.d.ts +23 -0
  35. package/dist/automation/connection-manager.js +107 -0
  36. package/dist/automation/handshake.d.ts +11 -0
  37. package/dist/automation/handshake.js +89 -0
  38. package/dist/automation/index.d.ts +3 -0
  39. package/dist/automation/index.js +3 -0
  40. package/dist/automation/message-handler.d.ts +12 -0
  41. package/dist/automation/message-handler.js +149 -0
  42. package/dist/automation/request-tracker.d.ts +25 -0
  43. package/dist/automation/request-tracker.js +98 -0
  44. package/dist/automation/types.d.ts +130 -0
  45. package/dist/automation/types.js +2 -0
  46. package/dist/cli.js +32 -5
  47. package/dist/config.d.ts +27 -0
  48. package/dist/config.js +60 -0
  49. package/dist/constants.d.ts +12 -0
  50. package/dist/constants.js +12 -0
  51. package/dist/graphql/resolvers.d.ts +268 -0
  52. package/dist/graphql/resolvers.js +743 -0
  53. package/dist/graphql/schema.d.ts +5 -0
  54. package/dist/graphql/schema.js +437 -0
  55. package/dist/graphql/server.d.ts +26 -0
  56. package/dist/graphql/server.js +115 -0
  57. package/dist/graphql/types.d.ts +7 -0
  58. package/dist/graphql/types.js +2 -0
  59. package/dist/handlers/resource-handlers.d.ts +20 -0
  60. package/dist/handlers/resource-handlers.js +180 -0
  61. package/dist/index.d.ts +31 -18
  62. package/dist/index.js +119 -604
  63. package/dist/prompts/index.js +4 -4
  64. package/dist/resources/actors.d.ts +17 -12
  65. package/dist/resources/actors.js +56 -76
  66. package/dist/resources/assets.d.ts +6 -14
  67. package/dist/resources/assets.js +115 -147
  68. package/dist/resources/levels.d.ts +13 -13
  69. package/dist/resources/levels.js +25 -34
  70. package/dist/server/resource-registry.d.ts +20 -0
  71. package/dist/server/resource-registry.js +37 -0
  72. package/dist/server/tool-registry.d.ts +23 -0
  73. package/dist/server/tool-registry.js +322 -0
  74. package/dist/server-setup.d.ts +21 -0
  75. package/dist/server-setup.js +111 -0
  76. package/dist/services/health-monitor.d.ts +34 -0
  77. package/dist/services/health-monitor.js +105 -0
  78. package/dist/services/metrics-server.d.ts +11 -0
  79. package/dist/services/metrics-server.js +105 -0
  80. package/dist/tools/actors.d.ts +147 -9
  81. package/dist/tools/actors.js +350 -311
  82. package/dist/tools/animation.d.ts +135 -4
  83. package/dist/tools/animation.js +510 -411
  84. package/dist/tools/assets.d.ts +117 -19
  85. package/dist/tools/assets.js +259 -284
  86. package/dist/tools/audio.d.ts +102 -42
  87. package/dist/tools/audio.js +272 -685
  88. package/dist/tools/base-tool.d.ts +17 -0
  89. package/dist/tools/base-tool.js +46 -0
  90. package/dist/tools/behavior-tree.d.ts +94 -0
  91. package/dist/tools/behavior-tree.js +39 -0
  92. package/dist/tools/blueprint/helpers.d.ts +29 -0
  93. package/dist/tools/blueprint/helpers.js +182 -0
  94. package/dist/tools/blueprint.d.ts +228 -118
  95. package/dist/tools/blueprint.js +685 -832
  96. package/dist/tools/consolidated-tool-definitions.d.ts +5475 -1627
  97. package/dist/tools/consolidated-tool-definitions.js +829 -482
  98. package/dist/tools/consolidated-tool-handlers.d.ts +2 -1
  99. package/dist/tools/consolidated-tool-handlers.js +211 -1009
  100. package/dist/tools/debug.d.ts +143 -85
  101. package/dist/tools/debug.js +234 -180
  102. package/dist/tools/dynamic-handler-registry.d.ts +11 -0
  103. package/dist/tools/dynamic-handler-registry.js +101 -0
  104. package/dist/tools/editor.d.ts +139 -18
  105. package/dist/tools/editor.js +239 -244
  106. package/dist/tools/engine.d.ts +10 -4
  107. package/dist/tools/engine.js +13 -5
  108. package/dist/tools/environment.d.ts +36 -0
  109. package/dist/tools/environment.js +267 -0
  110. package/dist/tools/foliage.d.ts +105 -14
  111. package/dist/tools/foliage.js +219 -331
  112. package/dist/tools/handlers/actor-handlers.d.ts +3 -0
  113. package/dist/tools/handlers/actor-handlers.js +232 -0
  114. package/dist/tools/handlers/animation-handlers.d.ts +3 -0
  115. package/dist/tools/handlers/animation-handlers.js +185 -0
  116. package/dist/tools/handlers/argument-helper.d.ts +16 -0
  117. package/dist/tools/handlers/argument-helper.js +80 -0
  118. package/dist/tools/handlers/asset-handlers.d.ts +3 -0
  119. package/dist/tools/handlers/asset-handlers.js +496 -0
  120. package/dist/tools/handlers/audio-handlers.d.ts +3 -0
  121. package/dist/tools/handlers/audio-handlers.js +166 -0
  122. package/dist/tools/handlers/blueprint-handlers.d.ts +4 -0
  123. package/dist/tools/handlers/blueprint-handlers.js +358 -0
  124. package/dist/tools/handlers/common-handlers.d.ts +14 -0
  125. package/dist/tools/handlers/common-handlers.js +56 -0
  126. package/dist/tools/handlers/editor-handlers.d.ts +3 -0
  127. package/dist/tools/handlers/editor-handlers.js +119 -0
  128. package/dist/tools/handlers/effect-handlers.d.ts +3 -0
  129. package/dist/tools/handlers/effect-handlers.js +171 -0
  130. package/dist/tools/handlers/environment-handlers.d.ts +3 -0
  131. package/dist/tools/handlers/environment-handlers.js +170 -0
  132. package/dist/tools/handlers/graph-handlers.d.ts +3 -0
  133. package/dist/tools/handlers/graph-handlers.js +90 -0
  134. package/dist/tools/handlers/input-handlers.d.ts +3 -0
  135. package/dist/tools/handlers/input-handlers.js +21 -0
  136. package/dist/tools/handlers/inspect-handlers.d.ts +3 -0
  137. package/dist/tools/handlers/inspect-handlers.js +383 -0
  138. package/dist/tools/handlers/level-handlers.d.ts +3 -0
  139. package/dist/tools/handlers/level-handlers.js +237 -0
  140. package/dist/tools/handlers/lighting-handlers.d.ts +3 -0
  141. package/dist/tools/handlers/lighting-handlers.js +144 -0
  142. package/dist/tools/handlers/performance-handlers.d.ts +3 -0
  143. package/dist/tools/handlers/performance-handlers.js +130 -0
  144. package/dist/tools/handlers/pipeline-handlers.d.ts +3 -0
  145. package/dist/tools/handlers/pipeline-handlers.js +110 -0
  146. package/dist/tools/handlers/sequence-handlers.d.ts +3 -0
  147. package/dist/tools/handlers/sequence-handlers.js +376 -0
  148. package/dist/tools/handlers/system-handlers.d.ts +4 -0
  149. package/dist/tools/handlers/system-handlers.js +506 -0
  150. package/dist/tools/input.d.ts +19 -0
  151. package/dist/tools/input.js +89 -0
  152. package/dist/tools/introspection.d.ts +103 -40
  153. package/dist/tools/introspection.js +425 -568
  154. package/dist/tools/landscape.d.ts +97 -36
  155. package/dist/tools/landscape.js +280 -409
  156. package/dist/tools/level.d.ts +130 -10
  157. package/dist/tools/level.js +639 -675
  158. package/dist/tools/lighting.d.ts +77 -38
  159. package/dist/tools/lighting.js +441 -943
  160. package/dist/tools/logs.d.ts +45 -0
  161. package/dist/tools/logs.js +210 -0
  162. package/dist/tools/materials.d.ts +91 -24
  163. package/dist/tools/materials.js +190 -118
  164. package/dist/tools/niagara.d.ts +149 -39
  165. package/dist/tools/niagara.js +232 -182
  166. package/dist/tools/performance.d.ts +27 -12
  167. package/dist/tools/performance.js +204 -122
  168. package/dist/tools/physics.d.ts +32 -77
  169. package/dist/tools/physics.js +171 -582
  170. package/dist/tools/property-dictionary.d.ts +13 -0
  171. package/dist/tools/property-dictionary.js +82 -0
  172. package/dist/tools/sequence.d.ts +73 -48
  173. package/dist/tools/sequence.js +196 -748
  174. package/dist/tools/tool-definition-utils.d.ts +59 -0
  175. package/dist/tools/tool-definition-utils.js +35 -0
  176. package/dist/tools/ui.d.ts +66 -34
  177. package/dist/tools/ui.js +134 -214
  178. package/dist/types/env.d.ts +0 -3
  179. package/dist/types/env.js +0 -7
  180. package/dist/types/tool-interfaces.d.ts +898 -0
  181. package/dist/types/tool-interfaces.js +2 -0
  182. package/dist/types/tool-types.d.ts +195 -11
  183. package/dist/types/tool-types.js +0 -4
  184. package/dist/unreal-bridge.d.ts +24 -131
  185. package/dist/unreal-bridge.js +364 -1506
  186. package/dist/utils/command-validator.d.ts +9 -0
  187. package/dist/utils/command-validator.js +67 -0
  188. package/dist/utils/elicitation.d.ts +1 -1
  189. package/dist/utils/elicitation.js +12 -15
  190. package/dist/utils/error-handler.d.ts +2 -51
  191. package/dist/utils/error-handler.js +11 -87
  192. package/dist/utils/ini-reader.d.ts +3 -0
  193. package/dist/utils/ini-reader.js +69 -0
  194. package/dist/utils/logger.js +9 -6
  195. package/dist/utils/normalize.d.ts +3 -0
  196. package/dist/utils/normalize.js +56 -0
  197. package/dist/utils/response-factory.d.ts +7 -0
  198. package/dist/utils/response-factory.js +33 -0
  199. package/dist/utils/response-validator.d.ts +3 -24
  200. package/dist/utils/response-validator.js +130 -81
  201. package/dist/utils/result-helpers.d.ts +4 -5
  202. package/dist/utils/result-helpers.js +15 -16
  203. package/dist/utils/safe-json.js +5 -11
  204. package/dist/utils/unreal-command-queue.d.ts +24 -0
  205. package/dist/utils/unreal-command-queue.js +120 -0
  206. package/dist/utils/validation.d.ts +0 -40
  207. package/dist/utils/validation.js +1 -78
  208. package/dist/wasm/index.d.ts +70 -0
  209. package/dist/wasm/index.js +535 -0
  210. package/docs/GraphQL-API.md +888 -0
  211. package/docs/Migration-Guide-v0.5.0.md +692 -0
  212. package/docs/Roadmap.md +53 -0
  213. package/docs/WebAssembly-Integration.md +628 -0
  214. package/docs/editor-plugin-extension.md +370 -0
  215. package/docs/handler-mapping.md +242 -0
  216. package/docs/native-automation-progress.md +128 -0
  217. package/docs/testing-guide.md +423 -0
  218. package/mcp-config-example.json +6 -6
  219. package/package.json +60 -27
  220. package/plugins/McpAutomationBridge/Config/FilterPlugin.ini +8 -0
  221. package/plugins/McpAutomationBridge/McpAutomationBridge.uplugin +64 -0
  222. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/McpAutomationBridge.Build.cs +189 -0
  223. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.cpp +22 -0
  224. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeGlobals.h +30 -0
  225. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeHelpers.h +1983 -0
  226. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeModule.cpp +72 -0
  227. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSettings.cpp +46 -0
  228. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridgeSubsystem.cpp +581 -0
  229. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AnimationHandlers.cpp +2394 -0
  230. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetQueryHandlers.cpp +300 -0
  231. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AssetWorkflowHandlers.cpp +2807 -0
  232. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_AudioHandlers.cpp +1087 -0
  233. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BehaviorTreeHandlers.cpp +488 -0
  234. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.cpp +643 -0
  235. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintCreationHandlers.h +31 -0
  236. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintGraphHandlers.cpp +1184 -0
  237. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers.cpp +5652 -0
  238. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_BlueprintHandlers_List.cpp +152 -0
  239. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ControlHandlers.cpp +2614 -0
  240. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_DebugHandlers.cpp +42 -0
  241. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EditorFunctionHandlers.cpp +1237 -0
  242. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EffectHandlers.cpp +1701 -0
  243. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_EnvironmentHandlers.cpp +2145 -0
  244. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_FoliageHandlers.cpp +954 -0
  245. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InputHandlers.cpp +209 -0
  246. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_InsightsHandlers.cpp +41 -0
  247. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LandscapeHandlers.cpp +1164 -0
  248. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LevelHandlers.cpp +762 -0
  249. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LightingHandlers.cpp +634 -0
  250. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_LogHandlers.cpp +136 -0
  251. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_MaterialGraphHandlers.cpp +494 -0
  252. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraGraphHandlers.cpp +278 -0
  253. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_NiagaraHandlers.cpp +625 -0
  254. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PerformanceHandlers.cpp +401 -0
  255. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PipelineHandlers.cpp +67 -0
  256. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_ProcessRequest.cpp +735 -0
  257. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_PropertyHandlers.cpp +2634 -0
  258. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_RenderHandlers.cpp +189 -0
  259. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.cpp +917 -0
  260. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SCSHandlers.h +39 -0
  261. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequenceHandlers.cpp +2670 -0
  262. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_SequencerHandlers.cpp +519 -0
  263. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_TestHandlers.cpp +38 -0
  264. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_UiHandlers.cpp +668 -0
  265. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpAutomationBridge_WorldPartitionHandlers.cpp +346 -0
  266. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.cpp +1330 -0
  267. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpBridgeWebSocket.h +149 -0
  268. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Private/McpConnectionManager.cpp +783 -0
  269. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSettings.h +115 -0
  270. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpAutomationBridgeSubsystem.h +796 -0
  271. package/plugins/McpAutomationBridge/Source/McpAutomationBridge/Public/McpConnectionManager.h +117 -0
  272. package/scripts/check-unreal-connection.mjs +19 -0
  273. package/scripts/clean-tmp.js +23 -0
  274. package/scripts/patch-wasm.js +26 -0
  275. package/scripts/run-all-tests.mjs +131 -0
  276. package/scripts/smoke-test.ts +94 -0
  277. package/scripts/sync-mcp-plugin.js +143 -0
  278. package/scripts/test-no-plugin-alternates.mjs +113 -0
  279. package/scripts/validate-server.js +46 -0
  280. package/scripts/verify-automation-bridge.js +200 -0
  281. package/server.json +57 -21
  282. package/src/automation/bridge.ts +558 -0
  283. package/src/automation/connection-manager.ts +130 -0
  284. package/src/automation/handshake.ts +99 -0
  285. package/src/automation/index.ts +2 -0
  286. package/src/automation/message-handler.ts +167 -0
  287. package/src/automation/request-tracker.ts +123 -0
  288. package/src/automation/types.ts +107 -0
  289. package/src/cli.ts +33 -6
  290. package/src/config.ts +73 -0
  291. package/src/constants.ts +12 -0
  292. package/src/graphql/resolvers.ts +1010 -0
  293. package/src/graphql/schema.ts +452 -0
  294. package/src/graphql/server.ts +154 -0
  295. package/src/graphql/types.ts +7 -0
  296. package/src/handlers/resource-handlers.ts +186 -0
  297. package/src/index.ts +152 -649
  298. package/src/prompts/index.ts +4 -4
  299. package/src/resources/actors.ts +58 -76
  300. package/src/resources/assets.ts +147 -134
  301. package/src/resources/levels.ts +28 -33
  302. package/src/server/resource-registry.ts +47 -0
  303. package/src/server/tool-registry.ts +354 -0
  304. package/src/server-setup.ts +148 -0
  305. package/src/services/health-monitor.ts +132 -0
  306. package/src/services/metrics-server.ts +142 -0
  307. package/src/tools/actors.ts +417 -322
  308. package/src/tools/animation.ts +671 -461
  309. package/src/tools/assets.ts +353 -289
  310. package/src/tools/audio.ts +323 -766
  311. package/src/tools/base-tool.ts +52 -0
  312. package/src/tools/behavior-tree.ts +45 -0
  313. package/src/tools/blueprint/helpers.ts +189 -0
  314. package/src/tools/blueprint.ts +787 -965
  315. package/src/tools/consolidated-tool-definitions.ts +993 -500
  316. package/src/tools/consolidated-tool-handlers.ts +272 -1122
  317. package/src/tools/debug.ts +292 -187
  318. package/src/tools/dynamic-handler-registry.ts +151 -0
  319. package/src/tools/editor.ts +309 -246
  320. package/src/tools/engine.ts +14 -3
  321. package/src/tools/environment.ts +287 -0
  322. package/src/tools/foliage.ts +314 -379
  323. package/src/tools/handlers/actor-handlers.ts +271 -0
  324. package/src/tools/handlers/animation-handlers.ts +237 -0
  325. package/src/tools/handlers/argument-helper.ts +142 -0
  326. package/src/tools/handlers/asset-handlers.ts +532 -0
  327. package/src/tools/handlers/audio-handlers.ts +194 -0
  328. package/src/tools/handlers/blueprint-handlers.ts +380 -0
  329. package/src/tools/handlers/common-handlers.ts +87 -0
  330. package/src/tools/handlers/editor-handlers.ts +123 -0
  331. package/src/tools/handlers/effect-handlers.ts +220 -0
  332. package/src/tools/handlers/environment-handlers.ts +183 -0
  333. package/src/tools/handlers/graph-handlers.ts +116 -0
  334. package/src/tools/handlers/input-handlers.ts +28 -0
  335. package/src/tools/handlers/inspect-handlers.ts +450 -0
  336. package/src/tools/handlers/level-handlers.ts +252 -0
  337. package/src/tools/handlers/lighting-handlers.ts +147 -0
  338. package/src/tools/handlers/performance-handlers.ts +132 -0
  339. package/src/tools/handlers/pipeline-handlers.ts +127 -0
  340. package/src/tools/handlers/sequence-handlers.ts +415 -0
  341. package/src/tools/handlers/system-handlers.ts +564 -0
  342. package/src/tools/input.ts +101 -0
  343. package/src/tools/introspection.ts +493 -584
  344. package/src/tools/landscape.ts +394 -489
  345. package/src/tools/level.ts +752 -694
  346. package/src/tools/lighting.ts +583 -984
  347. package/src/tools/logs.ts +219 -0
  348. package/src/tools/materials.ts +231 -121
  349. package/src/tools/niagara.ts +293 -168
  350. package/src/tools/performance.ts +320 -168
  351. package/src/tools/physics.ts +268 -613
  352. package/src/tools/property-dictionary.ts +98 -0
  353. package/src/tools/sequence.ts +255 -815
  354. package/src/tools/tool-definition-utils.ts +35 -0
  355. package/src/tools/ui.ts +207 -283
  356. package/src/types/env.ts +0 -10
  357. package/src/types/tool-interfaces.ts +250 -0
  358. package/src/types/tool-types.ts +250 -13
  359. package/src/unreal-bridge.ts +460 -1550
  360. package/src/utils/command-validator.ts +75 -0
  361. package/src/utils/elicitation.ts +10 -7
  362. package/src/utils/error-handler.ts +14 -90
  363. package/src/utils/ini-reader.ts +86 -0
  364. package/src/utils/logger.ts +8 -3
  365. package/src/utils/normalize.ts +60 -0
  366. package/src/utils/response-factory.ts +39 -0
  367. package/src/utils/response-validator.ts +176 -56
  368. package/src/utils/result-helpers.ts +21 -19
  369. package/src/utils/safe-json.ts +14 -11
  370. package/src/utils/unreal-command-queue.ts +152 -0
  371. package/src/utils/validation.ts +4 -1
  372. package/src/wasm/index.ts +838 -0
  373. package/test-server.mjs +100 -0
  374. package/tests/run-unreal-tool-tests.mjs +242 -14
  375. package/tests/test-animation.mjs +44 -0
  376. package/tests/test-asset-advanced.mjs +82 -0
  377. package/tests/test-asset-errors.mjs +35 -0
  378. package/tests/test-audio.mjs +219 -0
  379. package/tests/test-automation-timeouts.mjs +98 -0
  380. package/tests/test-behavior-tree.mjs +261 -0
  381. package/tests/test-blueprint-events.mjs +35 -0
  382. package/tests/test-blueprint-graph.mjs +79 -0
  383. package/tests/test-blueprint.mjs +577 -0
  384. package/tests/test-client-mode.mjs +86 -0
  385. package/tests/test-console-command.mjs +56 -0
  386. package/tests/test-control-actor.mjs +425 -0
  387. package/tests/test-control-editor.mjs +80 -0
  388. package/tests/test-extra-tools.mjs +38 -0
  389. package/tests/test-graphql.mjs +322 -0
  390. package/tests/test-inspect.mjs +72 -0
  391. package/tests/test-landscape.mjs +60 -0
  392. package/tests/test-manage-asset.mjs +438 -0
  393. package/tests/test-manage-level.mjs +70 -0
  394. package/tests/test-materials.mjs +356 -0
  395. package/tests/test-niagara.mjs +185 -0
  396. package/tests/test-no-inline-python.mjs +122 -0
  397. package/tests/test-plugin-handshake.mjs +82 -0
  398. package/tests/test-render.mjs +33 -0
  399. package/tests/test-runner.mjs +933 -0
  400. package/tests/test-search-assets.mjs +66 -0
  401. package/tests/test-sequence.mjs +68 -0
  402. package/tests/test-system.mjs +57 -0
  403. package/tests/test-wasm.mjs +193 -0
  404. package/tests/test-world-partition.mjs +215 -0
  405. package/tsconfig.json +3 -3
  406. package/wasm/Cargo.lock +363 -0
  407. package/wasm/Cargo.toml +42 -0
  408. package/wasm/LICENSE +21 -0
  409. package/wasm/README.md +253 -0
  410. package/wasm/src/dependency_resolver.rs +377 -0
  411. package/wasm/src/lib.rs +153 -0
  412. package/wasm/src/property_parser.rs +271 -0
  413. package/wasm/src/transform_math.rs +396 -0
  414. package/wasm/tests/integration.rs +109 -0
  415. package/.github/workflows/smithery-build.yml +0 -29
  416. package/dist/tools/build_environment_advanced.d.ts +0 -65
  417. package/dist/tools/build_environment_advanced.js +0 -633
  418. package/dist/tools/rc.d.ts +0 -110
  419. package/dist/tools/rc.js +0 -437
  420. package/dist/tools/visual.d.ts +0 -40
  421. package/dist/tools/visual.js +0 -282
  422. package/dist/utils/http.d.ts +0 -6
  423. package/dist/utils/http.js +0 -151
  424. package/dist/utils/python-output.d.ts +0 -18
  425. package/dist/utils/python-output.js +0 -290
  426. package/dist/utils/python.d.ts +0 -2
  427. package/dist/utils/python.js +0 -4
  428. package/dist/utils/stdio-redirect.d.ts +0 -2
  429. package/dist/utils/stdio-redirect.js +0 -20
  430. package/docs/unreal-tool-test-cases.md +0 -572
  431. package/smithery.yaml +0 -29
  432. package/src/tools/build_environment_advanced.ts +0 -732
  433. package/src/tools/rc.ts +0 -515
  434. package/src/tools/visual.ts +0 -281
  435. package/src/utils/http.ts +0 -187
  436. package/src/utils/python-output.ts +0 -351
  437. package/src/utils/python.ts +0 -3
  438. package/src/utils/stdio-redirect.ts +0 -18
@@ -1,45 +1,478 @@
1
- # Unreal MCP โ€“ AI Agent Guide
2
-
3
- ## Architecture essentials
4
- - `src/index.ts` boots the Model Context Protocol server, registers output schemas, and connects to Unreal only when a tool/resource call requires it via `ensureConnectedOnDemand`.
5
- - Consolidated tool routing lives in `src/tools/consolidated-tool-definitions.ts` and `src/tools/consolidated-tool-handlers.ts`, shrinking the surface to 13 multi-action tools that wrap the specialized classes in `src/tools/*`.
6
- - The Unreal bridge (`src/unreal-bridge.ts`) owns HTTP/WS transport, command throttling, health checks, and graceful fallbacks so callers never talk to Remote Control directly.
7
- - Health/metrics (connection status, latency, recent errors) are tracked in `index.ts` and exposed through the `ue://health` resource for quick diagnostics.
8
-
9
- ## Key directories
10
- - `src/tools/` โ€“ domain-specific helpers (actors, landscapes, audio, niagara, etc.) that emit Python scripts or console commands.
11
- - `src/resources/` โ€“ read-only listings (assets, actors, levels) with caching and path normalization utilities.
12
- - `src/utils/` โ€“ shared helpers: validation/coercion, `escapePythonString`, result interpretation, AJV-powered response validation, stdout redirection.
13
- - `docs/unreal-tool-test-cases.md` + `tests/run-unreal-tool-tests.mjs` โ€“ declarative test matrix consumed by the automated harness; reports land in `tests/reports/` with time-stamped JSON.
14
-
15
- ## Tool workflow expectations
16
- - New tool actions must be declared in the consolidated definitions (input/output schema) and wired in the handler switch before delegating to the relevant class in `src/tools/*`.
17
- - Always return plain JS objects with `success`, `message`, `error`, and optional `warnings` arrays; let `responseValidator.wrapResponse` handle MCP formatting.
18
- - Shared helpers like `interpretStandardResult` and `cleanObject` keep payloads JSON-safeโ€”use them instead of ad-hoc parsing.
19
- - When validating inputs, reuse `ensureVector3`, `ensureRotation`, and other utilities from `src/utils/validation.ts` to keep error messaging consistent.
20
-
21
- ## Unreal bridge & Python usage
22
- - Prefer `bridge.executePythonWithResult` for multi-line scripts; it captures stdout, parses the last `RESULT:` block, and falls back to the console `py` command when plugins are missing.
23
- - Python snippets should print a single `RESULT:` JSON payload and sanitize inputs with `escapePythonString` or typed coercion helpers.
24
- - `UnrealBridge.httpCall` enforces timeouts, queues commands, and blocks dangerous console strings (`buildpaths`, `rebuildnavigation`, etc.); avoid bypassing it with raw HTTP.
25
- - Auto-reconnect is disabled by defaultโ€”tool handlers should call `ensureConnectedOnDemand()` instead of assuming a live session.
26
-
27
- ## Response & validation conventions
28
- - Every consolidated tool has an AJV schema; mismatches surface as `_validation` warnings in responses and appear in stderr logs.
29
- - For Python-driven tools, use the `interpretResult`/`interpretStandardResult` helpers to turn raw bridge output into the normalized `{ success, message, error, warnings }` shape.
30
- - Keep warning text short and user-facingโ€”the test harness searches response strings for keywords to grade scenarios.
31
-
32
- ## Build & test workflow
33
- - `npm run build` compiles TypeScript to `dist/`; `npm run lint` enforces the ESLint rules shipped in `.eslintrc.json`.
34
- - `npm run test:tools` launches the compiled server via stdio, iterates the Markdown-defined cases, and writes a JSON run summary under `tests/reports/`.
35
- - Override harness behavior with env vars like `UNREAL_MCP_SERVER_CMD`, `UNREAL_MCP_SERVER_ARGS`, `UNREAL_MCP_TEST_DOC`, or `UNREAL_MCP_FBX_FILE` when Unreal lives elsewhere.
36
-
37
- ## Unreal environment & configuration
38
- - Ensure the project enables: Remote Control API, Remote Control Web Interface, Python Editor Script Plugin, Editor Scripting Utilities, Sequencer, and Level Sequence Editor before invoking automation.
39
- - Default connection settings come from `UE_HOST`, `UE_RC_HTTP_PORT`, and `UE_RC_WS_PORT` (see README for the `DefaultEngine.ini` snippet that unlocks remote execution).
40
- - Tools defensively return `UE_NOT_CONNECTED` or asset-not-found errors; keep that contract when extending behavior so clients can retry intelligently.
41
-
42
- ## Debugging & monitoring
43
- - Logs are routed to stderr via `routeStdoutLogsToStderr()` to keep MCP stdout JSON-onlyโ€”check the terminal for detailed stack traces or validation warnings.
44
- - Use the `ue://health` and `ue://version` resources to confirm bridge connectivity, last health-check timestamp, and detected engine version.
45
- - The command queue in `UnrealBridge` spaces out console/Python traffic; heavy operations may need explicit `__callTimeoutMs` in the payload to extend HTTP timeouts.
1
+ # Unreal MCP โ€” AI Agent Quick Guide (for AI coding agents)
2
+
3
+ **Two-process architecture**: Node.js MCP server (`src/`) โ†” Native C++ UE Editor plugin (`Plugins/McpAutomationBridge/Source/`)
4
+
5
+ **Data flow**: JSON payloads โ†’ `sendAutomationRequest(action, params)` (TS) โ†’ WebSocket โ†’ `UMcpAutomationBridgeSubsystem::ProcessAutomationRequest()` (C++) โ†’ Domain-specific `*Handlers.cpp` (native UE subsystems). Uses `FJsonObjectConverter::JsonObjectToUStruct()` + `FProperty` for typed marshaling.
6
+
7
+ ## ๐Ÿš€ Quickstart Checklist
8
+
9
+ ### Prerequisites
10
+ - **Enable UE Plugins**: MCP Automation Bridge, Editor Scripting Utilities
11
+ - **Required Plugins**: Sequencer, Level Sequence Editor, Control Rig, Subobject Data Interface (UE 5.7+)
12
+
13
+ ### Setup Commands
14
+ ```bash
15
+ # Sync plugin to Unreal project
16
+ npm run automation:sync -- --project "X:/MyProject/Plugins"
17
+
18
+ # Verify plugin installation
19
+ npm run automation:verify -- --project "X:/MyProject/Plugins"
20
+
21
+ # Start development server (auto-connects on demand)
22
+ npm run dev
23
+
24
+ # Build with WASM optimization (5-8x performance)
25
+ npm run build:wasm
26
+ ```
27
+
28
+ ## ๐Ÿ—บ๏ธ Architecture Overview
29
+
30
+ ### Core Components
31
+
32
+ **Node.js Server (`src/`)**
33
+ - `src/index.ts`: MCP server setup, tool registration, WASM initialization
34
+ - `src/unreal-bridge.ts`: Connection management, command throttling, safety validation
35
+ - `src/automation/bridge.ts`: WebSocket client with handshake/reconnect logic
36
+ - `src/tools/consolidated-*.ts`: 17 tool dispatchers with response validation
37
+ - `src/wasm/index.ts`: WebAssembly integration (JSON parsing, transform math)
38
+
39
+ **C++ Plugin (`Plugins/McpAutomationBridge/Source/McpAutomationBridge/`)**
40
+ - `Private/McpAutomationBridgeSubsystem.cpp`: WebSocket server, request routing
41
+ - `Private/McpBridgeWebSocket.cpp/h`: Custom WebSocket with protocol negotiation
42
+ - `Private/McpAutomationBridgeHelpers.h`: JSONโ†”UStruct conversion, class resolution
43
+ - `Private/*Handlers.cpp` (18 files): Domain-specific implementations
44
+
45
+ ### Communication Protocol
46
+ - **Transport**: WebSocket (`ws://127.0.0.1:8091`)
47
+ - **Message format**: `{type: "automation_request", requestId: string, action: string, payload: object}`
48
+ - **Response format**: `{success: boolean, message?: string, error?: string, data?: object}`
49
+ - **Handshake**: Capability token exchange with metadata
50
+ - **Heartbeat**: 15s interval for connection health
51
+
52
+ ## ๐Ÿ› ๏ธ Developer Workflows
53
+
54
+ ### Build & Test
55
+ ```bash
56
+ # Full build (TypeScript + WASM)
57
+ npm run build
58
+
59
+ # TypeScript only (faster iteration)
60
+ npm run build:core
61
+
62
+ # Run specific tool tests
63
+ npm run test:manage_asset
64
+ npm run test:control_actor
65
+ npm run test:blueprint
66
+
67
+ # Run all tests
68
+ npm run test
69
+
70
+ # Lint (TypeScript, C++, C#)
71
+ npm run lint
72
+ npm run lint:cpp
73
+ ```
74
+
75
+ ### Debugging
76
+ ```bash
77
+ # Check WebSocket connections
78
+ netstat -ano | findstr :8091
79
+
80
+ # Clean plugin build artifacts
81
+ rm -r Plugins/McpAutomationBridge/{Binaries,Intermediate}
82
+
83
+ # Set debug logging
84
+ LOG_LEVEL=debug npm run dev
85
+
86
+ # View MCP resources in Unreal
87
+ ue://health # Metrics dashboard
88
+ ue://automation-bridge # Connection status
89
+ ```
90
+
91
+ ## ๐Ÿ“‹ Critical Patterns & Conventions
92
+
93
+ ### 1. Two-Step Tool Implementation
94
+ **C++ Handler** โ†’ **TypeScript Wrapper** โ†’ **Consolidated Router**
95
+
96
+ ```cpp
97
+ // In McpAutomationBridgeSubsystem.cpp
98
+ if (Action == TEXT("create_material"))
99
+ {
100
+ return AssetWorkflowHandlers::CreateMaterial(Payload, Reply);
101
+ }
102
+ ```
103
+
104
+ ```typescript
105
+ // In src/tools/assets.ts
106
+ const resp = await automationBridge.sendAutomationRequest('create_material', {name, path});
107
+ return responseValidator.wrapResponse('manage_asset', resp);
108
+ ```
109
+
110
+ ### 2. Response Validation
111
+ All tools use `responseValidator.wrapResponse()` with Zod schemas defined in `consolidated-tool-definitions.ts`:
112
+
113
+ ```typescript
114
+ // Register schema in src/index.ts
115
+ responseValidator.registerSchema('manage_asset', toolDefs.find(t => t.name === 'manage_asset').outputSchema);
116
+ ```
117
+
118
+ ### 3. Command Safety
119
+ - **Validation**: `CommandValidator.validate()` blocks dangerous commands
120
+ - **Throttling**: `executeThrottledCommand()` with priority queueing
121
+ - **Timeouts**: Default 30s, configurable via `timeoutMs`
122
+ - **Retry logic**: Exponential backoff with `ErrorHandler.retryWithBackoff()`
123
+
124
+ ### 4. Path Normalization
125
+ - **UE paths**: `/Content` โ†’ `/Game` (via `normalize.ts`)
126
+ - **Vectors**: `{x,y,z}` or `[x,y,z]` โ†’ `toVec3Tuple()`
127
+ - **Asset references**: Use `ResolveClassByName()` in C++ helpers
128
+
129
+ ### 5. WASM Optimization
130
+ Automatic fallback when WASM unavailable:
131
+
132
+ ```typescript
133
+ // In src/wasm/index.ts
134
+ try {
135
+ const result = wasmModule.PropertyParser.parse_properties(jsonStr);
136
+ // 5-8x faster
137
+ } catch (error) {
138
+ // Fallback to TypeScript
139
+ return JSON.parse(jsonStr);
140
+ }
141
+ ```
142
+
143
+ ## ๐Ÿ”ง Adding New Tools
144
+
145
+ ### Step-by-Step
146
+
147
+ 1. **C++ Implementation**
148
+ - Add handler in appropriate `*Handlers.cpp` file
149
+ - Register in `McpAutomationBridgeSubsystem.cpp::ProcessAutomationRequest()`
150
+ - Return `FReply{Success=true, Data=JsonObject}`
151
+
152
+ 2. **TypeScript Wrapper**
153
+ - Create or update `src/tools/<domain>.ts`
154
+ - Use `automationBridge.sendAutomationRequest(action, params)`
155
+ - Wrap response with `responseValidator.wrapResponse()`
156
+
157
+ 3. **Consolidated Routing**
158
+ - Add to `consolidated-tool-definitions.ts` (input/output schemas)
159
+ - Route in `consolidated-tool-handlers.ts`
160
+
161
+ 4. **Testing**
162
+ - Create `tests/test-<domain>.mjs` with Markdown test cases
163
+ - Run with `npm run test:<domain>`
164
+
165
+ ### Example: New Material Action
166
+
167
+ ```typescript
168
+ // 1. Add to consolidated-tool-definitions.ts
169
+ actions: ['list', 'create_material', 'update_material_shader']
170
+
171
+ // 2. Add properties to inputSchema
172
+ shaderType: { type: 'string', enum: ['DefaultLit', 'Unlit', 'Subsurface'] }
173
+
174
+ // 3. Implement in src/tools/assets.ts
175
+ case 'update_material_shader':
176
+ return automationBridge.sendAutomationRequest('update_material_shader', params);
177
+
178
+ // 4. Add test case in tests/test-materials.mjs
179
+ {
180
+ scenario: "Update material shader type",
181
+ toolName: "manage_asset",
182
+ arguments: {
183
+ action: "update_material_shader",
184
+ assetPath: "/Game/M_MasterMaterial_Test",
185
+ shaderType: "Unlit"
186
+ },
187
+ expected: "success"
188
+ }
189
+ ```
190
+
191
+ ## ๐ŸŽฏ Key Integration Points
192
+
193
+ ### WebSocket Communication
194
+ - **Client**: `src/automation/bridge.ts` (Node.js)
195
+ - **Server**: `McpBridgeWebSocket.cpp` (Unreal Plugin)
196
+ - **Protocol**: Custom MCP automation protocol with handshake
197
+ - **Reconnect**: Exponential backoff with jitter
198
+
199
+ ### Cross-Process Data Flow
200
+ ```
201
+ TypeScript Tool Call
202
+ โ†“
203
+ UnrealBridge.tryConnect()
204
+ โ†“
205
+ AutomationBridge.sendAutomationRequest()
206
+ โ†“
207
+ WebSocket โ†’ McpAutomationBridgeSubsystem
208
+ โ†“
209
+ ProcessAutomationRequest() โ†’ Handler
210
+ โ†“
211
+ FReply โ†’ JSON โ†’ TypeScript Response
212
+ ```
213
+
214
+ ### Error Handling
215
+ - **Timeouts**: 30s default, configurable per request
216
+ - **Retries**: 3 attempts with exponential backoff
217
+ - **Fallbacks**: Automatic TypeScript when WASM unavailable
218
+ - **Validation**: Zod schemas for all tool I/O
219
+
220
+ ## ๐Ÿ“Š Performance Optimization
221
+
222
+ ### WASM Acceleration (5-8x faster)
223
+ - **JSON parsing**: Property parsing with depth limits
224
+ - **Transform math**: Vector/matrix operations
225
+ - **Dependency resolution**: Asset graph traversal
226
+ - **Topological sorting**: Build order calculation
227
+
228
+ ### Command Throttling
229
+ - **Priority queue**: 1-10 priority levels
230
+ - **Minimum delay**: 100ms for stats, 300ms for operations
231
+ - **Concurrency limits**: Configurable max pending requests
232
+
233
+ ### Caching
234
+ - **Asset lists**: 10-second TTL
235
+ - **Class resolution**: Memoized lookups
236
+ - **WebSocket connections**: Persistent with reconnect
237
+
238
+ ## ๐Ÿงช Testing Strategy
239
+
240
+ ### Test Structure
241
+ - **Markdown-based**: Human-readable test cases
242
+ - **Domain-specific**: 17 test files covering all tools
243
+ - **Integration-focused**: Real Unreal Engine operations
244
+
245
+ ### Running Tests
246
+ ```bash
247
+ # Single tool test
248
+ npm run test:manage_asset
249
+
250
+ # All tests
251
+ npm run test
252
+
253
+ # With debug output
254
+ LOG_LEVEL=debug npm run test:blueprint
255
+ ```
256
+
257
+ ### Test Case Format
258
+ ```javascript
259
+ {
260
+ scenario: "Descriptive test name",
261
+ toolName: "manage_asset",
262
+ arguments: { action: "create_material", name: "TestMaterial" },
263
+ expected: "success|not_found|error_message"
264
+ }
265
+ ```
266
+
267
+ ## ๐Ÿšจ Common Pitfalls
268
+
269
+ ### 1. Plugin Not Enabled
270
+ **Symptom**: `Automation bridge not connected`
271
+ **Fix**: Enable "MCP Automation Bridge" in UE Editor Plugins
272
+
273
+ ### 2. Port Conflicts
274
+ **Symptom**: Connection refused on :8091
275
+ **Fix**: Check `netstat -ano | findstr :8091` and kill conflicting process
276
+
277
+ ### 3. WASM Missing
278
+ **Symptom**: Fallback to TypeScript warnings
279
+ **Fix**: Run `npm run build:wasm` or set `WASM_ENABLED=false`
280
+
281
+ ### 4. Path Normalization
282
+ **Symptom**: Asset not found errors
283
+ **Fix**: Use `/Game` prefix, not `/Content`
284
+
285
+ ### 5. Command Validation
286
+ **Symptom**: "Dangerous command blocked"
287
+ **Fix**: Use safe alternatives or whitelist in `CommandValidator`
288
+
289
+ ## ๐Ÿ“š Essential References
290
+
291
+ ### Key Files
292
+ - `src/constants.ts`: Configuration defaults and timeouts
293
+ - `src/utils/response-validator.ts`: Response schema validation
294
+ - `src/utils/command-validator.ts`: Safety rules and blocked commands
295
+ - `src/utils/unreal-command-queue.ts`: Throttling implementation
296
+
297
+ ### Documentation
298
+ - `docs/handler-mapping.md`: TypeScript โ†’ C++ handler mappings
299
+ - `docs/GraphQL-API.md`: Query interface specification
300
+ - `README.md`: Complete setup and usage guide
301
+
302
+ ### Debug Resources
303
+ - `ue://health`: Real-time metrics dashboard
304
+ - `ue://automation-bridge`: Connection status and pending requests
305
+ - UE Output Log: Filter for `bridge_ack` and `automation_request`
306
+
307
+ ## ๐ŸŽ“ Learning Resources
308
+
309
+ ### Understanding the Codebase
310
+ 1. Start with `src/index.ts` โ†’ `createServer()`
311
+ 2. Follow WebSocket flow in `src/automation/bridge.ts`
312
+ 3. Examine a simple handler: `McpAutomationBridge_AssetQueryHandlers.cpp`
313
+ 4. Study tool implementation: `src/tools/assets.ts`
314
+ 5. Review test patterns: `tests/test-manage-asset.mjs`
315
+
316
+ ### Recommended Reading Order
317
+ ```
318
+ README.md โ†’ docs/handler-mapping.md โ†’ src/index.ts
319
+ โ†’ src/automation/bridge.ts โ†’ src/tools/consolidated-*.ts
320
+ โ†’ Plugins/.../McpAutomationBridgeSubsystem.cpp
321
+ ```
322
+
323
+ ## ๐Ÿค Contribution Guidelines
324
+
325
+ ### Pull Request Requirements
326
+ - **Scope**: Single tool/action per PR
327
+ - **Tests**: Add Markdown test cases
328
+ - **Documentation**: Update `handler-mapping.md` if adding handlers
329
+ - **Validation**: Ensure Zod schemas are comprehensive
330
+
331
+ ### Code Style
332
+ - **TypeScript**: Follow ESLint rules (`npm run lint`)
333
+ - **C++**: Use Unreal coding standards
334
+ - **Comments**: Document non-obvious logic and safety considerations
335
+ - **Error handling**: Structured errors with context
336
+
337
+ ### Review Checklist
338
+ - [ ] Tool works with and without WASM
339
+ - [ ] Response validation schema is complete
340
+ - [ ] Command throttling is appropriate
341
+ - [ ] Error messages are actionable
342
+ - [ ] Test cases cover success and failure paths
343
+
344
+ ## ๐Ÿ“ˆ Performance Tuning
345
+
346
+ ### Configuration Variables
347
+ ```env
348
+ # Connection
349
+ MCP_AUTOMATION_PORT=8091
350
+ MCP_AUTOMATION_REQUEST_TIMEOUT_MS=120000
351
+
352
+ # Performance
353
+ WASM_ENABLED=true
354
+ ASSET_LIST_TTL_MS=10000
355
+
356
+ # Logging
357
+ LOG_LEVEL=info
358
+ ```
359
+
360
+ ### Optimization Tips
361
+ - **Batch operations**: Use `delete_assets` instead of multiple `delete`
362
+ - **Caching**: Leverage 10s asset cache for repeated queries
363
+ - **Priority**: Set appropriate priority for time-sensitive operations
364
+ - **WASM**: Enable for JSON-heavy and math-intensive operations
365
+
366
+ ## ๐ŸŽฏ Quick Reference
367
+
368
+ ### Most Used Commands
369
+ ```bash
370
+ # Development
371
+ npm run dev # Start server with auto-reload
372
+ npm run build # Build TypeScript + WASM
373
+ npm run lint # Check code style
374
+
375
+ # Testing
376
+ npm run test # All tests
377
+ npm run test:blueprint # Specific tool tests
378
+
379
+ # Plugin Management
380
+ npm run automation:sync # Sync to UE project
381
+ npm run automation:verify # Verify installation
382
+
383
+ # Debugging
384
+ LOG_LEVEL=debug npm run dev
385
+ netstat -ano | findstr :8091
386
+ ```
387
+
388
+ ### Common File Patterns
389
+ ```
390
+ src/tools/<domain>.ts # Tool implementations
391
+ src/tools/consolidated-*.ts # Routing and validation
392
+ Plugins/.../*Handlers.cpp # Native C++ handlers
393
+ Tests/test-<domain>.mjs # Test cases
394
+ ```
395
+
396
+ ## ๐Ÿ†˜ Troubleshooting
397
+
398
+ ### Connection Issues
399
+ ```bash
400
+ # Check if plugin is listening
401
+ netstat -ano | findstr :8091
402
+
403
+ # Verify plugin files
404
+ npm run automation:verify -- --project "C:/Path/To/Project"
405
+
406
+ # Clean and rebuild
407
+ rm -r Plugins/McpAutomationBridge/{Binaries,Intermediate}
408
+ npm run build
409
+ ```
410
+
411
+ ### Performance Problems
412
+ ```bash
413
+ # Check WASM status
414
+ curl http://localhost:8090/metrics | grep wasm
415
+
416
+ # Monitor command queue
417
+ LOG_LEVEL=debug npm run dev
418
+
419
+ # Disable WASM for testing
420
+ WASM_ENABLED=false npm run dev
421
+ ```
422
+
423
+ ### Test Failures
424
+ ```bash
425
+ # Run single test with debug
426
+ LOG_LEVEL=debug npm run test:manage_asset
427
+
428
+ # Check Unreal Editor logs
429
+ # Filter for "automation_request" in Output Log
430
+
431
+ # Verify plugin capabilities
432
+ ue://automation-bridge
433
+ ```
434
+
435
+ ## ๐Ÿ“‹ Checklist for New Contributors
436
+
437
+ 1. [ ] Read `README.md` and this guide
438
+ 2. [ ] Set up Unreal Engine project with required plugins
439
+ 3. [ ] Run `npm run automation:sync`
440
+ 4. [ ] Start server with `npm run dev`
441
+ 5. [ ] Verify connection in UE Output Log
442
+ 6. [ ] Run tests with `npm run test`
443
+ 7. [ ] Explore existing tools and handlers
444
+ 8. [ ] Start with small, focused changes
445
+ 9. [ ] Add comprehensive test cases
446
+ 10. [ ] Document new features in `handler-mapping.md`
447
+
448
+ ## ๐Ÿค– AI Agent Specifics
449
+
450
+ ### Understanding the System
451
+ - **Dual-process**: Node.js โ†” Unreal Editor plugin communication
452
+ - **Protocol**: Custom WebSocket-based automation protocol
453
+ - **Safety**: Command validation and throttling are mandatory
454
+ - **Performance**: WASM optimization is automatic but optional
455
+
456
+ ### Common AI Tasks
457
+ 1. **Add new automation**: Follow the two-step implementation pattern
458
+ 2. **Fix connection issues**: Check plugin status and ports
459
+ 3. **Optimize performance**: Leverage WASM and caching
460
+ 4. **Extend functionality**: Add new actions to existing tools
461
+ 5. **Debug problems**: Use metrics endpoints and detailed logging
462
+
463
+ ### When to Ask for Help
464
+ - Plugin installation issues
465
+ - C++ handler implementation questions
466
+ - WebSocket protocol details
467
+ - Performance optimization strategies
468
+ - Test case design for complex scenarios
469
+
470
+ ## ๐Ÿ“ Feedback Request
471
+
472
+ Please provide feedback on:
473
+ 1. **Clarity**: Are the workflows and patterns clear?
474
+ 2. **Completeness**: Are any critical aspects missing?
475
+ 3. **Accuracy**: Are the examples and commands correct?
476
+ 4. **Organization**: Is the information easy to find?
477
+
478
+ Suggest improvements to make this guide more helpful for AI agents working on this codebase!
@@ -0,0 +1,19 @@
1
+ version: 2
2
+ updates:
3
+ # Maintain dependencies for npm
4
+ - package-ecosystem: "npm"
5
+ directory: "/"
6
+ schedule:
7
+ interval: "daily"
8
+ open-pull-requests-limit: 10
9
+ groups:
10
+ dependencies:
11
+ patterns:
12
+ - "*"
13
+
14
+ # Maintain dependencies for GitHub Actions
15
+ - package-ecosystem: "github-actions"
16
+ directory: "/"
17
+ schedule:
18
+ interval: "daily"
19
+ open-pull-requests-limit: 10
@@ -0,0 +1,24 @@
1
+ area/plugin:
2
+ - changed-files:
3
+ - any-glob-to-any-file: 'Plugins/**/*'
4
+
5
+ area/server:
6
+ - changed-files:
7
+ - any-glob-to-any-file: 'src/**/*'
8
+ - any-glob-to-any-file: 'package.json'
9
+ - any-glob-to-any-file: 'tsconfig.json'
10
+
11
+ area/docs:
12
+ - changed-files:
13
+ - any-glob-to-any-file: '**/*.md'
14
+ - any-glob-to-any-file: 'docs/**/*'
15
+
16
+ area/tools:
17
+ - changed-files:
18
+ - any-glob-to-any-file: '.github/**/*'
19
+ - any-glob-to-any-file: 'scripts/**/*'
20
+
21
+ area/testing:
22
+ - changed-files:
23
+ - any-glob-to-any-file: 'tests/**/*'
24
+ - any-glob-to-any-file: 'test/**/*'
@@ -0,0 +1,70 @@
1
+ # Repository Labels
2
+ # Run: gh label create "label-name" --description "desc" --color "hex"
3
+
4
+ # Area labels (for issue triage)
5
+ - name: "area/plugin"
6
+ description: "C++ McpAutomationBridge plugin issues"
7
+ color: "1d76db"
8
+
9
+ - name: "area/server"
10
+ description: "Node.js MCP server issues"
11
+ color: "0e8a16"
12
+
13
+ - name: "area/tools"
14
+ description: "Tool implementation issues"
15
+ color: "5319e7"
16
+
17
+ - name: "area/testing"
18
+ description: "Test infrastructure issues"
19
+ color: "fbca04"
20
+
21
+ - name: "area/docs"
22
+ description: "Documentation issues"
23
+ color: "0075ca"
24
+
25
+ # Type labels
26
+ - name: "type/bug"
27
+ description: "Bug reports"
28
+ color: "d73a4a"
29
+
30
+ - name: "type/enhancement"
31
+ description: "Feature requests"
32
+ color: "a2eeef"
33
+
34
+ - name: "type/question"
35
+ description: "Questions or support"
36
+ color: "d876e3"
37
+
38
+ # Size labels (for PRs)
39
+ - name: "size/xs"
40
+ description: "Extra small PR (<10 lines)"
41
+ color: "3CBF00"
42
+
43
+ - name: "size/s"
44
+ description: "Small PR (10-50 lines)"
45
+ color: "5D9801"
46
+
47
+ - name: "size/m"
48
+ description: "Medium PR (51-200 lines)"
49
+ color: "7F7203"
50
+
51
+ - name: "size/l"
52
+ description: "Large PR (201-1000 lines)"
53
+ color: "A14C05"
54
+
55
+ - name: "size/xl"
56
+ description: "Extra large PR (1000+ lines)"
57
+ color: "C32607"
58
+
59
+ # Status labels
60
+ - name: "needs-triage"
61
+ description: "Needs triage by maintainers"
62
+ color: "ededed"
63
+
64
+ - name: "stale"
65
+ description: "Inactive issue/PR"
66
+ color: "fef2c0"
67
+
68
+ - name: "pinned"
69
+ description: "Exempt from stale bot"
70
+ color: "006b75"
@@ -0,0 +1,42 @@
1
+ ## Summary
2
+
3
+ <!-- Concisely describe what this PR changes and why. Focus on impact. -->
4
+
5
+ ## Changes
6
+
7
+ <!-- List the key changes made in this PR. -->
8
+
9
+ -
10
+
11
+ ## Related Issues
12
+
13
+ <!-- Use keywords to auto-close issues (Closes #123, Fixes #456).
14
+ If only related, use: Related to #123 -->
15
+
16
+ ## Type of Change
17
+
18
+ <!-- Check all that apply -->
19
+
20
+ - [ ] ๐Ÿ› Bug fix (non-breaking change that fixes an issue)
21
+ - [ ] โœจ New feature (non-breaking change that adds functionality)
22
+ - [ ] ๐Ÿ’ฅ Breaking change (fix or feature that would cause existing functionality to change)
23
+ - [ ] ๐Ÿ“š Documentation update
24
+ - [ ] ๐Ÿ”ง Configuration/build change
25
+ - [ ] โ™ป๏ธ Refactoring (no functional changes)
26
+ - [ ] ๐Ÿงช Test addition/update
27
+
28
+ ## Testing
29
+
30
+ <!-- Describe how to test these changes -->
31
+
32
+ - [ ] Tested with Unreal Engine (version: ___)
33
+ - [ ] Tested MCP client integration (client: ___)
34
+ - [ ] Added/updated tests
35
+
36
+ ## Pre-Merge Checklist
37
+
38
+ - [ ] Code follows project style guidelines
39
+ - [ ] Self-reviewed the code
40
+ - [ ] Updated relevant documentation (if needed)
41
+ - [ ] Added/updated tests (if applicable)
42
+ - [ ] CI passes