@n24q02m/better-godot-mcp 1.2.2 → 1.3.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.
- package/bin/cli.mjs +56 -58
- package/build/src/tools/composite/animation.d.ts.map +1 -1
- package/build/src/tools/composite/animation.js +2 -1
- package/build/src/tools/composite/animation.js.map +1 -1
- package/build/src/tools/composite/audio.d.ts.map +1 -1
- package/build/src/tools/composite/audio.js +2 -1
- package/build/src/tools/composite/audio.js.map +1 -1
- package/build/src/tools/composite/config.js +2 -2
- package/build/src/tools/composite/config.js.map +1 -1
- package/build/src/tools/composite/navigation.d.ts.map +1 -1
- package/build/src/tools/composite/navigation.js +2 -1
- package/build/src/tools/composite/navigation.js.map +1 -1
- package/build/src/tools/composite/nodes.d.ts.map +1 -1
- package/build/src/tools/composite/nodes.js +2 -1
- package/build/src/tools/composite/nodes.js.map +1 -1
- package/build/src/tools/composite/physics.d.ts.map +1 -1
- package/build/src/tools/composite/physics.js +3 -2
- package/build/src/tools/composite/physics.js.map +1 -1
- package/build/src/tools/composite/project.d.ts.map +1 -1
- package/build/src/tools/composite/project.js +2 -1
- package/build/src/tools/composite/project.js.map +1 -1
- package/build/src/tools/composite/shader.d.ts.map +1 -1
- package/build/src/tools/composite/shader.js +5 -4
- package/build/src/tools/composite/shader.js.map +1 -1
- package/build/src/tools/composite/signals.d.ts.map +1 -1
- package/build/src/tools/composite/signals.js +2 -1
- package/build/src/tools/composite/signals.js.map +1 -1
- package/build/src/tools/composite/tilemap.d.ts.map +1 -1
- package/build/src/tools/composite/tilemap.js +4 -3
- package/build/src/tools/composite/tilemap.js.map +1 -1
- package/build/src/tools/composite/ui.d.ts.map +1 -1
- package/build/src/tools/composite/ui.js +3 -2
- package/build/src/tools/composite/ui.js.map +1 -1
- package/package.json +1 -1
package/bin/cli.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// @n24q02m/better-godot-mcp v1.
|
|
2
|
+
// @n24q02m/better-godot-mcp v1.3.0
|
|
3
3
|
// Auto-generated CLI bundle - do not edit directly
|
|
4
4
|
|
|
5
5
|
|
|
@@ -161,7 +161,7 @@ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprot
|
|
|
161
161
|
|
|
162
162
|
// src/tools/composite/animation.ts
|
|
163
163
|
import { existsSync as existsSync2, readFileSync, writeFileSync } from "node:fs";
|
|
164
|
-
import { resolve } from "node:path";
|
|
164
|
+
import { resolve as resolve2 } from "node:path";
|
|
165
165
|
|
|
166
166
|
// src/tools/helpers/errors.ts
|
|
167
167
|
var GodotMCPError = class extends Error {
|
|
@@ -198,9 +198,25 @@ function formatJSON(data) {
|
|
|
198
198
|
return { content: [{ type: "text", text: JSON.stringify(data, null, 2) }] };
|
|
199
199
|
}
|
|
200
200
|
|
|
201
|
+
// src/tools/helpers/paths.ts
|
|
202
|
+
import { isAbsolute, relative, resolve } from "node:path";
|
|
203
|
+
function safeResolve(baseDir, targetPath) {
|
|
204
|
+
const resolvedBase = resolve(baseDir);
|
|
205
|
+
const resolvedTarget = resolve(resolvedBase, targetPath);
|
|
206
|
+
const relativePath = relative(resolvedBase, resolvedTarget);
|
|
207
|
+
if (relativePath.startsWith("..") || isAbsolute(relativePath)) {
|
|
208
|
+
throw new GodotMCPError(
|
|
209
|
+
`Access denied: Path '${targetPath}' resolves to '${resolvedTarget}' which is outside the project root '${resolvedBase}'.`,
|
|
210
|
+
"INVALID_ARGS",
|
|
211
|
+
"Ensure all file paths are within the project directory."
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
return resolvedTarget;
|
|
215
|
+
}
|
|
216
|
+
|
|
201
217
|
// src/tools/composite/animation.ts
|
|
202
218
|
function resolveScene(projectPath, scenePath) {
|
|
203
|
-
const fullPath = projectPath ?
|
|
219
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve2(scenePath);
|
|
204
220
|
if (!existsSync2(fullPath))
|
|
205
221
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check the file path.");
|
|
206
222
|
return fullPath;
|
|
@@ -326,13 +342,13 @@ Track data format: tracks/N/keys = { "times": PackedFloat32Array(0, 1), "values"
|
|
|
326
342
|
|
|
327
343
|
// src/tools/composite/audio.ts
|
|
328
344
|
import { existsSync as existsSync3, readFileSync as readFileSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
329
|
-
import { resolve as
|
|
345
|
+
import { resolve as resolve3 } from "node:path";
|
|
330
346
|
async function handleAudio(action, args, config) {
|
|
331
347
|
const projectPath = args.project_path || config.projectPath;
|
|
332
348
|
switch (action) {
|
|
333
349
|
case "list_buses": {
|
|
334
350
|
if (!projectPath) throw new GodotMCPError("No project path specified", "INVALID_ARGS", "Provide project_path.");
|
|
335
|
-
const busLayoutPath =
|
|
351
|
+
const busLayoutPath = resolve3(projectPath, "default_bus_layout.tres");
|
|
336
352
|
if (!existsSync3(busLayoutPath)) {
|
|
337
353
|
return formatJSON({ buses: [{ name: "Master", volume: 0, effects: [] }], note: "Using default bus layout." });
|
|
338
354
|
}
|
|
@@ -350,7 +366,7 @@ async function handleAudio(action, args, config) {
|
|
|
350
366
|
const busName = args.bus_name;
|
|
351
367
|
if (!busName) throw new GodotMCPError("No bus_name specified", "INVALID_ARGS", "Provide bus name.");
|
|
352
368
|
const sendTo = args.send_to || "Master";
|
|
353
|
-
const busLayoutPath =
|
|
369
|
+
const busLayoutPath = resolve3(projectPath, "default_bus_layout.tres");
|
|
354
370
|
let content;
|
|
355
371
|
if (existsSync3(busLayoutPath)) {
|
|
356
372
|
content = readFileSync2(busLayoutPath, "utf-8");
|
|
@@ -394,7 +410,7 @@ ${newBus}
|
|
|
394
410
|
);
|
|
395
411
|
}
|
|
396
412
|
const fullEffectType = effectType.startsWith("AudioEffect") ? effectType : `AudioEffect${effectType}`;
|
|
397
|
-
const busLayoutPath =
|
|
413
|
+
const busLayoutPath = resolve3(projectPath, "default_bus_layout.tres");
|
|
398
414
|
let content;
|
|
399
415
|
if (existsSync3(busLayoutPath)) {
|
|
400
416
|
content = readFileSync2(busLayoutPath, "utf-8");
|
|
@@ -451,7 +467,7 @@ ${effectRef}`;
|
|
|
451
467
|
const streamType = args.stream_type || "2D";
|
|
452
468
|
const parent = args.parent || ".";
|
|
453
469
|
const bus = args.bus || "Master";
|
|
454
|
-
const fullPath = projectPath ?
|
|
470
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve3(scenePath);
|
|
455
471
|
if (!existsSync3(fullPath))
|
|
456
472
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check file path.");
|
|
457
473
|
let content = readFileSync2(fullPath, "utf-8");
|
|
@@ -500,11 +516,11 @@ async function handleConfig(action, args, config) {
|
|
|
500
516
|
if (!validKeys.includes(key)) {
|
|
501
517
|
throw new GodotMCPError(`Invalid config key: ${key}`, "INVALID_ARGS", `Valid keys: ${validKeys.join(", ")}`);
|
|
502
518
|
}
|
|
503
|
-
if ((key === "project_path" || key === "godot_path") && /[;&|`$(){}]/.test(value)) {
|
|
519
|
+
if ((key === "project_path" || key === "godot_path") && /[;&|`$(){}<>'"\0\n\r]/.test(value)) {
|
|
504
520
|
throw new GodotMCPError(
|
|
505
521
|
`Invalid characters in ${key}`,
|
|
506
522
|
"INVALID_ARGS",
|
|
507
|
-
"Path must not contain shell metacharacters: ; & | ` $ ( ) { }"
|
|
523
|
+
"Path must not contain shell metacharacters: ; & | ` $ ( ) { } < > ' \" \\0 \\n \\r"
|
|
508
524
|
);
|
|
509
525
|
}
|
|
510
526
|
runtimeConfig[key] = value;
|
|
@@ -526,7 +542,7 @@ async function handleConfig(action, args, config) {
|
|
|
526
542
|
|
|
527
543
|
// src/tools/composite/editor.ts
|
|
528
544
|
import { execFile } from "node:child_process";
|
|
529
|
-
import { resolve as
|
|
545
|
+
import { resolve as resolve4 } from "node:path";
|
|
530
546
|
import { promisify } from "node:util";
|
|
531
547
|
|
|
532
548
|
// src/godot/headless.ts
|
|
@@ -612,7 +628,7 @@ async function handleEditor(action, args, config) {
|
|
|
612
628
|
if (!projectPath) {
|
|
613
629
|
throw new GodotMCPError("No project path specified", "INVALID_ARGS", "Provide project_path argument.");
|
|
614
630
|
}
|
|
615
|
-
const { pid } = launchGodotEditor(config.godotPath,
|
|
631
|
+
const { pid } = launchGodotEditor(config.godotPath, resolve4(projectPath));
|
|
616
632
|
return formatSuccess(`Godot editor launched (PID: ${pid})`);
|
|
617
633
|
}
|
|
618
634
|
case "status": {
|
|
@@ -687,7 +703,7 @@ async function handleHelp(action, args) {
|
|
|
687
703
|
|
|
688
704
|
// src/tools/composite/input-map.ts
|
|
689
705
|
import { existsSync as existsSync5, readFileSync as readFileSync4, writeFileSync as writeFileSync3 } from "node:fs";
|
|
690
|
-
import { join as join3, resolve as
|
|
706
|
+
import { join as join3, resolve as resolve5 } from "node:path";
|
|
691
707
|
var GODOT_KEY_CODES = {
|
|
692
708
|
// Letters (ASCII)
|
|
693
709
|
KEY_A: 65,
|
|
@@ -797,7 +813,7 @@ function resolveMouseCode(value) {
|
|
|
797
813
|
}
|
|
798
814
|
function getProjectGodotPath(projectPath) {
|
|
799
815
|
if (!projectPath) throw new GodotMCPError("No project path specified", "INVALID_ARGS", "Provide project_path.");
|
|
800
|
-
const configPath = join3(
|
|
816
|
+
const configPath = join3(resolve5(projectPath), "project.godot");
|
|
801
817
|
if (!existsSync5(configPath))
|
|
802
818
|
throw new GodotMCPError("No project.godot found", "PROJECT_NOT_FOUND", "Verify the project path.");
|
|
803
819
|
return configPath;
|
|
@@ -977,9 +993,9 @@ ${actionLine}`);
|
|
|
977
993
|
|
|
978
994
|
// src/tools/composite/navigation.ts
|
|
979
995
|
import { existsSync as existsSync6, readFileSync as readFileSync5, writeFileSync as writeFileSync4 } from "node:fs";
|
|
980
|
-
import { resolve as
|
|
996
|
+
import { resolve as resolve6 } from "node:path";
|
|
981
997
|
function resolveScene2(projectPath, scenePath) {
|
|
982
|
-
const fullPath = projectPath ?
|
|
998
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve6(scenePath);
|
|
983
999
|
if (!existsSync6(fullPath))
|
|
984
1000
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check the file path.");
|
|
985
1001
|
return fullPath;
|
|
@@ -1061,7 +1077,7 @@ async function handleNavigation(action, args, config) {
|
|
|
1061
1077
|
|
|
1062
1078
|
// src/tools/composite/nodes.ts
|
|
1063
1079
|
import { existsSync as existsSync7, readFileSync as readFileSync7, writeFileSync as writeFileSync6 } from "node:fs";
|
|
1064
|
-
import { resolve as
|
|
1080
|
+
import { resolve as resolve7 } from "node:path";
|
|
1065
1081
|
|
|
1066
1082
|
// src/tools/helpers/scene-parser.ts
|
|
1067
1083
|
import { readFileSync as readFileSync6, writeFileSync as writeFileSync5 } from "node:fs";
|
|
@@ -1300,7 +1316,7 @@ function mapToSceneNode(node) {
|
|
|
1300
1316
|
};
|
|
1301
1317
|
}
|
|
1302
1318
|
function resolveScenePath(projectPath, scenePath) {
|
|
1303
|
-
return projectPath ?
|
|
1319
|
+
return projectPath ? safeResolve(projectPath, scenePath) : resolve7(scenePath);
|
|
1304
1320
|
}
|
|
1305
1321
|
async function handleNodes(action, args, config) {
|
|
1306
1322
|
const projectPath = args.project_path || config.projectPath;
|
|
@@ -1431,7 +1447,7 @@ ${nodeDecl}`;
|
|
|
1431
1447
|
|
|
1432
1448
|
// src/tools/composite/physics.ts
|
|
1433
1449
|
import { existsSync as existsSync8, readFileSync as readFileSync9, writeFileSync as writeFileSync8 } from "node:fs";
|
|
1434
|
-
import { join as join4, resolve as
|
|
1450
|
+
import { join as join4, resolve as resolve8 } from "node:path";
|
|
1435
1451
|
|
|
1436
1452
|
// src/tools/helpers/project-settings.ts
|
|
1437
1453
|
import { readFileSync as readFileSync8, writeFileSync as writeFileSync7 } from "node:fs";
|
|
@@ -1538,7 +1554,7 @@ async function handlePhysics(action, args, config) {
|
|
|
1538
1554
|
switch (action) {
|
|
1539
1555
|
case "layers": {
|
|
1540
1556
|
if (!projectPath) throw new GodotMCPError("No project path specified", "INVALID_ARGS", "Provide project_path.");
|
|
1541
|
-
const configPath = join4(
|
|
1557
|
+
const configPath = join4(resolve8(projectPath), "project.godot");
|
|
1542
1558
|
if (!existsSync8(configPath))
|
|
1543
1559
|
throw new GodotMCPError("No project.godot found", "PROJECT_NOT_FOUND", "Verify project path.");
|
|
1544
1560
|
const settings = parseProjectSettings(configPath);
|
|
@@ -1560,7 +1576,7 @@ async function handlePhysics(action, args, config) {
|
|
|
1560
1576
|
if (!nodeName) throw new GodotMCPError("No node name specified", "INVALID_ARGS", "Provide node name.");
|
|
1561
1577
|
const collisionLayer = args.collision_layer;
|
|
1562
1578
|
const collisionMask = args.collision_mask;
|
|
1563
|
-
const fullPath = projectPath ?
|
|
1579
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve8(scenePath);
|
|
1564
1580
|
if (!existsSync8(fullPath))
|
|
1565
1581
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check file path.");
|
|
1566
1582
|
let content = readFileSync9(fullPath, "utf-8");
|
|
@@ -1586,7 +1602,7 @@ collision_mask = ${collisionMask}`;
|
|
|
1586
1602
|
if (!scenePath) throw new GodotMCPError("No scene_path specified", "INVALID_ARGS", "Provide scene_path.");
|
|
1587
1603
|
const nodeName = args.name;
|
|
1588
1604
|
if (!nodeName) throw new GodotMCPError("No node name specified", "INVALID_ARGS", "Provide node name.");
|
|
1589
|
-
const fullPath = projectPath ?
|
|
1605
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve8(scenePath);
|
|
1590
1606
|
if (!existsSync8(fullPath))
|
|
1591
1607
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check file path.");
|
|
1592
1608
|
let content = readFileSync9(fullPath, "utf-8");
|
|
@@ -1617,7 +1633,7 @@ freeze = ${args.freeze}`;
|
|
|
1617
1633
|
const dimension = args.dimension || "2d";
|
|
1618
1634
|
const name = args.name;
|
|
1619
1635
|
if (!name) throw new GodotMCPError("No name specified", "INVALID_ARGS", "Provide layer name.");
|
|
1620
|
-
const configPath = join4(
|
|
1636
|
+
const configPath = join4(resolve8(projectPath), "project.godot");
|
|
1621
1637
|
if (!existsSync8(configPath))
|
|
1622
1638
|
throw new GodotMCPError("No project.godot found", "PROJECT_NOT_FOUND", "Verify project path.");
|
|
1623
1639
|
const content = readFileSync9(configPath, "utf-8");
|
|
@@ -1639,7 +1655,7 @@ freeze = ${args.freeze}`;
|
|
|
1639
1655
|
import { execFileSync as execFileSync3 } from "node:child_process";
|
|
1640
1656
|
import { existsSync as existsSync9 } from "node:fs";
|
|
1641
1657
|
import { readFile as readFile2, writeFile as writeFile2 } from "node:fs/promises";
|
|
1642
|
-
import { join as join5, resolve as
|
|
1658
|
+
import { join as join5, resolve as resolve9 } from "node:path";
|
|
1643
1659
|
async function parseProjectGodot(projectPath) {
|
|
1644
1660
|
const configPath = join5(projectPath, "project.godot");
|
|
1645
1661
|
if (!existsSync9(configPath)) {
|
|
@@ -1690,7 +1706,7 @@ async function handleProject(action, args, config) {
|
|
|
1690
1706
|
"Provide project_path argument or set it via config.set action."
|
|
1691
1707
|
);
|
|
1692
1708
|
}
|
|
1693
|
-
const info = await parseProjectGodot(
|
|
1709
|
+
const info = await parseProjectGodot(resolve9(projectPath));
|
|
1694
1710
|
return formatJSON(info);
|
|
1695
1711
|
}
|
|
1696
1712
|
case "version": {
|
|
@@ -1706,7 +1722,7 @@ async function handleProject(action, args, config) {
|
|
|
1706
1722
|
const projectPath = args.project_path || config.projectPath;
|
|
1707
1723
|
if (!projectPath)
|
|
1708
1724
|
throw new GodotMCPError("No project path specified", "INVALID_ARGS", "Provide project_path argument.");
|
|
1709
|
-
const { pid } = runGodotProject(config.godotPath,
|
|
1725
|
+
const { pid } = runGodotProject(config.godotPath, resolve9(projectPath));
|
|
1710
1726
|
return formatSuccess(`Godot project started (PID: ${pid})`);
|
|
1711
1727
|
}
|
|
1712
1728
|
case "stop": {
|
|
@@ -1727,7 +1743,7 @@ async function handleProject(action, args, config) {
|
|
|
1727
1743
|
const key = args.key;
|
|
1728
1744
|
if (!key)
|
|
1729
1745
|
throw new GodotMCPError("No key specified", "INVALID_ARGS", 'Provide key (e.g., "application/config/name").');
|
|
1730
|
-
const configPath = join5(
|
|
1746
|
+
const configPath = join5(resolve9(projectPath), "project.godot");
|
|
1731
1747
|
if (!existsSync9(configPath))
|
|
1732
1748
|
throw new GodotMCPError("No project.godot found", "PROJECT_NOT_FOUND", "Verify the project path.");
|
|
1733
1749
|
const settings = await parseProjectSettingsAsync(configPath);
|
|
@@ -1741,7 +1757,7 @@ async function handleProject(action, args, config) {
|
|
|
1741
1757
|
const value = args.value;
|
|
1742
1758
|
if (!key || value === void 0)
|
|
1743
1759
|
throw new GodotMCPError("key and value required", "INVALID_ARGS", "Provide key and value.");
|
|
1744
|
-
const configPath = join5(
|
|
1760
|
+
const configPath = join5(resolve9(projectPath), "project.godot");
|
|
1745
1761
|
if (!existsSync9(configPath))
|
|
1746
1762
|
throw new GodotMCPError("No project.godot found", "PROJECT_NOT_FOUND", "Verify the project path.");
|
|
1747
1763
|
const content = await readFile2(configPath, "utf-8");
|
|
@@ -1766,10 +1782,10 @@ async function handleProject(action, args, config) {
|
|
|
1766
1782
|
const result = execGodotSync(config.godotPath, [
|
|
1767
1783
|
"--headless",
|
|
1768
1784
|
"--path",
|
|
1769
|
-
|
|
1785
|
+
resolve9(projectPath),
|
|
1770
1786
|
"--export-release",
|
|
1771
1787
|
preset,
|
|
1772
|
-
|
|
1788
|
+
safeResolve(projectPath, outputPath)
|
|
1773
1789
|
]);
|
|
1774
1790
|
return formatSuccess(`Export complete: ${outputPath}
|
|
1775
1791
|
${result.stdout}`);
|
|
@@ -1786,24 +1802,6 @@ ${result.stdout}`);
|
|
|
1786
1802
|
// src/tools/composite/resources.ts
|
|
1787
1803
|
import { existsSync as existsSync10, readdirSync as readdirSync2, readFileSync as readFileSync10, statSync, unlinkSync } from "node:fs";
|
|
1788
1804
|
import { extname, join as join6, relative as relative2, resolve as resolve10 } from "node:path";
|
|
1789
|
-
|
|
1790
|
-
// src/tools/helpers/paths.ts
|
|
1791
|
-
import { isAbsolute, relative, resolve as resolve9 } from "node:path";
|
|
1792
|
-
function safeResolve(baseDir, targetPath) {
|
|
1793
|
-
const resolvedBase = resolve9(baseDir);
|
|
1794
|
-
const resolvedTarget = resolve9(resolvedBase, targetPath);
|
|
1795
|
-
const relativePath = relative(resolvedBase, resolvedTarget);
|
|
1796
|
-
if (relativePath.startsWith("..") || isAbsolute(relativePath)) {
|
|
1797
|
-
throw new GodotMCPError(
|
|
1798
|
-
`Access denied: Path '${targetPath}' resolves to '${resolvedTarget}' which is outside the project root '${resolvedBase}'.`,
|
|
1799
|
-
"INVALID_ARGS",
|
|
1800
|
-
"Ensure all file paths are within the project directory."
|
|
1801
|
-
);
|
|
1802
|
-
}
|
|
1803
|
-
return resolvedTarget;
|
|
1804
|
-
}
|
|
1805
|
-
|
|
1806
|
-
// src/tools/composite/resources.ts
|
|
1807
1805
|
var RESOURCE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
1808
1806
|
".tres",
|
|
1809
1807
|
".res",
|
|
@@ -2435,7 +2433,7 @@ async function handleShader(action, args, config) {
|
|
|
2435
2433
|
);
|
|
2436
2434
|
const shaderType = args.shader_type || "canvas_item";
|
|
2437
2435
|
const content = args.content || SHADER_TEMPLATES[shaderType] || SHADER_TEMPLATES.canvas_item;
|
|
2438
|
-
const fullPath = projectPath ?
|
|
2436
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve13(shaderPath);
|
|
2439
2437
|
await mkdir(dirname3(fullPath), { recursive: true });
|
|
2440
2438
|
try {
|
|
2441
2439
|
await writeFile3(fullPath, content, { encoding: "utf-8", flag: "wx" });
|
|
@@ -2450,7 +2448,7 @@ async function handleShader(action, args, config) {
|
|
|
2450
2448
|
case "read": {
|
|
2451
2449
|
const shaderPath = args.shader_path;
|
|
2452
2450
|
if (!shaderPath) throw new GodotMCPError("No shader_path specified", "INVALID_ARGS", "Provide shader_path.");
|
|
2453
|
-
const fullPath = projectPath ?
|
|
2451
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve13(shaderPath);
|
|
2454
2452
|
try {
|
|
2455
2453
|
const content = await readFile4(fullPath, "utf-8");
|
|
2456
2454
|
return formatSuccess(`File: ${shaderPath}
|
|
@@ -2468,7 +2466,7 @@ ${content}`);
|
|
|
2468
2466
|
if (!shaderPath) throw new GodotMCPError("No shader_path specified", "INVALID_ARGS", "Provide shader_path.");
|
|
2469
2467
|
const content = args.content;
|
|
2470
2468
|
if (!content) throw new GodotMCPError("No content specified", "INVALID_ARGS", "Provide shader content.");
|
|
2471
|
-
const fullPath = projectPath ?
|
|
2469
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve13(shaderPath);
|
|
2472
2470
|
await mkdir(dirname3(fullPath), { recursive: true });
|
|
2473
2471
|
await writeFile3(fullPath, content, "utf-8");
|
|
2474
2472
|
return formatSuccess(`Written: ${shaderPath} (${content.length} chars)`);
|
|
@@ -2476,7 +2474,7 @@ ${content}`);
|
|
|
2476
2474
|
case "get_params": {
|
|
2477
2475
|
const shaderPath = args.shader_path;
|
|
2478
2476
|
if (!shaderPath) throw new GodotMCPError("No shader_path specified", "INVALID_ARGS", "Provide shader_path.");
|
|
2479
|
-
const fullPath = projectPath ?
|
|
2477
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve13(shaderPath);
|
|
2480
2478
|
try {
|
|
2481
2479
|
const content = await readFile4(fullPath, "utf-8");
|
|
2482
2480
|
const params = [];
|
|
@@ -2525,7 +2523,7 @@ async function handleSignals(action, args, config) {
|
|
|
2525
2523
|
const projectPath = args.project_path || config.projectPath;
|
|
2526
2524
|
const scenePath = args.scene_path;
|
|
2527
2525
|
if (!scenePath) throw new GodotMCPError("No scene_path specified", "INVALID_ARGS", "Provide scene_path.");
|
|
2528
|
-
const fullPath = projectPath ?
|
|
2526
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve14(scenePath);
|
|
2529
2527
|
async function readScene() {
|
|
2530
2528
|
try {
|
|
2531
2529
|
return await readFile5(fullPath, "utf-8");
|
|
@@ -2639,7 +2637,7 @@ async function handleTilemap(action, args, config) {
|
|
|
2639
2637
|
'Provide tileset_path (e.g., "tilesets/main.tres").'
|
|
2640
2638
|
);
|
|
2641
2639
|
const tileSize = args.tile_size || 16;
|
|
2642
|
-
const fullPath = projectPath ?
|
|
2640
|
+
const fullPath = projectPath ? safeResolve(projectPath, tilesetPath) : resolve15(tilesetPath);
|
|
2643
2641
|
if (existsSync14(fullPath)) {
|
|
2644
2642
|
throw new GodotMCPError(`TileSet already exists: ${tilesetPath}`, "TILEMAP_ERROR", "Use a different path.");
|
|
2645
2643
|
}
|
|
@@ -2661,7 +2659,7 @@ async function handleTilemap(action, args, config) {
|
|
|
2661
2659
|
if (!tilesetPath || !texturePath) {
|
|
2662
2660
|
throw new GodotMCPError("tileset_path and texture_path required", "INVALID_ARGS", "Both are required.");
|
|
2663
2661
|
}
|
|
2664
|
-
const fullPath = projectPath ?
|
|
2662
|
+
const fullPath = projectPath ? safeResolve(projectPath, tilesetPath) : resolve15(tilesetPath);
|
|
2665
2663
|
if (!existsSync14(fullPath))
|
|
2666
2664
|
throw new GodotMCPError(`TileSet not found: ${tilesetPath}`, "TILEMAP_ERROR", "Create the tileset first.");
|
|
2667
2665
|
let content = readFileSync13(fullPath, "utf-8");
|
|
@@ -2691,7 +2689,7 @@ async function handleTilemap(action, args, config) {
|
|
|
2691
2689
|
case "list": {
|
|
2692
2690
|
const scenePath = args.scene_path;
|
|
2693
2691
|
if (!scenePath) throw new GodotMCPError("No scene_path specified", "INVALID_ARGS", "Provide scene_path.");
|
|
2694
|
-
const fullPath = projectPath ?
|
|
2692
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve15(scenePath);
|
|
2695
2693
|
if (!existsSync14(fullPath))
|
|
2696
2694
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check the file path.");
|
|
2697
2695
|
const content = readFileSync13(fullPath, "utf-8");
|
|
@@ -2735,7 +2733,7 @@ var CONTROL_TEMPLATES = {
|
|
|
2735
2733
|
GridContainer: { columns: "2" }
|
|
2736
2734
|
};
|
|
2737
2735
|
function resolveScene3(projectPath, scenePath) {
|
|
2738
|
-
const fullPath = projectPath ?
|
|
2736
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve16(scenePath);
|
|
2739
2737
|
if (!existsSync15(fullPath))
|
|
2740
2738
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, "SCENE_ERROR", "Check the file path.");
|
|
2741
2739
|
return fullPath;
|
|
@@ -2783,7 +2781,7 @@ ${nodeDecl}`;
|
|
|
2783
2781
|
"INVALID_ARGS",
|
|
2784
2782
|
'Provide theme_path (e.g., "themes/main.tres").'
|
|
2785
2783
|
);
|
|
2786
|
-
const fullPath = projectPath ?
|
|
2784
|
+
const fullPath = projectPath ? safeResolve(projectPath, themePath) : resolve16(themePath);
|
|
2787
2785
|
const fontSize = args.font_size || 16;
|
|
2788
2786
|
const _fontColor = args.font_color || "Color(1, 1, 1, 1)";
|
|
2789
2787
|
const _bgColor = args.bg_color || "Color(0.15, 0.15, 0.15, 1)";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/animation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/animation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAWvD,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAuIvG"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
function resolveScene(projectPath, scenePath) {
|
|
9
|
-
const fullPath = projectPath ?
|
|
10
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
10
11
|
if (!existsSync(fullPath))
|
|
11
12
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check the file path.');
|
|
12
13
|
return fullPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../../src/tools/composite/animation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"animation.js","sourceRoot":"","sources":["../../../../src/tools/composite/animation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/audio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/audio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GA0KnG"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
export async function handleAudio(action, args, config) {
|
|
9
10
|
const projectPath = args.project_path || config.projectPath;
|
|
10
11
|
switch (action) {
|
|
@@ -134,7 +135,7 @@ export async function handleAudio(action, args, config) {
|
|
|
134
135
|
const streamType = args.stream_type || '2D';
|
|
135
136
|
const parent = args.parent || '.';
|
|
136
137
|
const bus = args.bus || 'Master';
|
|
137
|
-
const fullPath = projectPath ?
|
|
138
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
138
139
|
if (!existsSync(fullPath))
|
|
139
140
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check file path.');
|
|
140
141
|
let content = readFileSync(fullPath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../../src/tools/composite/audio.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../../../src/tools/composite/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,8 +29,8 @@ export async function handleConfig(action, args, config) {
|
|
|
29
29
|
throw new GodotMCPError(`Invalid config key: ${key}`, 'INVALID_ARGS', `Valid keys: ${validKeys.join(', ')}`);
|
|
30
30
|
}
|
|
31
31
|
// Validate paths don't contain shell metacharacters
|
|
32
|
-
if ((key === 'project_path' || key === 'godot_path') && /[;&|`$(){}]/.test(value)) {
|
|
33
|
-
throw new GodotMCPError(`Invalid characters in ${key}`, 'INVALID_ARGS', 'Path must not contain shell metacharacters: ; & | ` $ ( ) { }');
|
|
32
|
+
if ((key === 'project_path' || key === 'godot_path') && /[;&|`$(){}<>'"\0\n\r]/.test(value)) {
|
|
33
|
+
throw new GodotMCPError(`Invalid characters in ${key}`, 'INVALID_ARGS', 'Path must not contain shell metacharacters: ; & | ` $ ( ) { } < > \' " \\0 \\n \\r');
|
|
34
34
|
}
|
|
35
35
|
runtimeConfig[key] = value;
|
|
36
36
|
// Apply to active config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/tools/composite/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE/E,yBAAyB;AACzB,MAAM,aAAa,GAA2B,EAAE,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,IAA6B,EAAE,MAAmB;IACnG,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,UAAU,CAAC;gBAChB,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,cAAc;gBAC9C,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,SAAS;gBACpD,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;gBAC7C,iBAAiB,EAAE,aAAa;aACjC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAA;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAA;YAElC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,0CAA0C,CAAC,CAAA;YACzG,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,cAAc,EAAE,4BAA4B,CAAC,CAAA;YAC7F,CAAC;YAED,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;YAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,aAAa,CAAC,uBAAuB,GAAG,EAAE,EAAE,cAAc,EAAE,eAAe,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9G,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,YAAY,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/tools/composite/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAE/E,yBAAyB;AACzB,MAAM,aAAa,GAA2B,EAAE,CAAA;AAEhD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,IAA6B,EAAE,MAAmB;IACnG,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,OAAO,UAAU,CAAC;gBAChB,UAAU,EAAE,MAAM,CAAC,SAAS,IAAI,cAAc;gBAC9C,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,GAAG,IAAI,SAAS;gBACpD,YAAY,EAAE,MAAM,CAAC,WAAW,IAAI,SAAS;gBAC7C,iBAAiB,EAAE,aAAa;aACjC,CAAC,CAAA;QACJ,CAAC;QAED,KAAK,KAAK,CAAC,CAAC,CAAC;YACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAA;YAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAA;YAElC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,cAAc,EAAE,0CAA0C,CAAC,CAAA;YACzG,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,MAAM,IAAI,aAAa,CAAC,oBAAoB,EAAE,cAAc,EAAE,4BAA4B,CAAC,CAAA;YAC7F,CAAC;YAED,MAAM,SAAS,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,SAAS,CAAC,CAAA;YAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,aAAa,CAAC,uBAAuB,GAAG,EAAE,EAAE,cAAc,EAAE,eAAe,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9G,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,GAAG,KAAK,cAAc,IAAI,GAAG,KAAK,YAAY,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC5F,MAAM,IAAI,aAAa,CACrB,yBAAyB,GAAG,EAAE,EAC9B,cAAc,EACd,oFAAoF,CACrF,CAAA;YACH,CAAC;YAED,aAAa,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;YAE1B,yBAAyB;YACzB,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;gBAC3B,MAAM,CAAC,WAAW,GAAG,KAAK,CAAA;YAC5B,CAAC;iBAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;gBAChC,MAAM,CAAC,SAAS,GAAG,KAAK,CAAA;YAC1B,CAAC;YAED,OAAO,aAAa,CAAC,mBAAmB,GAAG,MAAM,KAAK,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED;YACE,MAAM,IAAI,aAAa,CACrB,mBAAmB,MAAM,EAAE,EAC3B,gBAAgB,EAChB,0DAA0D,CAC3D,CAAA;IACL,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAkBvD,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAwExG"}
|
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
function resolveScene(projectPath, scenePath) {
|
|
9
|
-
const fullPath = projectPath ?
|
|
10
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
10
11
|
if (!existsSync(fullPath))
|
|
11
12
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check the file path.');
|
|
12
13
|
return fullPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/tools/composite/navigation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../../../src/tools/composite/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/nodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/nodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,sBAAsB,CAAA;AAqClE,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAoJnG"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
import { getNodeProperty, parseSceneContent, removeNodeFromContent, renameNodeInContent, setNodePropertyInContent, } from '../helpers/scene-parser.js';
|
|
9
10
|
/**
|
|
10
11
|
* Map scene-parser's SceneNodeInfo to internal SceneNode format
|
|
@@ -25,7 +26,7 @@ function mapToSceneNode(node) {
|
|
|
25
26
|
};
|
|
26
27
|
}
|
|
27
28
|
function resolveScenePath(projectPath, scenePath) {
|
|
28
|
-
return projectPath ?
|
|
29
|
+
return projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
29
30
|
}
|
|
30
31
|
export async function handleNodes(action, args, config) {
|
|
31
32
|
const projectPath = args.project_path || config.projectPath;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../../src/tools/composite/nodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EAEnB,wBAAwB,GACzB,MAAM,4BAA4B,CAAA;AAEnC;;GAEG;AACH,SAAS,cAAc,CAAC,IAAmB;IACzC,MAAM,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;IACzC,IAAI,MAAM,GAAkB,IAAI,CAAA;IAEhC,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;QAC1B,OAAO,UAAU,CAAC,MAAM,CAAA;IAC1B,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,MAAM;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI;QAC3B,UAAU;QACV,MAAM;KACP,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAsC,EAAE,SAAiB;IACjF,OAAO,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../../src/tools/composite/nodes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/physics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"physics.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/physics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAKvD,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAoHrG"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { join, resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
import { parseProjectSettings, setSettingInContent } from '../helpers/project-settings.js';
|
|
9
10
|
export async function handlePhysics(action, args, config) {
|
|
10
11
|
const projectPath = args.project_path || config.projectPath;
|
|
@@ -38,7 +39,7 @@ export async function handlePhysics(action, args, config) {
|
|
|
38
39
|
throw new GodotMCPError('No node name specified', 'INVALID_ARGS', 'Provide node name.');
|
|
39
40
|
const collisionLayer = args.collision_layer;
|
|
40
41
|
const collisionMask = args.collision_mask;
|
|
41
|
-
const fullPath = projectPath ?
|
|
42
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
42
43
|
if (!existsSync(fullPath))
|
|
43
44
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check file path.');
|
|
44
45
|
let content = readFileSync(fullPath, 'utf-8');
|
|
@@ -66,7 +67,7 @@ export async function handlePhysics(action, args, config) {
|
|
|
66
67
|
const nodeName = args.name;
|
|
67
68
|
if (!nodeName)
|
|
68
69
|
throw new GodotMCPError('No node name specified', 'INVALID_ARGS', 'Provide node name.');
|
|
69
|
-
const fullPath = projectPath ?
|
|
70
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
70
71
|
if (!existsSync(fullPath))
|
|
71
72
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check file path.');
|
|
72
73
|
let content = readFileSync(fullPath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"physics.js","sourceRoot":"","sources":["../../../../src/tools/composite/physics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAE1F,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,IAA6B,EAAE,MAAmB;IACpG,MAAM,WAAW,GAAI,IAAI,CAAC,YAAuB,IAAI,MAAM,CAAC,WAAW,CAAA;IAEvE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,WAAW;gBAAE,MAAM,IAAI,aAAa,CAAC,2BAA2B,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAA;YAC/G,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,CAAA;YAC9D,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBACzB,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAA;YAEhG,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;YACjD,MAAM,QAAQ,GAA2B,EAAE,CAAA;YAC3C,MAAM,QAAQ,GAA2B,EAAE,CAAA;YAE3C,4CAA4C;YAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,EAAE,CAAC;gBACtE,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBACxC,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBACzC,CAAC;qBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;oBAC/C,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;gBACzC,CAAC;YACH,CAAC;YAED,OAAO,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC3C,CAAC;QAED,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAA;YAC3C,IAAI,CAAC,SAAS;gBAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAA;YACzG,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAc,CAAA;YACpC,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,cAAc,EAAE,oBAAoB,CAAC,CAAA;YACtG,MAAM,cAAc,GAAG,IAAI,CAAC,eAAyB,CAAA;YACrD,MAAM,aAAa,GAAG,IAAI,CAAC,cAAwB,CAAA;YAEnD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"physics.js","sourceRoot":"","sources":["../../../../src/tools/composite/physics.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/project.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/project.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,sBAAsB,CAAA;AAsDpE,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAoHrG"}
|
|
@@ -8,6 +8,7 @@ import { readFile, writeFile } from 'node:fs/promises';
|
|
|
8
8
|
import { join, resolve } from 'node:path';
|
|
9
9
|
import { execGodotSync, runGodotProject } from '../../godot/headless.js';
|
|
10
10
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
11
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
11
12
|
import { getSetting, parseProjectSettingsAsync, setSettingInContent } from '../helpers/project-settings.js';
|
|
12
13
|
async function parseProjectGodot(projectPath) {
|
|
13
14
|
const configPath = join(projectPath, 'project.godot');
|
|
@@ -135,7 +136,7 @@ export async function handleProject(action, args, config) {
|
|
|
135
136
|
resolve(projectPath),
|
|
136
137
|
'--export-release',
|
|
137
138
|
preset,
|
|
138
|
-
|
|
139
|
+
safeResolve(projectPath, outputPath),
|
|
139
140
|
]);
|
|
140
141
|
return formatSuccess(`Export complete: ${outputPath}\n${result.stdout}`);
|
|
141
142
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../src/tools/composite/project.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../../src/tools/composite/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/shader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"shader.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/shader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAoEvD,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAiHpG"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { mkdir, readdir, readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
import { dirname, extname, join, relative, resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
const SHADER_TEMPLATES = {
|
|
9
10
|
canvas_item: `shader_type canvas_item;
|
|
10
11
|
|
|
@@ -77,7 +78,7 @@ export async function handleShader(action, args, config) {
|
|
|
77
78
|
throw new GodotMCPError('No shader_path specified', 'INVALID_ARGS', 'Provide shader_path (e.g., "shaders/effect.gdshader").');
|
|
78
79
|
const shaderType = args.shader_type || 'canvas_item';
|
|
79
80
|
const content = args.content || SHADER_TEMPLATES[shaderType] || SHADER_TEMPLATES.canvas_item;
|
|
80
|
-
const fullPath = projectPath ?
|
|
81
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve(shaderPath);
|
|
81
82
|
// Ensure directory exists
|
|
82
83
|
await mkdir(dirname(fullPath), { recursive: true });
|
|
83
84
|
try {
|
|
@@ -96,7 +97,7 @@ export async function handleShader(action, args, config) {
|
|
|
96
97
|
const shaderPath = args.shader_path;
|
|
97
98
|
if (!shaderPath)
|
|
98
99
|
throw new GodotMCPError('No shader_path specified', 'INVALID_ARGS', 'Provide shader_path.');
|
|
99
|
-
const fullPath = projectPath ?
|
|
100
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve(shaderPath);
|
|
100
101
|
try {
|
|
101
102
|
const content = await readFile(fullPath, 'utf-8');
|
|
102
103
|
return formatSuccess(`File: ${shaderPath}\n\n${content}`);
|
|
@@ -115,7 +116,7 @@ export async function handleShader(action, args, config) {
|
|
|
115
116
|
const content = args.content;
|
|
116
117
|
if (!content)
|
|
117
118
|
throw new GodotMCPError('No content specified', 'INVALID_ARGS', 'Provide shader content.');
|
|
118
|
-
const fullPath = projectPath ?
|
|
119
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve(shaderPath);
|
|
119
120
|
await mkdir(dirname(fullPath), { recursive: true });
|
|
120
121
|
await writeFile(fullPath, content, 'utf-8');
|
|
121
122
|
return formatSuccess(`Written: ${shaderPath} (${content.length} chars)`);
|
|
@@ -124,7 +125,7 @@ export async function handleShader(action, args, config) {
|
|
|
124
125
|
const shaderPath = args.shader_path;
|
|
125
126
|
if (!shaderPath)
|
|
126
127
|
throw new GodotMCPError('No shader_path specified', 'INVALID_ARGS', 'Provide shader_path.');
|
|
127
|
-
const fullPath = projectPath ?
|
|
128
|
+
const fullPath = projectPath ? safeResolve(projectPath, shaderPath) : resolve(shaderPath);
|
|
128
129
|
try {
|
|
129
130
|
const content = await readFile(fullPath, 'utf-8');
|
|
130
131
|
const params = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shader.js","sourceRoot":"","sources":["../../../../src/tools/composite/shader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAErE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"shader.js","sourceRoot":"","sources":["../../../../src/tools/composite/shader.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"signals.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAKvD,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAwHrG"}
|
|
@@ -5,13 +5,14 @@
|
|
|
5
5
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
6
6
|
import { resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
import { parseSceneContent } from '../helpers/scene-parser.js';
|
|
9
10
|
export async function handleSignals(action, args, config) {
|
|
10
11
|
const projectPath = args.project_path || config.projectPath;
|
|
11
12
|
const scenePath = args.scene_path;
|
|
12
13
|
if (!scenePath)
|
|
13
14
|
throw new GodotMCPError('No scene_path specified', 'INVALID_ARGS', 'Provide scene_path.');
|
|
14
|
-
const fullPath = projectPath ?
|
|
15
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
15
16
|
async function readScene() {
|
|
16
17
|
try {
|
|
17
18
|
return await readFile(fullPath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../src/tools/composite/signals.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAA;AAE9D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc,EAAE,IAA6B,EAAE,MAAmB;IACpG,MAAM,WAAW,GAAI,IAAI,CAAC,YAAuB,IAAI,MAAM,CAAC,WAAW,CAAA;IACvE,MAAM,SAAS,GAAG,IAAI,CAAC,UAAoB,CAAA;IAE3C,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,cAAc,EAAE,qBAAqB,CAAC,CAAA;IACzG,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"signals.js","sourceRoot":"","sources":["../../../../src/tools/composite/signals.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tilemap.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/tilemap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"tilemap.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/tilemap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAIvD,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAwGrG"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { dirname, resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
export async function handleTilemap(action, args, config) {
|
|
9
10
|
const projectPath = args.project_path || config.projectPath;
|
|
10
11
|
switch (action) {
|
|
@@ -13,7 +14,7 @@ export async function handleTilemap(action, args, config) {
|
|
|
13
14
|
if (!tilesetPath)
|
|
14
15
|
throw new GodotMCPError('No tileset_path specified', 'INVALID_ARGS', 'Provide tileset_path (e.g., "tilesets/main.tres").');
|
|
15
16
|
const tileSize = args.tile_size || 16;
|
|
16
|
-
const fullPath = projectPath ?
|
|
17
|
+
const fullPath = projectPath ? safeResolve(projectPath, tilesetPath) : resolve(tilesetPath);
|
|
17
18
|
if (existsSync(fullPath)) {
|
|
18
19
|
throw new GodotMCPError(`TileSet already exists: ${tilesetPath}`, 'TILEMAP_ERROR', 'Use a different path.');
|
|
19
20
|
}
|
|
@@ -35,7 +36,7 @@ export async function handleTilemap(action, args, config) {
|
|
|
35
36
|
if (!tilesetPath || !texturePath) {
|
|
36
37
|
throw new GodotMCPError('tileset_path and texture_path required', 'INVALID_ARGS', 'Both are required.');
|
|
37
38
|
}
|
|
38
|
-
const fullPath = projectPath ?
|
|
39
|
+
const fullPath = projectPath ? safeResolve(projectPath, tilesetPath) : resolve(tilesetPath);
|
|
39
40
|
if (!existsSync(fullPath))
|
|
40
41
|
throw new GodotMCPError(`TileSet not found: ${tilesetPath}`, 'TILEMAP_ERROR', 'Create the tileset first.');
|
|
41
42
|
let content = readFileSync(fullPath, 'utf-8');
|
|
@@ -66,7 +67,7 @@ export async function handleTilemap(action, args, config) {
|
|
|
66
67
|
const scenePath = args.scene_path;
|
|
67
68
|
if (!scenePath)
|
|
68
69
|
throw new GodotMCPError('No scene_path specified', 'INVALID_ARGS', 'Provide scene_path.');
|
|
69
|
-
const fullPath = projectPath ?
|
|
70
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
70
71
|
if (!existsSync(fullPath))
|
|
71
72
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check the file path.');
|
|
72
73
|
const content = readFileSync(fullPath, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tilemap.js","sourceRoot":"","sources":["../../../../src/tools/composite/tilemap.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"tilemap.js","sourceRoot":"","sources":["../../../../src/tools/composite/tilemap.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../../../src/tools/composite/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAiCvD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,WAAW;;;;;GAyLhG"}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
6
6
|
import { dirname, resolve } from 'node:path';
|
|
7
7
|
import { formatJSON, formatSuccess, GodotMCPError } from '../helpers/errors.js';
|
|
8
|
+
import { safeResolve } from '../helpers/paths.js';
|
|
8
9
|
import { parseScene } from '../helpers/scene-parser.js';
|
|
9
10
|
const CONTROL_TEMPLATES = {
|
|
10
11
|
Button: { text: '"Click"' },
|
|
@@ -27,7 +28,7 @@ const CONTROL_TEMPLATES = {
|
|
|
27
28
|
GridContainer: { columns: '2' },
|
|
28
29
|
};
|
|
29
30
|
function resolveScene(projectPath, scenePath) {
|
|
30
|
-
const fullPath = projectPath ?
|
|
31
|
+
const fullPath = projectPath ? safeResolve(projectPath, scenePath) : resolve(scenePath);
|
|
31
32
|
if (!existsSync(fullPath))
|
|
32
33
|
throw new GodotMCPError(`Scene not found: ${scenePath}`, 'SCENE_ERROR', 'Check the file path.');
|
|
33
34
|
return fullPath;
|
|
@@ -70,7 +71,7 @@ export async function handleUI(action, args, config) {
|
|
|
70
71
|
const themePath = args.theme_path;
|
|
71
72
|
if (!themePath)
|
|
72
73
|
throw new GodotMCPError('No theme_path specified', 'INVALID_ARGS', 'Provide theme_path (e.g., "themes/main.tres").');
|
|
73
|
-
const fullPath = projectPath ?
|
|
74
|
+
const fullPath = projectPath ? safeResolve(projectPath, themePath) : resolve(themePath);
|
|
74
75
|
const fontSize = args.font_size || 16;
|
|
75
76
|
const _fontColor = args.font_color || 'Color(1, 1, 1, 1)';
|
|
76
77
|
const _bgColor = args.bg_color || 'Color(0.15, 0.15, 0.15, 1)';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/tools/composite/ui.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAC/E,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAEvD,MAAM,iBAAiB,GAA2C;IAChE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC1B,QAAQ,EAAE,EAAE,gBAAgB,EAAE,iBAAiB,EAAE;IACjD,QAAQ,EAAE,EAAE;IACZ,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE;IAClD,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;IAC7C,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAC7B,YAAY,EAAE,EAAE;IAChB,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE;IAC7C,iBAAiB,EAAE,EAAE;IACrB,WAAW,EAAE,EAAE;IACf,KAAK,EAAE,EAAE;IACT,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,EAAE;IACnB,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;CAChC,CAAA;AAED,SAAS,YAAY,CAAC,WAAsC,EAAE,SAAiB;IAC7E,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../../../src/tools/composite/ui.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@n24q02m/better-godot-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.0",
|
|
4
4
|
"description": "Enhanced MCP server for Godot Engine with composite mega-tools and comprehensive game development tooling.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "build/src/init-server.js",
|