@satelliteoflove/godot-mcp 0.1.4 → 0.1.6

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 (36) hide show
  1. package/dist/__tests__/helpers/mock-godot.d.ts +17 -0
  2. package/dist/__tests__/helpers/mock-godot.d.ts.map +1 -0
  3. package/dist/__tests__/helpers/mock-godot.js +33 -0
  4. package/dist/__tests__/helpers/mock-godot.js.map +1 -0
  5. package/dist/__tests__/tools/animation.test.d.ts +2 -0
  6. package/dist/__tests__/tools/animation.test.d.ts.map +1 -0
  7. package/dist/__tests__/tools/animation.test.js +315 -0
  8. package/dist/__tests__/tools/animation.test.js.map +1 -0
  9. package/dist/__tests__/tools/node.test.d.ts +2 -0
  10. package/dist/__tests__/tools/node.test.d.ts.map +1 -0
  11. package/dist/__tests__/tools/node.test.js +173 -0
  12. package/dist/__tests__/tools/node.test.js.map +1 -0
  13. package/dist/__tests__/tools/scene.test.d.ts +2 -0
  14. package/dist/__tests__/tools/scene.test.d.ts.map +1 -0
  15. package/dist/__tests__/tools/scene.test.js +127 -0
  16. package/dist/__tests__/tools/scene.test.js.map +1 -0
  17. package/dist/__tests__/tools/tilemap.test.d.ts +2 -0
  18. package/dist/__tests__/tools/tilemap.test.d.ts.map +1 -0
  19. package/dist/__tests__/tools/tilemap.test.js +333 -0
  20. package/dist/__tests__/tools/tilemap.test.js.map +1 -0
  21. package/dist/connection/websocket.d.ts.map +1 -1
  22. package/dist/connection/websocket.js +39 -7
  23. package/dist/connection/websocket.js.map +1 -1
  24. package/dist/tools/animation.d.ts +152 -216
  25. package/dist/tools/animation.d.ts.map +1 -1
  26. package/dist/tools/animation.js +324 -372
  27. package/dist/tools/animation.js.map +1 -1
  28. package/dist/tools/tilemap.d.ts +267 -253
  29. package/dist/tools/tilemap.d.ts.map +1 -1
  30. package/dist/tools/tilemap.js +273 -304
  31. package/dist/tools/tilemap.js.map +1 -1
  32. package/package.json +4 -2
  33. package/dist/__tests__/registry.test.d.ts +0 -2
  34. package/dist/__tests__/registry.test.d.ts.map +0 -1
  35. package/dist/__tests__/registry.test.js +0 -116
  36. package/dist/__tests__/registry.test.js.map +0 -1
@@ -9,318 +9,287 @@ const Vector3iSchema = z.object({
9
9
  y: z.number().int(),
10
10
  z: z.number().int(),
11
11
  });
12
- export const listTilemapLayers = defineTool({
13
- name: 'list_tilemap_layers',
14
- description: 'Find all TileMapLayer nodes in the scene',
15
- schema: z.object({
16
- root_path: z
17
- .string()
18
- .optional()
19
- .describe('Starting node path, defaults to scene root'),
20
- }),
21
- async execute({ root_path }, { godot }) {
22
- const result = await godot.sendCommand('list_tilemap_layers', { root_path });
23
- if (result.tilemap_layers.length === 0) {
24
- return 'No TileMapLayer nodes found in scene';
12
+ const TilemapQuerySchema = z
13
+ .object({
14
+ action: z
15
+ .enum([
16
+ 'list_layers',
17
+ 'get_info',
18
+ 'get_tileset_info',
19
+ 'get_used_cells',
20
+ 'get_cell',
21
+ 'get_cells_in_region',
22
+ 'convert_coords',
23
+ ])
24
+ .describe('Action: list_layers, get_info, get_tileset_info, get_used_cells, get_cell, get_cells_in_region, convert_coords'),
25
+ root_path: z.string().optional().describe('Starting node path (list_layers only)'),
26
+ node_path: z.string().optional().describe('Path to TileMapLayer (required except list_layers)'),
27
+ coords: Vector2iSchema.optional().describe('Cell coordinates (get_cell)'),
28
+ min_coords: Vector2iSchema.optional().describe('Minimum corner of region (get_cells_in_region)'),
29
+ max_coords: Vector2iSchema.optional().describe('Maximum corner of region (get_cells_in_region)'),
30
+ local_position: z
31
+ .object({ x: z.number(), y: z.number() })
32
+ .optional()
33
+ .describe('Local position to convert to map coords (convert_coords)'),
34
+ map_coords: Vector2iSchema.optional().describe('Map coordinates to convert to local position (convert_coords)'),
35
+ })
36
+ .refine((data) => {
37
+ switch (data.action) {
38
+ case 'list_layers':
39
+ return true;
40
+ case 'get_info':
41
+ case 'get_tileset_info':
42
+ case 'get_used_cells':
43
+ case 'convert_coords':
44
+ return !!data.node_path;
45
+ case 'get_cell':
46
+ return !!data.node_path && !!data.coords;
47
+ case 'get_cells_in_region':
48
+ return !!data.node_path && !!data.min_coords && !!data.max_coords;
49
+ }
50
+ }, { message: 'Missing required fields for action' });
51
+ export const tilemapQuery = defineTool({
52
+ name: 'tilemap_query',
53
+ description: 'Query TileMapLayer data. Actions: list_layers, get_info, get_tileset_info, get_used_cells, get_cell, get_cells_in_region, convert_coords',
54
+ schema: TilemapQuerySchema,
55
+ async execute(args, { godot }) {
56
+ switch (args.action) {
57
+ case 'list_layers': {
58
+ const result = await godot.sendCommand('list_tilemap_layers', { root_path: args.root_path });
59
+ if (result.tilemap_layers.length === 0) {
60
+ return 'No TileMapLayer nodes found in scene';
61
+ }
62
+ return `Found ${result.tilemap_layers.length} TileMapLayer(s):\n${result.tilemap_layers.map((l) => ` - ${l.path}`).join('\n')}`;
63
+ }
64
+ case 'get_info': {
65
+ const result = await godot.sendCommand('get_tilemap_layer_info', { node_path: args.node_path });
66
+ return JSON.stringify(result, null, 2);
67
+ }
68
+ case 'get_tileset_info': {
69
+ const result = await godot.sendCommand('get_tileset_info', { node_path: args.node_path });
70
+ return JSON.stringify(result, null, 2);
71
+ }
72
+ case 'get_used_cells': {
73
+ const result = await godot.sendCommand('get_used_cells', { node_path: args.node_path });
74
+ return JSON.stringify(result, null, 2);
75
+ }
76
+ case 'get_cell': {
77
+ const result = await godot.sendCommand('get_cell', { node_path: args.node_path, coords: args.coords });
78
+ return JSON.stringify(result, null, 2);
79
+ }
80
+ case 'get_cells_in_region': {
81
+ const result = await godot.sendCommand('get_cells_in_region', {
82
+ node_path: args.node_path,
83
+ min_coords: args.min_coords,
84
+ max_coords: args.max_coords,
85
+ });
86
+ return JSON.stringify(result, null, 2);
87
+ }
88
+ case 'convert_coords': {
89
+ const result = await godot.sendCommand('convert_coords', {
90
+ node_path: args.node_path,
91
+ local_position: args.local_position,
92
+ map_coords: args.map_coords,
93
+ });
94
+ return JSON.stringify(result, null, 2);
95
+ }
25
96
  }
26
- return `Found ${result.tilemap_layers.length} TileMapLayer(s):\n${result.tilemap_layers.map((l) => ` - ${l.path}`).join('\n')}`;
27
97
  },
28
98
  });
29
- export const getTilemapLayerInfo = defineTool({
30
- name: 'get_tilemap_layer_info',
31
- description: 'Get TileMapLayer properties (tileset, enabled, etc.)',
32
- schema: z.object({
33
- node_path: z.string().describe('Path to TileMapLayer node'),
34
- }),
35
- async execute({ node_path }, { godot }) {
36
- const result = await godot.sendCommand('get_tilemap_layer_info', { node_path });
37
- return JSON.stringify(result, null, 2);
38
- },
39
- });
40
- export const getTilesetInfo = defineTool({
41
- name: 'get_tileset_info',
42
- description: 'Get TileSet sources and atlas information',
43
- schema: z.object({
44
- node_path: z.string().describe('Path to TileMapLayer node'),
45
- }),
46
- async execute({ node_path }, { godot }) {
47
- const result = await godot.sendCommand('get_tileset_info', { node_path });
48
- return JSON.stringify(result, null, 2);
49
- },
50
- });
51
- export const getUsedCells = defineTool({
52
- name: 'get_used_cells',
53
- description: 'Get all non-empty cell coordinates in a TileMapLayer',
54
- schema: z.object({
55
- node_path: z.string().describe('Path to TileMapLayer node'),
56
- }),
57
- async execute({ node_path }, { godot }) {
58
- const result = await godot.sendCommand('get_used_cells', { node_path });
59
- return JSON.stringify(result, null, 2);
60
- },
61
- });
62
- export const getCell = defineTool({
63
- name: 'get_cell',
64
- description: 'Get cell data (source_id, atlas_coords, alternative_tile)',
65
- schema: z.object({
66
- node_path: z.string().describe('Path to TileMapLayer node'),
67
- coords: Vector2iSchema.describe('Cell coordinates'),
68
- }),
69
- async execute({ node_path, coords }, { godot }) {
70
- const result = await godot.sendCommand('get_cell', { node_path, coords });
71
- return JSON.stringify(result, null, 2);
72
- },
73
- });
74
- export const setCell = defineTool({
75
- name: 'set_cell',
76
- description: 'Set a cell with tile data',
77
- schema: z.object({
78
- node_path: z.string().describe('Path to TileMapLayer node'),
79
- coords: Vector2iSchema.describe('Cell coordinates'),
80
- source_id: z.number().int().optional().describe('TileSet source ID (default 0)'),
81
- atlas_coords: Vector2iSchema.optional().describe('Atlas coordinates (default 0,0)'),
82
- alternative_tile: z
83
- .number()
84
- .int()
85
- .optional()
86
- .describe('Alternative tile ID (default 0)'),
87
- }),
88
- async execute({ node_path, coords, source_id, atlas_coords, alternative_tile }, { godot }) {
89
- const result = await godot.sendCommand('set_cell', {
90
- node_path,
91
- coords,
92
- source_id,
93
- atlas_coords,
94
- alternative_tile,
95
- });
96
- return `Set cell at (${result.coords.x}, ${result.coords.y}) with source ${result.source_id}, atlas (${result.atlas_coords.x}, ${result.atlas_coords.y})`;
97
- },
98
- });
99
- export const eraseCell = defineTool({
100
- name: 'erase_cell',
101
- description: 'Clear a single cell',
102
- schema: z.object({
103
- node_path: z.string().describe('Path to TileMapLayer node'),
104
- coords: Vector2iSchema.describe('Cell coordinates to erase'),
105
- }),
106
- async execute({ node_path, coords }, { godot }) {
107
- const result = await godot.sendCommand('erase_cell', { node_path, coords });
108
- return `Erased cell at (${result.erased.x}, ${result.erased.y})`;
109
- },
110
- });
111
- export const clearLayer = defineTool({
112
- name: 'clear_layer',
113
- description: 'Clear all cells in a TileMapLayer',
114
- schema: z.object({
115
- node_path: z.string().describe('Path to TileMapLayer node'),
116
- }),
117
- async execute({ node_path }, { godot }) {
118
- const result = await godot.sendCommand('clear_layer', { node_path });
119
- return `Cleared layer: ${result.cells_removed} cells removed`;
120
- },
121
- });
122
- export const getCellsInRegion = defineTool({
123
- name: 'get_cells_in_region',
124
- description: 'Get cells within a rectangular region',
125
- schema: z.object({
126
- node_path: z.string().describe('Path to TileMapLayer node'),
127
- min_coords: Vector2iSchema.describe('Minimum corner of region'),
128
- max_coords: Vector2iSchema.describe('Maximum corner of region'),
129
- }),
130
- async execute({ node_path, min_coords, max_coords }, { godot }) {
131
- const result = await godot.sendCommand('get_cells_in_region', { node_path, min_coords, max_coords });
132
- return JSON.stringify(result, null, 2);
133
- },
134
- });
135
- export const setCellsBatch = defineTool({
136
- name: 'set_cells_batch',
137
- description: 'Set multiple cells at once',
138
- schema: z.object({
139
- node_path: z.string().describe('Path to TileMapLayer node'),
140
- cells: z
141
- .array(z.object({
142
- coords: Vector2iSchema,
143
- source_id: z.number().int().optional(),
144
- atlas_coords: Vector2iSchema.optional(),
145
- alternative_tile: z.number().int().optional(),
146
- }))
147
- .describe('Array of cells to set'),
148
- }),
149
- async execute({ node_path, cells }, { godot }) {
150
- const result = await godot.sendCommand('set_cells_batch', { node_path, cells });
151
- return `Set ${result.cells_set} cells`;
152
- },
153
- });
154
- export const convertCoords = defineTool({
155
- name: 'convert_coords',
156
- description: 'Convert between local and map coordinates',
157
- schema: z.object({
158
- node_path: z.string().describe('Path to TileMapLayer node'),
159
- local_position: z
160
- .object({ x: z.number(), y: z.number() })
161
- .optional()
162
- .describe('Local position to convert to map coords'),
163
- map_coords: Vector2iSchema.optional().describe('Map coordinates to convert to local position'),
164
- }),
165
- async execute({ node_path, local_position, map_coords }, { godot }) {
166
- const result = await godot.sendCommand('convert_coords', { node_path, local_position, map_coords });
167
- return JSON.stringify(result, null, 2);
168
- },
169
- });
170
- export const listGridmaps = defineTool({
171
- name: 'list_gridmaps',
172
- description: 'Find all GridMap nodes in the scene',
173
- schema: z.object({
174
- root_path: z
175
- .string()
176
- .optional()
177
- .describe('Starting node path, defaults to scene root'),
178
- }),
179
- async execute({ root_path }, { godot }) {
180
- const result = await godot.sendCommand('list_gridmaps', { root_path });
181
- if (result.gridmaps.length === 0) {
182
- return 'No GridMap nodes found in scene';
99
+ const TilemapEditSchema = z
100
+ .object({
101
+ action: z
102
+ .enum(['set_cell', 'erase_cell', 'clear_layer', 'set_cells_batch'])
103
+ .describe('Action: set_cell, erase_cell, clear_layer, set_cells_batch'),
104
+ node_path: z.string().describe('Path to TileMapLayer node'),
105
+ coords: Vector2iSchema.optional().describe('Cell coordinates (set_cell, erase_cell)'),
106
+ source_id: z.number().int().optional().describe('TileSet source ID, default 0 (set_cell)'),
107
+ atlas_coords: Vector2iSchema.optional().describe('Atlas coordinates, default 0,0 (set_cell)'),
108
+ alternative_tile: z.number().int().optional().describe('Alternative tile ID, default 0 (set_cell)'),
109
+ cells: z
110
+ .array(z.object({
111
+ coords: Vector2iSchema,
112
+ source_id: z.number().int().optional(),
113
+ atlas_coords: Vector2iSchema.optional(),
114
+ alternative_tile: z.number().int().optional(),
115
+ }))
116
+ .optional()
117
+ .describe('Array of cells to set (set_cells_batch)'),
118
+ })
119
+ .refine((data) => {
120
+ switch (data.action) {
121
+ case 'set_cell':
122
+ case 'erase_cell':
123
+ return !!data.coords;
124
+ case 'clear_layer':
125
+ return true;
126
+ case 'set_cells_batch':
127
+ return !!data.cells && data.cells.length > 0;
128
+ }
129
+ }, { message: 'Missing required fields for action' });
130
+ export const tilemapEdit = defineTool({
131
+ name: 'tilemap_edit',
132
+ description: 'Edit TileMapLayer cells. Actions: set_cell, erase_cell, clear_layer, set_cells_batch',
133
+ schema: TilemapEditSchema,
134
+ async execute(args, { godot }) {
135
+ switch (args.action) {
136
+ case 'set_cell': {
137
+ const result = await godot.sendCommand('set_cell', {
138
+ node_path: args.node_path,
139
+ coords: args.coords,
140
+ source_id: args.source_id,
141
+ atlas_coords: args.atlas_coords,
142
+ alternative_tile: args.alternative_tile,
143
+ });
144
+ return `Set cell at (${result.coords.x}, ${result.coords.y}) with source ${result.source_id}, atlas (${result.atlas_coords.x}, ${result.atlas_coords.y})`;
145
+ }
146
+ case 'erase_cell': {
147
+ const result = await godot.sendCommand('erase_cell', {
148
+ node_path: args.node_path,
149
+ coords: args.coords,
150
+ });
151
+ return `Erased cell at (${result.erased.x}, ${result.erased.y})`;
152
+ }
153
+ case 'clear_layer': {
154
+ const result = await godot.sendCommand('clear_layer', {
155
+ node_path: args.node_path,
156
+ });
157
+ return `Cleared layer: ${result.cells_removed} cells removed`;
158
+ }
159
+ case 'set_cells_batch': {
160
+ const result = await godot.sendCommand('set_cells_batch', {
161
+ node_path: args.node_path,
162
+ cells: args.cells,
163
+ });
164
+ return `Set ${result.cells_set} cells`;
165
+ }
183
166
  }
184
- return `Found ${result.gridmaps.length} GridMap(s):\n${result.gridmaps.map((g) => ` - ${g.path}`).join('\n')}`;
185
- },
186
- });
187
- export const getGridmapInfo = defineTool({
188
- name: 'get_gridmap_info',
189
- description: 'Get GridMap properties (mesh_library, cell_size, etc.)',
190
- schema: z.object({
191
- node_path: z.string().describe('Path to GridMap node'),
192
- }),
193
- async execute({ node_path }, { godot }) {
194
- const result = await godot.sendCommand('get_gridmap_info', { node_path });
195
- return JSON.stringify(result, null, 2);
196
- },
197
- });
198
- export const getMeshlibInfo = defineTool({
199
- name: 'get_meshlib_info',
200
- description: 'Get MeshLibrary item names and indices',
201
- schema: z.object({
202
- node_path: z.string().describe('Path to GridMap node'),
203
- }),
204
- async execute({ node_path }, { godot }) {
205
- const result = await godot.sendCommand('get_meshlib_info', { node_path });
206
- return JSON.stringify(result, null, 2);
207
- },
208
- });
209
- export const getGridmapUsedCells = defineTool({
210
- name: 'get_gridmap_used_cells',
211
- description: 'Get all non-empty cell coordinates in a GridMap',
212
- schema: z.object({
213
- node_path: z.string().describe('Path to GridMap node'),
214
- }),
215
- async execute({ node_path }, { godot }) {
216
- const result = await godot.sendCommand('get_gridmap_used_cells', { node_path });
217
- return JSON.stringify(result, null, 2);
218
- },
219
- });
220
- export const getGridmapCell = defineTool({
221
- name: 'get_gridmap_cell',
222
- description: 'Get cell data (item index, orientation)',
223
- schema: z.object({
224
- node_path: z.string().describe('Path to GridMap node'),
225
- coords: Vector3iSchema.describe('Cell coordinates'),
226
- }),
227
- async execute({ node_path, coords }, { godot }) {
228
- const result = await godot.sendCommand('get_gridmap_cell', { node_path, coords });
229
- return JSON.stringify(result, null, 2);
230
- },
231
- });
232
- export const setGridmapCell = defineTool({
233
- name: 'set_gridmap_cell',
234
- description: 'Set a cell with an item',
235
- schema: z.object({
236
- node_path: z.string().describe('Path to GridMap node'),
237
- coords: Vector3iSchema.describe('Cell coordinates'),
238
- item: z.number().int().describe('MeshLibrary item index'),
239
- orientation: z
240
- .number()
241
- .int()
242
- .optional()
243
- .describe('Orientation (0-23, default 0)'),
244
- }),
245
- async execute({ node_path, coords, item, orientation }, { godot }) {
246
- const result = await godot.sendCommand('set_gridmap_cell', { node_path, coords, item, orientation });
247
- return `Set cell at (${result.coords.x}, ${result.coords.y}, ${result.coords.z}) with item ${result.item}, orientation ${result.orientation}`;
248
- },
249
- });
250
- export const clearGridmapCell = defineTool({
251
- name: 'clear_gridmap_cell',
252
- description: 'Clear a single cell',
253
- schema: z.object({
254
- node_path: z.string().describe('Path to GridMap node'),
255
- coords: Vector3iSchema.describe('Cell coordinates to clear'),
256
- }),
257
- async execute({ node_path, coords }, { godot }) {
258
- const result = await godot.sendCommand('clear_gridmap_cell', { node_path, coords });
259
- return `Cleared cell at (${result.cleared.x}, ${result.cleared.y}, ${result.cleared.z})`;
260
167
  },
261
168
  });
262
- export const clearGridmap = defineTool({
263
- name: 'clear_gridmap',
264
- description: 'Clear all cells in a GridMap',
265
- schema: z.object({
266
- node_path: z.string().describe('Path to GridMap node'),
267
- }),
268
- async execute({ node_path }, { godot }) {
269
- const result = await godot.sendCommand('clear_gridmap', { node_path });
270
- return `Cleared GridMap: ${result.cells_removed} cells removed`;
271
- },
272
- });
273
- export const getCellsByItem = defineTool({
274
- name: 'get_cells_by_item',
275
- description: 'Get all cells containing a specific item',
276
- schema: z.object({
277
- node_path: z.string().describe('Path to GridMap node'),
278
- item: z.number().int().describe('MeshLibrary item index to search for'),
279
- }),
280
- async execute({ node_path, item }, { godot }) {
281
- const result = await godot.sendCommand('get_cells_by_item', { node_path, item });
282
- return JSON.stringify(result, null, 2);
169
+ const GridmapQuerySchema = z
170
+ .object({
171
+ action: z
172
+ .enum(['list', 'get_info', 'get_meshlib_info', 'get_used_cells', 'get_cell', 'get_cells_by_item'])
173
+ .describe('Action: list, get_info, get_meshlib_info, get_used_cells, get_cell, get_cells_by_item'),
174
+ root_path: z.string().optional().describe('Starting node path (list only)'),
175
+ node_path: z.string().optional().describe('Path to GridMap (required except list)'),
176
+ coords: Vector3iSchema.optional().describe('Cell coordinates (get_cell)'),
177
+ item: z.number().int().optional().describe('MeshLibrary item index (get_cells_by_item)'),
178
+ })
179
+ .refine((data) => {
180
+ switch (data.action) {
181
+ case 'list':
182
+ return true;
183
+ case 'get_info':
184
+ case 'get_meshlib_info':
185
+ case 'get_used_cells':
186
+ return !!data.node_path;
187
+ case 'get_cell':
188
+ return !!data.node_path && !!data.coords;
189
+ case 'get_cells_by_item':
190
+ return !!data.node_path && data.item !== undefined;
191
+ }
192
+ }, { message: 'Missing required fields for action' });
193
+ export const gridmapQuery = defineTool({
194
+ name: 'gridmap_query',
195
+ description: 'Query GridMap data. Actions: list, get_info, get_meshlib_info, get_used_cells, get_cell, get_cells_by_item',
196
+ schema: GridmapQuerySchema,
197
+ async execute(args, { godot }) {
198
+ switch (args.action) {
199
+ case 'list': {
200
+ const result = await godot.sendCommand('list_gridmaps', { root_path: args.root_path });
201
+ if (result.gridmaps.length === 0) {
202
+ return 'No GridMap nodes found in scene';
203
+ }
204
+ return `Found ${result.gridmaps.length} GridMap(s):\n${result.gridmaps.map((g) => ` - ${g.path}`).join('\n')}`;
205
+ }
206
+ case 'get_info': {
207
+ const result = await godot.sendCommand('get_gridmap_info', { node_path: args.node_path });
208
+ return JSON.stringify(result, null, 2);
209
+ }
210
+ case 'get_meshlib_info': {
211
+ const result = await godot.sendCommand('get_meshlib_info', { node_path: args.node_path });
212
+ return JSON.stringify(result, null, 2);
213
+ }
214
+ case 'get_used_cells': {
215
+ const result = await godot.sendCommand('get_gridmap_used_cells', { node_path: args.node_path });
216
+ return JSON.stringify(result, null, 2);
217
+ }
218
+ case 'get_cell': {
219
+ const result = await godot.sendCommand('get_gridmap_cell', { node_path: args.node_path, coords: args.coords });
220
+ return JSON.stringify(result, null, 2);
221
+ }
222
+ case 'get_cells_by_item': {
223
+ const result = await godot.sendCommand('get_cells_by_item', { node_path: args.node_path, item: args.item });
224
+ return JSON.stringify(result, null, 2);
225
+ }
226
+ }
283
227
  },
284
228
  });
285
- export const setGridmapCellsBatch = defineTool({
286
- name: 'set_gridmap_cells_batch',
287
- description: 'Set multiple cells at once',
288
- schema: z.object({
289
- node_path: z.string().describe('Path to GridMap node'),
290
- cells: z
291
- .array(z.object({
292
- coords: Vector3iSchema,
293
- item: z.number().int(),
294
- orientation: z.number().int().optional(),
295
- }))
296
- .describe('Array of cells to set'),
297
- }),
298
- async execute({ node_path, cells }, { godot }) {
299
- const result = await godot.sendCommand('set_gridmap_cells_batch', { node_path, cells });
300
- return `Set ${result.cells_set} cells`;
229
+ const GridmapEditSchema = z
230
+ .object({
231
+ action: z
232
+ .enum(['set_cell', 'clear_cell', 'clear', 'set_cells_batch'])
233
+ .describe('Action: set_cell, clear_cell, clear, set_cells_batch'),
234
+ node_path: z.string().describe('Path to GridMap node'),
235
+ coords: Vector3iSchema.optional().describe('Cell coordinates (set_cell, clear_cell)'),
236
+ item: z.number().int().optional().describe('MeshLibrary item index (set_cell)'),
237
+ orientation: z.number().int().optional().describe('Orientation 0-23, default 0 (set_cell)'),
238
+ cells: z
239
+ .array(z.object({
240
+ coords: Vector3iSchema,
241
+ item: z.number().int(),
242
+ orientation: z.number().int().optional(),
243
+ }))
244
+ .optional()
245
+ .describe('Array of cells to set (set_cells_batch)'),
246
+ })
247
+ .refine((data) => {
248
+ switch (data.action) {
249
+ case 'set_cell':
250
+ return !!data.coords && data.item !== undefined;
251
+ case 'clear_cell':
252
+ return !!data.coords;
253
+ case 'clear':
254
+ return true;
255
+ case 'set_cells_batch':
256
+ return !!data.cells && data.cells.length > 0;
257
+ }
258
+ }, { message: 'Missing required fields for action' });
259
+ export const gridmapEdit = defineTool({
260
+ name: 'gridmap_edit',
261
+ description: 'Edit GridMap cells. Actions: set_cell, clear_cell, clear, set_cells_batch',
262
+ schema: GridmapEditSchema,
263
+ async execute(args, { godot }) {
264
+ switch (args.action) {
265
+ case 'set_cell': {
266
+ const result = await godot.sendCommand('set_gridmap_cell', {
267
+ node_path: args.node_path,
268
+ coords: args.coords,
269
+ item: args.item,
270
+ orientation: args.orientation,
271
+ });
272
+ return `Set cell at (${result.coords.x}, ${result.coords.y}, ${result.coords.z}) with item ${result.item}, orientation ${result.orientation}`;
273
+ }
274
+ case 'clear_cell': {
275
+ const result = await godot.sendCommand('clear_gridmap_cell', { node_path: args.node_path, coords: args.coords });
276
+ return `Cleared cell at (${result.cleared.x}, ${result.cleared.y}, ${result.cleared.z})`;
277
+ }
278
+ case 'clear': {
279
+ const result = await godot.sendCommand('clear_gridmap', {
280
+ node_path: args.node_path,
281
+ });
282
+ return `Cleared GridMap: ${result.cells_removed} cells removed`;
283
+ }
284
+ case 'set_cells_batch': {
285
+ const result = await godot.sendCommand('set_gridmap_cells_batch', {
286
+ node_path: args.node_path,
287
+ cells: args.cells,
288
+ });
289
+ return `Set ${result.cells_set} cells`;
290
+ }
291
+ }
301
292
  },
302
293
  });
303
- export const tilemapTools = [
304
- listTilemapLayers,
305
- getTilemapLayerInfo,
306
- getTilesetInfo,
307
- getUsedCells,
308
- getCell,
309
- setCell,
310
- eraseCell,
311
- clearLayer,
312
- getCellsInRegion,
313
- setCellsBatch,
314
- convertCoords,
315
- listGridmaps,
316
- getGridmapInfo,
317
- getMeshlibInfo,
318
- getGridmapUsedCells,
319
- getGridmapCell,
320
- setGridmapCell,
321
- clearGridmapCell,
322
- clearGridmap,
323
- getCellsByItem,
324
- setGridmapCellsBatch,
325
- ];
294
+ export const tilemapTools = [tilemapQuery, tilemapEdit, gridmapQuery, gridmapEdit];
326
295
  //# sourceMappingURL=tilemap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tilemap.js","sourceRoot":"","sources":["../../src/tools/tilemap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tilemap.js","sourceRoot":"","sources":["../../src/tools/tilemap.ts"],"names":[],"mappings":"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"}