ue-mcp 1.2.4 → 1.3.1-beta.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 (407) hide show
  1. package/README.md +6 -3
  2. package/dist/action-class.js +151 -4
  3. package/dist/action-class.js.map +1 -1
  4. package/dist/action-schema.d.ts +157 -0
  5. package/dist/action-schema.js +731 -0
  6. package/dist/action-schema.js.map +1 -0
  7. package/dist/bridge-timeouts.d.ts +64 -0
  8. package/dist/bridge-timeouts.js +141 -0
  9. package/dist/bridge-timeouts.js.map +1 -0
  10. package/dist/bridge.js +38 -13
  11. package/dist/bridge.js.map +1 -1
  12. package/dist/call-pipeline.d.ts +126 -0
  13. package/dist/call-pipeline.js +144 -0
  14. package/dist/call-pipeline.js.map +1 -0
  15. package/dist/content-index.d.ts +41 -0
  16. package/dist/content-index.js +149 -0
  17. package/dist/content-index.js.map +1 -0
  18. package/dist/cpp-correctness.d.ts +165 -0
  19. package/dist/cpp-correctness.js +562 -0
  20. package/dist/cpp-correctness.js.map +1 -0
  21. package/dist/dialog-cli.d.ts +15 -0
  22. package/dist/dialog-cli.js +146 -0
  23. package/dist/dialog-cli.js.map +1 -0
  24. package/dist/editor-control.d.ts +335 -18
  25. package/dist/editor-control.js +940 -181
  26. package/dist/editor-control.js.map +1 -1
  27. package/dist/editor-target.d.ts +86 -1
  28. package/dist/editor-target.js +141 -10
  29. package/dist/editor-target.js.map +1 -1
  30. package/dist/engine-analysis.d.ts +286 -0
  31. package/dist/engine-analysis.js +874 -0
  32. package/dist/engine-analysis.js.map +1 -0
  33. package/dist/engine-index.d.ts +159 -0
  34. package/dist/engine-index.js +496 -0
  35. package/dist/engine-index.js.map +1 -0
  36. package/dist/engine-observer.d.ts +59 -5
  37. package/dist/engine-observer.js +249 -29
  38. package/dist/engine-observer.js.map +1 -1
  39. package/dist/engine-root.d.ts +91 -0
  40. package/dist/engine-root.js +448 -0
  41. package/dist/engine-root.js.map +1 -0
  42. package/dist/epic-enrich.js +18 -3
  43. package/dist/epic-enrich.js.map +1 -1
  44. package/dist/feedback-cli.js +4 -0
  45. package/dist/feedback-cli.js.map +1 -1
  46. package/dist/feedback-deferred.d.ts +9 -0
  47. package/dist/feedback-deferred.js +2 -0
  48. package/dist/feedback-deferred.js.map +1 -1
  49. package/dist/feedback-fallback.d.ts +99 -0
  50. package/dist/feedback-fallback.js +173 -0
  51. package/dist/feedback-fallback.js.map +1 -0
  52. package/dist/field-select.d.ts +57 -0
  53. package/dist/field-select.js +204 -0
  54. package/dist/field-select.js.map +1 -0
  55. package/dist/flow/bridge-task.d.ts +5 -0
  56. package/dist/flow/bridge-task.js +11 -1
  57. package/dist/flow/bridge-task.js.map +1 -1
  58. package/dist/flow/flow-tool.js +207 -34
  59. package/dist/flow/flow-tool.js.map +1 -1
  60. package/dist/flow/guarded-bridge.js +23 -7
  61. package/dist/flow/guarded-bridge.js.map +1 -1
  62. package/dist/flow/handler-outcome.d.ts +97 -0
  63. package/dist/flow/handler-outcome.js +127 -0
  64. package/dist/flow/handler-outcome.js.map +1 -0
  65. package/dist/flow/journal-actions.d.ts +24 -0
  66. package/dist/flow/journal-actions.js +364 -0
  67. package/dist/flow/journal-actions.js.map +1 -0
  68. package/dist/flow/registry.js +18 -2
  69. package/dist/flow/registry.js.map +1 -1
  70. package/dist/flow/schema.d.ts +30 -30
  71. package/dist/flow/skill-actions.d.ts +14 -0
  72. package/dist/flow/skill-actions.js +269 -0
  73. package/dist/flow/skill-actions.js.map +1 -0
  74. package/dist/flow/task-factory.d.ts +9 -3
  75. package/dist/flow/task-factory.js +55 -11
  76. package/dist/flow/task-factory.js.map +1 -1
  77. package/dist/flow/write-methods.js +20 -0
  78. package/dist/flow/write-methods.js.map +1 -1
  79. package/dist/index.js +169 -13
  80. package/dist/index.js.map +1 -1
  81. package/dist/init.js +14 -0
  82. package/dist/init.js.map +1 -1
  83. package/dist/install-check.d.ts +101 -0
  84. package/dist/install-check.js +366 -0
  85. package/dist/install-check.js.map +1 -0
  86. package/dist/journal.d.ts +212 -0
  87. package/dist/journal.js +406 -0
  88. package/dist/journal.js.map +1 -0
  89. package/dist/lean-context.js +27 -5
  90. package/dist/lean-context.js.map +1 -1
  91. package/dist/locking.js +11 -2
  92. package/dist/locking.js.map +1 -1
  93. package/dist/offline.d.ts +162 -0
  94. package/dist/offline.js +303 -0
  95. package/dist/offline.js.map +1 -0
  96. package/dist/pagination.d.ts +99 -0
  97. package/dist/pagination.js +175 -0
  98. package/dist/pagination.js.map +1 -0
  99. package/dist/path-params.d.ts +61 -0
  100. package/dist/path-params.js +120 -0
  101. package/dist/path-params.js.map +1 -0
  102. package/dist/plugin/injection.js +2 -2
  103. package/dist/plugin/injection.js.map +1 -1
  104. package/dist/plugin/manifest.d.ts +15 -15
  105. package/dist/plugin/provision.js +2 -2
  106. package/dist/plugin/provision.js.map +1 -1
  107. package/dist/project.d.ts +46 -0
  108. package/dist/project.js +95 -10
  109. package/dist/project.js.map +1 -1
  110. package/dist/python-gate.d.ts +95 -0
  111. package/dist/python-gate.js +175 -0
  112. package/dist/python-gate.js.map +1 -0
  113. package/dist/session-env.js +12 -0
  114. package/dist/session-env.js.map +1 -1
  115. package/dist/session-surface.js +2 -19
  116. package/dist/session-surface.js.map +1 -1
  117. package/dist/session.d.ts +29 -0
  118. package/dist/session.js +54 -1
  119. package/dist/session.js.map +1 -1
  120. package/dist/skill-packs.d.ts +141 -0
  121. package/dist/skill-packs.js +478 -0
  122. package/dist/skill-packs.js.map +1 -0
  123. package/dist/skills.d.ts +14 -11
  124. package/dist/skills.js +38 -65
  125. package/dist/skills.js.map +1 -1
  126. package/dist/tool-counts.json +21 -21
  127. package/dist/tools/animation.js +358 -30
  128. package/dist/tools/animation.js.map +1 -1
  129. package/dist/tools/asset.js +301 -38
  130. package/dist/tools/asset.js.map +1 -1
  131. package/dist/tools/audio.js +102 -13
  132. package/dist/tools/audio.js.map +1 -1
  133. package/dist/tools/blueprint.js +103 -20
  134. package/dist/tools/blueprint.js.map +1 -1
  135. package/dist/tools/chooser.js +4 -1
  136. package/dist/tools/chooser.js.map +1 -1
  137. package/dist/tools/demo.js +3 -3
  138. package/dist/tools/demo.js.map +1 -1
  139. package/dist/tools/editor.js +233 -78
  140. package/dist/tools/editor.js.map +1 -1
  141. package/dist/tools/fab.js +7 -7
  142. package/dist/tools/fab.js.map +1 -1
  143. package/dist/tools/feedback.js +226 -50
  144. package/dist/tools/feedback.js.map +1 -1
  145. package/dist/tools/foliage.js +76 -4
  146. package/dist/tools/foliage.js.map +1 -1
  147. package/dist/tools/gameplay.js +166 -53
  148. package/dist/tools/gameplay.js.map +1 -1
  149. package/dist/tools/gas.js +85 -8
  150. package/dist/tools/gas.js.map +1 -1
  151. package/dist/tools/landscape.js +177 -14
  152. package/dist/tools/landscape.js.map +1 -1
  153. package/dist/tools/level.js +352 -62
  154. package/dist/tools/level.js.map +1 -1
  155. package/dist/tools/material.js +52 -11
  156. package/dist/tools/material.js.map +1 -1
  157. package/dist/tools/networking.js +10 -10
  158. package/dist/tools/networking.js.map +1 -1
  159. package/dist/tools/niagara.js +46 -9
  160. package/dist/tools/niagara.js.map +1 -1
  161. package/dist/tools/pcg.js +30 -12
  162. package/dist/tools/pcg.js.map +1 -1
  163. package/dist/tools/plugins.js +1 -1
  164. package/dist/tools/plugins.js.map +1 -1
  165. package/dist/tools/project.d.ts +17 -1
  166. package/dist/tools/project.js +618 -37
  167. package/dist/tools/project.js.map +1 -1
  168. package/dist/tools/reflection.js +15 -5
  169. package/dist/tools/reflection.js.map +1 -1
  170. package/dist/tools/statetree.js +44 -3
  171. package/dist/tools/statetree.js.map +1 -1
  172. package/dist/tools/widget.js +70 -4
  173. package/dist/tools/widget.js.map +1 -1
  174. package/dist/types.d.ts +87 -1
  175. package/dist/types.js +123 -5
  176. package/dist/types.js.map +1 -1
  177. package/dist/ue-mcp.default.yml +2020 -282
  178. package/dist/user-state.d.ts +42 -0
  179. package/dist/user-state.js +366 -38
  180. package/dist/user-state.js.map +1 -1
  181. package/dist/version-check.js +46 -5
  182. package/dist/version-check.js.map +1 -1
  183. package/package.json +4 -4
  184. package/plugin/ue_mcp_bridge/NATIVE_RUNTIME_VISIBILITY.md +53 -0
  185. package/plugin/ue_mcp_bridge/NATIVE_STATIC_MESH_USAGE_PROGRESS.md +115 -0
  186. package/plugin/ue_mcp_bridge/README_MassHandlers.md +97 -0
  187. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +144 -24
  188. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.h +44 -8
  189. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/EngineStatusHooks.cpp +22 -0
  190. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.cpp +147 -61
  191. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/GameThreadExecutor.h +18 -0
  192. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerJsonProperty.h +512 -69
  193. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerPoseSearchSchema.h +92 -0
  194. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/HandlerStateTreeSchema.h +224 -0
  195. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.cpp +546 -16
  196. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers.h +61 -0
  197. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRig.cpp +7 -8
  198. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_ControlRigSequencer.cpp +3193 -0
  199. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Depth.cpp +1432 -0
  200. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRetargeterAuthoring.cpp +961 -0
  201. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_IKRigAuthoring.cpp +900 -0
  202. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_MotionMatching.cpp +186 -15
  203. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Pose.cpp +769 -0
  204. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Sequence.cpp +363 -7
  205. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_SkeletalLive.cpp +262 -15
  206. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Skeleton.cpp +2866 -0
  207. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_StateMachine.cpp +1098 -34
  208. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AnimationHandlers_Validation.cpp +735 -0
  209. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.cpp +839 -130
  210. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers.h +48 -0
  211. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkProperties.cpp +1 -1
  212. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkRead.cpp +503 -0
  213. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkRead.h +21 -0
  214. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_BulkUpsert.cpp +2 -2
  215. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Enum.cpp +2 -2
  216. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Geometry.cpp +902 -0
  217. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Geometry.h +33 -0
  218. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_GeometryScript.cpp +2697 -0
  219. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Hygiene.cpp +1700 -0
  220. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Import.cpp +971 -190
  221. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Mesh.cpp +126 -8
  222. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_MeshBoolean.cpp +933 -0
  223. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_MeshBoolean.h +35 -0
  224. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Redirectors.cpp +478 -0
  225. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_RenderTarget.cpp +1 -1
  226. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Sockets.cpp +4 -4
  227. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Struct.cpp +2 -2
  228. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_Subobject.cpp +319 -0
  229. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AssetHandlers_UV.cpp +2941 -0
  230. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers.cpp +55 -22
  231. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers.h +32 -0
  232. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_Depth.cpp +1546 -0
  233. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_MetaSound.cpp +558 -67
  234. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_MetaSoundRead.cpp +1410 -0
  235. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_Mixing.cpp +210 -1
  236. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/AudioHandlers_SoundCue.cpp +64 -3
  237. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.cpp +955 -58
  238. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers.h +53 -0
  239. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Collision.cpp +502 -0
  240. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Collision.h +43 -0
  241. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Depth.cpp +2579 -0
  242. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Functions.cpp +251 -20
  243. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Graph.cpp +700 -76
  244. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Internal.h +203 -0
  245. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Properties.cpp +134 -21
  246. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_Search.cpp +697 -0
  247. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/BlueprintHandlers_UserTypes.cpp +1344 -0
  248. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ChooserHandlers.cpp +136 -1
  249. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DemoHandlers.cpp +125 -1
  250. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DialogHandlers.cpp +501 -128
  251. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DialogHandlers.h +65 -5
  252. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.cpp +252 -1
  253. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.h +10 -2
  254. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.cpp +931 -67
  255. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers.h +54 -0
  256. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_Build.cpp +311 -27
  257. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIE.cpp +564 -129
  258. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_PIERuntime.cpp +343 -73
  259. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_Profiling.cpp +1665 -0
  260. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_RuntimeVisibility.cpp +757 -0
  261. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/EditorHandlers_ViewportControl.cpp +1229 -0
  262. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FabHandlers.cpp +103 -0
  263. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.cpp +56 -7
  264. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers.h +17 -0
  265. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers_Batch.cpp +506 -0
  266. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/FoliageHandlers_Depth.cpp +1482 -0
  267. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.cpp +993 -329
  268. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers.h +129 -1
  269. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BTAuthoring.cpp +1323 -0
  270. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BTRuntime.cpp +1556 -0
  271. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_BehaviorTree.cpp +1211 -0
  272. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_EQS.cpp +760 -0
  273. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_Input.cpp +1282 -4
  274. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_Mass.cpp +1303 -0
  275. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GameplayHandlers_Perception.cpp +1476 -0
  276. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.cpp +166 -3
  277. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers.h +137 -0
  278. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Abilities.cpp +1392 -0
  279. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Runtime.cpp +1244 -14
  280. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/GasHandlers_Snapshot.cpp +1002 -0
  281. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/HandlerEditorState.h +84 -0
  282. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.cpp +1401 -39
  283. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers.h +34 -0
  284. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LandscapeHandlers_Sculpt.cpp +3806 -18
  285. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.cpp +1743 -256
  286. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers.h +66 -0
  287. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_BatchWrite.cpp +1614 -0
  288. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Convert.cpp +316 -0
  289. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Inspection.cpp +280 -0
  290. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection.cpp +666 -0
  291. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_InstanceProjection_Internal.h +63 -0
  292. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Lights.cpp +43 -12
  293. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_MultiLevel.cpp +13 -47
  294. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_PostProcess.cpp +681 -0
  295. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Query.cpp +1169 -0
  296. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Refresh.cpp +738 -0
  297. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Save.cpp +325 -0
  298. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Spatial.cpp +360 -0
  299. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Trace.cpp +178 -58
  300. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Transient.cpp +351 -0
  301. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_Volumes.cpp +199 -17
  302. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartition.cpp +87 -23
  303. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LevelHandlers_WorldPartitionSettings.cpp +764 -0
  304. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MassHandlers.cpp +467 -0
  305. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MassHandlers.h +22 -0
  306. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.cpp +1043 -207
  307. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers.h +21 -0
  308. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Advanced.cpp +168 -8
  309. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Build.cpp +597 -0
  310. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Function.cpp +106 -1
  311. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_Graph.cpp +156 -23
  312. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/MaterialHandlers_RVT.cpp +1510 -0
  313. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NetworkingHandlers.cpp +232 -13
  314. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.cpp +488 -60
  315. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers.h +23 -0
  316. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers_Advanced.cpp +1936 -0
  317. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/NiagaraHandlers_Compile.cpp +285 -0
  318. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PCGHandlers.cpp +558 -173
  319. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/PhysicsHandlers.cpp +408 -43
  320. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ProjectHandlers.cpp +44 -5
  321. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ProjectHandlers.h +13 -0
  322. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ProjectHandlers_Plugins.cpp +482 -0
  323. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.cpp +346 -31
  324. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers.h +5 -0
  325. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/ReflectionHandlers_Schema.cpp +842 -0
  326. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.cpp +662 -78
  327. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers.h +2 -0
  328. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SequencerHandlers_Internal.h +83 -0
  329. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.cpp +200 -0
  330. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SkeletalMeshHandlers.h +15 -0
  331. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/SplineHandlers.cpp +19 -12
  332. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers.cpp +943 -24
  333. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers.h +22 -0
  334. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/StateTreeHandlers_Depth.cpp +1782 -0
  335. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.cpp +840 -254
  336. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers.h +121 -0
  337. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Animation.cpp +2691 -0
  338. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_CommonUI.cpp +612 -0
  339. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Extraction.cpp +22 -52
  340. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_Properties.cpp +286 -59
  341. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/WidgetHandlers_RuntimeState.cpp +1 -1
  342. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/ActorSelectorTests.cpp +344 -0
  343. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AnimationControlRigTimelineTests.cpp +60 -0
  344. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AnimationPoseTests.cpp +115 -0
  345. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetBulkReadTests.cpp +177 -0
  346. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetDeleteGuardTests.cpp +276 -0
  347. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetPathResolutionTests.cpp +243 -0
  348. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetPropertyPersistTests.cpp +213 -0
  349. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AssetSubobjectTests.cpp +235 -0
  350. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/AutomationRunnerTests.cpp +72 -0
  351. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BehaviorTreeAuthoringTests.cpp +526 -0
  352. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BehaviorTreeNodeTests.cpp +334 -0
  353. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BlueprintHandlerSurfaceTests.cpp +362 -0
  354. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/BridgeProtocolTests.cpp +14 -0
  355. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/CollisionQueryTests.cpp +288 -0
  356. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/DataTableRowWriteTests.cpp +805 -0
  357. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/EditorFunctionCallTests.cpp +223 -0
  358. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/FoliageBatchTests.cpp +147 -0
  359. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/GameThreadGateTests.cpp +82 -0
  360. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/GasLiveAttributeTests.cpp +183 -0
  361. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LandscapeSampleTests.cpp +119 -0
  362. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelBatchWriteTests.cpp +176 -0
  363. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelComponentTreeInstanceCountTests.cpp +189 -0
  364. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelConvertBrushesTests.cpp +100 -0
  365. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelInstanceProjectionTests.cpp +265 -0
  366. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelPostProcessOverrideTests.cpp +258 -0
  367. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelQueryComponentsTests.cpp +195 -0
  368. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelRefreshTests.cpp +142 -0
  369. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelSaveReportTests.cpp +125 -0
  370. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelScriptHandlersTests.cpp +42 -0
  371. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelStaticMeshUsageTests.cpp +412 -0
  372. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelTraceWorldScopeTests.cpp +133 -0
  373. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelTransientActorTests.cpp +205 -0
  374. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/LevelWorldPartitionSettingsTests.cpp +168 -0
  375. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MCPInstancedStructPathTestTypes.h +51 -0
  376. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MCPInstancedStructPathTests.cpp +379 -0
  377. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MaterialBuildTests.cpp +238 -0
  378. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MeshBooleanTests.cpp +170 -0
  379. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/MeshGeometryTests.cpp +116 -0
  380. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/PackageSaveExtensionTests.cpp +161 -0
  381. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/PackageWriteGuardTests.cpp +253 -0
  382. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/RuntimeVisibilityTests.cpp +143 -0
  383. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SequencerHandlerTests.cpp +660 -0
  384. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SequencerScrubTests.cpp +50 -0
  385. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/SkeletonDiffTests.cpp +685 -0
  386. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Tests/WidgetBlueprintResolveTests.cpp +145 -0
  387. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +119 -16
  388. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerFunctionCall.h +509 -0
  389. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerPagination.h +404 -0
  390. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerQuery.h +407 -0
  391. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/HandlerUtils.h +1546 -95
  392. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Public/JsonSerializer.cpp +19 -0
  393. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/UE_MCP_Bridge.Build.cs +118 -0
  394. package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Private/MCPEngineStatus.cpp +152 -14
  395. package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Private/Tests/MCPEngineStatusTests.cpp +65 -0
  396. package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/Public/MCPEngineStatus.h +32 -1
  397. package/plugin/ue_mcp_bridge/Source/UE_MCP_BridgeStatus/UE_MCP_BridgeStatus.Build.cs +2 -0
  398. package/plugin/ue_mcp_bridge/UE_MCP_Bridge.uplugin +2 -2
  399. package/skills/ue-mcp-animation/SKILL.md +154 -0
  400. package/skills/ue-mcp-animation/ue-mcp.yml +14 -0
  401. package/skills/ue-mcp-blueprint/SKILL.md +71 -0
  402. package/skills/ue-mcp-blueprint/ue-mcp.yml +8 -0
  403. package/skills/ue-mcp-epic-routing/ue-mcp.yml +6 -0
  404. package/skills/ue-mcp-native-cpp/ue-mcp.yml +7 -0
  405. package/skills/ue-mcp-niagara/ue-mcp.yml +9 -0
  406. package/skills/ue-mcp-workflow/SKILL.md +3 -2
  407. package/skills/ue-mcp-workflow/ue-mcp.yml +3 -0
package/README.md CHANGED
@@ -5,7 +5,7 @@
5
5
  [![stars](https://img.shields.io/github/stars/db-lyon/ue-mcp)](https://github.com/db-lyon/ue-mcp/stargazers)
6
6
  [![MIT](https://img.shields.io/npm/l/ue-mcp)](LICENSE)
7
7
 
8
- **Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->24<!-- /count --> category tools covering <!-- count:actions -->783+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows and an npm plugin system for extending the surface.
8
+ **Unreal Engine Model Context Protocol Server** - gives AI assistants deep read/write access to the Unreal Editor through <!-- count:tools -->24<!-- /count --> category tools covering <!-- count:actions -->1090+<!-- /count --> actions, plus a YAML flow engine for multi-step workflows and an npm plugin system for extending the surface.
9
9
 
10
10
  On UE 5.8+ it also wraps Epic's entire native AI Toolset Registry - 830 official Unreal tools, called in-process and surfaced as `epic_*` actions in the matching category: Sequencer in `animation`, PCG in `pcg`, static meshes in `asset`.
11
11
 
@@ -88,7 +88,7 @@ Nothing is pre-authored. Every asset in the scene is created by the agent at run
88
88
  | **Blueprints** | Read/write graphs, add nodes, connect pins, compile, CDO and component property access |
89
89
  | **Materials** | Create materials and instances, author expression graphs, set parameters |
90
90
  | **Assets** | CRUD, import meshes/textures/animations, datatables, mesh bounds/collision/nav |
91
- | **Animation** | Anim blueprints, montages, blendspaces, skeletons |
91
+ | **Animation** | Anim blueprints, montages, retargeting, native Control Rig editing, deterministic pose analysis |
92
92
  | **VFX** | Niagara systems, emitters, modules, renderers, parameters |
93
93
  | **Landscape** | Sculpt terrain, paint weight layers, materials, splines, proxies |
94
94
  | **Foliage** | Painting, foliage types, instance queries |
@@ -137,7 +137,7 @@ flows:
137
137
  flow(action="run", flowName="build_and_check")
138
138
  ```
139
139
 
140
- Every one of the <!-- count:actions -->783+<!-- /count --> actions is also a flow task. Flows support step references, retries, rollback, custom tasks in your own `.js`/`.ts`, and shell steps. See [Flows](https://ue-mcp.com/docs/flows/).
140
+ Every one of the <!-- count:actions -->1090+<!-- /count --> actions is also a flow task. Flows support step references, retries, rollback, custom tasks in your own `.js`/`.ts`, and shell steps. See [Flows](https://ue-mcp.com/docs/flows/).
141
141
 
142
142
  ## Plugins
143
143
 
@@ -156,6 +156,7 @@ The package ships skills that teach agents the non-obvious parts of driving the
156
156
  | Skill | Covers |
157
157
  |-------|--------|
158
158
  | `ue-mcp-workflow` | Required order of operations, editor lifecycle, project scoping |
159
+ | [`ue-mcp-animation`](skills/ue-mcp-animation/SKILL.md) | UE 5.8 IK/retarget authoring, per-rig Control Rig solving, generic contact locks, bake and deterministic V&V |
159
160
  | `ue-mcp-blueprint` | Graph authoring, node discovery, pin wiring, compile loops |
160
161
  | `ue-mcp-niagara` | Emitter/module stack authoring and renderer setup |
161
162
  | `ue-mcp-native-cpp` | Writing and building native C++ against the bridge |
@@ -191,6 +192,8 @@ Editor process control (`editor(start_editor)` / `stop_editor` / `restart_editor
191
192
  - [Tool Reference](https://ue-mcp.com/docs/tool-reference/) - Every tool, action, and parameter
192
193
  - [Architecture](https://ue-mcp.com/docs/architecture/) - How the server, bridge, and editor fit together
193
194
  - [Flows](https://ue-mcp.com/docs/flows/) - Multi-step YAML workflows, custom tasks, rollback
195
+ - [Journal](https://ue-mcp.com/docs/journal/) - The per-project record of what a session did, produced, and how it ended
196
+ - [Skill Packs](https://ue-mcp.com/docs/skill-packs/) - Written workflows an agent reads, and checking that the calls they teach still exist
194
197
  - [Plugins](https://ue-mcp.com/docs/plugins/) - Extending the surface through npm
195
198
  - [Configuration](https://ue-mcp.com/docs/configuration/) - `ue-mcp.yml` and MCP client config
196
199
  - [Troubleshooting](https://ue-mcp.com/docs/troubleshooting/) - Connection, build, and asset path issues
@@ -58,17 +58,20 @@ const MUTATE_VERBS = new Set([
58
58
  "start", "stop", "restart", "quit", "kill", "launch", "request", "hot", "cook", "deploy",
59
59
  // Editor and viewport state a user would see happen in the wrong window.
60
60
  "open", "close", "focus", "select", "play", "simulate", "possess", "eject",
61
- "pause", "resume", "teleport", "respond", "stage", "capture", "render",
61
+ "pause", "resume", "teleport", "respond", "stage", "capture", "render", "scrub",
62
62
  // Authoring verbs the asset lexicon has no reason to know about.
63
63
  "author", "edit", "place", "load", "reload", "force", "regenerate", "recompile",
64
- "rebuild", "reparent", "auto", "populate", "bind", "rebind", "fill", "append",
64
+ "rebuild", "reparent", "auto", "populate", "bind", "rebind", "unbind", "fill", "append",
65
65
  "reindex", "migrate", "override", "flush", "cleanup", "configure", "init",
66
66
  "initialize", "step", "go", "submit", "remap", "login", "logout", "sync",
67
67
  "toggle", "reactivate", "reorder", "wrap", "sculpt", "paint", "snap", "aim",
68
68
  "undo", "redo", "purge", "begin", "end", "lock", "unlock", "drop", "retarget",
69
69
  "install", "uninstall", "restore", "revert", "activate", "deactivate",
70
+ // "destroy" is what the engine calls deleting an actor, and the asset
71
+ // lexicon never needed it because assets are deleted rather than destroyed.
72
+ "destroy",
70
73
  "trigger", "emit", "send", "post", "publish", "upload", "convert", "promote",
71
- "mark", "dirty", "refresh", "trim", "crop", "resize", "rotate", "translate",
74
+ "mark", "dirty", "refresh", "trim", "crop", "resize", "rotate", "translate", "nudge",
72
75
  "transform", "split", "merge", "patch", "seek", "mute", "unmute",
73
76
  // Verbs the wrapped engine surface uses that no native action does. Every one
74
77
  // of these names a tool that edits a graph, moves a control, drives the UI, or
@@ -89,7 +92,7 @@ const MUTATE_VERBS = new Set([
89
92
  const READ_VERBS = new Set([
90
93
  ...READ_PREFIXES,
91
94
  "is", "scan", "sample", "health", "diagnose", "compare", "query", "dump",
92
- "fetch", "lookup", "enumerate",
95
+ "fetch", "lookup", "enumerate", "summarize", "measure", "audit",
93
96
  ]);
94
97
  /**
95
98
  * Actions the verb lexicon gets wrong, or cannot see.
@@ -110,6 +113,54 @@ const OVERRIDES = {
110
113
  // is a mutation by the lexicon, which is correct: a flow is whatever its
111
114
  // steps are.
112
115
  "flow.plan": "read",
116
+ // ── Read the engine tree and the project's own sources ──────────────
117
+ // These answer questions about C++ before any is written. They touch the
118
+ // engine install and the project's Source/ read-only, and the index they
119
+ // build is a cache under the user directory, not editor state. `verify` and
120
+ // `lint` are not in the verb lexicon because nothing else on the surface
121
+ // uses them.
122
+ "project.verify_symbols": "read",
123
+ "project.lint_cpp_header": "read",
124
+ // The relational half of the same reading: what a class derives from, what
125
+ // derives from it, and the lines around a declaration. `class` and `symbol`
126
+ // are nouns rather than verbs, so the lexicon has nothing to go on. The
127
+ // `find_*` analysis actions resolve through the lexicon already and are not
128
+ // listed here.
129
+ "project.class_hierarchy": "read",
130
+ "project.symbol_context": "read",
131
+ // ── Viewport, transactions and AI runtime ───────────────────────────
132
+ // Repaints the viewport. Nothing about the editor, the project on disk or
133
+ // the process changes; it is the visual equivalent of a read.
134
+ "editor.redraw_viewport": "read",
135
+ // Pure reads whose verb is not in the lexicon.
136
+ "editor.get_undo_state": "read",
137
+ "asset.read_skeletal_mesh_build_settings": "read",
138
+ // Rewrites a mesh's UV layout in place, so it changes the asset on disk.
139
+ "asset.unwrap_uvs": "mutate",
140
+ // Reports UV faults and writes nothing.
141
+ "asset.check_uvs": "read",
142
+ // Records another skeleton as compatible on this one, so it writes the asset.
143
+ "animation.register_compatible_skeleton": "mutate",
144
+ // Discards an open transaction, restoring what it touched. That is a change
145
+ // to editor state, so it is gated like one even though its purpose is undo.
146
+ "editor.cancel_transaction": "mutate",
147
+ // Asks whether A perceives B. Reads the perception component and nothing
148
+ // more; the verb is simply not in the lexicon.
149
+ "gameplay.check_perception": "read",
150
+ // Injects a stimulus into the running world, which AI then reacts to.
151
+ "gameplay.report_noise_event": "mutate",
152
+ // Creates the config asset when it is absent, so it can create.
153
+ "gameplay.ensure_mass_entity_config": "mutate",
154
+ // ── GAS granting and diagnosis ──────────────────────────────────────
155
+ // grant/revoke change a live actor's AbilitySystemComponent, so they are
156
+ // mutations even though neither verb is in the lexicon.
157
+ "gas.grant_ability": "mutate",
158
+ "gas.revoke_ability": "mutate",
159
+ // Reads by default. `activate: true` really does activate the ability, and
160
+ // an action whose effect a parameter decides is exactly what `unknown` is
161
+ // for: it is gated like a mutation, which is the safe answer, and the label
162
+ // stays honest.
163
+ "gas.trace_ability_activation": "unknown",
113
164
  // ── Arbitrary payload decides the effect ────────────────────────────
114
165
  "epic.call_tool": "unknown",
115
166
  "editor.execute_python": "mutate",
@@ -121,9 +172,24 @@ const OVERRIDES = {
121
172
  "editor.invoke_function": "unknown",
122
173
  "widget.invoke_runtime_function": "unknown",
123
174
  "niagara.batch": "mutate",
175
+ // ── Terrain reads the verb lexicon has no word for ──────────────────
176
+ // "analyze", "plan" and "project" are not in either list, and adding them as
177
+ // verbs would classify every future action containing those segments from a
178
+ // guess. All three of these only measure: they read the height field, or in
179
+ // the case of plan_real_world read nothing but a file the caller named, and
180
+ // return arithmetic. Nothing about them reaches an editor that could be the
181
+ // wrong one.
182
+ "landscape.analyze_terrain": "read",
183
+ "landscape.plan_real_world": "read",
184
+ "landscape.project_geo_coordinates": "read",
124
185
  // ── Reads whose verb reads as a write ───────────────────────────────
125
186
  // Serializers: they render a graph as text or JSON and return it.
126
187
  "blueprint.export_nodes_t3d": "read",
188
+ // Reads call-site nodes across a directory. "search" is a read verb, but
189
+ // "call" is a mutate verb from the wrapped engine surface, and a mutate verb
190
+ // anywhere in the name wins - which is wrong for exactly this action. It
191
+ // loads packages and reads graphs; it authors nothing (#945).
192
+ "blueprint.search_call_sites": "read",
127
193
  "material.export_graph": "read",
128
194
  "pcg.export_graph": "read",
129
195
  // Reads the actor descriptors of an unloaded World Partition level. Nothing
@@ -131,20 +197,59 @@ const OVERRIDES = {
131
197
  "level.load_actor_descs": "read",
132
198
  // Extracts a widget subtree as a description. `widget.author` writes one.
133
199
  "widget.extract_subtree": "read",
200
+ // Both walk a widget tree and report on it. "focus" is a mutate verb because
201
+ // the editor focuses a viewport on an actor, and a mutate verb anywhere in the
202
+ // name wins, which is wrong for a report about focus and for a read of where
203
+ // focus currently sits. `widget.set_runtime_focus` is the action that moves it.
204
+ "widget.audit_focus_chain": "read",
205
+ "widget.get_runtime_focus_path": "read",
134
206
  // Cache metadata about the Fab library, not a cache write.
135
207
  "fab.cache_info": "read",
208
+ // Computes bounds, area, volume and topology over mesh data already in the
209
+ // editor. "measure" is not in the read lexicon, and deliberately stays out of
210
+ // it: a verb there is a licence for every future action that starts with it.
211
+ "asset.measure_mesh_geometry": "read",
136
212
  // Reads a mirror data table. "mirror" is a mutate verb because the wrapped
137
213
  // engine surface uses it as one (mirror_selected_controls), and a mutate verb
138
214
  // anywhere in the name wins, which is wrong for exactly this action.
139
215
  "animation.read_mirror_data_table": "read",
216
+ // Reads Control Rig controls and keys from an edit session. The `edit`
217
+ // segment names the session type; this action does not modify it.
218
+ "animation.read_control_rig_edit": "read",
219
+ // Reads animation data, but optionally writes validation artifacts under
220
+ // the addressed project's Saved directory.
221
+ "animation.analyze_animation": "unknown",
222
+ // Evaluates a clip's pose to derive its planted-foot speed. Reads only.
223
+ // "measure" is in the read lexicon, so this entry is belt and braces rather
224
+ // than load bearing, and it documents the intent at the point of use.
225
+ "animation.measure_natural_speed": "read",
226
+ // ── Level refresh and inspect actions the verb lexicon cannot read ──
227
+ // "rerun" is not "run" and "recreate" is not "create", so neither reaches
228
+ // the lexicon. Both destroy and rebuild engine state on placed actors.
229
+ "level.rerun_construction": "mutate",
230
+ "level.recreate_physics_state": "mutate",
231
+ // Compares two components' bounds and transforms. "test" is not a verb the
232
+ // lexicon knows, and this one only measures.
233
+ "level.test_component_overlap": "read",
234
+ // Reads a property off many assets at once. "bulk" is a mutate verb because
235
+ // every batch action before this one wrote, but the shape word is not the
236
+ // verb: the read verb after it is.
237
+ "asset.bulk_read_properties": "read",
140
238
  // Reads whose first segment is not a verb at all.
141
239
  "level.line_trace": "read",
240
+ // Batch of the same collision queries. `bulk` is a mutate verb because most
241
+ // bulk_* actions write; this one only observes.
242
+ "level.bulk_line_trace": "read",
142
243
  "level.nav_project_point": "read",
143
244
  "level.count_actors_by_class": "read",
144
245
  "gameplay.project_to_nav": "read",
145
246
  "gameplay.find_nav_path": "read",
146
247
  "editor.hit_test_viewport_pixel": "read",
147
248
  "editor.check_for_crashes": "read",
249
+ // Inspects the project descriptor, the engine tree and the deployed plugin
250
+ // on disk. It deploys nothing, enables nothing and builds nothing; the
251
+ // "install" in its name is the subject it reports on, not what it does.
252
+ "project.check_install": "read",
148
253
  "editor.search_log": "read",
149
254
  "project.live_coding_status": "read",
150
255
  "feedback.route": "read",
@@ -158,11 +263,53 @@ const OVERRIDES = {
158
263
  "asset.export": "mutate",
159
264
  "asset.export_texture": "mutate",
160
265
  "level.export_actor_fbx": "mutate",
266
+ // Writes a 16-bit heightmap to a path the caller chose. It changes no
267
+ // terrain, but a file appearing on disk is an external side effect and the
268
+ // taxonomy above counts that as a mutation.
269
+ "landscape.export_heightmap": "mutate",
161
270
  "audio.extract_pcm": "mutate",
162
271
  // Rebuilds the full-text index in the editor's own database.
163
272
  "asset.reindex_fts": "mutate",
273
+ // Loads, rewrites and saves the packages that reference a set of
274
+ // ObjectRedirectors, then deletes the redirectors that come out unreferenced
275
+ // (#908). "fixup" is not a verb the lexicon knows, and this is about as far
276
+ // from a read as an asset action gets.
277
+ "asset.fixup_redirectors": "mutate",
278
+ // Runs a CSG boolean over two StaticMeshes and writes the result to an
279
+ // asset. "mesh" is not a verb at all, so the lexicon cannot see it, and this
280
+ // is as far from a read as an asset action gets: it creates or overwrites a
281
+ // StaticMesh package (#916).
282
+ "asset.mesh_boolean": "mutate",
164
283
  // Posts to a public issue tracker.
165
284
  "feedback.submit": "mutate",
285
+ // #956: reads an attribute value, but by default it first registers the
286
+ // actor's own attribute sets on its AbilitySystemComponent when nothing is
287
+ // registered yet, which is a change to the addressed editor's live world.
288
+ // The verb says read; what it can do says mutate, and the gate follows what
289
+ // it can do.
290
+ "gas.get_live_attribute_value": "mutate",
291
+ // ── The workflow journal and the skill packs ────────────────────────
292
+ // Neither reaches a bridge, so nothing here can land in the wrong EDITOR.
293
+ // Both are still per project: the journal file is keyed by absolute project
294
+ // root and skill packs install under a project's own `.claude/skills/`, so a
295
+ // write that guessed the wrong session would record one project's history,
296
+ // or install into one project's checkout, under another project's name.
297
+ // Spelled out rather than left to the verb lexicon, which has no reason to
298
+ // know what "note", "attach", "finish" or "cancel" do.
299
+ "flow.journal_start": "mutate",
300
+ "flow.journal_note": "mutate",
301
+ "flow.journal_attach": "mutate",
302
+ "flow.journal_finish": "mutate",
303
+ "flow.journal_cancel": "mutate",
304
+ "flow.journal_delete": "mutate",
305
+ "flow.journal_list": "read",
306
+ "flow.journal_get": "read",
307
+ "flow.journal_status": "read",
308
+ "flow.skill_install": "mutate",
309
+ "flow.skill_remove": "mutate",
310
+ "flow.skill_list": "read",
311
+ "flow.skill_get": "read",
312
+ "flow.skill_check": "read",
166
313
  };
167
314
  /** Split `category.action`, tolerating an action name that contains a dot. */
168
315
  export function splitTaskName(taskName) {
@@ -1 +1 @@
1
- {"version":3,"file":"action-class.js","sourceRoot":"","sources":["../src/action-class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-class.js","sourceRoot":"","sources":["../src/action-class.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ import type { ActionSpec, ToolDef } from "./types.js";
2
+ import { type ActionClass } from "./action-class.js";
3
+ export interface ParamSchema {
4
+ name: string;
5
+ /** Wire type, unwrapped through optional/default/nullable. */
6
+ type: string;
7
+ required: boolean;
8
+ description?: string;
9
+ /** Allowed values, when the parameter is an enum or a union of literals. */
10
+ enumValues?: string[];
11
+ /** Default applied by the schema when the caller omits the parameter. */
12
+ default?: unknown;
13
+ /**
14
+ * Where this name was found. A parameter missing `declared` is stripped
15
+ * before the handler sees it, whatever the description promises.
16
+ */
17
+ sources: Array<"documented" | "forwards" | "declared">;
18
+ /**
19
+ * Index into the action's `alternatives` when this parameter is one of a
20
+ * choice. `required` is false for every member of a choice, because the
21
+ * handler takes either one; what has to be satisfied is the group.
22
+ */
23
+ alternativeGroup?: number;
24
+ }
25
+ export interface ActionSchema {
26
+ tool: string;
27
+ action: string;
28
+ description: string;
29
+ /** The C++ bridge method this dispatches to, when it dispatches to one. */
30
+ bridge?: string;
31
+ /** True when the action runs in the server process with no editor call. */
32
+ local: boolean;
33
+ /** Longer wait this action declares for itself, in milliseconds. */
34
+ timeoutMs?: number;
35
+ /**
36
+ * Whether this observes the editor or changes it (#817's taxonomy).
37
+ *
38
+ * MCP's own readOnlyHint is per TOOL, and every tool here is a category
39
+ * holding both reads and mutations, so the manifest cannot carry this. A
40
+ * harness that wants to auto-approve reads and prompt on writes reads it
41
+ * from here instead of maintaining its own list.
42
+ *
43
+ * read observes; landing it in the wrong editor changes nothing
44
+ * mutate may change the editor, its project on disk, or its process
45
+ * unknown decided by a parameter (an arbitrary python string, a wrapped
46
+ * tool name), and therefore gated exactly like mutate
47
+ */
48
+ class: ActionClass;
49
+ params: ParamSchema[];
50
+ /**
51
+ * Choices the action offers, when it offers any.
52
+ *
53
+ * `level.delete_actor` takes `actorLabel OR actorPath`, and reporting both
54
+ * as required would have a caller send two ways of naming one actor, while
55
+ * reporting both as optional would have it send neither. Neither is
56
+ * individually required and the group is, so the group is what is published:
57
+ * each branch is a set of names that go together, and `required` says
58
+ * whether one of the branches has to be supplied.
59
+ */
60
+ alternatives?: AlternativeGroup[];
61
+ /**
62
+ * Names promised by the description or read by `mapParams` that the category
63
+ * does not declare. Passing one of these has no effect.
64
+ */
65
+ drift: string[];
66
+ }
67
+ /**
68
+ * A parameter named by an action's `Params:` clause.
69
+ *
70
+ * `group` is set when the clause offered the name as one of a choice
71
+ * (`actorLabel OR actorPath`). A member of a choice is never individually
72
+ * required, however the clause marks it, because the handler takes either.
73
+ */
74
+ export interface DocumentedParam {
75
+ name: string;
76
+ optional: boolean;
77
+ /** Index into the parse's `alternatives`, when this name is one of a choice. */
78
+ group?: number;
79
+ }
80
+ /**
81
+ * A choice the clause offered.
82
+ *
83
+ * Each branch is the set of names that go together, so `name + packagePath? OR
84
+ * materialPath` has branches `[["name", "packagePath"], ["materialPath"]]`:
85
+ * what the caller supplies is one branch, not one name.
86
+ */
87
+ export interface AlternativeGroup {
88
+ branches: string[][];
89
+ /** True when the action needs one of the branches. */
90
+ required: boolean;
91
+ }
92
+ export interface DocumentedParams {
93
+ params: DocumentedParam[];
94
+ alternatives: AlternativeGroup[];
95
+ }
96
+ /**
97
+ * Pull the parameters out of the `Params:` clause every action carries.
98
+ *
99
+ * `known`, when given, is the category's declared keys. It settles the two
100
+ * places where the clause alone is ambiguous - a name behind a head connective
101
+ * and a name inside a bracket - by asking whether the wire would accept it.
102
+ * It only ever admits a name, never refuses one that stands in plain parameter
103
+ * position, so a name the description invents is still reported and still
104
+ * shows up as drift.
105
+ */
106
+ export declare function parseParams(description: string, known?: ReadonlySet<string>): DocumentedParams;
107
+ /** The parameters the `Params:` clause names, without the choice structure. */
108
+ export declare function parseParamsClause(description: string, known?: ReadonlySet<string>): DocumentedParam[];
109
+ /**
110
+ * The parameter keys an action's `mapParams` closure reads.
111
+ *
112
+ * Reading the compiled source is the only way to see this: `mapParams` is an
113
+ * opaque function by the time the registry is built. It is a best-effort
114
+ * signal - a closure that spreads its argument reads everything and shows
115
+ * nothing here - so it only ever adds names, never removes them.
116
+ */
117
+ export declare function forwardedParams(spec: ActionSpec): string[];
118
+ /** Build the full schema for one action of one tool. */
119
+ export declare function actionSchema(tool: ToolDef, action: string): ActionSchema;
120
+ /**
121
+ * Resolve an action reference to the tools that provide it.
122
+ *
123
+ * Accepts `tool.action`, `tool:action`, `tool action`, or a bare action name,
124
+ * which may be provided by more than one category (`list`, `save`, `create`).
125
+ * All matches come back so the caller can disambiguate rather than being
126
+ * handed whichever one sorted first.
127
+ */
128
+ export declare function resolveActionRef(ref: string, tools: ToolDef[]): Array<{
129
+ tool: ToolDef;
130
+ action: string;
131
+ }>;
132
+ /** Close spellings for an action name that did not resolve. */
133
+ export declare function suggestActions(ref: string, tools: ToolDef[], limit?: number): string[];
134
+ /**
135
+ * How close two action names are, on 0..1.
136
+ *
137
+ * Substring containment dominates, because the realistic miss is a caller who
138
+ * remembers part of the name (`bones` for `list_skeleton_bones`) rather than
139
+ * one who transposes two letters. Edit distance catches the typo case below
140
+ * that, and anything under a third of the name matching scores zero so the
141
+ * suggestion list stays short enough to read.
142
+ */
143
+ export declare function similarity(a: string, b: string): number;
144
+ /**
145
+ * The closest spellings to a missed action name, out of a plain name list.
146
+ *
147
+ * Separate from `suggestActions` because the dispatcher has only its own
148
+ * category's keys at the point it fails, and importing the whole graph there
149
+ * would tie a per-call error path to the session registry.
150
+ */
151
+ export declare function nearestActions(ref: string, available: string[], limit?: number): string[];
152
+ /**
153
+ * Every action on the surface, with the drift each one carries. Used by the
154
+ * schema-drift unit test and by `project(describe_action)` when it is asked
155
+ * for a whole category rather than one action.
156
+ */
157
+ export declare function allActionSchemas(tools: ToolDef[]): ActionSchema[];