blueprint-extractor-mcp 7.0.1 → 7.0.3

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.
@@ -1968,35 +1968,395 @@ export declare const StateTreeTransitionSelectorSchema: z.ZodObject<{
1968
1968
  transitionId?: string | undefined;
1969
1969
  }>;
1970
1970
  export declare const PropertyPathBindingSchema: z.ZodObject<{
1971
- sourcePath: z.ZodString;
1972
- targetPath: z.ZodString;
1971
+ sourcePath: z.ZodUnion<[z.ZodString, z.ZodObject<{
1972
+ structId: z.ZodOptional<z.ZodString>;
1973
+ segments: z.ZodArray<z.ZodObject<{
1974
+ name: z.ZodString;
1975
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
1976
+ instanceStruct: z.ZodOptional<z.ZodString>;
1977
+ }, "strip", z.ZodTypeAny, {
1978
+ name: string;
1979
+ arrayIndex?: number | undefined;
1980
+ instanceStruct?: string | undefined;
1981
+ }, {
1982
+ name: string;
1983
+ arrayIndex?: number | undefined;
1984
+ instanceStruct?: string | undefined;
1985
+ }>, "many">;
1986
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
1987
+ structId: z.ZodOptional<z.ZodString>;
1988
+ segments: z.ZodArray<z.ZodObject<{
1989
+ name: z.ZodString;
1990
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
1991
+ instanceStruct: z.ZodOptional<z.ZodString>;
1992
+ }, "strip", z.ZodTypeAny, {
1993
+ name: string;
1994
+ arrayIndex?: number | undefined;
1995
+ instanceStruct?: string | undefined;
1996
+ }, {
1997
+ name: string;
1998
+ arrayIndex?: number | undefined;
1999
+ instanceStruct?: string | undefined;
2000
+ }>, "many">;
2001
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2002
+ structId: z.ZodOptional<z.ZodString>;
2003
+ segments: z.ZodArray<z.ZodObject<{
2004
+ name: z.ZodString;
2005
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2006
+ instanceStruct: z.ZodOptional<z.ZodString>;
2007
+ }, "strip", z.ZodTypeAny, {
2008
+ name: string;
2009
+ arrayIndex?: number | undefined;
2010
+ instanceStruct?: string | undefined;
2011
+ }, {
2012
+ name: string;
2013
+ arrayIndex?: number | undefined;
2014
+ instanceStruct?: string | undefined;
2015
+ }>, "many">;
2016
+ }, z.ZodTypeAny, "passthrough">>]>;
2017
+ targetPath: z.ZodUnion<[z.ZodString, z.ZodObject<{
2018
+ structId: z.ZodOptional<z.ZodString>;
2019
+ segments: z.ZodArray<z.ZodObject<{
2020
+ name: z.ZodString;
2021
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2022
+ instanceStruct: z.ZodOptional<z.ZodString>;
2023
+ }, "strip", z.ZodTypeAny, {
2024
+ name: string;
2025
+ arrayIndex?: number | undefined;
2026
+ instanceStruct?: string | undefined;
2027
+ }, {
2028
+ name: string;
2029
+ arrayIndex?: number | undefined;
2030
+ instanceStruct?: string | undefined;
2031
+ }>, "many">;
2032
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2033
+ structId: z.ZodOptional<z.ZodString>;
2034
+ segments: z.ZodArray<z.ZodObject<{
2035
+ name: z.ZodString;
2036
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2037
+ instanceStruct: z.ZodOptional<z.ZodString>;
2038
+ }, "strip", z.ZodTypeAny, {
2039
+ name: string;
2040
+ arrayIndex?: number | undefined;
2041
+ instanceStruct?: string | undefined;
2042
+ }, {
2043
+ name: string;
2044
+ arrayIndex?: number | undefined;
2045
+ instanceStruct?: string | undefined;
2046
+ }>, "many">;
2047
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2048
+ structId: z.ZodOptional<z.ZodString>;
2049
+ segments: z.ZodArray<z.ZodObject<{
2050
+ name: z.ZodString;
2051
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2052
+ instanceStruct: z.ZodOptional<z.ZodString>;
2053
+ }, "strip", z.ZodTypeAny, {
2054
+ name: string;
2055
+ arrayIndex?: number | undefined;
2056
+ instanceStruct?: string | undefined;
2057
+ }, {
2058
+ name: string;
2059
+ arrayIndex?: number | undefined;
2060
+ instanceStruct?: string | undefined;
2061
+ }>, "many">;
2062
+ }, z.ZodTypeAny, "passthrough">>]>;
1973
2063
  }, "strip", z.ZodTypeAny, {
1974
- targetPath: string;
1975
- sourcePath: string;
2064
+ targetPath: string | z.objectOutputType<{
2065
+ structId: z.ZodOptional<z.ZodString>;
2066
+ segments: z.ZodArray<z.ZodObject<{
2067
+ name: z.ZodString;
2068
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2069
+ instanceStruct: z.ZodOptional<z.ZodString>;
2070
+ }, "strip", z.ZodTypeAny, {
2071
+ name: string;
2072
+ arrayIndex?: number | undefined;
2073
+ instanceStruct?: string | undefined;
2074
+ }, {
2075
+ name: string;
2076
+ arrayIndex?: number | undefined;
2077
+ instanceStruct?: string | undefined;
2078
+ }>, "many">;
2079
+ }, z.ZodTypeAny, "passthrough">;
2080
+ sourcePath: string | z.objectOutputType<{
2081
+ structId: z.ZodOptional<z.ZodString>;
2082
+ segments: z.ZodArray<z.ZodObject<{
2083
+ name: z.ZodString;
2084
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2085
+ instanceStruct: z.ZodOptional<z.ZodString>;
2086
+ }, "strip", z.ZodTypeAny, {
2087
+ name: string;
2088
+ arrayIndex?: number | undefined;
2089
+ instanceStruct?: string | undefined;
2090
+ }, {
2091
+ name: string;
2092
+ arrayIndex?: number | undefined;
2093
+ instanceStruct?: string | undefined;
2094
+ }>, "many">;
2095
+ }, z.ZodTypeAny, "passthrough">;
1976
2096
  }, {
1977
- targetPath: string;
1978
- sourcePath: string;
2097
+ targetPath: string | z.objectInputType<{
2098
+ structId: z.ZodOptional<z.ZodString>;
2099
+ segments: z.ZodArray<z.ZodObject<{
2100
+ name: z.ZodString;
2101
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2102
+ instanceStruct: z.ZodOptional<z.ZodString>;
2103
+ }, "strip", z.ZodTypeAny, {
2104
+ name: string;
2105
+ arrayIndex?: number | undefined;
2106
+ instanceStruct?: string | undefined;
2107
+ }, {
2108
+ name: string;
2109
+ arrayIndex?: number | undefined;
2110
+ instanceStruct?: string | undefined;
2111
+ }>, "many">;
2112
+ }, z.ZodTypeAny, "passthrough">;
2113
+ sourcePath: string | z.objectInputType<{
2114
+ structId: z.ZodOptional<z.ZodString>;
2115
+ segments: z.ZodArray<z.ZodObject<{
2116
+ name: z.ZodString;
2117
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2118
+ instanceStruct: z.ZodOptional<z.ZodString>;
2119
+ }, "strip", z.ZodTypeAny, {
2120
+ name: string;
2121
+ arrayIndex?: number | undefined;
2122
+ instanceStruct?: string | undefined;
2123
+ }, {
2124
+ name: string;
2125
+ arrayIndex?: number | undefined;
2126
+ instanceStruct?: string | undefined;
2127
+ }>, "many">;
2128
+ }, z.ZodTypeAny, "passthrough">;
1979
2129
  }>;
1980
2130
  export declare const StateTreeBindingsObjectSchema: z.ZodObject<{
1981
2131
  propertyBindings: z.ZodArray<z.ZodObject<{
1982
- sourcePath: z.ZodString;
1983
- targetPath: z.ZodString;
2132
+ sourcePath: z.ZodUnion<[z.ZodString, z.ZodObject<{
2133
+ structId: z.ZodOptional<z.ZodString>;
2134
+ segments: z.ZodArray<z.ZodObject<{
2135
+ name: z.ZodString;
2136
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2137
+ instanceStruct: z.ZodOptional<z.ZodString>;
2138
+ }, "strip", z.ZodTypeAny, {
2139
+ name: string;
2140
+ arrayIndex?: number | undefined;
2141
+ instanceStruct?: string | undefined;
2142
+ }, {
2143
+ name: string;
2144
+ arrayIndex?: number | undefined;
2145
+ instanceStruct?: string | undefined;
2146
+ }>, "many">;
2147
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2148
+ structId: z.ZodOptional<z.ZodString>;
2149
+ segments: z.ZodArray<z.ZodObject<{
2150
+ name: z.ZodString;
2151
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2152
+ instanceStruct: z.ZodOptional<z.ZodString>;
2153
+ }, "strip", z.ZodTypeAny, {
2154
+ name: string;
2155
+ arrayIndex?: number | undefined;
2156
+ instanceStruct?: string | undefined;
2157
+ }, {
2158
+ name: string;
2159
+ arrayIndex?: number | undefined;
2160
+ instanceStruct?: string | undefined;
2161
+ }>, "many">;
2162
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2163
+ structId: z.ZodOptional<z.ZodString>;
2164
+ segments: z.ZodArray<z.ZodObject<{
2165
+ name: z.ZodString;
2166
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2167
+ instanceStruct: z.ZodOptional<z.ZodString>;
2168
+ }, "strip", z.ZodTypeAny, {
2169
+ name: string;
2170
+ arrayIndex?: number | undefined;
2171
+ instanceStruct?: string | undefined;
2172
+ }, {
2173
+ name: string;
2174
+ arrayIndex?: number | undefined;
2175
+ instanceStruct?: string | undefined;
2176
+ }>, "many">;
2177
+ }, z.ZodTypeAny, "passthrough">>]>;
2178
+ targetPath: z.ZodUnion<[z.ZodString, z.ZodObject<{
2179
+ structId: z.ZodOptional<z.ZodString>;
2180
+ segments: z.ZodArray<z.ZodObject<{
2181
+ name: z.ZodString;
2182
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2183
+ instanceStruct: z.ZodOptional<z.ZodString>;
2184
+ }, "strip", z.ZodTypeAny, {
2185
+ name: string;
2186
+ arrayIndex?: number | undefined;
2187
+ instanceStruct?: string | undefined;
2188
+ }, {
2189
+ name: string;
2190
+ arrayIndex?: number | undefined;
2191
+ instanceStruct?: string | undefined;
2192
+ }>, "many">;
2193
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
2194
+ structId: z.ZodOptional<z.ZodString>;
2195
+ segments: z.ZodArray<z.ZodObject<{
2196
+ name: z.ZodString;
2197
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2198
+ instanceStruct: z.ZodOptional<z.ZodString>;
2199
+ }, "strip", z.ZodTypeAny, {
2200
+ name: string;
2201
+ arrayIndex?: number | undefined;
2202
+ instanceStruct?: string | undefined;
2203
+ }, {
2204
+ name: string;
2205
+ arrayIndex?: number | undefined;
2206
+ instanceStruct?: string | undefined;
2207
+ }>, "many">;
2208
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
2209
+ structId: z.ZodOptional<z.ZodString>;
2210
+ segments: z.ZodArray<z.ZodObject<{
2211
+ name: z.ZodString;
2212
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2213
+ instanceStruct: z.ZodOptional<z.ZodString>;
2214
+ }, "strip", z.ZodTypeAny, {
2215
+ name: string;
2216
+ arrayIndex?: number | undefined;
2217
+ instanceStruct?: string | undefined;
2218
+ }, {
2219
+ name: string;
2220
+ arrayIndex?: number | undefined;
2221
+ instanceStruct?: string | undefined;
2222
+ }>, "many">;
2223
+ }, z.ZodTypeAny, "passthrough">>]>;
1984
2224
  }, "strip", z.ZodTypeAny, {
1985
- targetPath: string;
1986
- sourcePath: string;
2225
+ targetPath: string | z.objectOutputType<{
2226
+ structId: z.ZodOptional<z.ZodString>;
2227
+ segments: z.ZodArray<z.ZodObject<{
2228
+ name: z.ZodString;
2229
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2230
+ instanceStruct: z.ZodOptional<z.ZodString>;
2231
+ }, "strip", z.ZodTypeAny, {
2232
+ name: string;
2233
+ arrayIndex?: number | undefined;
2234
+ instanceStruct?: string | undefined;
2235
+ }, {
2236
+ name: string;
2237
+ arrayIndex?: number | undefined;
2238
+ instanceStruct?: string | undefined;
2239
+ }>, "many">;
2240
+ }, z.ZodTypeAny, "passthrough">;
2241
+ sourcePath: string | z.objectOutputType<{
2242
+ structId: z.ZodOptional<z.ZodString>;
2243
+ segments: z.ZodArray<z.ZodObject<{
2244
+ name: z.ZodString;
2245
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2246
+ instanceStruct: z.ZodOptional<z.ZodString>;
2247
+ }, "strip", z.ZodTypeAny, {
2248
+ name: string;
2249
+ arrayIndex?: number | undefined;
2250
+ instanceStruct?: string | undefined;
2251
+ }, {
2252
+ name: string;
2253
+ arrayIndex?: number | undefined;
2254
+ instanceStruct?: string | undefined;
2255
+ }>, "many">;
2256
+ }, z.ZodTypeAny, "passthrough">;
1987
2257
  }, {
1988
- targetPath: string;
1989
- sourcePath: string;
2258
+ targetPath: string | z.objectInputType<{
2259
+ structId: z.ZodOptional<z.ZodString>;
2260
+ segments: z.ZodArray<z.ZodObject<{
2261
+ name: z.ZodString;
2262
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2263
+ instanceStruct: z.ZodOptional<z.ZodString>;
2264
+ }, "strip", z.ZodTypeAny, {
2265
+ name: string;
2266
+ arrayIndex?: number | undefined;
2267
+ instanceStruct?: string | undefined;
2268
+ }, {
2269
+ name: string;
2270
+ arrayIndex?: number | undefined;
2271
+ instanceStruct?: string | undefined;
2272
+ }>, "many">;
2273
+ }, z.ZodTypeAny, "passthrough">;
2274
+ sourcePath: string | z.objectInputType<{
2275
+ structId: z.ZodOptional<z.ZodString>;
2276
+ segments: z.ZodArray<z.ZodObject<{
2277
+ name: z.ZodString;
2278
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2279
+ instanceStruct: z.ZodOptional<z.ZodString>;
2280
+ }, "strip", z.ZodTypeAny, {
2281
+ name: string;
2282
+ arrayIndex?: number | undefined;
2283
+ instanceStruct?: string | undefined;
2284
+ }, {
2285
+ name: string;
2286
+ arrayIndex?: number | undefined;
2287
+ instanceStruct?: string | undefined;
2288
+ }>, "many">;
2289
+ }, z.ZodTypeAny, "passthrough">;
1990
2290
  }>, "many">;
1991
2291
  }, "strip", z.ZodTypeAny, {
1992
2292
  propertyBindings: {
1993
- targetPath: string;
1994
- sourcePath: string;
2293
+ targetPath: string | z.objectOutputType<{
2294
+ structId: z.ZodOptional<z.ZodString>;
2295
+ segments: z.ZodArray<z.ZodObject<{
2296
+ name: z.ZodString;
2297
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2298
+ instanceStruct: z.ZodOptional<z.ZodString>;
2299
+ }, "strip", z.ZodTypeAny, {
2300
+ name: string;
2301
+ arrayIndex?: number | undefined;
2302
+ instanceStruct?: string | undefined;
2303
+ }, {
2304
+ name: string;
2305
+ arrayIndex?: number | undefined;
2306
+ instanceStruct?: string | undefined;
2307
+ }>, "many">;
2308
+ }, z.ZodTypeAny, "passthrough">;
2309
+ sourcePath: string | z.objectOutputType<{
2310
+ structId: z.ZodOptional<z.ZodString>;
2311
+ segments: z.ZodArray<z.ZodObject<{
2312
+ name: z.ZodString;
2313
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2314
+ instanceStruct: z.ZodOptional<z.ZodString>;
2315
+ }, "strip", z.ZodTypeAny, {
2316
+ name: string;
2317
+ arrayIndex?: number | undefined;
2318
+ instanceStruct?: string | undefined;
2319
+ }, {
2320
+ name: string;
2321
+ arrayIndex?: number | undefined;
2322
+ instanceStruct?: string | undefined;
2323
+ }>, "many">;
2324
+ }, z.ZodTypeAny, "passthrough">;
1995
2325
  }[];
1996
2326
  }, {
1997
2327
  propertyBindings: {
1998
- targetPath: string;
1999
- sourcePath: string;
2328
+ targetPath: string | z.objectInputType<{
2329
+ structId: z.ZodOptional<z.ZodString>;
2330
+ segments: z.ZodArray<z.ZodObject<{
2331
+ name: z.ZodString;
2332
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2333
+ instanceStruct: z.ZodOptional<z.ZodString>;
2334
+ }, "strip", z.ZodTypeAny, {
2335
+ name: string;
2336
+ arrayIndex?: number | undefined;
2337
+ instanceStruct?: string | undefined;
2338
+ }, {
2339
+ name: string;
2340
+ arrayIndex?: number | undefined;
2341
+ instanceStruct?: string | undefined;
2342
+ }>, "many">;
2343
+ }, z.ZodTypeAny, "passthrough">;
2344
+ sourcePath: string | z.objectInputType<{
2345
+ structId: z.ZodOptional<z.ZodString>;
2346
+ segments: z.ZodArray<z.ZodObject<{
2347
+ name: z.ZodString;
2348
+ arrayIndex: z.ZodOptional<z.ZodNumber>;
2349
+ instanceStruct: z.ZodOptional<z.ZodString>;
2350
+ }, "strip", z.ZodTypeAny, {
2351
+ name: string;
2352
+ arrayIndex?: number | undefined;
2353
+ instanceStruct?: string | undefined;
2354
+ }, {
2355
+ name: string;
2356
+ arrayIndex?: number | undefined;
2357
+ instanceStruct?: string | undefined;
2358
+ }>, "many">;
2359
+ }, z.ZodTypeAny, "passthrough">;
2000
2360
  }[];
2001
2361
  }>;
2002
2362
  export declare const AnimationNotifySelectorSchema: z.ZodObject<{
@@ -439,9 +439,20 @@ export const StateTreeTransitionSelectorSchema = z.object({
439
439
  transitionId: z.string().optional(),
440
440
  id: z.string().optional(),
441
441
  });
442
+ const PropertyPathValueSchema = z.union([
443
+ z.string().describe('Shorthand: "structGuid:Property.SubProp[Index]".'),
444
+ z.object({
445
+ structId: z.string().optional(),
446
+ segments: z.array(z.object({
447
+ name: z.string(),
448
+ arrayIndex: z.number().int().optional(),
449
+ instanceStruct: z.string().optional(),
450
+ })),
451
+ }).passthrough().describe('Full path object with structId and segments.'),
452
+ ]);
442
453
  export const PropertyPathBindingSchema = z.object({
443
- sourcePath: z.string().describe('Path: "structGuid:Property.SubProp[Index]".'),
444
- targetPath: z.string().describe('Path: "structGuid:Property.SubProp[Index]".'),
454
+ sourcePath: PropertyPathValueSchema,
455
+ targetPath: PropertyPathValueSchema,
445
456
  });
446
457
  export const StateTreeBindingsObjectSchema = z.object({
447
458
  propertyBindings: z.array(PropertyPathBindingSchema),
@@ -142,6 +142,9 @@ function validateBindingPropertyPaths(payload, warnings) {
142
142
  return;
143
143
  for (const [i, binding] of bindingsObj.propertyBindings.entries()) {
144
144
  const b = binding;
145
+ // Skip validation for string paths — they'll be parsed by normalizeBindingPaths
146
+ if (typeof b.sourcePath === 'string' || typeof b.targetPath === 'string')
147
+ continue;
145
148
  const sourcePath = b.sourcePath;
146
149
  const targetPath = b.targetPath;
147
150
  if (!sourcePath?.segments?.length) {
@@ -152,6 +155,57 @@ function validateBindingPropertyPaths(payload, warnings) {
152
155
  }
153
156
  }
154
157
  }
158
+ /**
159
+ * Converts shorthand string binding paths ("structGuid:Prop.Sub[0]") to the
160
+ * JSON-object format that the C++ ApplyBindingsFromJson expects.
161
+ * Mutates the payload in place.
162
+ */
163
+ function normalizeBindingPaths(payload) {
164
+ if (!payload)
165
+ return;
166
+ const convert = (value) => {
167
+ if (typeof value !== 'string')
168
+ return value;
169
+ // Format: "GUID:Property.SubProperty[Index]" or just "Property"
170
+ const colonIdx = value.indexOf(':');
171
+ const structId = colonIdx >= 0 ? value.slice(0, colonIdx) : undefined;
172
+ const pathStr = colonIdx >= 0 ? value.slice(colonIdx + 1) : value;
173
+ if (!pathStr)
174
+ return value;
175
+ // Parse segments: split by "." and handle optional [Index]
176
+ const parts = pathStr.split('.');
177
+ const segments = [];
178
+ for (const part of parts) {
179
+ const bracketMatch = part.match(/^(.+)\[(\d+)]$/);
180
+ if (bracketMatch) {
181
+ segments.push({ name: bracketMatch[1], arrayIndex: parseInt(bracketMatch[2], 10) });
182
+ }
183
+ else {
184
+ segments.push({ name: part });
185
+ }
186
+ }
187
+ const result = { segments };
188
+ if (structId)
189
+ result.structId = structId;
190
+ return result;
191
+ };
192
+ // Process bindings at payload level
193
+ const processBindings = (obj) => {
194
+ const bindingsObj = obj.bindings;
195
+ if (!bindingsObj?.propertyBindings || !Array.isArray(bindingsObj.propertyBindings))
196
+ return;
197
+ for (const binding of bindingsObj.propertyBindings) {
198
+ const b = binding;
199
+ b.sourcePath = convert(b.sourcePath);
200
+ b.targetPath = convert(b.targetPath);
201
+ }
202
+ };
203
+ processBindings(payload);
204
+ // Also check inside stateTree envelope
205
+ if (payload.stateTree && typeof payload.stateTree === 'object') {
206
+ processBindings(payload.stateTree);
207
+ }
208
+ }
155
209
  export function registerSchemaAndAiAuthoringTools({ server, callSubsystemJson, jsonObjectSchema, userDefinedStructMutationOperationSchema, userDefinedStructFieldSchema, userDefinedEnumMutationOperationSchema, userDefinedEnumEntrySchema, blackboardMutationOperationSchema, blackboardKeySchema, behaviorTreeMutationOperationSchema, behaviorTreeNodeSelectorSchema, stateTreeMutationOperationSchema, stateTreeStateSelectorSchema, stateTreeEditorNodeSelectorSchema, stateTreeTransitionSelectorSchema, stateTreeBindingsObjectSchema, }) {
156
210
  server.registerTool('create_user_defined_struct', {
157
211
  title: 'Create UserDefinedStruct',
@@ -591,6 +645,8 @@ export function registerSchemaAndAiAuthoringTools({ server, callSubsystemJson, j
591
645
  // Validate nodeStructType path formats after normalization
592
646
  validateNodeStructTypes(normalizedPayload, warnings);
593
647
  warnMissingInstanceObjectClass(normalizedPayload, warnings);
648
+ // Convert string binding paths to JSON-object format for C++
649
+ normalizeBindingPaths(normalizedPayload);
594
650
  const timeoutMs = (timeout_seconds ?? 90) * 1000;
595
651
  const parsed = await callSubsystemJson('ModifyStateTree', {
596
652
  AssetPath: asset_path,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blueprint-extractor-mcp",
3
- "version": "7.0.1",
3
+ "version": "7.0.3",
4
4
  "description": "MCP server for the Unreal Engine BlueprintExtractor plugin over Remote Control",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",