godot-mcp-runtime 2.3.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +30 -93
  2. package/dist/dispatch.d.ts +1 -11
  3. package/dist/dispatch.d.ts.map +1 -1
  4. package/dist/dispatch.js +7 -8
  5. package/dist/dispatch.js.map +1 -1
  6. package/dist/index.d.ts +1 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +12 -10
  9. package/dist/index.js.map +1 -1
  10. package/dist/scripts/godot_operations.gd +134 -283
  11. package/dist/scripts/mcp_bridge.gd +210 -43
  12. package/dist/tools/autoload-tools.d.ts +51 -0
  13. package/dist/tools/autoload-tools.d.ts.map +1 -0
  14. package/dist/tools/autoload-tools.js +187 -0
  15. package/dist/tools/autoload-tools.js.map +1 -0
  16. package/dist/tools/node-tools.d.ts +9 -78
  17. package/dist/tools/node-tools.d.ts.map +1 -1
  18. package/dist/tools/node-tools.js +105 -309
  19. package/dist/tools/node-tools.js.map +1 -1
  20. package/dist/tools/project-tools.d.ts +0 -168
  21. package/dist/tools/project-tools.d.ts.map +1 -1
  22. package/dist/tools/project-tools.js +106 -1192
  23. package/dist/tools/project-tools.js.map +1 -1
  24. package/dist/tools/runtime-tools.d.ts +108 -0
  25. package/dist/tools/runtime-tools.d.ts.map +1 -0
  26. package/dist/tools/runtime-tools.js +808 -0
  27. package/dist/tools/runtime-tools.js.map +1 -0
  28. package/dist/tools/scene-tools.d.ts +6 -48
  29. package/dist/tools/scene-tools.d.ts.map +1 -1
  30. package/dist/tools/scene-tools.js +55 -209
  31. package/dist/tools/scene-tools.js.map +1 -1
  32. package/dist/tools/validate-tools.d.ts.map +1 -1
  33. package/dist/tools/validate-tools.js +33 -28
  34. package/dist/tools/validate-tools.js.map +1 -1
  35. package/dist/utils/autoload-ini.d.ts +32 -0
  36. package/dist/utils/autoload-ini.d.ts.map +1 -0
  37. package/dist/utils/autoload-ini.js +111 -0
  38. package/dist/utils/autoload-ini.js.map +1 -0
  39. package/dist/utils/bridge-manager.d.ts +29 -0
  40. package/dist/utils/bridge-manager.d.ts.map +1 -0
  41. package/dist/utils/bridge-manager.js +136 -0
  42. package/dist/utils/bridge-manager.js.map +1 -0
  43. package/dist/utils/bridge-protocol.d.ts +34 -0
  44. package/dist/utils/bridge-protocol.d.ts.map +1 -0
  45. package/dist/utils/bridge-protocol.js +65 -0
  46. package/dist/utils/bridge-protocol.js.map +1 -0
  47. package/dist/utils/godot-runner.d.ts +57 -15
  48. package/dist/utils/godot-runner.d.ts.map +1 -1
  49. package/dist/utils/godot-runner.js +309 -277
  50. package/dist/utils/godot-runner.js.map +1 -1
  51. package/dist/utils/handler-helpers.d.ts +34 -0
  52. package/dist/utils/handler-helpers.d.ts.map +1 -0
  53. package/dist/utils/handler-helpers.js +55 -0
  54. package/dist/utils/handler-helpers.js.map +1 -0
  55. package/dist/utils/logger.d.ts +3 -0
  56. package/dist/utils/logger.d.ts.map +1 -0
  57. package/dist/utils/logger.js +11 -0
  58. package/dist/utils/logger.js.map +1 -0
  59. package/package.json +7 -4
@@ -1,11 +1,12 @@
1
1
  import { existsSync } from 'fs';
2
2
  import { join } from 'path';
3
- import { normalizeParameters, convertCamelToSnakeCase, validatePath, createErrorResponse, extractGdError, validateSceneArgs, } from '../utils/godot-runner.js';
3
+ import { normalizeParameters, convertCamelToSnakeCase, validatePath, createErrorResponse, validateSceneArgs, } from '../utils/godot-runner.js';
4
+ import { executeSceneOp } from '../utils/handler-helpers.js';
4
5
  // --- Tool definitions ---
5
6
  export const nodeToolDefinitions = [
6
7
  {
7
- name: 'delete_node',
8
- description: 'Remove a node and all its children from a Godot scene file. Use when pruning the scene tree; for replacing a node in place, pair with add_node. Saves automatically. Cannot delete the scene root. Errors if nodePath does not exist. Returns { success, nodePath }.',
8
+ name: 'delete_nodes',
9
+ description: 'Remove one or more nodes (and their descendants) from a scene file. Always-array: pass a single-element nodePaths array for one-off deletes. Saves once at the end. Cannot delete the scene root that entry returns an error and the rest still process. Returns { results: [{ nodePath, success?, error? }] }.',
9
10
  annotations: { destructiveHint: true },
10
11
  inputSchema: {
11
12
  type: 'object',
@@ -15,36 +16,18 @@ export const nodeToolDefinitions = [
15
16
  type: 'string',
16
17
  description: 'Scene file path relative to the project (e.g. "scenes/main.tscn")',
17
18
  },
18
- nodePath: {
19
- type: 'string',
20
- description: 'Node path from scene root (e.g. "root/Player/Sprite2D")',
21
- },
22
- },
23
- required: ['projectPath', 'scenePath', 'nodePath'],
24
- },
25
- },
26
- {
27
- name: 'set_node_property',
28
- description: 'Set a single property on a node in a Godot scene file. For multiple properties on the same or different nodes, use batch_set_node_properties — one Godot process instead of N. Saves automatically. Primitives pass through; Vector2 ({x,y}), Vector3 ({x,y,z}), and Color ({r,g,b,a}) auto-convert. For other complex GDScript types (Resource, NodePath, etc.), use run_script. Errors if nodePath or property does not exist. Returns { success, nodePath, property }.',
29
- annotations: { idempotentHint: true },
30
- inputSchema: {
31
- type: 'object',
32
- properties: {
33
- projectPath: { type: 'string', description: 'Path to the Godot project directory' },
34
- scenePath: { type: 'string', description: 'Scene file path relative to the project' },
35
- nodePath: { type: 'string', description: 'Node path from scene root (e.g. "root/Player")' },
36
- property: {
37
- type: 'string',
38
- description: 'GDScript property name in snake_case (e.g. "position", "modulate", "collision_layer"). Use get_node_properties to discover valid names.',
19
+ nodePaths: {
20
+ type: 'array',
21
+ items: { type: 'string' },
22
+ description: 'Node paths from scene root to delete (e.g. ["root/Player/Sprite2D"])',
39
23
  },
40
- value: { description: 'New property value' },
41
24
  },
42
- required: ['projectPath', 'scenePath', 'nodePath', 'property', 'value'],
25
+ required: ['projectPath', 'scenePath', 'nodePaths'],
43
26
  },
44
27
  },
45
28
  {
46
- name: 'batch_set_node_properties',
47
- description: 'Set multiple node properties in a single Godot process preferred over chained set_node_property calls (avoids ~3s startup per call). Same value-conversion rules as set_node_property. abortOnError stops on first failure (default false continues). Saves once at the end. Returns { results: [{ nodePath, property, success?, error? }] }.',
29
+ name: 'set_node_properties',
30
+ description: 'Set one or more node properties on a scene in a single Godot process. Always-array: pass a single-element updates array for one-off edits. Vector2 ({x,y}), Vector3 ({x,y,z}), and Color ({r,g,b,a}) auto-convert; primitives pass through. For other complex GDScript types (Resource, NodePath, etc.), use run_script. abortOnError stops on first failure (default false continues). Saves once at the end. Returns { results: [{ nodePath, property, success?, error? }] }.',
48
31
  annotations: { idempotentHint: true },
49
32
  inputSchema: {
50
33
  type: 'object',
@@ -57,8 +40,14 @@ export const nodeToolDefinitions = [
57
40
  items: {
58
41
  type: 'object',
59
42
  properties: {
60
- nodePath: { type: 'string', description: 'Node path from scene root' },
61
- property: { type: 'string', description: 'GDScript property name in snake_case' },
43
+ nodePath: {
44
+ type: 'string',
45
+ description: 'Node path from scene root (e.g. "root/Player")',
46
+ },
47
+ property: {
48
+ type: 'string',
49
+ description: 'GDScript property name in snake_case (e.g. "position", "modulate", "collision_layer")',
50
+ },
62
51
  value: { description: 'New property value' },
63
52
  },
64
53
  required: ['nodePath', 'property', 'value'],
@@ -74,25 +63,7 @@ export const nodeToolDefinitions = [
74
63
  },
75
64
  {
76
65
  name: 'get_node_properties',
77
- description: "Read a node's current property values from a scene file. For multiple nodes, use batch_get_node_properties (one process). changedOnly:true filters out properties matching their class defaults useful for compact diffs. Errors if nodePath does not exist. Returns { nodePath, nodeType, properties: { [key]: value } }.",
78
- annotations: { readOnlyHint: true },
79
- inputSchema: {
80
- type: 'object',
81
- properties: {
82
- projectPath: { type: 'string', description: 'Path to the Godot project directory' },
83
- scenePath: { type: 'string', description: 'Scene file path relative to the project' },
84
- nodePath: { type: 'string', description: 'Node path from scene root (e.g. "root/Player")' },
85
- changedOnly: {
86
- type: 'boolean',
87
- description: 'Only return properties whose values differ from their class defaults (default: false)',
88
- },
89
- },
90
- required: ['projectPath', 'scenePath', 'nodePath'],
91
- },
92
- },
93
- {
94
- name: 'batch_get_node_properties',
95
- description: 'Get properties from multiple nodes in a single Godot process — preferred over chained get_node_properties calls. Per-node changedOnly toggles default-filtering individually. Returns { results: [{ nodePath, nodeType, properties?, error? }] }; failed reads include error and omit properties.',
66
+ description: "Read one or more nodes' current property values from a scene file in a single Godot process. Always-array: pass a single-element nodes array for one-off reads. Per-node changedOnly:true filters out properties matching class defaults (useful for compact diffs). Returns { results: [{ nodePath, nodeType, properties?, error? }] }; failed reads include error and omit properties.",
96
67
  annotations: { readOnlyHint: true },
97
68
  inputSchema: {
98
69
  type: 'object',
@@ -105,7 +76,10 @@ export const nodeToolDefinitions = [
105
76
  items: {
106
77
  type: 'object',
107
78
  properties: {
108
- nodePath: { type: 'string', description: 'Node path from scene root' },
79
+ nodePath: {
80
+ type: 'string',
81
+ description: 'Node path from scene root (e.g. "root/Player")',
82
+ },
109
83
  changedOnly: {
110
84
  type: 'boolean',
111
85
  description: 'Only return properties differing from defaults (default: false)',
@@ -138,7 +112,7 @@ export const nodeToolDefinitions = [
138
112
  },
139
113
  {
140
114
  name: 'get_scene_tree',
141
- description: 'Get the scene hierarchy as a nested tree of { name, type, path, children }. Use maxDepth:1 for a shallow listing of direct children only; default -1 returns the full tree. parentPath scopes the result to a subtree. Errors if scene does not exist or parentPath is not found.',
115
+ description: 'Get the scene hierarchy as a nested tree of { name, type, path, script, children }. Use maxDepth:1 for a shallow listing of direct children only; default -1 returns the full tree. parentPath scopes the result to a subtree. Returns the nested tree as JSON text. Errors if scene does not exist or parentPath is not found.',
142
116
  annotations: { readOnlyHint: true },
143
117
  inputSchema: {
144
118
  type: 'object',
@@ -194,7 +168,7 @@ export const nodeToolDefinitions = [
194
168
  },
195
169
  {
196
170
  name: 'connect_signal',
197
- description: 'Connect a signal from one node to a method on another node. Saves automatically. Errors if the signal does not exist on the source node or the method does not exist on the target node.',
171
+ description: 'Connect a signal on a source node to a method on a target node, persisting the connection in the .tscn. Use after get_node_signals to confirm the signal name on the source and the method name on the target. Connecting the same signal+method pair twice creates a duplicate connection — call get_node_signals first if uncertain. Saves automatically. Returns a plain-text confirmation naming the source, signal, target, and method. Errors if the signal does not exist on the source node or the method does not exist on the target node.',
198
172
  inputSchema: {
199
173
  type: 'object',
200
174
  properties: {
@@ -219,7 +193,8 @@ export const nodeToolDefinitions = [
219
193
  },
220
194
  {
221
195
  name: 'disconnect_signal',
222
- description: 'Disconnect a signal connection between two nodes. Saves automatically. Errors if the connection does not exist — use get_node_signals first to verify.',
196
+ description: 'Remove an existing signal connection between two nodes, persisting the change in the .tscn. Use get_node_signals first to confirm the connection exists; recovery requires reconnecting via connect_signal. Saves automatically. Returns a plain-text confirmation naming the disconnected signal and target. Errors if the connection does not exist.',
197
+ annotations: { destructiveHint: true },
223
198
  inputSchema: {
224
199
  type: 'object',
225
200
  properties: {
@@ -235,71 +210,29 @@ export const nodeToolDefinitions = [
235
210
  },
236
211
  ];
237
212
  // --- Handlers ---
238
- export async function handleDeleteNode(runner, args) {
239
- args = normalizeParameters(args);
240
- const v = validateSceneArgs(args);
241
- if ('isError' in v)
242
- return v;
243
- if (!args.nodePath || !validatePath(args.nodePath)) {
244
- return createErrorResponse('Valid nodePath is required', [
245
- 'Provide the node path (e.g. "root/Player")',
246
- ]);
247
- }
248
- try {
249
- const params = { scenePath: args.scenePath, nodePath: args.nodePath };
250
- const { stdout, stderr } = await runner.executeOperation('delete_node', params, v.projectPath);
251
- if (!stdout.trim()) {
252
- return createErrorResponse(`Failed to delete node: ${extractGdError(stderr)}`, [
253
- 'Check if the node path is correct',
254
- ]);
255
- }
256
- return { content: [{ type: 'text', text: stdout }] };
257
- }
258
- catch (error) {
259
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
260
- return createErrorResponse(`Failed to delete node: ${errorMessage}`, [
261
- 'Ensure Godot is installed correctly',
262
- ]);
263
- }
264
- }
265
- export async function handleSetNodeProperty(runner, args) {
213
+ export async function handleDeleteNodes(runner, args) {
266
214
  args = normalizeParameters(args);
267
215
  const v = validateSceneArgs(args);
268
216
  if ('isError' in v)
269
217
  return v;
270
- if (!args.nodePath || !validatePath(args.nodePath)) {
271
- return createErrorResponse('Valid nodePath is required', [
272
- 'Provide the node path (e.g. "root/Player")',
273
- ]);
274
- }
275
- if (!args.property || args.value === undefined) {
276
- return createErrorResponse('property and value are required', [
277
- 'Provide both property name and value',
218
+ if (!args.nodePaths || !Array.isArray(args.nodePaths) || args.nodePaths.length === 0) {
219
+ return createErrorResponse('nodePaths array is required', [
220
+ 'Provide a non-empty array of node paths (e.g. ["root/Player"])',
278
221
  ]);
279
222
  }
280
- try {
281
- const params = {
282
- scenePath: args.scenePath,
283
- nodePath: args.nodePath,
284
- property: args.property,
285
- value: args.value,
286
- };
287
- const { stdout, stderr } = await runner.executeOperation('set_node_property', params, v.projectPath);
288
- if (!stdout.trim()) {
289
- return createErrorResponse(`Failed to update property: ${extractGdError(stderr)}`, [
290
- 'Check if the property name is valid for this node type',
223
+ for (const p of args.nodePaths) {
224
+ if (typeof p !== 'string' || !validatePath(p)) {
225
+ return createErrorResponse('Invalid nodePath in nodePaths', [
226
+ 'Provide valid paths without ".." (e.g. "root/Player")',
291
227
  ]);
292
228
  }
293
- return { content: [{ type: 'text', text: stdout }] };
294
- }
295
- catch (error) {
296
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
297
- return createErrorResponse(`Failed to set node property: ${errorMessage}`, [
298
- 'Ensure Godot is installed correctly',
299
- ]);
300
229
  }
230
+ const params = { scenePath: args.scenePath, nodePaths: args.nodePaths };
231
+ return executeSceneOp(runner, 'delete_nodes', params, v.projectPath, 'Failed to delete nodes', [
232
+ 'Check if the node paths are correct',
233
+ ]);
301
234
  }
302
- export async function handleBatchSetNodeProperties(runner, args) {
235
+ export async function handleSetNodeProperties(runner, args) {
303
236
  args = normalizeParameters(args);
304
237
  const v = validateSceneArgs(args);
305
238
  if ('isError' in v)
@@ -309,58 +242,15 @@ export async function handleBatchSetNodeProperties(runner, args) {
309
242
  'Provide an array of { nodePath, property, value }',
310
243
  ]);
311
244
  }
312
- try {
313
- const snakeUpdates = args.updates.map((u) => convertCamelToSnakeCase(u));
314
- const params = {
315
- scenePath: args.scenePath,
316
- updates: snakeUpdates,
317
- abortOnError: args.abortOnError ?? false,
318
- };
319
- const { stdout, stderr } = await runner.executeOperation('batch_set_node_properties', params, v.projectPath);
320
- if (!stdout.trim()) {
321
- return createErrorResponse(`Batch update failed: ${extractGdError(stderr)}`, [
322
- 'Check node paths and property names',
323
- ]);
324
- }
325
- return { content: [{ type: 'text', text: stdout }] };
326
- }
327
- catch (error) {
328
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
329
- return createErrorResponse(`Batch set properties failed: ${errorMessage}`, [
330
- 'Ensure Godot is installed correctly',
331
- ]);
332
- }
245
+ const snakeUpdates = args.updates.map((u) => convertCamelToSnakeCase(u));
246
+ const params = {
247
+ scenePath: args.scenePath,
248
+ updates: snakeUpdates,
249
+ abortOnError: args.abortOnError ?? false,
250
+ };
251
+ return executeSceneOp(runner, 'set_node_properties', params, v.projectPath, 'Failed to set node properties', ['Check node paths and property names']);
333
252
  }
334
253
  export async function handleGetNodeProperties(runner, args) {
335
- args = normalizeParameters(args);
336
- const v = validateSceneArgs(args);
337
- if ('isError' in v)
338
- return v;
339
- if (!args.nodePath || !validatePath(args.nodePath)) {
340
- return createErrorResponse('Valid nodePath is required', [
341
- 'Provide the node path (e.g. "root/Player")',
342
- ]);
343
- }
344
- try {
345
- const params = { scenePath: args.scenePath, nodePath: args.nodePath };
346
- if (args.changedOnly)
347
- params.changedOnly = args.changedOnly;
348
- const { stdout, stderr } = await runner.executeOperation('get_node_properties', params, v.projectPath);
349
- if (!stdout.trim()) {
350
- return createErrorResponse(`Failed to get properties: ${extractGdError(stderr)}`, [
351
- 'Check if the node path is correct',
352
- ]);
353
- }
354
- return { content: [{ type: 'text', text: stdout }] };
355
- }
356
- catch (error) {
357
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
358
- return createErrorResponse(`Failed to get node properties: ${errorMessage}`, [
359
- 'Ensure Godot is installed correctly',
360
- ]);
361
- }
362
- }
363
- export async function handleBatchGetNodeProperties(runner, args) {
364
254
  args = normalizeParameters(args);
365
255
  const v = validateSceneArgs(args);
366
256
  if ('isError' in v)
@@ -370,23 +260,9 @@ export async function handleBatchGetNodeProperties(runner, args) {
370
260
  'Provide an array of { nodePath, changedOnly? }',
371
261
  ]);
372
262
  }
373
- try {
374
- const snakeNodes = args.nodes.map((n) => convertCamelToSnakeCase(n));
375
- const params = { scenePath: args.scenePath, nodes: snakeNodes };
376
- const { stdout, stderr } = await runner.executeOperation('batch_get_node_properties', params, v.projectPath);
377
- if (!stdout.trim()) {
378
- return createErrorResponse(`Batch get_properties failed: ${extractGdError(stderr)}`, [
379
- 'Check node paths',
380
- ]);
381
- }
382
- return { content: [{ type: 'text', text: stdout }] };
383
- }
384
- catch (error) {
385
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
386
- return createErrorResponse(`Batch get properties failed: ${errorMessage}`, [
387
- 'Ensure Godot is installed correctly',
388
- ]);
389
- }
263
+ const snakeNodes = args.nodes.map((n) => convertCamelToSnakeCase(n));
264
+ const params = { scenePath: args.scenePath, nodes: snakeNodes };
265
+ return executeSceneOp(runner, 'get_node_properties', params, v.projectPath, 'Failed to get node properties', ['Check node paths']);
390
266
  }
391
267
  export async function handleAttachScript(runner, args) {
392
268
  args = normalizeParameters(args);
@@ -409,26 +285,14 @@ export async function handleAttachScript(runner, args) {
409
285
  'Create the script file first',
410
286
  ]);
411
287
  }
412
- try {
413
- const params = {
414
- scenePath: args.scenePath,
415
- nodePath: args.nodePath,
416
- scriptPath: args.scriptPath,
417
- };
418
- const { stdout, stderr } = await runner.executeOperation('attach_script', params, v.projectPath);
419
- if (!stdout.trim()) {
420
- return createErrorResponse(`Failed to attach script: ${extractGdError(stderr)}`, [
421
- 'Ensure the script is valid for this node type',
422
- ]);
423
- }
424
- return { content: [{ type: 'text', text: stdout }] };
425
- }
426
- catch (error) {
427
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
428
- return createErrorResponse(`Failed to attach script: ${errorMessage}`, [
429
- 'Ensure Godot is installed correctly',
430
- ]);
431
- }
288
+ const params = {
289
+ scenePath: args.scenePath,
290
+ nodePath: args.nodePath,
291
+ scriptPath: args.scriptPath,
292
+ };
293
+ return executeSceneOp(runner, 'attach_script', params, v.projectPath, 'Failed to attach script', [
294
+ 'Ensure the script is valid for this node type',
295
+ ]);
432
296
  }
433
297
  export async function handleGetSceneTree(runner, args) {
434
298
  args = normalizeParameters(args);
@@ -438,26 +302,12 @@ export async function handleGetSceneTree(runner, args) {
438
302
  if (args.parentPath && !validatePath(args.parentPath)) {
439
303
  return createErrorResponse('Invalid parentPath', ['Provide a valid path without ".."']);
440
304
  }
441
- try {
442
- const params = { scenePath: args.scenePath };
443
- if (args.parentPath)
444
- params.parentPath = args.parentPath;
445
- if (typeof args.maxDepth === 'number')
446
- params.maxDepth = args.maxDepth;
447
- const { stdout, stderr } = await runner.executeOperation('get_scene_tree', params, v.projectPath);
448
- if (!stdout.trim()) {
449
- return createErrorResponse(`Failed to get scene tree: ${extractGdError(stderr)}`, [
450
- 'Ensure the scene is valid',
451
- ]);
452
- }
453
- return { content: [{ type: 'text', text: stdout }] };
454
- }
455
- catch (error) {
456
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
457
- return createErrorResponse(`Failed to get scene tree: ${errorMessage}`, [
458
- 'Ensure Godot is installed correctly',
459
- ]);
460
- }
305
+ const params = { scenePath: args.scenePath };
306
+ if (args.parentPath)
307
+ params.parentPath = args.parentPath;
308
+ if (typeof args.maxDepth === 'number')
309
+ params.maxDepth = args.maxDepth;
310
+ return executeSceneOp(runner, 'get_scene_tree', params, v.projectPath, 'Failed to get scene tree', ['Ensure the scene is valid']);
461
311
  }
462
312
  export async function handleDuplicateNode(runner, args) {
463
313
  args = normalizeParameters(args);
@@ -472,26 +322,12 @@ export async function handleDuplicateNode(runner, args) {
472
322
  if (args.targetParentPath && !validatePath(args.targetParentPath)) {
473
323
  return createErrorResponse('Invalid targetParentPath', ['Provide a valid path without ".."']);
474
324
  }
475
- try {
476
- const params = { scenePath: args.scenePath, nodePath: args.nodePath };
477
- if (args.newName)
478
- params.newName = args.newName;
479
- if (args.targetParentPath)
480
- params.targetParentPath = args.targetParentPath;
481
- const { stdout, stderr } = await runner.executeOperation('duplicate_node', params, v.projectPath);
482
- if (!stdout.trim()) {
483
- return createErrorResponse(`Failed to duplicate node: ${extractGdError(stderr)}`, [
484
- 'Check if the node path and target parent path are correct',
485
- ]);
486
- }
487
- return { content: [{ type: 'text', text: stdout }] };
488
- }
489
- catch (error) {
490
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
491
- return createErrorResponse(`Failed to duplicate node: ${errorMessage}`, [
492
- 'Ensure Godot is installed correctly',
493
- ]);
494
- }
325
+ const params = { scenePath: args.scenePath, nodePath: args.nodePath };
326
+ if (args.newName)
327
+ params.newName = args.newName;
328
+ if (args.targetParentPath)
329
+ params.targetParentPath = args.targetParentPath;
330
+ return executeSceneOp(runner, 'duplicate_node', params, v.projectPath, 'Failed to duplicate node', ['Check if the node path and target parent path are correct']);
495
331
  }
496
332
  export async function handleGetNodeSignals(runner, args) {
497
333
  args = normalizeParameters(args);
@@ -503,25 +339,10 @@ export async function handleGetNodeSignals(runner, args) {
503
339
  'Provide the node path (e.g. "root/Button")',
504
340
  ]);
505
341
  }
506
- try {
507
- const params = { scenePath: args.scenePath, nodePath: args.nodePath };
508
- const { stdout, stderr } = await runner.executeOperation('get_node_signals', params, v.projectPath);
509
- if (!stdout.trim()) {
510
- return createErrorResponse(`Failed to get signals: ${extractGdError(stderr)}`, [
511
- 'Check if the node path is correct',
512
- ]);
513
- }
514
- return { content: [{ type: 'text', text: stdout }] };
515
- }
516
- catch (error) {
517
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
518
- return createErrorResponse(`Failed to get node signals: ${errorMessage}`, [
519
- 'Ensure Godot is installed correctly',
520
- ]);
521
- }
342
+ const params = { scenePath: args.scenePath, nodePath: args.nodePath };
343
+ return executeSceneOp(runner, 'get_node_signals', params, v.projectPath, 'Failed to get node signals', ['Check if the node path is correct']);
522
344
  }
523
- export async function handleConnectSignal(runner, args) {
524
- args = normalizeParameters(args);
345
+ function validateSignalArgs(args) {
525
346
  const v = validateSceneArgs(args);
526
347
  if ('isError' in v)
527
348
  return v;
@@ -536,66 +357,41 @@ export async function handleConnectSignal(runner, args) {
536
357
  if (!validatePath(args.targetNodePath)) {
537
358
  return createErrorResponse('Invalid targetNodePath', ['Provide a valid path without ".."']);
538
359
  }
539
- try {
540
- const params = {
541
- scenePath: args.scenePath,
542
- nodePath: args.nodePath,
543
- signal: args.signal,
544
- targetNodePath: args.targetNodePath,
545
- method: args.method,
546
- };
547
- const { stdout, stderr } = await runner.executeOperation('connect_signal', params, v.projectPath);
548
- if (!stdout.trim()) {
549
- return createErrorResponse(`Failed to connect signal: ${extractGdError(stderr)}`, [
550
- 'Ensure the signal exists on the source node and the method exists on the target node',
551
- ]);
552
- }
553
- return { content: [{ type: 'text', text: stdout }] };
554
- }
555
- catch (error) {
556
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
557
- return createErrorResponse(`Failed to connect signal: ${errorMessage}`, [
558
- 'Ensure Godot is installed correctly',
559
- ]);
560
- }
360
+ return {
361
+ projectPath: v.projectPath,
362
+ scenePath: v.scenePath,
363
+ nodePath: args.nodePath,
364
+ signal: args.signal,
365
+ targetNodePath: args.targetNodePath,
366
+ method: args.method,
367
+ };
368
+ }
369
+ export async function handleConnectSignal(runner, args) {
370
+ args = normalizeParameters(args);
371
+ const v = validateSignalArgs(args);
372
+ if ('isError' in v)
373
+ return v;
374
+ const params = {
375
+ scenePath: v.scenePath,
376
+ nodePath: v.nodePath,
377
+ signal: v.signal,
378
+ targetNodePath: v.targetNodePath,
379
+ method: v.method,
380
+ };
381
+ return executeSceneOp(runner, 'connect_signal', params, v.projectPath, 'Failed to connect signal', ['Ensure the signal exists on the source node and the method exists on the target node']);
561
382
  }
562
383
  export async function handleDisconnectSignal(runner, args) {
563
384
  args = normalizeParameters(args);
564
- const v = validateSceneArgs(args);
385
+ const v = validateSignalArgs(args);
565
386
  if ('isError' in v)
566
387
  return v;
567
- if (!args.nodePath || !validatePath(args.nodePath)) {
568
- return createErrorResponse('Valid nodePath is required', ['Provide the source node path']);
569
- }
570
- if (!args.signal || !args.targetNodePath || !args.method) {
571
- return createErrorResponse('signal, targetNodePath, and method are required', [
572
- 'Provide all three parameters',
573
- ]);
574
- }
575
- if (!validatePath(args.targetNodePath)) {
576
- return createErrorResponse('Invalid targetNodePath', ['Provide a valid path without ".."']);
577
- }
578
- try {
579
- const params = {
580
- scenePath: args.scenePath,
581
- nodePath: args.nodePath,
582
- signal: args.signal,
583
- targetNodePath: args.targetNodePath,
584
- method: args.method,
585
- };
586
- const { stdout, stderr } = await runner.executeOperation('disconnect_signal', params, v.projectPath);
587
- if (!stdout.trim()) {
588
- return createErrorResponse(`Failed to disconnect signal: ${extractGdError(stderr)}`, [
589
- 'Ensure the signal connection exists before trying to disconnect it',
590
- ]);
591
- }
592
- return { content: [{ type: 'text', text: stdout }] };
593
- }
594
- catch (error) {
595
- const errorMessage = error instanceof Error ? error.message : 'Unknown error';
596
- return createErrorResponse(`Failed to disconnect signal: ${errorMessage}`, [
597
- 'Ensure Godot is installed correctly',
598
- ]);
599
- }
388
+ const params = {
389
+ scenePath: v.scenePath,
390
+ nodePath: v.nodePath,
391
+ signal: v.signal,
392
+ targetNodePath: v.targetNodePath,
393
+ method: v.method,
394
+ };
395
+ return executeSceneOp(runner, 'disconnect_signal', params, v.projectPath, 'Failed to disconnect signal', ['Ensure the signal connection exists before trying to disconnect it']);
600
396
  }
601
397
  //# sourceMappingURL=node-tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-tools.js","sourceRoot":"","sources":["../../src/tools/node-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-tools.js","sourceRoot":"","sources":["../../src/tools/node-tools.ts"],"names":[],"mappings":"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"}