unreal-engine-mcp-server 0.5.20 → 0.5.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.
- package/CHANGELOG.md +7 -0
- package/README.md +5 -0
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -0
- package/dist/config.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/consolidated-tool-definitions.d.ts.map +1 -1
- package/dist/tools/consolidated-tool-definitions.js +20 -16
- package/dist/tools/consolidated-tool-definitions.js.map +1 -1
- package/dist/tools/consolidated-tool-handlers.js +1 -3
- package/dist/tools/consolidated-tool-handlers.js.map +1 -1
- package/dist/tools/dynamic-tool-manager.d.ts +1 -1
- package/dist/tools/dynamic-tool-manager.d.ts.map +1 -1
- package/dist/tools/dynamic-tool-manager.js +48 -1
- package/dist/tools/dynamic-tool-manager.js.map +1 -1
- package/dist/tools/handlers/animation-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/animation-authoring-handlers.js +266 -43
- package/dist/tools/handlers/animation-authoring-handlers.js.map +1 -1
- package/dist/tools/handlers/animation-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/animation-handlers.js +289 -34
- package/dist/tools/handlers/animation-handlers.js.map +1 -1
- package/dist/tools/handlers/asset-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/asset-handlers.js +10 -4
- package/dist/tools/handlers/asset-handlers.js.map +1 -1
- package/dist/tools/handlers/audio-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/audio-handlers.js +66 -26
- package/dist/tools/handlers/audio-handlers.js.map +1 -1
- package/dist/tools/handlers/common-handlers.d.ts +1 -0
- package/dist/tools/handlers/common-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/common-handlers.js +13 -3
- package/dist/tools/handlers/common-handlers.js.map +1 -1
- package/dist/tools/handlers/editor-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/editor-handlers.js +18 -7
- package/dist/tools/handlers/editor-handlers.js.map +1 -1
- package/dist/tools/handlers/effect-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/effect-handlers.js +91 -69
- package/dist/tools/handlers/effect-handlers.js.map +1 -1
- package/dist/tools/handlers/gas-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/gas-handlers.js +35 -22
- package/dist/tools/handlers/gas-handlers.js.map +1 -1
- package/dist/tools/handlers/inspect-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/inspect-handlers.js +6 -2
- package/dist/tools/handlers/inspect-handlers.js.map +1 -1
- package/dist/tools/handlers/inventory-handlers.js +7 -7
- package/dist/tools/handlers/inventory-handlers.js.map +1 -1
- package/dist/tools/handlers/manage-tools-handlers.js +2 -2
- package/dist/tools/handlers/manage-tools-handlers.js.map +1 -1
- package/dist/tools/handlers/performance-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/performance-handlers.js +11 -29
- package/dist/tools/handlers/performance-handlers.js.map +1 -1
- package/dist/tools/handlers/pipeline-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/pipeline-handlers.js +140 -13
- package/dist/tools/handlers/pipeline-handlers.js.map +1 -1
- package/dist/tools/handlers/sequence-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/sequence-handlers.js +27 -0
- package/dist/tools/handlers/sequence-handlers.js.map +1 -1
- package/dist/tools/handlers/system-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/system-handlers.js +10 -5
- package/dist/tools/handlers/system-handlers.js.map +1 -1
- package/dist/tools/handlers/widget-authoring-handlers.d.ts.map +1 -1
- package/dist/tools/handlers/widget-authoring-handlers.js +21 -5
- package/dist/tools/handlers/widget-authoring-handlers.js.map +1 -1
- package/dist/tools/schemas/core-tools.js +1 -1
- package/dist/tools/schemas/core-tools.js.map +1 -1
- package/dist/utils/path-security.d.ts.map +1 -1
- package/dist/utils/path-security.js +18 -1
- package/dist/utils/path-security.js.map +1 -1
- package/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +5 -2
- package/dist/utils/validation.js.map +1 -1
- package/package.json +25 -2
- package/server.json +2 -2
|
@@ -1,14 +1,64 @@
|
|
|
1
1
|
import { cleanObject } from '../../utils/safe-json.js';
|
|
2
2
|
import { executeAutomationRequest } from './common-handlers.js';
|
|
3
|
+
import { normalizeArgs } from './argument-helper.js';
|
|
3
4
|
import { TOOL_ACTIONS } from '../../utils/action-constants.js';
|
|
5
|
+
import { sanitizePath } from '../../utils/path-security.js';
|
|
4
6
|
export async function handleAnimationTools(action, args, tools) {
|
|
5
7
|
const argsTyped = args;
|
|
6
8
|
const animAction = String(action || '').toLowerCase();
|
|
9
|
+
const allPathParams = [
|
|
10
|
+
'path', 'savePath', 'skeletonPath', 'skeletalMeshPath', 'sourceSkeleton', 'targetSkeleton',
|
|
11
|
+
'assetPath', 'animationPath', 'blueprintPath', 'retargeterPath', 'meshPath', 'montagePath',
|
|
12
|
+
'animSequencePath', 'animPath', 'animAssetPath', 'animMontagePath', 'blendSpacePath', 'rigPath'
|
|
13
|
+
];
|
|
14
|
+
for (const param of allPathParams) {
|
|
15
|
+
const value = args[param];
|
|
16
|
+
if (value && typeof value === 'string') {
|
|
17
|
+
try {
|
|
18
|
+
sanitizePath(value);
|
|
19
|
+
}
|
|
20
|
+
catch (e) {
|
|
21
|
+
return cleanObject({
|
|
22
|
+
success: false,
|
|
23
|
+
error: 'SECURITY_VIOLATION',
|
|
24
|
+
message: e instanceof Error ? e.message : `Invalid ${param}: path traversal or illegal characters detected`
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const artifacts = args.artifacts;
|
|
30
|
+
if (Array.isArray(artifacts)) {
|
|
31
|
+
for (const artifact of artifacts) {
|
|
32
|
+
if (typeof artifact === 'string') {
|
|
33
|
+
try {
|
|
34
|
+
sanitizePath(artifact);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
return cleanObject({
|
|
38
|
+
success: false,
|
|
39
|
+
error: 'SECURITY_VIOLATION',
|
|
40
|
+
message: e instanceof Error ? e.message : 'Invalid path in artifacts: path traversal or illegal characters detected'
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
7
46
|
if (animAction === 'create_animation_blueprint' || animAction === 'create_anim_blueprint' || animAction === 'create_animation_bp') {
|
|
8
47
|
const name = argsTyped.name ?? argsTyped.blueprintName;
|
|
9
48
|
const skeletonPath = argsTyped.skeletonPath ?? argsTyped.targetSkeleton;
|
|
10
49
|
let meshPath = argsTyped.meshPath;
|
|
11
|
-
|
|
50
|
+
let savePath;
|
|
51
|
+
try {
|
|
52
|
+
const rawPath = String(argsTyped.savePath ?? argsTyped.path ?? '/Game/Animations');
|
|
53
|
+
savePath = sanitizePath(rawPath);
|
|
54
|
+
}
|
|
55
|
+
catch (e) {
|
|
56
|
+
return cleanObject({
|
|
57
|
+
success: false,
|
|
58
|
+
error: 'SECURITY_VIOLATION',
|
|
59
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
60
|
+
});
|
|
61
|
+
}
|
|
12
62
|
if (!skeletonPath && argsTyped.actorName) {
|
|
13
63
|
try {
|
|
14
64
|
const compsRes = await executeAutomationRequest(tools, 'control_actor', { action: 'get_components', actorName: argsTyped.actorName });
|
|
@@ -104,52 +154,175 @@ export async function handleAnimationTools(action, args, tools) {
|
|
|
104
154
|
}
|
|
105
155
|
switch (animAction) {
|
|
106
156
|
case 'create_blend_space': {
|
|
157
|
+
let savePath;
|
|
158
|
+
try {
|
|
159
|
+
const rawPath = String(mutableArgs.path || mutableArgs.savePath || '/Game/Animations');
|
|
160
|
+
savePath = sanitizePath(rawPath);
|
|
161
|
+
}
|
|
162
|
+
catch (e) {
|
|
163
|
+
return cleanObject({
|
|
164
|
+
success: false,
|
|
165
|
+
error: 'SECURITY_VIOLATION',
|
|
166
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
167
|
+
});
|
|
168
|
+
}
|
|
107
169
|
const payload = {
|
|
170
|
+
action: 'create_blend_space',
|
|
108
171
|
name: mutableArgs.name,
|
|
109
|
-
path:
|
|
110
|
-
savePath
|
|
172
|
+
path: savePath,
|
|
173
|
+
savePath,
|
|
111
174
|
skeletonPath: mutableArgs.skeletonPath,
|
|
112
175
|
horizontalAxis: mutableArgs.horizontalAxis,
|
|
113
176
|
verticalAxis: mutableArgs.verticalAxis,
|
|
114
177
|
minX: mutableArgs.minX,
|
|
115
178
|
maxX: mutableArgs.maxX,
|
|
116
179
|
minY: mutableArgs.minY,
|
|
117
|
-
maxY: mutableArgs.maxY
|
|
118
|
-
subAction: 'create_blend_space'
|
|
180
|
+
maxY: mutableArgs.maxY
|
|
119
181
|
};
|
|
120
182
|
const res = await executeAutomationRequest(tools, 'animation_physics', payload, 'Automation bridge not available for blend space creation');
|
|
121
183
|
return cleanObject(res);
|
|
122
184
|
}
|
|
123
|
-
case 'create_state_machine':
|
|
185
|
+
case 'create_state_machine': {
|
|
186
|
+
let blueprintPath;
|
|
187
|
+
try {
|
|
188
|
+
const rawPath = mutableArgs.blueprintPath || mutableArgs.path || mutableArgs.savePath;
|
|
189
|
+
if (rawPath && typeof rawPath === 'string') {
|
|
190
|
+
blueprintPath = sanitizePath(rawPath);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
catch (e) {
|
|
194
|
+
return cleanObject({
|
|
195
|
+
success: false,
|
|
196
|
+
error: 'SECURITY_VIOLATION',
|
|
197
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
198
|
+
});
|
|
199
|
+
}
|
|
124
200
|
return cleanObject(await executeAutomationRequest(tools, TOOL_ACTIONS.ANIMATION_PHYSICS, {
|
|
125
|
-
|
|
201
|
+
action: 'create_state_machine',
|
|
126
202
|
machineName: mutableArgs.machineName || mutableArgs.name,
|
|
127
203
|
states: mutableArgs.states,
|
|
128
204
|
transitions: mutableArgs.transitions,
|
|
129
|
-
blueprintPath
|
|
205
|
+
blueprintPath
|
|
130
206
|
}));
|
|
131
|
-
|
|
207
|
+
}
|
|
208
|
+
case 'setup_ik': {
|
|
209
|
+
let savePath;
|
|
210
|
+
try {
|
|
211
|
+
const rawPath = String(mutableArgs.savePath || mutableArgs.path || '/Game/Animations');
|
|
212
|
+
savePath = sanitizePath(rawPath);
|
|
213
|
+
}
|
|
214
|
+
catch (e) {
|
|
215
|
+
return cleanObject({
|
|
216
|
+
success: false,
|
|
217
|
+
error: 'SECURITY_VIOLATION',
|
|
218
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
219
|
+
});
|
|
220
|
+
}
|
|
132
221
|
return cleanObject(await executeAutomationRequest(tools, 'animation_physics', {
|
|
133
222
|
action: 'setup_ik',
|
|
223
|
+
name: mutableArgs.name,
|
|
224
|
+
savePath,
|
|
225
|
+
skeletonPath: mutableArgs.skeletonPath,
|
|
134
226
|
actorName: mutableArgs.actorName,
|
|
135
227
|
ikBones: mutableArgs.ikBones,
|
|
136
228
|
enableFootPlacement: mutableArgs.enableFootPlacement
|
|
137
229
|
}));
|
|
230
|
+
}
|
|
138
231
|
case 'create_procedural_anim': {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
232
|
+
const params = normalizeArgs(args, [
|
|
233
|
+
{ key: 'name', required: true },
|
|
234
|
+
{ key: 'path', aliases: ['directory'], default: '/Game/Animations' },
|
|
235
|
+
{ key: 'skeletonPath', required: true },
|
|
236
|
+
{ key: 'boneTracks', required: true },
|
|
237
|
+
{ key: 'numFrames', default: 30 },
|
|
238
|
+
{ key: 'frameRate', default: 30 },
|
|
239
|
+
{ key: 'save', default: true }
|
|
240
|
+
]);
|
|
241
|
+
let savePath;
|
|
242
|
+
let skeletonPath;
|
|
243
|
+
try {
|
|
244
|
+
savePath = sanitizePath(String(params.path || '/Game/Animations'));
|
|
245
|
+
skeletonPath = sanitizePath(String(params.skeletonPath));
|
|
246
|
+
}
|
|
247
|
+
catch (e) {
|
|
248
|
+
return cleanObject({
|
|
249
|
+
success: false,
|
|
250
|
+
error: 'SECURITY_VIOLATION',
|
|
251
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
252
|
+
});
|
|
253
|
+
}
|
|
254
|
+
if (!Array.isArray(params.boneTracks)) {
|
|
255
|
+
return cleanObject({
|
|
256
|
+
success: false,
|
|
257
|
+
error: 'INVALID_ARGUMENT',
|
|
258
|
+
message: 'boneTracks must be an array of bone track definitions'
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return cleanObject(await executeAutomationRequest(tools, 'animation_physics', {
|
|
262
|
+
action: 'create_procedural_anim',
|
|
263
|
+
subAction: 'create_procedural_anim',
|
|
264
|
+
name: params.name,
|
|
265
|
+
path: savePath,
|
|
266
|
+
savePath,
|
|
267
|
+
skeletonPath,
|
|
268
|
+
boneTracks: params.boneTracks,
|
|
269
|
+
numFrames: params.numFrames,
|
|
270
|
+
frameRate: params.frameRate,
|
|
271
|
+
save: params.save
|
|
272
|
+
}));
|
|
145
273
|
}
|
|
146
274
|
case 'create_blend_tree': {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
275
|
+
let blueprintPath;
|
|
276
|
+
try {
|
|
277
|
+
const rawPath = mutableArgs.blueprintPath || mutableArgs.path || mutableArgs.savePath;
|
|
278
|
+
if (rawPath && typeof rawPath === 'string') {
|
|
279
|
+
blueprintPath = sanitizePath(rawPath);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
catch (e) {
|
|
283
|
+
return cleanObject({
|
|
284
|
+
success: false,
|
|
285
|
+
error: 'SECURITY_VIOLATION',
|
|
286
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
if (!blueprintPath) {
|
|
290
|
+
return cleanObject({
|
|
291
|
+
success: false,
|
|
292
|
+
error: 'INVALID_ARGUMENT',
|
|
293
|
+
message: 'blueprintPath is required for create_blend_tree'
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
const sanitizedChildren = [];
|
|
297
|
+
if (Array.isArray(mutableArgs.children)) {
|
|
298
|
+
for (const child of mutableArgs.children) {
|
|
299
|
+
if (child && typeof child === 'object' && child.animationPath) {
|
|
300
|
+
try {
|
|
301
|
+
const sanitizedPath = sanitizePath(String(child.animationPath));
|
|
302
|
+
sanitizedChildren.push({ ...child, animationPath: sanitizedPath });
|
|
303
|
+
}
|
|
304
|
+
catch {
|
|
305
|
+
return cleanObject({
|
|
306
|
+
success: false,
|
|
307
|
+
error: 'SECURITY_VIOLATION',
|
|
308
|
+
message: 'Invalid animationPath in children: path traversal or illegal characters detected'
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
else {
|
|
313
|
+
sanitizedChildren.push(child);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
const payload = {
|
|
318
|
+
action: 'create_blend_tree',
|
|
319
|
+
blueprintPath,
|
|
320
|
+
treeName: mutableArgs.treeName || mutableArgs.name || 'BlendTree',
|
|
321
|
+
blendParameters: mutableArgs.blendParameters,
|
|
322
|
+
children: sanitizedChildren.length > 0 ? sanitizedChildren : mutableArgs.children,
|
|
323
|
+
save: mutableArgs.save !== false
|
|
324
|
+
};
|
|
325
|
+
return cleanObject(await executeAutomationRequest(tools, TOOL_ACTIONS.ANIMATION_PHYSICS, payload));
|
|
153
326
|
}
|
|
154
327
|
case 'cleanup':
|
|
155
328
|
return cleanObject(await executeAutomationRequest(tools, 'animation_physics', {
|
|
@@ -157,6 +330,18 @@ export async function handleAnimationTools(action, args, tools) {
|
|
|
157
330
|
artifacts: mutableArgs.artifacts
|
|
158
331
|
}));
|
|
159
332
|
case 'create_animation_asset': {
|
|
333
|
+
let savePath;
|
|
334
|
+
try {
|
|
335
|
+
const rawPath = String(mutableArgs.path || mutableArgs.savePath || '/Game/Animations');
|
|
336
|
+
savePath = sanitizePath(rawPath);
|
|
337
|
+
}
|
|
338
|
+
catch (e) {
|
|
339
|
+
return cleanObject({
|
|
340
|
+
success: false,
|
|
341
|
+
error: 'SECURITY_VIOLATION',
|
|
342
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
343
|
+
});
|
|
344
|
+
}
|
|
160
345
|
let assetType = mutableArgs.assetType;
|
|
161
346
|
if (!assetType && mutableArgs.name) {
|
|
162
347
|
if (mutableArgs.name.toLowerCase().endsWith('montage') || mutableArgs.name.toLowerCase().includes('montage')) {
|
|
@@ -166,35 +351,105 @@ export async function handleAnimationTools(action, args, tools) {
|
|
|
166
351
|
return cleanObject(await executeAutomationRequest(tools, 'animation_physics', {
|
|
167
352
|
action: 'create_animation_asset',
|
|
168
353
|
name: mutableArgs.name,
|
|
169
|
-
savePath
|
|
354
|
+
savePath,
|
|
170
355
|
skeletonPath: mutableArgs.skeletonPath,
|
|
171
356
|
assetType
|
|
172
357
|
}));
|
|
173
358
|
}
|
|
174
|
-
case 'add_notify':
|
|
359
|
+
case 'add_notify': {
|
|
360
|
+
let assetPath;
|
|
361
|
+
try {
|
|
362
|
+
const rawPath = mutableArgs.animationPath || mutableArgs.assetPath;
|
|
363
|
+
if (rawPath && typeof rawPath === 'string') {
|
|
364
|
+
assetPath = sanitizePath(rawPath);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
catch (e) {
|
|
368
|
+
return cleanObject({
|
|
369
|
+
success: false,
|
|
370
|
+
error: 'SECURITY_VIOLATION',
|
|
371
|
+
message: e instanceof Error ? e.message : 'Invalid path: path traversal or illegal characters detected'
|
|
372
|
+
});
|
|
373
|
+
}
|
|
175
374
|
return cleanObject(await executeAutomationRequest(tools, 'animation_physics', {
|
|
176
375
|
action: 'add_notify',
|
|
177
|
-
assetPath
|
|
376
|
+
assetPath,
|
|
178
377
|
notifyName: mutableArgs.notifyName || mutableArgs.name,
|
|
179
378
|
time: mutableArgs.time ?? mutableArgs.startTime
|
|
180
379
|
}));
|
|
181
|
-
|
|
380
|
+
}
|
|
381
|
+
case 'configure_vehicle': {
|
|
382
|
+
const params = normalizeArgs(args, [
|
|
383
|
+
{ key: 'actorName', required: true },
|
|
384
|
+
{ key: 'vehicleType', default: 'WheeledVehicle4W' },
|
|
385
|
+
{ key: 'wheels' },
|
|
386
|
+
{ key: 'engine' },
|
|
387
|
+
{ key: 'transmission' },
|
|
388
|
+
{ key: 'mass', default: 1500 },
|
|
389
|
+
{ key: 'dragCoefficient', default: 0.3 }
|
|
390
|
+
]);
|
|
182
391
|
return cleanObject(await executeAutomationRequest(tools, 'animation_physics', {
|
|
183
392
|
action: 'configure_vehicle',
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
393
|
+
subAction: 'configure_vehicle',
|
|
394
|
+
actorName: params.actorName,
|
|
395
|
+
vehicleType: params.vehicleType,
|
|
396
|
+
wheels: params.wheels,
|
|
397
|
+
engine: params.engine,
|
|
398
|
+
transmission: params.transmission,
|
|
399
|
+
mass: params.mass,
|
|
400
|
+
dragCoefficient: params.dragCoefficient
|
|
189
401
|
}));
|
|
402
|
+
}
|
|
190
403
|
case 'setup_physics_simulation': {
|
|
404
|
+
let savePath;
|
|
405
|
+
try {
|
|
406
|
+
const rawSavePath = mutableArgs.savePath;
|
|
407
|
+
if (rawSavePath && typeof rawSavePath === 'string') {
|
|
408
|
+
savePath = sanitizePath(rawSavePath);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
catch (e) {
|
|
412
|
+
return cleanObject({
|
|
413
|
+
success: false,
|
|
414
|
+
error: 'SECURITY_VIOLATION',
|
|
415
|
+
message: e instanceof Error ? e.message : 'Invalid savePath: path traversal or illegal characters detected'
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
let meshPath;
|
|
419
|
+
try {
|
|
420
|
+
const rawMeshPath = mutableArgs.meshPath;
|
|
421
|
+
if (rawMeshPath && typeof rawMeshPath === 'string') {
|
|
422
|
+
meshPath = sanitizePath(rawMeshPath);
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
catch (e) {
|
|
426
|
+
return cleanObject({
|
|
427
|
+
success: false,
|
|
428
|
+
error: 'SECURITY_VIOLATION',
|
|
429
|
+
message: e instanceof Error ? e.message : 'Invalid meshPath: path traversal or illegal characters detected'
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
let skeletonPath;
|
|
433
|
+
try {
|
|
434
|
+
const rawSkeletonPath = mutableArgs.skeletonPath;
|
|
435
|
+
if (rawSkeletonPath && typeof rawSkeletonPath === 'string') {
|
|
436
|
+
skeletonPath = sanitizePath(rawSkeletonPath);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
catch (e) {
|
|
440
|
+
return cleanObject({
|
|
441
|
+
success: false,
|
|
442
|
+
error: 'SECURITY_VIOLATION',
|
|
443
|
+
message: e instanceof Error ? e.message : 'Invalid skeletonPath: path traversal or illegal characters detected'
|
|
444
|
+
});
|
|
445
|
+
}
|
|
191
446
|
const payload = {
|
|
192
|
-
meshPath
|
|
193
|
-
skeletonPath
|
|
447
|
+
meshPath,
|
|
448
|
+
skeletonPath,
|
|
194
449
|
physicsAssetName: mutableArgs.physicsAssetName,
|
|
195
|
-
savePath
|
|
450
|
+
savePath
|
|
196
451
|
};
|
|
197
|
-
if (mutableArgs.actorName && !
|
|
452
|
+
if (mutableArgs.actorName && !meshPath && !skeletonPath) {
|
|
198
453
|
payload.actorName = mutableArgs.actorName;
|
|
199
454
|
}
|
|
200
455
|
if (!payload.meshPath && !payload.skeletonPath && !payload.actorName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation-handlers.js","sourceRoot":"","sources":["../../../src/tools/handlers/animation-handlers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"animation-handlers.js","sourceRoot":"","sources":["../../../src/tools/handlers/animation-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"asset-handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/asset-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,8BAA8B,CAAC;AAwH3E,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"asset-handlers.d.ts","sourceRoot":"","sources":["../../../src/tools/handlers/asset-handlers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,8BAA8B,CAAC;AAwH3E,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA42BzH"}
|
|
@@ -67,9 +67,9 @@ export async function handleAssetTools(action, args, tools) {
|
|
|
67
67
|
switch (action) {
|
|
68
68
|
case 'list': {
|
|
69
69
|
const params = normalizeArgs(args, [
|
|
70
|
-
{ key: 'path', aliases: ['directory', 'assetPath'], default: '/Game' },
|
|
70
|
+
{ key: 'path', aliases: ['directory', 'directoryPath', 'assetPath'], default: '/Game' },
|
|
71
71
|
{ key: 'limit', default: 50 },
|
|
72
|
-
{ key: 'recursive', default: false },
|
|
72
|
+
{ key: 'recursive', aliases: ['recursivePaths'], default: false },
|
|
73
73
|
{ key: 'depth', default: undefined }
|
|
74
74
|
]);
|
|
75
75
|
let path = extractOptionalString(params, 'path') ?? '/Game';
|
|
@@ -431,26 +431,32 @@ export async function handleAssetTools(action, args, tools) {
|
|
|
431
431
|
}
|
|
432
432
|
case 'search_assets': {
|
|
433
433
|
const params = normalizeArgs(args, [
|
|
434
|
+
{ key: 'searchText' },
|
|
434
435
|
{ key: 'classNames' },
|
|
435
436
|
{ key: 'packagePaths' },
|
|
436
437
|
{ key: 'recursivePaths' },
|
|
437
438
|
{ key: 'recursiveClasses' },
|
|
438
|
-
{ key: 'limit' }
|
|
439
|
+
{ key: 'limit' },
|
|
440
|
+
{ key: 'offset' }
|
|
439
441
|
]);
|
|
442
|
+
const searchText = extractOptionalString(params, 'searchText');
|
|
440
443
|
const classNames = extractOptionalArray(params, 'classNames');
|
|
441
444
|
const packagePaths = extractOptionalArray(params, 'packagePaths');
|
|
442
|
-
const recursivePaths = extractOptionalBoolean(params, 'recursivePaths');
|
|
445
|
+
const recursivePaths = extractOptionalBoolean(params, 'recursivePaths') ?? (searchText ? true : undefined);
|
|
443
446
|
const recursiveClasses = extractOptionalBoolean(params, 'recursiveClasses');
|
|
444
447
|
const limit = extractOptionalNumber(params, 'limit');
|
|
448
|
+
const offset = extractOptionalNumber(params, 'offset');
|
|
445
449
|
const pathSecurityError = validatePathsSecurity(packagePaths, 'packagePaths');
|
|
446
450
|
if (pathSecurityError)
|
|
447
451
|
return pathSecurityError;
|
|
448
452
|
const res = await executeAutomationRequest(tools, 'asset_query', {
|
|
453
|
+
searchText,
|
|
449
454
|
classNames,
|
|
450
455
|
packagePaths,
|
|
451
456
|
recursivePaths,
|
|
452
457
|
recursiveClasses,
|
|
453
458
|
limit,
|
|
459
|
+
offset,
|
|
454
460
|
subAction: 'search_assets'
|
|
455
461
|
});
|
|
456
462
|
return ResponseFactory.success(res, 'Assets found');
|