godot-cli 0.38.0 → 0.39.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 (167) hide show
  1. package/CHANGELOG.md +99 -0
  2. package/README.md +139 -16
  3. package/dist/cli.d.ts +7 -0
  4. package/dist/cli.js +7 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/check.d.ts +2 -0
  7. package/dist/commands/check.js +48 -0
  8. package/dist/commands/check.js.map +1 -0
  9. package/dist/commands/close.d.ts +3 -0
  10. package/dist/commands/close.js +82 -27
  11. package/dist/commands/close.js.map +1 -1
  12. package/dist/commands/commands.d.ts +3 -0
  13. package/dist/commands/commands.js +28 -0
  14. package/dist/commands/commands.js.map +1 -0
  15. package/dist/commands/exec.js +43 -28
  16. package/dist/commands/exec.js.map +1 -1
  17. package/dist/commands/export.d.ts +2 -0
  18. package/dist/commands/export.js +45 -0
  19. package/dist/commands/export.js.map +1 -0
  20. package/dist/commands/headless-common.d.ts +29 -0
  21. package/dist/commands/headless-common.js +69 -0
  22. package/dist/commands/headless-common.js.map +1 -0
  23. package/dist/commands/import.d.ts +2 -0
  24. package/dist/commands/import.js +32 -0
  25. package/dist/commands/import.js.map +1 -0
  26. package/dist/commands/open.js +38 -6
  27. package/dist/commands/open.js.map +1 -1
  28. package/dist/commands/rql.d.ts +2 -0
  29. package/dist/commands/rql.js +81 -0
  30. package/dist/commands/rql.js.map +1 -0
  31. package/dist/commands/run-script.d.ts +2 -0
  32. package/dist/commands/run-script.js +33 -0
  33. package/dist/commands/run-script.js.map +1 -0
  34. package/dist/commands/run-system-tool.js +0 -1
  35. package/dist/commands/run-system-tool.js.map +1 -1
  36. package/dist/commands/run-tool-builder.d.ts +38 -4
  37. package/dist/commands/run-tool-builder.js +179 -56
  38. package/dist/commands/run-tool-builder.js.map +1 -1
  39. package/dist/commands/run-tool.js +0 -1
  40. package/dist/commands/run-tool.js.map +1 -1
  41. package/dist/commands/setup-skills.js +3 -2
  42. package/dist/commands/setup-skills.js.map +1 -1
  43. package/dist/commands/status.js +25 -19
  44. package/dist/commands/status.js.map +1 -1
  45. package/dist/commands/test.d.ts +5 -0
  46. package/dist/commands/test.js +111 -0
  47. package/dist/commands/test.js.map +1 -0
  48. package/dist/commands/tools.d.ts +2 -0
  49. package/dist/commands/tools.js +120 -0
  50. package/dist/commands/tools.js.map +1 -0
  51. package/dist/commands/update.js +1 -1
  52. package/dist/commands/update.js.map +1 -1
  53. package/dist/commands/wait-for-ready.js +18 -20
  54. package/dist/commands/wait-for-ready.js.map +1 -1
  55. package/dist/index.js +48 -3
  56. package/dist/index.js.map +1 -1
  57. package/dist/lib/build.d.ts +1 -1
  58. package/dist/lib/build.js +21 -4
  59. package/dist/lib/build.js.map +1 -1
  60. package/dist/lib/check.d.ts +44 -0
  61. package/dist/lib/check.js +191 -0
  62. package/dist/lib/check.js.map +1 -0
  63. package/dist/lib/cli-guide.d.ts +26 -0
  64. package/dist/lib/cli-guide.js +51 -0
  65. package/dist/lib/cli-guide.js.map +1 -0
  66. package/dist/lib/exec.d.ts +19 -0
  67. package/dist/lib/exec.js +61 -10
  68. package/dist/lib/exec.js.map +1 -1
  69. package/dist/lib/export-project.d.ts +41 -0
  70. package/dist/lib/export-project.js +159 -0
  71. package/dist/lib/export-project.js.map +1 -0
  72. package/dist/lib/godot-log.d.ts +38 -0
  73. package/dist/lib/godot-log.js +145 -0
  74. package/dist/lib/godot-log.js.map +1 -0
  75. package/dist/lib/godot-run.d.ts +34 -0
  76. package/dist/lib/godot-run.js +113 -0
  77. package/dist/lib/godot-run.js.map +1 -0
  78. package/dist/lib/headless.d.ts +82 -0
  79. package/dist/lib/headless.js +117 -0
  80. package/dist/lib/headless.js.map +1 -0
  81. package/dist/lib/import-project.d.ts +9 -0
  82. package/dist/lib/import-project.js +15 -0
  83. package/dist/lib/import-project.js.map +1 -0
  84. package/dist/lib/junit.d.ts +36 -0
  85. package/dist/lib/junit.js +146 -0
  86. package/dist/lib/junit.js.map +1 -0
  87. package/dist/lib/list-tools.d.ts +51 -0
  88. package/dist/lib/list-tools.js +147 -0
  89. package/dist/lib/list-tools.js.map +1 -0
  90. package/dist/lib/open.js +3 -1
  91. package/dist/lib/open.js.map +1 -1
  92. package/dist/lib/progress.d.ts +1 -7
  93. package/dist/lib/progress.js +2 -15
  94. package/dist/lib/progress.js.map +1 -1
  95. package/dist/lib/rql.d.ts +32 -0
  96. package/dist/lib/rql.js +105 -0
  97. package/dist/lib/rql.js.map +1 -0
  98. package/dist/lib/run-script.d.ts +23 -0
  99. package/dist/lib/run-script.js +43 -0
  100. package/dist/lib/run-script.js.map +1 -0
  101. package/dist/lib/run-tests.d.ts +50 -0
  102. package/dist/lib/run-tests.js +181 -0
  103. package/dist/lib/run-tests.js.map +1 -0
  104. package/dist/lib/run-tool.js +6 -22
  105. package/dist/lib/run-tool.js.map +1 -1
  106. package/dist/lib/session.d.ts +8 -1
  107. package/dist/lib/session.js +36 -4
  108. package/dist/lib/session.js.map +1 -1
  109. package/dist/lib/setup-skills.d.ts +8 -13
  110. package/dist/lib/setup-skills.js +27 -24
  111. package/dist/lib/setup-skills.js.map +1 -1
  112. package/dist/lib/types.d.ts +7 -0
  113. package/dist/lib/update-project.js +1 -1
  114. package/dist/lib/update-project.js.map +1 -1
  115. package/dist/lib.d.ts +16 -0
  116. package/dist/lib.js +10 -0
  117. package/dist/lib.js.map +1 -1
  118. package/dist/utils/addon-deps.js +2 -2
  119. package/dist/utils/agents.d.ts +2 -6
  120. package/dist/utils/agents.js.map +1 -1
  121. package/dist/utils/connection.d.ts +59 -0
  122. package/dist/utils/connection.js +11 -10
  123. package/dist/utils/connection.js.map +1 -1
  124. package/dist/utils/csproj-deps.js +1 -1
  125. package/dist/utils/csproj-deps.js.map +1 -1
  126. package/dist/utils/editor-connection.d.ts +74 -0
  127. package/dist/utils/editor-connection.js +225 -0
  128. package/dist/utils/editor-connection.js.map +1 -0
  129. package/dist/utils/editor-mcp-server.d.ts +32 -0
  130. package/dist/utils/editor-mcp-server.js +134 -0
  131. package/dist/utils/editor-mcp-server.js.map +1 -0
  132. package/dist/utils/exit-codes.d.ts +2 -0
  133. package/dist/utils/exit-codes.js +4 -0
  134. package/dist/utils/exit-codes.js.map +1 -0
  135. package/dist/utils/godot-process.d.ts +5 -0
  136. package/dist/utils/godot-process.js +16 -0
  137. package/dist/utils/godot-process.js.map +1 -1
  138. package/dist/utils/godot-shutdown.d.ts +3 -1
  139. package/dist/utils/godot-shutdown.js +4 -2
  140. package/dist/utils/godot-shutdown.js.map +1 -1
  141. package/dist/utils/input.d.ts +3 -3
  142. package/dist/utils/input.js +22 -35
  143. package/dist/utils/input.js.map +1 -1
  144. package/dist/utils/output.d.ts +45 -0
  145. package/dist/utils/output.js +101 -0
  146. package/dist/utils/output.js.map +1 -0
  147. package/dist/utils/server-source.d.ts +1 -1
  148. package/dist/utils/server-source.js +1 -1
  149. package/dist/utils/skill-guides.d.ts +6 -9
  150. package/dist/utils/skill-guides.js +100 -43
  151. package/dist/utils/skill-guides.js.map +1 -1
  152. package/dist/utils/skills.d.ts +1 -14
  153. package/dist/utils/skills.js +0 -89
  154. package/dist/utils/skills.js.map +1 -1
  155. package/dist/utils/ui.d.ts +6 -1
  156. package/dist/utils/ui.js +72 -58
  157. package/dist/utils/ui.js.map +1 -1
  158. package/dist/utils/update-check.d.ts +6 -17
  159. package/dist/utils/update-check.js +10 -77
  160. package/dist/utils/update-check.js.map +1 -1
  161. package/package.json +2 -2
  162. package/dist/utils/json-parse.d.ts +0 -25
  163. package/dist/utils/json-parse.js +0 -83
  164. package/dist/utils/json-parse.js.map +0 -1
  165. package/dist/utils/semver.d.ts +0 -4
  166. package/dist/utils/semver.js +0 -25
  167. package/dist/utils/semver.js.map +0 -1
@@ -0,0 +1,120 @@
1
+ import { Command } from 'commander';
2
+ import { DEFAULT_SESSION_READY_TIMEOUT_MS } from '@baizor/gamedev-cli-core';
3
+ import * as ui from '../utils/ui.js';
4
+ import { verbose } from '../utils/ui.js';
5
+ import { isGodotProject, resolveAndValidateProjectPath } from '../utils/connection.js';
6
+ import { connectionForCommand } from '../utils/editor-connection.js';
7
+ import { isLocalhostUrl } from '../utils/project-marker.js';
8
+ import { ExitCode } from '../utils/exit-codes.js';
9
+ import { CommandOutput, addFormatOption, parseFormat, parseIntFlag } from '../utils/output.js';
10
+ import { ensureEditor } from '../lib/session.js';
11
+ import { exampleCall, listToolsLive, offlineTools, readToolsCache, writeToolsCache, } from '../lib/list-tools.js';
12
+ import { ensureFailureExit } from './run-tool-builder.js';
13
+ function firstSentence(text) {
14
+ const line = text.split(/\r?\n/)[0] ?? '';
15
+ const m = /^(.{20,}?[.!?])\s/.exec(line + ' ');
16
+ return (m ? m[1] : line).slice(0, 160);
17
+ }
18
+ export const toolsCommand = addFormatOption(new Command('tools')
19
+ .description("List the editor's AI tools (run them with run-tool), or show one tool's arguments and an example call")
20
+ .argument('[name]', 'A tool name: show its description, input schema and an example run-tool call')
21
+ .option('--path <path>', 'Godot project path (default: current directory)')
22
+ .option('--refresh', 'Ask the editor again instead of using the cached list')
23
+ .option('--no-start', 'Do not start a headless editor to ask it (use the cache or the built-in list)')
24
+ .option('--editor-path <path>', 'Godot editor executable for a started editor')
25
+ .option('--ready-timeout <ms>', 'How long to wait for a started editor to become ready', String(DEFAULT_SESSION_READY_TIMEOUT_MS))
26
+ .option('--url <url>', 'MCP server base URL (default: the project\'s connection)')
27
+ .option('--token <token>', 'Bearer token')).action(async (name, options) => {
28
+ const output = new CommandOutput('tools', parseFormat(options.format));
29
+ const readyTimeoutMs = parseIntFlag(options.readyTimeout, '--ready-timeout');
30
+ const projectPath = resolveAndValidateProjectPath(undefined, options);
31
+ const conn = await connectionForCommand(output, projectPath, options);
32
+ // The project's own cache only: written for this project's local server, never for an explicit --url or the hub.
33
+ const cacheable = !options.url && !conn.cloud && isGodotProject(projectPath);
34
+ const cached = cacheable ? readToolsCache(projectPath) : undefined;
35
+ const cache = cached && cached.url === conn.url ? cached : undefined;
36
+ let tools;
37
+ let source = 'editor';
38
+ // A running editor is asked first (the list changes when tools are added); the cache serves a closed editor.
39
+ let live = await listToolsLive(conn.url, conn.token, 5000);
40
+ if (live.kind === 'failure' && cache && !options.refresh) {
41
+ tools = cache.tools;
42
+ source = 'cache';
43
+ verbose(`Using ${cache.tools.length} cached tools from ${cache.fetchedAt}`);
44
+ }
45
+ else {
46
+ const canStart = options.start !== false && !conn.cloud && isLocalhostUrl(conn.url) && isGodotProject(projectPath);
47
+ if (live.kind === 'failure' && live.reason === 'unreachable' && canStart) {
48
+ output.progress('No editor answered; starting a headless editor to list its tools...');
49
+ const editor = await ensureEditor({
50
+ projectPath,
51
+ url: conn.url,
52
+ ...(conn.token ? { token: conn.token } : {}),
53
+ ...(options.editorPath ? { editorPath: options.editorPath } : {}),
54
+ readyTimeoutMs,
55
+ onStatus: (m) => output.progress(m),
56
+ });
57
+ if (editor.kind === 'failure') {
58
+ const mapped = ensureFailureExit(editor);
59
+ return output.fail(mapped.exitCode, mapped.code, `Could not start an editor: ${editor.message}`);
60
+ }
61
+ live = await listToolsLive(editor.ensured.ready, conn.token);
62
+ }
63
+ if (live.kind === 'success') {
64
+ tools = live.tools;
65
+ if (cacheable)
66
+ writeToolsCache(projectPath, conn.url, live.tools);
67
+ }
68
+ else if (cache) {
69
+ output.warn(`${live.message} Showing the cached list from ${cache.fetchedAt}.`);
70
+ tools = cache.tools;
71
+ source = 'cache';
72
+ }
73
+ else if (live.reason === 'dropped') {
74
+ // A server answered and dropped the connection: exit 7 UNREACHABLE (as run-tool and the other CLIs), not the
75
+ // offline list, which stands in for an editor that is not running.
76
+ return output.fail(ExitCode.Unreachable, 'UNREACHABLE', live.message);
77
+ }
78
+ else {
79
+ output.warn(`${live.message} Showing the built-in list (no input schemas); run \`godot-cli tools --refresh\` with an editor running for the full list.`);
80
+ tools = offlineTools();
81
+ source = 'built-in';
82
+ }
83
+ }
84
+ if (name !== undefined) {
85
+ const tool = tools.find((t) => t.name === name);
86
+ if (!tool) {
87
+ const near = tools.filter((t) => t.name.includes(name) || name.includes(t.name.split('-')[0])).map((t) => t.name).slice(0, 8);
88
+ return output.fail(ExitCode.Usage, 'NOT_FOUND', `No tool named "${name}".${near.length > 0 ? ` Did you mean: ${near.join(', ')}?` : ''} Run \`godot-cli tools\` for the list.`);
89
+ }
90
+ const example = tool.inputSchema ? exampleCall(tool) : `godot-cli run-tool ${tool.name} --input '{}'`;
91
+ if (!output.machine) {
92
+ ui.heading(tool.name);
93
+ console.log(tool.description);
94
+ const props = tool.inputSchema?.properties ?? {};
95
+ const required = new Set(tool.inputSchema?.required ?? []);
96
+ if (Object.keys(props).length > 0) {
97
+ ui.heading('Arguments');
98
+ for (const [key, p] of Object.entries(props)) {
99
+ const type = Array.isArray(p.type) ? p.type.join('|') : p.type ?? 'any';
100
+ console.log(` ${key}${required.has(key) ? '' : '?'}: ${type}${p.description ? ` — ${p.description}` : ''}`);
101
+ }
102
+ }
103
+ else if (source === 'built-in') {
104
+ ui.info('Argument schema unavailable without a running editor (run with --refresh while one runs).');
105
+ }
106
+ ui.heading('Example');
107
+ console.log(` ${example}`);
108
+ console.log(' (complex arguments: put the JSON in a file and pass --input-file <file>)');
109
+ }
110
+ return output.finish(ExitCode.Success, { source, tool, example });
111
+ }
112
+ if (!output.machine) {
113
+ for (const t of tools)
114
+ console.log(`${t.name.padEnd(28)} ${firstSentence(t.description)}`);
115
+ console.log('');
116
+ console.log(`${tools.length} tools (${source}). Details and an example call: godot-cli tools <name>. Run one: godot-cli run-tool <name> --input '{...}'.`);
117
+ }
118
+ return output.finish(ExitCode.Success, { source, tools: tools.map((t) => ({ name: t.name, description: t.description })) });
119
+ });
120
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/commands/tools.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ import { requireGodotProject } from '../lib/validation.js';
5
5
  import { findGodotProjectRoot, updateProject } from '../lib/update-project.js';
6
6
  import * as ui from '../utils/ui.js';
7
7
  import { fetchLatestVersion, formatUpdateAvailable, isRunningViaNpx } from '../utils/update-check.js';
8
- import { isNewerVersion } from '../utils/semver.js';
8
+ import { isNewerVersion } from '@baizor/gamedev-cli-core';
9
9
  const PACKAGE_NAME = 'godot-cli';
10
10
  /** Exit 2 with `--check`: something is outdated (distinct from exit 1 = error). */
11
11
  const EXIT_OUTDATED = 2;
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,27 @@
1
1
  import { Command } from 'commander';
2
2
  import * as ui from '../utils/ui.js';
3
3
  import { verbose } from '../utils/ui.js';
4
- import { resolveAndValidateProjectPath, resolveConnection } from '../utils/connection.js';
4
+ import { resolveAndValidateProjectPath } from '../utils/connection.js';
5
+ import { connectionForCommand } from '../utils/editor-connection.js';
5
6
  import { probe } from '../utils/probe.js';
7
+ import { ExitCode } from '../utils/exit-codes.js';
8
+ import { CommandOutput, addFormatOption, parseFormat, parseIntFlag } from '../utils/output.js';
6
9
  const MAX_PROBE_TIMEOUT_MS = 10000;
7
- export const waitForReadyCommand = new Command('wait-for-ready')
10
+ export const waitForReadyCommand = addFormatOption(new Command('wait-for-ready')
8
11
  .description('Wait until the Godot editor and MCP server are ready to accept tool calls')
9
12
  .argument('[path]', 'Godot project path (validated when --url is omitted)')
10
13
  .option('--path <path>', 'Godot project path')
11
14
  .option('--url <url>', 'MCP server base URL (defaults to GODOT_MCP_HOST/cloud)')
12
15
  .option('--token <token>', 'Bearer token override (defaults to GODOT_MCP_TOKEN)')
13
16
  .option('--timeout <ms>', 'Maximum time to wait in milliseconds (default: 120000)', '120000')
14
- .option('--interval <ms>', 'Polling interval in milliseconds (default: 3000)', '3000')
15
- .action(async (positionalPath, options) => {
17
+ .option('--interval <ms>', 'Polling interval in milliseconds (default: 3000)', '3000')).action(async (positionalPath, options) => {
18
+ const output = new CommandOutput('wait-for-ready', parseFormat(options.format));
19
+ const timeoutMs = parseIntFlag(options.timeout, '--timeout');
20
+ const intervalMs = parseIntFlag(options.interval, '--interval');
16
21
  const projectPath = resolveAndValidateProjectPath(positionalPath, options);
17
- const { url: serverUrl, token } = await resolveConnection(projectPath, options);
18
- const timeoutMs = parseInt(options.timeout ?? '120000', 10);
19
- const intervalMs = parseInt(options.interval ?? '3000', 10);
20
- if (!Number.isFinite(timeoutMs) || timeoutMs <= 0) {
21
- ui.error(`Invalid --timeout value: "${options.timeout}". Must be a positive integer (milliseconds).`);
22
- process.exit(1);
23
- }
24
- if (!Number.isFinite(intervalMs) || intervalMs <= 0) {
25
- ui.error(`Invalid --interval value: "${options.interval}". Must be a positive integer (milliseconds).`);
26
- process.exit(1);
27
- }
22
+ // The server the project's editor serves: its mode decides (Cloud with the sign-in; never signed in: the local one).
23
+ const conn = await connectionForCommand(output, projectPath, options);
24
+ const { url: serverUrl, token } = conn;
28
25
  const headers = { 'Content-Type': 'application/json' };
29
26
  if (token) {
30
27
  headers['Authorization'] = `Bearer ${token}`;
@@ -36,17 +33,18 @@ export const waitForReadyCommand = new Command('wait-for-ready')
36
33
  while (true) {
37
34
  const elapsed = Date.now() - startTime;
38
35
  if (elapsed >= timeoutMs) {
39
- spinner.error(`Timed out after ${(timeoutMs / 1000).toFixed(1)}s waiting for MCP server`);
40
- process.exit(1);
36
+ const message = `Timed out after ${(timeoutMs / 1000).toFixed(1)}s waiting for MCP server`;
37
+ spinner.error(message);
38
+ output.finish(ExitCode.Timeout, { url: serverUrl, ready: false, elapsedMs: elapsed }, [{ code: 'TIMEOUT', message }]);
41
39
  }
42
40
  const remaining = Math.ceil((timeoutMs - elapsed) / 1000);
43
41
  spinner.text = `Waiting for Godot editor and MCP server... (${remaining}s remaining)`;
44
42
  const probeTimeout = Math.min(intervalMs, MAX_PROBE_TIMEOUT_MS);
45
43
  const result = await probe(serverUrl, headers, probeTimeout);
46
44
  if (result.ok) {
47
- const totalSeconds = ((Date.now() - startTime) / 1000).toFixed(1);
48
- spinner.success(`MCP server is ready at ${result.baseUrl} (connected in ${totalSeconds}s)`);
49
- process.exit(0);
45
+ const elapsedMs = Date.now() - startTime;
46
+ spinner.success(`MCP server is ready at ${result.baseUrl} (connected in ${(elapsedMs / 1000).toFixed(1)}s)`);
47
+ output.finish(ExitCode.Success, { url: result.baseUrl, ready: true, elapsedMs });
50
48
  }
51
49
  const remainingMs = timeoutMs - (Date.now() - startTime);
52
50
  if (remainingMs <= 0)
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-ready.js","sourceRoot":"","sources":["../../src/commands/wait-for-ready.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wait-for-ready.js","sourceRoot":"","sources":["../../src/commands/wait-for-ready.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE/F,MAAM,oBAAoB,GAAG,KAAM,CAAC;AAWpC,MAAM,CAAC,MAAM,mBAAmB,GAAG,eAAe,CAChD,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC1B,WAAW,CAAC,2EAA2E,CAAC;KACxF,QAAQ,CAAC,QAAQ,EAAE,sDAAsD,CAAC;KAC1E,MAAM,CAAC,eAAe,EAAE,oBAAoB,CAAC;KAC7C,MAAM,CAAC,aAAa,EAAE,wDAAwD,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,qDAAqD,CAAC;KAChF,MAAM,CAAC,gBAAgB,EAAE,wDAAwD,EAAE,QAAQ,CAAC;KAC5F,MAAM,CAAC,iBAAiB,EAAE,kDAAkD,EAAE,MAAM,CAAC,CACzF,CAAC,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAA4B,EAAE,EAAE;IAClF,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,gBAAgB,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;IAChF,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,6BAA6B,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC3E,qHAAqH;IACrH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEvC,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,YAAY,SAAS,iBAAiB,UAAU,IAAI,CAAC,CAAC;IAE9D,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,4CAA4C,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC;YAC3F,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACvB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QACxH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,GAAG,+CAA+C,SAAS,cAAc,CAAC;QAEtF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QAE7D,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACd,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YACzC,OAAO,CAAC,OAAO,CAAC,0BAA0B,MAAM,CAAC,OAAO,kBAAkB,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7G,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,CAAC;QACzD,IAAI,WAAW,IAAI,CAAC;YAAE,SAAS;QAC/B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;AACH,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  import { Command } from 'commander';
2
+ import { classifyCliError, writeFailureEnvelope } from '@baizor/gamedev-cli-core';
2
3
  import { createRequire } from 'module';
3
4
  import { buildCommand } from './commands/build.js';
4
5
  import { loginCommand } from './commands/login.js';
5
6
  import { openCommand } from './commands/open.js';
7
+ import { rqlCommand } from './commands/rql.js';
6
8
  import { runToolCommand } from './commands/run-tool.js';
7
9
  import { runSystemToolCommand } from './commands/run-system-tool.js';
8
10
  import { statusCommand } from './commands/status.js';
@@ -17,6 +19,15 @@ import { installPluginCommand } from './commands/install-plugin.js';
17
19
  import { installExtensionCommand } from './commands/install-extension.js';
18
20
  import { removePluginCommand } from './commands/remove-plugin.js';
19
21
  import { execCommand } from './commands/exec.js';
22
+ import { checkCommand } from './commands/check.js';
23
+ import { createCommandsCommand } from './commands/commands.js';
24
+ import { exportCommand } from './commands/export.js';
25
+ import { importCommand } from './commands/import.js';
26
+ import { runScriptCommand } from './commands/run-script.js';
27
+ import { testCommand } from './commands/test.js';
28
+ import { toolsCommand } from './commands/tools.js';
29
+ import { ExitCode } from './utils/exit-codes.js';
30
+ import { CommandExit, failActive } from './utils/output.js';
20
31
  import { configureStyledHelp, error as uiError, setVerbose } from './utils/ui.js';
21
32
  import { checkForUpdate, isRunningViaNpx, printUpdateNotification } from './utils/update-check.js';
22
33
  const require = createRequire(import.meta.url);
@@ -30,29 +41,40 @@ program
30
41
  // Register all subcommands
31
42
  const subcommands = [
32
43
  buildCommand,
44
+ checkCommand,
33
45
  closeCommand,
46
+ createCommandsCommand(() => program, pkg.version),
34
47
  configureCommand,
35
48
  createProjectCommand,
36
49
  execCommand,
50
+ exportCommand,
51
+ importCommand,
37
52
  installPluginCommand,
38
53
  installExtensionCommand,
39
54
  loginCommand,
40
55
  openCommand,
41
56
  removePluginCommand,
57
+ rqlCommand,
58
+ runScriptCommand,
42
59
  runToolCommand,
43
60
  runSystemToolCommand,
44
61
  setupMcpCommand,
45
62
  setupSkillsCommand,
46
63
  statusCommand,
64
+ testCommand,
65
+ toolsCommand,
47
66
  createUpdateCommand(pkg.version),
48
67
  waitForReadyCommand,
49
68
  ];
50
69
  for (const cmd of subcommands) {
51
70
  cmd.option('-v, --verbose', 'Enable verbose diagnostic output');
52
71
  configureStyledHelp(cmd);
72
+ // Parse errors throw a CommanderError (handled below) instead of exiting 1.
73
+ cmd.exitOverride();
53
74
  program.addCommand(cmd);
54
75
  }
55
- // Apply styled help to root (after subcommands so banner knows about them)
76
+ program.exitOverride();
77
+ // Apply styled help to root (after the subcommands: the root help names them)
56
78
  configureStyledHelp(program, pkg.version);
57
79
  // Wire verbose flag before any command executes
58
80
  program.hook('preAction', (_thisCommand, actionCommand) => {
@@ -75,7 +97,30 @@ program.parseAsync()
75
97
  }
76
98
  })
77
99
  .catch((err) => {
78
- uiError(err.message || String(err));
79
- process.exit(1);
100
+ // A command finished through its output: the exit is scheduled once stdout has flushed.
101
+ if (err instanceof CommandExit)
102
+ return;
103
+ const failure = classifyCliError(err);
104
+ // --help / --version are not errors.
105
+ if (failure.informational)
106
+ process.exit(ExitCode.Success);
107
+ if (failure.code === 'USAGE') {
108
+ // Commander already printed its parse errors to stderr; machine formats also get the envelope on stdout.
109
+ if (!failure.printed)
110
+ uiError(failure.message);
111
+ writeFailureEnvelope(program, failure);
112
+ process.exit(failure.exitCode);
113
+ }
114
+ try {
115
+ if (failActive(err))
116
+ return;
117
+ }
118
+ catch (exit) {
119
+ if (exit instanceof CommandExit)
120
+ return;
121
+ throw exit;
122
+ }
123
+ uiError(failure.message);
124
+ process.exit(failure.exitCode);
80
125
  });
81
126
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -47,5 +47,5 @@ interface DotnetRun {
47
47
  * `error` (e.g. `dotnet` not on PATH) resolves as a non-zero run rather than
48
48
  * throwing past the boundary. `spawnImpl` is injectable for unit tests.
49
49
  */
50
- export declare function runDotnet(bin: string, args: string[], cwd: string, spawnImpl?: typeof spawn): Promise<DotnetRun>;
50
+ export declare function runDotnet(bin: string, args: string[], cwd: string, spawnImpl?: typeof spawn, timeoutMs?: number): Promise<DotnetRun>;
51
51
  export {};
package/dist/lib/build.js CHANGED
@@ -3,6 +3,7 @@ import * as path from 'path';
3
3
  import { spawn } from 'child_process';
4
4
  import { resolveProjectPath, isGodotProjectDir } from './open.js';
5
5
  import { emitProgress } from './progress.js';
6
+ import { killProcessTree } from '@baizor/gamedev-cli-core';
6
7
  /**
7
8
  * Locate the single consumer `.csproj` directly at the Godot project root — the
8
9
  * `.csproj` Godot compiles every project `.cs` (addon included) into. A
@@ -98,7 +99,7 @@ export async function buildProject(options) {
98
99
  csprojPath,
99
100
  command: [dotnetBin, ...args].join(' '),
100
101
  });
101
- const run = await runDotnet(dotnetBin, args, projectPath, options.spawnImpl);
102
+ const run = await runDotnet(dotnetBin, args, projectPath, options.spawnImpl, options.timeoutMs);
102
103
  if (run.code !== 0) {
103
104
  const detail = run.output.trim();
104
105
  throw new Error(`dotnet build failed (exit ${run.code ?? 'null'}) for ${csprojPath}.` +
@@ -138,13 +139,16 @@ export async function buildProject(options) {
138
139
  * `error` (e.g. `dotnet` not on PATH) resolves as a non-zero run rather than
139
140
  * throwing past the boundary. `spawnImpl` is injectable for unit tests.
140
141
  */
141
- export function runDotnet(bin, args, cwd, spawnImpl = spawn) {
142
+ export function runDotnet(bin, args, cwd, spawnImpl = spawn, timeoutMs) {
142
143
  return new Promise((resolve) => {
143
144
  let settled = false;
145
+ let timer;
144
146
  const finish = (run) => {
145
147
  if (settled)
146
148
  return;
147
149
  settled = true;
150
+ if (timer)
151
+ clearTimeout(timer);
148
152
  resolve(run);
149
153
  };
150
154
  let child;
@@ -157,6 +161,17 @@ export function runDotnet(bin, args, cwd, spawnImpl = spawn) {
157
161
  return;
158
162
  }
159
163
  let output = '';
164
+ let timedOut = false;
165
+ // A hung restore or build: kill the whole tree (MSBuild nodes included) and fail.
166
+ if (timeoutMs !== undefined && timeoutMs > 0) {
167
+ timer = setTimeout(() => {
168
+ // From here the run is a timeout, even if the killed child's 'close' arrives first; it resolves only once the
169
+ // tree is gone, since the caller may exit right after and cut taskkill short.
170
+ timedOut = true;
171
+ const killed = child.pid !== undefined ? killProcessTree(child.pid) : Promise.resolve(true);
172
+ void killed.then(() => finish({ code: 124, output: `${output}\nTimed out after ${timeoutMs} ms: "${bin}" was killed.` }));
173
+ }, timeoutMs);
174
+ }
160
175
  child.stdout?.on('data', (chunk) => {
161
176
  output += chunk.toString();
162
177
  });
@@ -164,10 +179,12 @@ export function runDotnet(bin, args, cwd, spawnImpl = spawn) {
164
179
  output += chunk.toString();
165
180
  });
166
181
  child.on('error', (err) => {
167
- finish({ code: 127, output: `${output}\nFailed to run "${bin}": ${err.message}` });
182
+ if (!timedOut)
183
+ finish({ code: 127, output: `${output}\nFailed to run "${bin}": ${err.message}` });
168
184
  });
169
185
  child.on('close', (code) => {
170
- finish({ code, output });
186
+ if (!timedOut)
187
+ finish({ code, output });
171
188
  });
172
189
  });
173
190
  }
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/lib/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/lib/build.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { type Diagnostic } from './godot-log.js';
2
+ import { type HeadlessBaseOptions, type HeadlessResult, type HeadlessStep } from './headless.js';
3
+ import type { BuildProjectResult } from './types.js';
4
+ /** Loads every `.gd` under res:// (addons only with --include-addons) and prints one marker per failing file. */
5
+ export declare const CHECK_SCRIPT = "extends SceneTree\n# Written by godot-cli check. Loads every GDScript and prints a [godot-cli] marker per failure.\n\nconst MARK := \"[godot-cli] \"\nconst WARN_PREFIX := \"debug/gdscript/warnings/\"\n\nfunc _walk(dir: String, out: Array, include_addons: bool) -> void:\n\tvar d := DirAccess.open(dir)\n\tif d == null:\n\t\treturn\n\td.list_dir_begin()\n\tvar name := d.get_next()\n\twhile name != \"\":\n\t\tvar p := dir.path_join(name)\n\t\tif name.begins_with(\".\"):\n\t\t\tpass\n\t\telif d.current_is_dir() and FileAccess.file_exists(p.path_join(\".gdignore\")):\n\t\t\tpass # Godot skips a folder with a .gdignore\n\t\telif d.current_is_dir():\n\t\t\tif include_addons or p != \"res://addons\":\n\t\t\t\t_walk(p, out, include_addons)\n\t\telif name.get_extension() == \"gd\":\n\t\t\tout.append(p)\n\t\tname = d.get_next()\n\nfunc _load_ok(path: String) -> bool:\n\tvar s = ResourceLoader.load(path, \"\", ResourceLoader.CACHE_MODE_IGNORE)\n\tif s == null or not (s is Script):\n\t\treturn false\n\t# An @abstract script (4.5+) loads fine but cannot be instantiated.\n\treturn s.can_instantiate() or (s.has_method(\"is_abstract\") and s.is_abstract())\n\nfunc _init() -> void:\n\tvar args := OS.get_cmdline_user_args()\n\tvar strict := args.has(\"--strict\")\n\tvar files: Array = []\n\t_walk(\"res://\", files, args.has(\"--include-addons\"))\n\tvar clean: Array = []\n\tvar failed := 0\n\tfor f in files:\n\t\tif _load_ok(f):\n\t\t\tclean.append(f)\n\t\telse:\n\t\t\tfailed += 1\n\t\t\tprint(MARK + \"script-failed \" + f)\n\tvar warned := 0\n\tif strict and clean.size() > 0:\n\t\t# GDScript warnings only show in the script editor: raise the Warn-level ones to Error in memory (never saved).\n\t\tfor prop in ProjectSettings.get_property_list():\n\t\t\tvar n: String = prop[\"name\"]\n\t\t\tif n.begins_with(WARN_PREFIX) and typeof(ProjectSettings.get_setting(n)) == TYPE_INT and ProjectSettings.get_setting(n) == 1:\n\t\t\t\tProjectSettings.set_setting(n, 2)\n\t\tprint(MARK + \"warnings-pass\")\n\t\tfor f in clean:\n\t\t\tif not _load_ok(f):\n\t\t\t\twarned += 1\n\t\t\t\tprint(MARK + \"script-warned \" + f)\n\tprint(MARK + \"check-done files=%d failed=%d warned=%d\" % [files.size(), failed, warned])\n\tquit(1 if failed > 0 else 0)\n";
6
+ export interface CheckOptions extends HeadlessBaseOptions {
7
+ /** Warnings (GDScript, C# compiler) fail the check. */
8
+ strict?: boolean;
9
+ /** Also load the GDScript under res://addons/ (skipped by default: editor-only addon scripts do not load outside the editor). */
10
+ includeAddons?: boolean;
11
+ /** Tests. */
12
+ build?: (projectPath: string, timeoutMs: number) => Promise<BuildProjectResult>;
13
+ }
14
+ export interface CheckReport {
15
+ projectPath: string;
16
+ steps: HeadlessStep[];
17
+ /** Script and compiler diagnostics (the ones that decide the verdict). */
18
+ diagnostics: Diagnostic[];
19
+ /** Engine errors/warnings that do not decide the verdict. */
20
+ engineMessages: Diagnostic[];
21
+ /** Whether the Godot-MCP addon is enabled in the project, and whether it printed its load marker. */
22
+ addon: {
23
+ enabled: boolean;
24
+ loaded: boolean | null;
25
+ };
26
+ gdscript: {
27
+ files: number;
28
+ failed: number;
29
+ warned: number;
30
+ } | null;
31
+ csharp: {
32
+ built: boolean;
33
+ skipped: boolean;
34
+ } | null;
35
+ }
36
+ export type CheckResult = HeadlessResult<CheckReport>;
37
+ /** True when project.godot enables the Godot-MCP addon. */
38
+ export declare function isAddonEnabled(projectPath: string): boolean;
39
+ export declare function checkProject(options: CheckOptions): Promise<CheckResult>;
40
+ /**
41
+ * The diagnostics that fail a check: every error, plus with `strict` the GDScript warnings and C# compiler (CS)
42
+ * warnings (package and engine warnings never).
43
+ */
44
+ export declare function failingDiagnostics(diagnostics: Diagnostic[], strict: boolean): Diagnostic[];