ue-mcp 1.1.20 → 1.1.21

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 (41) hide show
  1. package/README.md +1 -1
  2. package/dist/bridge.d.ts +18 -5
  3. package/dist/bridge.js +57 -14
  4. package/dist/bridge.js.map +1 -1
  5. package/dist/errors.d.ts +4 -1
  6. package/dist/errors.js +3 -0
  7. package/dist/errors.js.map +1 -1
  8. package/dist/global-config.d.ts +2 -2
  9. package/dist/global-config.js +2 -2
  10. package/dist/index.js +13 -3
  11. package/dist/index.js.map +1 -1
  12. package/dist/init.js +7 -0
  13. package/dist/init.js.map +1 -1
  14. package/dist/locking.d.ts +29 -0
  15. package/dist/locking.js +136 -0
  16. package/dist/locking.js.map +1 -0
  17. package/dist/port.d.ts +16 -0
  18. package/dist/port.js +42 -0
  19. package/dist/port.js.map +1 -0
  20. package/dist/project.d.ts +11 -0
  21. package/dist/project.js +1 -1
  22. package/dist/project.js.map +1 -1
  23. package/dist/schemas.d.ts +51 -0
  24. package/dist/schemas.js +19 -0
  25. package/dist/schemas.js.map +1 -1
  26. package/dist/tool-counts.json +6 -6
  27. package/dist/tools/asset.js +8 -0
  28. package/dist/tools/asset.js.map +1 -1
  29. package/dist/tools/blueprint.js +1 -0
  30. package/dist/tools/blueprint.js.map +1 -1
  31. package/dist/ue-mcp.default.yml +24 -0
  32. package/package.json +2 -2
  33. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.cpp +65 -0
  34. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/BridgeServer.h +11 -0
  35. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.cpp +328 -0
  36. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/DiffHandlers.h +36 -0
  37. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LockHandlers.cpp +107 -0
  38. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/Handlers/LockHandlers.h +25 -0
  39. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/LockRegistry.cpp +121 -0
  40. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/LockRegistry.h +67 -0
  41. package/plugin/ue_mcp_bridge/Source/UE_MCP_Bridge/Private/UE_MCP_Bridge.cpp +8 -3
@@ -1 +1 @@
1
- {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/tools/blueprint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blueprint.js","sourceRoot":"","sources":["../../src/tools/blueprint.ts"],"names":[],"mappings":"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"}
@@ -699,6 +699,24 @@ tasks:
699
699
  description: "Author a UserDefinedEnum content asset. op=add_value appends an enumerator (authored name is auto-assigned; pass displayName - or name - to set the editable display text). op=rename_value sets a new displayName on the enumerator resolved by index or name (matches short or display name). op=remove_value deletes it. Recompiles dependents automatically. Native UEnums are not editable. Params: assetPath, op (add_value|rename_value|remove_value), displayName?, name?, index? (#686)"
700
700
  options:
701
701
  method: edit_user_defined_enum
702
+ asset.lock:
703
+ class_path: ue-mcp.bridge
704
+ group: asset
705
+ description: "Acquire an exclusive lock on an asset for this session. Returns acquired=true, or acquired=false with holder{sessionId,ttlSecondsRemaining} when another session holds it. Params: assetPath, ttlSeconds? (default 300), sessionId?"
706
+ options:
707
+ method: acquire_lock
708
+ asset.unlock:
709
+ class_path: ue-mcp.bridge
710
+ group: asset
711
+ description: "Release an asset lock held by this session (or force=true to break any holder's lock). Params: assetPath, force?, sessionId?"
712
+ options:
713
+ method: release_lock
714
+ asset.list_locks:
715
+ class_path: ue-mcp.bridge
716
+ group: asset
717
+ description: List all currently-held asset locks with holder session id, acquiredAt, and ttlSecondsRemaining.
718
+ options:
719
+ method: list_locks
702
720
 
703
721
  # ── blueprint ──
704
722
  blueprint.read:
@@ -743,6 +761,12 @@ tasks:
743
761
  description: "Forward (classes/functions/assets) or reverse (referencers) deps. Params: assetPath, reverse?"
744
762
  options:
745
763
  method: get_blueprint_dependencies
764
+ blueprint.diff:
765
+ class_path: ue-mcp.bridge
766
+ group: blueprint
767
+ description: "Semantic structural diff between two Blueprints (binary uassets are unreviewable in git). Compares parent class, variables (type/default), functions/macros, components, and per-graph node + connection deltas keyed on stable node GUIDs so edits are matched rather than shown as remove+add. Returns a structured delta plus a human summary and changeCount. Params: assetPath (base/A), otherPath (compare/B). Revision-based diffing (fromRevision/toRevision via source control) is a staged follow-up."
768
+ options:
769
+ method: diff_blueprint
746
770
  blueprint.create:
747
771
  class_path: ue-mcp.bridge
748
772
  group: blueprint
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ue-mcp",
3
- "version": "1.1.20",
4
- "description": "Unreal Engine MCP server - 24 tools, 719+ actions for AI-driven editor control",
3
+ "version": "1.1.21",
4
+ "description": "Unreal Engine MCP server - 24 tools, 723+ actions for AI-driven editor control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "exports": {
@@ -5,11 +5,15 @@
5
5
  #include "Serialization/JsonSerializer.h"
6
6
  #include "Serialization/JsonWriter.h"
7
7
  #include "HAL/PlatformProcess.h"
8
+ #include "HAL/PlatformMisc.h"
8
9
  #include "HAL/FileManager.h"
9
10
  #include "Misc/FileHelper.h"
10
11
  #include "Misc/Paths.h"
11
12
  #include "Misc/DateTime.h"
12
13
  #include "Misc/Timespan.h"
14
+ #include "Misc/CommandLine.h"
15
+ #include "Misc/Parse.h"
16
+ #include "Misc/SecureHash.h"
13
17
  #include "Async/Async.h"
14
18
  #include "Handlers/EditorHandlers.h"
15
19
  #include "Handlers/AssetHandlers.h"
@@ -37,6 +41,8 @@
37
41
  #include "Handlers/ChooserHandlers.h"
38
42
  #include "Handlers/EpicHandlers.h"
39
43
  #include "Handlers/FabHandlers.h"
44
+ #include "Handlers/LockHandlers.h"
45
+ #include "Handlers/DiffHandlers.h"
40
46
 
41
47
  // Platform-specific socket includes
42
48
  #if PLATFORM_WINDOWS
@@ -96,6 +102,8 @@ FMCPBridgeServer::FMCPBridgeServer(int32 Port)
96
102
  FChooserHandlers::RegisterHandlers(HandlerRegistry);
97
103
  FEpicHandlers::RegisterHandlers(HandlerRegistry);
98
104
  FFabHandlers::RegisterHandlers(HandlerRegistry);
105
+ FLockHandlers::RegisterHandlers(HandlerRegistry);
106
+ FDiffHandlers::RegisterHandlers(HandlerRegistry);
99
107
  }
100
108
 
101
109
  FMCPBridgeServer::~FMCPBridgeServer()
@@ -360,6 +368,63 @@ void FMCPBridgeServer::DeletePortLockfile()
360
368
  }
361
369
  }
362
370
 
371
+ // Deterministic per-worktree base port. MUST match src/port.ts byte-for-byte:
372
+ // normalize the project root (forward slashes, no trailing slash, lowercased),
373
+ // SHA-1 the UTF-8 bytes, fold the first 4 bytes into the 49152-65535 ephemeral
374
+ // range. SHA-1 (not SHA-256) because FSHA1 is available on every platform with
375
+ // no extra dependency; the hash only spreads ports, it is not security.
376
+ int32 FMCPBridgeServer::DeriveProjectPort(const FString& ProjectRootDir)
377
+ {
378
+ FString Norm = ProjectRootDir;
379
+ Norm.ReplaceInline(TEXT("\\"), TEXT("/"));
380
+ while (Norm.EndsWith(TEXT("/")))
381
+ {
382
+ Norm = Norm.LeftChop(1);
383
+ }
384
+ Norm.ToLowerInline();
385
+
386
+ FTCHARToUTF8 Utf8(*Norm);
387
+ uint8 Hash[20];
388
+ FSHA1 Sha;
389
+ Sha.Update(reinterpret_cast<const uint8*>(Utf8.Get()), Utf8.Length());
390
+ Sha.Final();
391
+ Sha.GetHash(Hash);
392
+
393
+ const uint32 V = ((uint32)Hash[0] << 24) | ((uint32)Hash[1] << 16) | ((uint32)Hash[2] << 8) | (uint32)Hash[3];
394
+ constexpr uint32 EphemeralBase = 49152;
395
+ constexpr uint32 EphemeralSpan = 65535u - EphemeralBase + 1u; // 16384
396
+ return (int32)(EphemeralBase + (V % EphemeralSpan));
397
+ }
398
+
399
+ int32 FMCPBridgeServer::ResolveConfiguredPort()
400
+ {
401
+ // 1. Explicit command-line override: -MCPPort=NNNN
402
+ int32 CmdPort = 0;
403
+ if (FParse::Value(FCommandLine::Get(), TEXT("MCPPort="), CmdPort) && CmdPort > 0 && CmdPort < 65536)
404
+ {
405
+ UE_LOG(LogMCPBridge, Log, TEXT("[UE-MCP] Using port %d from -MCPPort command line"), CmdPort);
406
+ return CmdPort;
407
+ }
408
+
409
+ // 2. Environment override: UE_MCP_PORT (matches the Node client's env var).
410
+ const FString EnvPort = FPlatformMisc::GetEnvironmentVariable(TEXT("UE_MCP_PORT"));
411
+ if (!EnvPort.IsEmpty())
412
+ {
413
+ const int32 P = FCString::Atoi(*EnvPort);
414
+ if (P > 0 && P < 65536)
415
+ {
416
+ UE_LOG(LogMCPBridge, Log, TEXT("[UE-MCP] Using port %d from UE_MCP_PORT env"), P);
417
+ return P;
418
+ }
419
+ }
420
+
421
+ // 3. Deterministic per-worktree port derived from the project root path.
422
+ const FString ProjectRoot = FPaths::ConvertRelativePathToFull(FPaths::ProjectDir());
423
+ const int32 Derived = DeriveProjectPort(ProjectRoot);
424
+ UE_LOG(LogMCPBridge, Log, TEXT("[UE-MCP] Derived per-project port %d from %s"), Derived, *ProjectRoot);
425
+ return Derived;
426
+ }
427
+
363
428
  TSharedPtr<FJsonObject> FMCPBridgeServer::ParseJsonRpcRequest(const FString& Message)
364
429
  {
365
430
  TSharedPtr<FJsonObject> JsonObject;
@@ -39,6 +39,17 @@ public:
39
39
  static void WritePortLockfile(int32 PortValue);
40
40
  static void DeletePortLockfile();
41
41
 
42
+ // Deterministic per-worktree base port. Derived from a hash of the project
43
+ // root path so every checkout gets a stable, launch-order-independent port
44
+ // that the Node client computes identically (see src/port.ts). Keep the two
45
+ // implementations in lockstep.
46
+ static int32 DeriveProjectPort(const FString& ProjectRootDir);
47
+
48
+ // Resolve the base port to bind: -MCPPort= command line > UE_MCP_PORT env >
49
+ // deterministic derived port. The probe loop in Run() walks upward from
50
+ // here on collision, and the actual bound port is published to the lockfile.
51
+ static int32 ResolveConfiguredPort();
52
+
42
53
  // Get handler registry
43
54
  FMCPHandlerRegistry& GetHandlerRegistry() { return HandlerRegistry; }
44
55
 
@@ -0,0 +1,328 @@
1
+ #include "Handlers/DiffHandlers.h"
2
+ #include "HandlerRegistry.h"
3
+ #include "HandlerUtils.h"
4
+ #include "Engine/Blueprint.h"
5
+ #include "EdGraph/EdGraph.h"
6
+ #include "EdGraph/EdGraphNode.h"
7
+ #include "EdGraph/EdGraphPin.h"
8
+ #include "Engine/SimpleConstructionScript.h"
9
+ #include "Engine/SCS_Node.h"
10
+
11
+ // ── Structural extraction helpers ────────────────────────────────────────────
12
+ namespace
13
+ {
14
+ /** Compact, stable string for a pin type, e.g. "int", "object(Actor)",
15
+ * "struct(Vector)[]". Used to detect variable type changes. */
16
+ FString PinTypeToShortString(const FEdGraphPinType& T)
17
+ {
18
+ FString S = T.PinCategory.ToString();
19
+ if (const UObject* Sub = T.PinSubCategoryObject.Get())
20
+ {
21
+ S += TEXT("(") + Sub->GetName() + TEXT(")");
22
+ }
23
+ else if (!T.PinSubCategory.IsNone())
24
+ {
25
+ S += TEXT("(") + T.PinSubCategory.ToString() + TEXT(")");
26
+ }
27
+ switch (T.ContainerType)
28
+ {
29
+ case EPinContainerType::Array: S += TEXT("[]"); break;
30
+ case EPinContainerType::Set: S += TEXT("{}"); break;
31
+ case EPinContainerType::Map: S += TEXT("{:}"); break;
32
+ default: break;
33
+ }
34
+ return S;
35
+ }
36
+
37
+ /** All named graphs of a Blueprint keyed by graph name (event graphs +
38
+ * function graphs + macro graphs). */
39
+ TMap<FString, UEdGraph*> CollectGraphs(UBlueprint* BP)
40
+ {
41
+ TMap<FString, UEdGraph*> Out;
42
+ auto Add = [&Out](const TArray<UEdGraph*>& Graphs)
43
+ {
44
+ for (UEdGraph* G : Graphs)
45
+ {
46
+ if (G) Out.Add(G->GetName(), G);
47
+ }
48
+ };
49
+ Add(BP->UbergraphPages);
50
+ Add(BP->FunctionGraphs);
51
+ Add(BP->MacroGraphs);
52
+ return Out;
53
+ }
54
+
55
+ TSharedPtr<FJsonObject> NodeSummary(UEdGraphNode* Node)
56
+ {
57
+ TSharedPtr<FJsonObject> Obj = MakeShared<FJsonObject>();
58
+ Obj->SetStringField(TEXT("id"), Node->NodeGuid.ToString());
59
+ Obj->SetStringField(TEXT("class"), Node->GetClass()->GetName());
60
+ Obj->SetStringField(TEXT("title"), Node->GetNodeTitle(ENodeTitleType::ListView).ToString());
61
+ return Obj;
62
+ }
63
+
64
+ /** Canonical strings for every connection in a graph, emitted once per link
65
+ * (from the output side). Format: "SrcGuid.Pin -> DstGuid.Pin". */
66
+ TSet<FString> CollectConnections(UEdGraph* Graph)
67
+ {
68
+ TSet<FString> Out;
69
+ for (UEdGraphNode* Node : Graph->Nodes)
70
+ {
71
+ if (!Node) continue;
72
+ for (UEdGraphPin* Pin : Node->Pins)
73
+ {
74
+ if (!Pin || Pin->Direction != EGPD_Output) continue;
75
+ for (UEdGraphPin* Linked : Pin->LinkedTo)
76
+ {
77
+ if (!Linked || !Linked->GetOwningNodeUnchecked()) continue;
78
+ Out.Add(FString::Printf(TEXT("%s.%s -> %s.%s"),
79
+ *Node->NodeGuid.ToString(), *Pin->PinName.ToString(),
80
+ *Linked->GetOwningNode()->NodeGuid.ToString(), *Linked->PinName.ToString()));
81
+ }
82
+ }
83
+ }
84
+ return Out;
85
+ }
86
+
87
+ TArray<TSharedPtr<FJsonValue>> StringsToJson(const TArray<FString>& In)
88
+ {
89
+ TArray<TSharedPtr<FJsonValue>> Out;
90
+ Out.Reserve(In.Num());
91
+ for (const FString& S : In) Out.Add(MakeShared<FJsonValueString>(S));
92
+ return Out;
93
+ }
94
+ }
95
+
96
+ void FDiffHandlers::RegisterHandlers(FMCPHandlerRegistry& Registry)
97
+ {
98
+ Registry.RegisterHandler(TEXT("diff_blueprint"), &FDiffHandlers::DiffBlueprint);
99
+ Registry.RegisterHandler(TEXT("diff_asset"), &FDiffHandlers::DiffAsset);
100
+ }
101
+
102
+ TSharedPtr<FJsonValue> FDiffHandlers::DiffBlueprint(const TSharedPtr<FJsonObject>& Params)
103
+ {
104
+ FString PathA;
105
+ if (TSharedPtr<FJsonValue> Err = RequireStringAlt(Params, TEXT("assetPath"), TEXT("path"), PathA)) return Err;
106
+ FString PathB;
107
+ if (TSharedPtr<FJsonValue> Err = RequireString(Params, TEXT("otherPath"), PathB)) return Err;
108
+
109
+ // Revision-based diffing (loading a depot revision into a transient package)
110
+ // is a documented follow-up; for now both sides are loadable asset paths.
111
+ if (Params->HasField(TEXT("fromRevision")) || Params->HasField(TEXT("toRevision")))
112
+ {
113
+ return MCPError(TEXT("Revision-based diffing (fromRevision/toRevision via source control) is not wired yet - pass 'otherPath' to diff two loaded Blueprint assets. Revision loading is a staged follow-up."));
114
+ }
115
+
116
+ UBlueprint* A = LoadAssetByPath<UBlueprint>(PathA);
117
+ if (!A) return MCPError(FString::Printf(TEXT("Blueprint not found: %s"), *PathA));
118
+ UBlueprint* B = LoadAssetByPath<UBlueprint>(PathB);
119
+ if (!B) return MCPError(FString::Printf(TEXT("Blueprint not found: %s"), *PathB));
120
+
121
+ TSharedPtr<FJsonObject> Result = MCPSuccess();
122
+ Result->SetStringField(TEXT("assetType"), TEXT("Blueprint"));
123
+ Result->SetStringField(TEXT("from"), PathA);
124
+ Result->SetStringField(TEXT("to"), PathB);
125
+
126
+ int32 ChangeCount = 0;
127
+
128
+ // ── Parent class ────────────────────────────────────────────────────────
129
+ const FString ParentA = A->ParentClass ? A->ParentClass->GetPathName() : TEXT("");
130
+ const FString ParentB = B->ParentClass ? B->ParentClass->GetPathName() : TEXT("");
131
+ if (ParentA != ParentB)
132
+ {
133
+ TSharedPtr<FJsonObject> PC = MakeShared<FJsonObject>();
134
+ PC->SetStringField(TEXT("from"), ParentA);
135
+ PC->SetStringField(TEXT("to"), ParentB);
136
+ Result->SetObjectField(TEXT("parentClassChanged"), PC);
137
+ ++ChangeCount;
138
+ }
139
+
140
+ // ── Variables ───────────────────────────────────────────────────────────
141
+ auto VarMap = [](UBlueprint* BP)
142
+ {
143
+ TMap<FString, TPair<FString, FString>> M; // name -> (type, default)
144
+ for (const FBPVariableDescription& V : BP->NewVariables)
145
+ {
146
+ M.Add(V.VarName.ToString(), TPair<FString, FString>(PinTypeToShortString(V.VarType), V.DefaultValue));
147
+ }
148
+ return M;
149
+ };
150
+ const TMap<FString, TPair<FString, FString>> VA = VarMap(A);
151
+ const TMap<FString, TPair<FString, FString>> VB = VarMap(B);
152
+ {
153
+ TArray<FString> Added, Removed;
154
+ TArray<TSharedPtr<FJsonValue>> Changed;
155
+ for (const auto& Pair : VB) if (!VA.Contains(Pair.Key)) Added.Add(Pair.Key);
156
+ for (const auto& Pair : VA)
157
+ {
158
+ if (const TPair<FString, FString>* Bv = VB.Find(Pair.Key))
159
+ {
160
+ if (Bv->Key != Pair.Value.Key || Bv->Value != Pair.Value.Value)
161
+ {
162
+ TSharedPtr<FJsonObject> C = MakeShared<FJsonObject>();
163
+ C->SetStringField(TEXT("name"), Pair.Key);
164
+ C->SetStringField(TEXT("fromType"), Pair.Value.Key);
165
+ C->SetStringField(TEXT("toType"), Bv->Key);
166
+ C->SetStringField(TEXT("fromDefault"), Pair.Value.Value);
167
+ C->SetStringField(TEXT("toDefault"), Bv->Value);
168
+ Changed.Add(MakeShared<FJsonValueObject>(C));
169
+ }
170
+ }
171
+ else
172
+ {
173
+ Removed.Add(Pair.Key);
174
+ }
175
+ }
176
+ if (Added.Num() || Removed.Num() || Changed.Num())
177
+ {
178
+ TSharedPtr<FJsonObject> V = MakeShared<FJsonObject>();
179
+ V->SetArrayField(TEXT("added"), StringsToJson(Added));
180
+ V->SetArrayField(TEXT("removed"), StringsToJson(Removed));
181
+ V->SetArrayField(TEXT("changed"), Changed);
182
+ Result->SetObjectField(TEXT("variables"), V);
183
+ ChangeCount += Added.Num() + Removed.Num() + Changed.Num();
184
+ }
185
+ }
186
+
187
+ // ── Components (SimpleConstructionScript) ───────────────────────────────
188
+ auto CompMap = [](UBlueprint* BP)
189
+ {
190
+ TMap<FString, FString> M; // name -> class
191
+ if (BP->SimpleConstructionScript)
192
+ {
193
+ for (USCS_Node* Node : BP->SimpleConstructionScript->GetAllNodes())
194
+ {
195
+ if (!Node) continue;
196
+ const FString Name = Node->GetVariableName().ToString();
197
+ const FString Cls = Node->ComponentClass ? Node->ComponentClass->GetName() : TEXT("");
198
+ M.Add(Name, Cls);
199
+ }
200
+ }
201
+ return M;
202
+ };
203
+ const TMap<FString, FString> CA = CompMap(A);
204
+ const TMap<FString, FString> CB = CompMap(B);
205
+ {
206
+ TArray<TSharedPtr<FJsonValue>> Added, Removed, Changed;
207
+ for (const auto& Pair : CB) if (!CA.Contains(Pair.Key))
208
+ {
209
+ TSharedPtr<FJsonObject> O = MakeShared<FJsonObject>();
210
+ O->SetStringField(TEXT("name"), Pair.Key);
211
+ O->SetStringField(TEXT("class"), Pair.Value);
212
+ Added.Add(MakeShared<FJsonValueObject>(O));
213
+ }
214
+ for (const auto& Pair : CA)
215
+ {
216
+ if (const FString* Bc = CB.Find(Pair.Key))
217
+ {
218
+ if (*Bc != Pair.Value)
219
+ {
220
+ TSharedPtr<FJsonObject> O = MakeShared<FJsonObject>();
221
+ O->SetStringField(TEXT("name"), Pair.Key);
222
+ O->SetStringField(TEXT("fromClass"), Pair.Value);
223
+ O->SetStringField(TEXT("toClass"), *Bc);
224
+ Changed.Add(MakeShared<FJsonValueObject>(O));
225
+ }
226
+ }
227
+ else
228
+ {
229
+ TSharedPtr<FJsonObject> O = MakeShared<FJsonObject>();
230
+ O->SetStringField(TEXT("name"), Pair.Key);
231
+ O->SetStringField(TEXT("class"), Pair.Value);
232
+ Removed.Add(MakeShared<FJsonValueObject>(O));
233
+ }
234
+ }
235
+ if (Added.Num() || Removed.Num() || Changed.Num())
236
+ {
237
+ TSharedPtr<FJsonObject> C = MakeShared<FJsonObject>();
238
+ C->SetArrayField(TEXT("added"), Added);
239
+ C->SetArrayField(TEXT("removed"), Removed);
240
+ C->SetArrayField(TEXT("changed"), Changed);
241
+ Result->SetObjectField(TEXT("components"), C);
242
+ ChangeCount += Added.Num() + Removed.Num() + Changed.Num();
243
+ }
244
+ }
245
+
246
+ // ── Graphs: node + connection deltas keyed on stable NodeGuid ───────────
247
+ const TMap<FString, UEdGraph*> GA = CollectGraphs(A);
248
+ const TMap<FString, UEdGraph*> GB = CollectGraphs(B);
249
+ {
250
+ // Functions/macros/event-graphs present on only one side.
251
+ TArray<FString> GraphsAdded, GraphsRemoved;
252
+ for (const auto& Pair : GB) if (!GA.Contains(Pair.Key)) GraphsAdded.Add(Pair.Key);
253
+ for (const auto& Pair : GA) if (!GB.Contains(Pair.Key)) GraphsRemoved.Add(Pair.Key);
254
+ if (GraphsAdded.Num() || GraphsRemoved.Num())
255
+ {
256
+ TSharedPtr<FJsonObject> G = MakeShared<FJsonObject>();
257
+ G->SetArrayField(TEXT("added"), StringsToJson(GraphsAdded));
258
+ G->SetArrayField(TEXT("removed"), StringsToJson(GraphsRemoved));
259
+ Result->SetObjectField(TEXT("graphsAddedRemoved"), G);
260
+ ChangeCount += GraphsAdded.Num() + GraphsRemoved.Num();
261
+ }
262
+
263
+ TArray<TSharedPtr<FJsonValue>> GraphDeltas;
264
+ for (const auto& Pair : GA)
265
+ {
266
+ UEdGraph* GraphA = Pair.Value;
267
+ UEdGraph* const* GraphBPtr = GB.Find(Pair.Key);
268
+ if (!GraphBPtr) continue; // whole-graph add/remove handled above
269
+ UEdGraph* GraphB = *GraphBPtr;
270
+
271
+ TMap<FString, UEdGraphNode*> NodesA, NodesB;
272
+ for (UEdGraphNode* N : GraphA->Nodes) if (N) NodesA.Add(N->NodeGuid.ToString(), N);
273
+ for (UEdGraphNode* N : GraphB->Nodes) if (N) NodesB.Add(N->NodeGuid.ToString(), N);
274
+
275
+ TArray<TSharedPtr<FJsonValue>> NodesAdded, NodesRemoved;
276
+ for (const auto& NB : NodesB) if (!NodesA.Contains(NB.Key)) NodesAdded.Add(MakeShared<FJsonValueObject>(NodeSummary(NB.Value)));
277
+ for (const auto& NA : NodesA) if (!NodesB.Contains(NA.Key)) NodesRemoved.Add(MakeShared<FJsonValueObject>(NodeSummary(NA.Value)));
278
+
279
+ const TSet<FString> ConnA = CollectConnections(GraphA);
280
+ const TSet<FString> ConnB = CollectConnections(GraphB);
281
+ TArray<FString> ConnAdded, ConnRemoved;
282
+ for (const FString& C : ConnB) if (!ConnA.Contains(C)) ConnAdded.Add(C);
283
+ for (const FString& C : ConnA) if (!ConnB.Contains(C)) ConnRemoved.Add(C);
284
+
285
+ if (NodesAdded.Num() || NodesRemoved.Num() || ConnAdded.Num() || ConnRemoved.Num())
286
+ {
287
+ TSharedPtr<FJsonObject> GD = MakeShared<FJsonObject>();
288
+ GD->SetStringField(TEXT("graph"), Pair.Key);
289
+ GD->SetArrayField(TEXT("nodesAdded"), NodesAdded);
290
+ GD->SetArrayField(TEXT("nodesRemoved"), NodesRemoved);
291
+ GD->SetArrayField(TEXT("connectionsAdded"), StringsToJson(ConnAdded));
292
+ GD->SetArrayField(TEXT("connectionsRemoved"), StringsToJson(ConnRemoved));
293
+ GraphDeltas.Add(MakeShared<FJsonValueObject>(GD));
294
+ ChangeCount += NodesAdded.Num() + NodesRemoved.Num() + ConnAdded.Num() + ConnRemoved.Num();
295
+ }
296
+ }
297
+ if (GraphDeltas.Num())
298
+ {
299
+ Result->SetArrayField(TEXT("graphs"), GraphDeltas);
300
+ }
301
+ }
302
+
303
+ Result->SetNumberField(TEXT("changeCount"), ChangeCount);
304
+ Result->SetBoolField(TEXT("identical"), ChangeCount == 0);
305
+ Result->SetStringField(TEXT("summary"), ChangeCount == 0
306
+ ? FString::Printf(TEXT("%s and %s are structurally identical"), *PathA, *PathB)
307
+ : FString::Printf(TEXT("%d structural change(s) from %s to %s"), ChangeCount, *PathA, *PathB));
308
+
309
+ return MCPResult(Result);
310
+ }
311
+
312
+ TSharedPtr<FJsonValue> FDiffHandlers::DiffAsset(const TSharedPtr<FJsonObject>& Params)
313
+ {
314
+ FString PathA;
315
+ if (TSharedPtr<FJsonValue> Err = RequireStringAlt(Params, TEXT("assetPath"), TEXT("path"), PathA)) return Err;
316
+
317
+ if (UObject* Asset = LoadAssetByPath<UObject>(PathA))
318
+ {
319
+ if (Asset->IsA<UBlueprint>())
320
+ {
321
+ return DiffBlueprint(Params);
322
+ }
323
+ return MCPError(FString::Printf(
324
+ TEXT("Diffing '%s' assets is not supported yet. Blueprint diffing is available now; StateTree and other graph assets are staged follow-ups."),
325
+ *Asset->GetClass()->GetName()));
326
+ }
327
+ return MCPError(FString::Printf(TEXT("Asset not found: %s"), *PathA));
328
+ }
@@ -0,0 +1,36 @@
1
+ #pragma once
2
+
3
+ #include "CoreMinimal.h"
4
+ #include "Dom/JsonValue.h"
5
+ #include "Dom/JsonObject.h"
6
+
7
+ /**
8
+ * Semantic revision diffing for graph-based binary assets. Blueprint and
9
+ * StateTree assets are opaque to git, so an agent's edits are unreviewable:
10
+ * there is no way to answer "what did this change between two versions".
11
+ *
12
+ * Phase 1 (here): Blueprint structural diff between two loadable asset paths —
13
+ * parent class, variables, functions/macros, components, and per-graph node and
14
+ * connection deltas, keyed on the stable node GUID so a moved or edited node is
15
+ * matched rather than reported as remove+add. Output is a structured JSON delta
16
+ * plus a human-readable summary.
17
+ *
18
+ * Follow-ups (documented, not yet wired): loading an arbitrary source-control
19
+ * revision into a transient package so the "to" side can be a depot revision
20
+ * rather than a second on-disk asset (needs a live SCC spike), then StateTree
21
+ * assets on the same diff spine.
22
+ */
23
+ class FDiffHandlers
24
+ {
25
+ public:
26
+ static void RegisterHandlers(class FMCPHandlerRegistry& Registry);
27
+
28
+ private:
29
+ // Diff two Blueprints loaded from asset paths. Params: assetPath (base/A),
30
+ // otherPath (compare/B). Reports changes as A -> B.
31
+ static TSharedPtr<FJsonValue> DiffBlueprint(const TSharedPtr<FJsonObject>& Params);
32
+
33
+ // Type-routing entry point. Blueprints delegate to DiffBlueprint; other
34
+ // asset classes return a clear "not yet supported" until their phase lands.
35
+ static TSharedPtr<FJsonValue> DiffAsset(const TSharedPtr<FJsonObject>& Params);
36
+ };