godot-cli 0.28.0 → 0.30.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/CHANGELOG.md +19 -0
- package/README.md +40 -5
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +1 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/close.d.ts +3 -0
- package/dist/commands/close.js +38 -0
- package/dist/commands/close.js.map +1 -1
- package/dist/commands/exec.d.ts +2 -0
- package/dist/commands/exec.js +101 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/open.js +61 -1
- package/dist/commands/open.js.map +1 -1
- package/dist/commands/run-tool-builder.d.ts +9 -1
- package/dist/commands/run-tool-builder.js +1 -1
- package/dist/commands/run-tool-builder.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/exec.d.ts +61 -0
- package/dist/lib/exec.js +75 -0
- package/dist/lib/exec.js.map +1 -0
- package/dist/lib/session.d.ts +78 -0
- package/dist/lib/session.js +178 -0
- package/dist/lib/session.js.map +1 -0
- package/dist/lib.d.ts +4 -0
- package/dist/lib.js +2 -0
- package/dist/lib.js.map +1 -1
- package/dist/utils/addon-deps.d.ts +1 -1
- package/dist/utils/addon-deps.js +10 -3
- package/dist/utils/addon-deps.js.map +1 -1
- package/dist/utils/connection.d.ts +18 -0
- package/dist/utils/connection.js +22 -3
- package/dist/utils/connection.js.map +1 -1
- package/dist/utils/csproj-deps.js +7 -0
- package/dist/utils/csproj-deps.js.map +1 -1
- package/dist/utils/extensions-catalog.js +20 -93
- package/dist/utils/extensions-catalog.js.map +1 -1
- package/dist/utils/input.d.ts +2 -0
- package/dist/utils/input.js +9 -0
- package/dist/utils/input.js.map +1 -1
- package/dist/utils/skills.d.ts +1 -1
- package/dist/utils/skills.js +31 -63
- package/dist/utils/skills.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@ All notable changes to `godot-cli` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## Unreleased
|
|
6
6
|
|
|
7
|
+
- **`exec`: run C# in the editor.** `godot-cli exec '<code>'` (or `-f <file>` / stdin, repeatable `--using` /
|
|
8
|
+
`--include`) calls the addon's new `script-execute` tool. A running editor of the project is reused; otherwise the
|
|
9
|
+
C# assembly is built and a **headless** editor starts (`--window` for a GUI one) on the project's local server,
|
|
10
|
+
which its plugin starts itself (`GODOT_MCP_START_SERVER`); a headless one quits by itself after `--idle` seconds
|
|
11
|
+
(default 300) without tool calls. A user's editor whose local server does not answer is reported after 20 s. Built on `@baizor/gamedev-cli-core` 0.7.0 `EditorSession` (lease
|
|
12
|
+
`.ai-game-dev/session.json`, startup lock: parallel calls start one editor). Library: `execCode`, `ensureEditor`,
|
|
13
|
+
`createGodotSession`.
|
|
14
|
+
- **`open --headless [--idle-timeout <s>]`** starts that session without running code; a windowed `open` first
|
|
15
|
+
closes a headless editor the CLI started for the project. **`close --owned-only`** saves and quits only an editor
|
|
16
|
+
the CLI started, through the plugin's `session-close` system tool (a windowless editor gets no WM_CLOSE).
|
|
17
|
+
- `install-plugin` keeps a newer third-party package the project already pins (e.g. its own Roslyn) instead of
|
|
18
|
+
downgrading it to the addon's pin; `com.IvanMurzak.*` pins are still reconciled exactly.
|
|
19
|
+
- `install-plugin` writes the addon's three new NuGet pins (`com.IvanMurzak.CodeExec` and `.Roslyn` 0.2.0,
|
|
20
|
+
`Microsoft.CodeAnalysis.CSharp` 4.12.0); `setup-skills` lists `script-execute` and the `session` family.
|
|
21
|
+
|
|
22
|
+
- **Extension catalog: the extensions are RQL modules.** The `EXTENSIONS_CATALOG` mirror follows the shared
|
|
23
|
+
`extensions.catalog.json`: every Godot-AI-* extension (1.0.0) contributes no MCP tools any more (`tools: []`) and
|
|
24
|
+
its description names the RQL surface it adds to `rql-query` / `rql-mutate` instead.
|
|
25
|
+
|
|
7
26
|
- **`install-plugin` pins the NuGet packages of the addon it installs.** The consumer `.csproj`'s
|
|
8
27
|
`PackageReference` versions now come from the installed addon — `addons/godot_mcp/nuget-deps.json`,
|
|
9
28
|
which the release workflow generates from `Godot-MCP.csproj` into the addon zip — instead of the
|
package/README.md
CHANGED
|
@@ -37,7 +37,7 @@ The CLI is the Godot analog of [`unity-mcp-cli`](https://www.npmjs.com/package/u
|
|
|
37
37
|
|
|
38
38
|
- :white_check_mark: **Open & Connect** — build the project's C# assembly and launch the Godot editor with `GODOT_MCP_*` connection env vars
|
|
39
39
|
- :white_check_mark: **Install plugin** — install the `godot_mcp` addon end-to-end (download release, add NuGet pins + catalog, enable)
|
|
40
|
-
- :white_check_mark: **Install extensions** — add optional Godot-MCP
|
|
40
|
+
- :white_check_mark: **Install extensions** — add optional Godot-MCP extension packages (RQL modules) to a project
|
|
41
41
|
- :white_check_mark: **Remove plugin** — disable the `godot_mcp` addon in `project.godot`
|
|
42
42
|
- :white_check_mark: **Configure** — enable/disable MCP tools, prompts, and resources
|
|
43
43
|
- :white_check_mark: **Status check** — detect a running Godot editor and probe MCP-server health
|
|
@@ -67,6 +67,9 @@ godot-cli open ./MyGodotProject
|
|
|
67
67
|
|
|
68
68
|
# Wait until the MCP server is ready to accept tool calls
|
|
69
69
|
godot-cli wait-for-ready ./MyGodotProject
|
|
70
|
+
|
|
71
|
+
# Run C# in the editor — starts a headless editor when none is open, keeps it warm 5 minutes
|
|
72
|
+
godot-cli exec 'EditorInterface.Singleton.GetEditedSceneRoot()?.Name' --path ./MyGodotProject
|
|
70
73
|
```
|
|
71
74
|
|
|
72
75
|
Or run any command ad-hoc with `npx` — no global install required:
|
|
@@ -83,7 +86,8 @@ npx godot-cli install-plugin /path/to/godot/project
|
|
|
83
86
|
|
|
84
87
|
| Command | What it does |
|
|
85
88
|
| --- | --- |
|
|
86
|
-
| `open [path]` | Build the project's C# assembly (so the addon loads on first open — see below), resolve the Godot editor binary, and launch `--editor --path <project>` with `GODOT_MCP_*` connection env vars. `--no-build` skips the build. |
|
|
89
|
+
| `open [path]` | Build the project's C# assembly (so the addon loads on first open — see below), resolve the Godot editor binary, and launch `--editor --path <project>` with `GODOT_MCP_*` connection env vars. `--no-build` skips the build. `--headless` starts a windowless editor session instead (see [`exec`](#exec)). |
|
|
90
|
+
| `exec [code]` | Run C# in the editor through `script-execute` (see [`exec`](#exec)): reuses a running editor, otherwise starts a headless one and keeps it warm. |
|
|
87
91
|
| `build [path]` | Build the project's C# assembly (`dotnet build`) so the `godot_mcp` addon loads on the next editor open. GDScript-only projects (no `.csproj`) are a no-op. This is the same build `open` runs before launching. |
|
|
88
92
|
| `run-tool <tool> [path]` | POST to `<url>/api/tools/<tool>` with JSON input. |
|
|
89
93
|
| `run-system-tool <tool> [path]` | POST to `<url>/api/system-tools/<tool>` (tools not exposed to MCP clients). |
|
|
@@ -93,9 +97,9 @@ npx godot-cli install-plugin /path/to/godot/project
|
|
|
93
97
|
| `setup-mcp <agent> [path]` | Write the agent's MCP-client config pointing at the project-pinned `<host>/mcp/p/<pin>` URL (so the agent routes to *this* project's editor). In Cloud mode the config carries this project's key (`Authorization: Bearer agd_pk_…`). Add `--no-pin` for the bare `<host>/mcp` URL, `--oauth` for a URL-only config, `--regenerate-key` to replace the key. |
|
|
94
98
|
| `setup-skills <agent> [path]` | Generate Godot-MCP skill files (a `SKILL.md`-per-tool-family) under the agent's skills path. `--list` shows each agent's skills support. |
|
|
95
99
|
| `configure [path]` | List / enable / disable tools, prompts, and resources in the project-local `.godot-mcp/features.json`. |
|
|
96
|
-
| `close [path]` | Gracefully stop the Godot editor running for a project (`--force` to hard-kill). |
|
|
100
|
+
| `close [path]` | Gracefully stop the Godot editor running for a project (`--force` to hard-kill). `--owned-only` closes only an editor `godot-cli` started (`exec` / `open --headless`). |
|
|
97
101
|
| `install-plugin [path]` | Install the `godot_mcp` addon end-to-end: materialize `res://addons/godot_mcp/` (download the matching GitHub release, or `--source <path>` a local copy), add the NuGet `PackageReference`s the installed addon needs + the extension-catalog `<EmbeddedResource>` to the project `.csproj`, and enable the plugin. Idempotent. |
|
|
98
|
-
| `install-extension <id> [path]` | Install a Godot-MCP **extension** (an optional
|
|
102
|
+
| `install-extension <id> [path]` | Install a Godot-MCP **extension** (an optional RQL-module package) into the project: resolve `<id>` from the shared catalog, add/update its `<PackageReference>` in the project `.csproj`, then rebuild to restore. Idempotent — behaviorally identical to the in-editor dock. |
|
|
99
103
|
| `remove-plugin [path]` | Disable the `godot_mcp` addon in `project.godot` `[editor_plugins]` (does not delete the addon files). |
|
|
100
104
|
| `update` | Check npm for a newer `godot-cli` and install it. |
|
|
101
105
|
|
|
@@ -162,6 +166,37 @@ local/self-hosted server explicitly.
|
|
|
162
166
|
|
|
163
167
|

|
|
164
168
|
|
|
169
|
+
## `exec`
|
|
170
|
+
|
|
171
|
+
Run C# in the project's Godot editor (the addon's `script-execute` tool, on [Code-Exec](https://github.com/IvanMurzak/Code-Exec)):
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
godot-cli exec '1 + 2' # → System.Int32: 3
|
|
175
|
+
godot-cli exec -f snippet.cs --using MyGame.Gameplay # code from a file ("-" or a pipe: stdin)
|
|
176
|
+
godot-cli exec 'Helper.Twice(21)' --include helpers # .cs files/folders under <project>/.ai-game-dev/snippets
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The code is plain statements; the last expression is the result. The output is the value (`Type: value`) and,
|
|
180
|
+
under `logs:`, what the code printed (`Console`; `GD.Print` / push_warning / push_error with Godot.NET.Sdk 4.5+). A compile error points
|
|
181
|
+
at the snippet's line (`snippet.cs(2,12)`) and exits 1.
|
|
182
|
+
|
|
183
|
+
- **A running editor of the project** (yours, with a window, or one `godot-cli` started) is reused and never closed.
|
|
184
|
+
Yours must serve the project's **local** server (dock: Custom mode, server started).
|
|
185
|
+
- **None running:** the C# assembly is built, then a **headless** editor starts (`--headless --editor --path`, or a
|
|
186
|
+
window with `--window`) connected to the project's local server (`http://localhost:<derived port>`, or `--url`),
|
|
187
|
+
which its plugin starts itself. A headless one quits after `--idle <seconds>` (default 300, `0` = never) without
|
|
188
|
+
tool calls, saving the open scenes that have a file (a windowed one stays open). Parallel calls start one editor;
|
|
189
|
+
a user's editor whose local server does not answer is waited for 20 s, then reported.
|
|
190
|
+
- `open --headless [--idle-timeout <s>]` starts the same session without running code; `close --owned-only` saves
|
|
191
|
+
and quits it (through the plugin's `session-close` tool — never a user's editor).
|
|
192
|
+
|
|
193
|
+
Sessions use [`@baizor/gamedev-cli-core`](https://www.npmjs.com/package/@baizor/gamedev-cli-core) `EditorSession`:
|
|
194
|
+
the lease `<project>/.ai-game-dev/session.json` marks an editor as started by the CLI (only such an editor is ever
|
|
195
|
+
closed), and `<project>/.ai-game-dev/session.lock` makes concurrent calls start one editor. The editor receives
|
|
196
|
+
`AIGD_SESSION_IDLE_SECONDS`, `AIGD_SESSION_OWNER=cli` and `AIGD_SESSION_NONCE`, plus `GODOT_MCP_CONNECTION_MODE=Custom`,
|
|
197
|
+
`GODOT_MCP_HOST` and `GODOT_MCP_START_SERVER=true`. Options: `--ready-timeout <ms>`, `--timeout <ms>` (tool call),
|
|
198
|
+
`--no-build`, `--editor-path`, `--token`, `--raw`.
|
|
199
|
+
|
|
165
200
|
## `login`
|
|
166
201
|
|
|
167
202
|
`godot-cli login` authenticates the editor plugin's **cloud** connection to
|
|
@@ -287,7 +322,7 @@ godot-cli install-extension com.IvanMurzak.Godot.MCP.ProBuilder --version 1.3.0
|
|
|
287
322
|
The package also exports a side-effect-free library (the `.` entry):
|
|
288
323
|
|
|
289
324
|
```ts
|
|
290
|
-
import { openProject, runTool, setupMcp, installPlugin, installExtension } from 'godot-cli';
|
|
325
|
+
import { openProject, runTool, setupMcp, installPlugin, installExtension, execCode, ensureEditor } from 'godot-cli';
|
|
291
326
|
|
|
292
327
|
// The shared extension catalog + lookup helpers are exported too, so a GUI (the app)
|
|
293
328
|
// can render the same list the dock + CLI install from:
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { loginCommand } from './commands/login.js';
|
|
2
2
|
export { openCommand } from './commands/open.js';
|
|
3
|
+
export { execCommand } from './commands/exec.js';
|
|
3
4
|
export { runToolCommand } from './commands/run-tool.js';
|
|
4
5
|
export { runSystemToolCommand } from './commands/run-system-tool.js';
|
|
5
6
|
export { statusCommand } from './commands/status.js';
|
package/dist/cli.js
CHANGED
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
// `bin/godot-cli.js`).
|
|
6
6
|
export { loginCommand } from './commands/login.js';
|
|
7
7
|
export { openCommand } from './commands/open.js';
|
|
8
|
+
export { execCommand } from './commands/exec.js';
|
|
8
9
|
export { runToolCommand } from './commands/run-tool.js';
|
|
9
10
|
export { runSystemToolCommand } from './commands/run-system-tool.js';
|
|
10
11
|
export { statusCommand } from './commands/status.js';
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,uBAAuB;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,8EAA8E;AAC9E,2EAA2E;AAC3E,uBAAuB;AAEvB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/commands/close.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { Command } from 'commander';
|
|
|
2
2
|
export interface CloseOptions {
|
|
3
3
|
timeout?: string;
|
|
4
4
|
force?: boolean;
|
|
5
|
+
ownedOnly?: boolean;
|
|
6
|
+
url?: string;
|
|
7
|
+
token?: string;
|
|
5
8
|
}
|
|
6
9
|
/** Resolve the project path argument to an absolute, canonical path. */
|
|
7
10
|
export declare function resolveCloseProjectPath(positionalPath: string | undefined, cwd: string): string;
|
package/dist/commands/close.js
CHANGED
|
@@ -6,6 +6,8 @@ import * as ui from '../utils/ui.js';
|
|
|
6
6
|
import { verbose } from '../utils/ui.js';
|
|
7
7
|
import { findGodotProcess } from '../utils/godot-process.js';
|
|
8
8
|
import { isProcessAlive, sendGracefulShutdown, sendForceKill, waitForExit, } from '../utils/godot-shutdown.js';
|
|
9
|
+
import { resolveSessionConnection } from '../utils/connection.js';
|
|
10
|
+
import { createGodotSession } from '../lib/session.js';
|
|
9
11
|
const DEFAULT_TIMEOUT_SECONDS = 30;
|
|
10
12
|
/** Resolve the project path argument to an absolute, canonical path. */
|
|
11
13
|
export function resolveCloseProjectPath(positionalPath, cwd) {
|
|
@@ -50,6 +52,9 @@ export const closeCommand = new Command('close')
|
|
|
50
52
|
.argument('[path]', 'Path to the Godot project (defaults to current directory)')
|
|
51
53
|
.option('--timeout <seconds>', `Polite-quit timeout in seconds (default: ${DEFAULT_TIMEOUT_SECONDS})`, String(DEFAULT_TIMEOUT_SECONDS))
|
|
52
54
|
.option('--force', 'Hard-kill the editor if it does not exit within --timeout')
|
|
55
|
+
.option('--owned-only', 'Close only an editor started by godot-cli (exec / open --headless); never a user editor')
|
|
56
|
+
.option('--url <url>', 'With --owned-only: the local MCP server of that editor (default: the project local port)')
|
|
57
|
+
.option('--token <token>', 'With --owned-only: bearer token (default: GODOT_MCP_TOKEN)')
|
|
53
58
|
.action(async (positionalPath, options) => {
|
|
54
59
|
const projectPath = resolveCloseProjectPath(positionalPath, process.cwd());
|
|
55
60
|
verbose(`close invoked for project: ${projectPath}`);
|
|
@@ -66,6 +71,11 @@ export const closeCommand = new Command('close')
|
|
|
66
71
|
ui.error(`Invalid --timeout value: "${options.timeout}". Must be a positive integer (seconds).`);
|
|
67
72
|
process.exit(1);
|
|
68
73
|
}
|
|
74
|
+
if (options.ownedOnly) {
|
|
75
|
+
// The local port is derived from the path as typed (exec / open --headless do not resolve links either).
|
|
76
|
+
await closeOwned(path.resolve(positionalPath ?? process.cwd()), timeoutSeconds, options);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
69
79
|
const platform = nodePlatform();
|
|
70
80
|
const pid = resolveEditorPid(projectPath);
|
|
71
81
|
if (pid === null) {
|
|
@@ -109,4 +119,32 @@ export const closeCommand = new Command('close')
|
|
|
109
119
|
spinner.error(`Godot editor (PID ${pid}) is still alive after force-kill`);
|
|
110
120
|
process.exit(1);
|
|
111
121
|
});
|
|
122
|
+
/**
|
|
123
|
+
* `close --owned-only`: ask the editor named by our lease (`.ai-game-dev/session.json`) to save and quit through
|
|
124
|
+
* its plugin (a windowless editor gets no WM_CLOSE). Anything else — no lease, a stale lease, a user's editor — is
|
|
125
|
+
* left alone.
|
|
126
|
+
*/
|
|
127
|
+
async function closeOwned(projectPath, timeoutSeconds, options) {
|
|
128
|
+
let session;
|
|
129
|
+
try {
|
|
130
|
+
session = createGodotSession({ projectPath, ...resolveSessionConnection(options) }).session;
|
|
131
|
+
}
|
|
132
|
+
catch (err) {
|
|
133
|
+
ui.error(err instanceof Error ? err.message : String(err));
|
|
134
|
+
process.exit(1);
|
|
135
|
+
}
|
|
136
|
+
const spinner = ui.startSpinner('Closing the editor started by godot-cli...');
|
|
137
|
+
const result = await session.closeOwned({ timeoutMs: timeoutSeconds * 1000, force: options.force === true });
|
|
138
|
+
switch (result.kind) {
|
|
139
|
+
case 'closed':
|
|
140
|
+
spinner.success(`Godot editor (PID ${result.pid}) ${result.forced ? 'force-killed' : 'closed'}`);
|
|
141
|
+
return;
|
|
142
|
+
case 'not-owned':
|
|
143
|
+
spinner.success(`No editor started by godot-cli is running for ${projectPath}${result.staleLeaseRemoved ? ' (removed a stale lease)' : ''}`);
|
|
144
|
+
return;
|
|
145
|
+
case 'still-running':
|
|
146
|
+
spinner.error(`Godot editor (PID ${result.pid}) is still running after ${timeoutSeconds}s` + (options.force ? '' : '; re-run with --force'));
|
|
147
|
+
process.exit(1);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
112
150
|
//# sourceMappingURL=close.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,aAAa,EACb,WAAW,GAEZ,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/commands/close.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import * as ui from '../utils/ui.js';
|
|
4
|
+
import { verbose } from '../utils/ui.js';
|
|
5
|
+
import { DEFAULT_SESSION_IDLE_SECONDS, DEFAULT_SESSION_READY_TIMEOUT_MS } from '@baizor/gamedev-cli-core';
|
|
6
|
+
import { resolveAndValidateProjectPath, resolveSessionConnection } from '../utils/connection.js';
|
|
7
|
+
import { parsePositiveIntFlag } from '../utils/input.js';
|
|
8
|
+
import { DEFAULT_EXEC_TIMEOUT_MS, execCode, readToolResponse } from '../lib/exec.js';
|
|
9
|
+
import { buildFailureMessage } from './run-tool-builder.js';
|
|
10
|
+
function collect(value, previous) {
|
|
11
|
+
return [...previous, value];
|
|
12
|
+
}
|
|
13
|
+
function readCode(code, file) {
|
|
14
|
+
if (code !== undefined && file !== undefined)
|
|
15
|
+
throw new Error('Pass the code either as an argument or with --file, not both.');
|
|
16
|
+
if (code !== undefined)
|
|
17
|
+
return code;
|
|
18
|
+
const fromStdin = file === '-' || (file === undefined && !process.stdin.isTTY);
|
|
19
|
+
if (!fromStdin && file === undefined)
|
|
20
|
+
throw new Error('No code given: pass it as an argument, with --file <file>, or on stdin.');
|
|
21
|
+
const text = fs.readFileSync(fromStdin ? 0 : file, 'utf-8');
|
|
22
|
+
if (text.trim() === '')
|
|
23
|
+
throw new Error(fromStdin ? 'No code received from stdin.' : `The file is empty: ${file}`);
|
|
24
|
+
return text;
|
|
25
|
+
}
|
|
26
|
+
export const execCommand = new Command('exec')
|
|
27
|
+
.description('Run C# in the Godot editor; starts a headless editor when none is open and keeps it warm')
|
|
28
|
+
.argument('[code]', 'C# snippet: statements, the last expression is the result')
|
|
29
|
+
.option('--path <path>', 'Godot project path (default: current directory)')
|
|
30
|
+
.option('-f, --file <file>', 'Read the code from a file ("-" for stdin)')
|
|
31
|
+
.option('--using <namespace>', 'Extra namespace (repeatable)', collect, [])
|
|
32
|
+
.option('--include <path>', 'Helper .cs file or folder, relative to <project>/.ai-game-dev/snippets (repeatable)', collect, [])
|
|
33
|
+
.option('--window', 'Start the editor with a window instead of headless (only when none is running yet)')
|
|
34
|
+
.option('--idle <seconds>', 'An editor started by exec quits after this many idle seconds (0 = never)', String(DEFAULT_SESSION_IDLE_SECONDS))
|
|
35
|
+
.option('--ready-timeout <ms>', 'How long to wait for a started editor to become ready', String(DEFAULT_SESSION_READY_TIMEOUT_MS))
|
|
36
|
+
.option('--timeout <ms>', 'Tool call timeout in milliseconds', String(DEFAULT_EXEC_TIMEOUT_MS))
|
|
37
|
+
.option('--no-build', 'Do not build the C# assembly before starting an editor')
|
|
38
|
+
.option('--editor-path <path>', 'Explicit path to the Godot editor executable')
|
|
39
|
+
.option('--raw', 'Print the raw tool response JSON')
|
|
40
|
+
.option('--url <url>', 'Local MCP server URL (default: the project\'s local port)')
|
|
41
|
+
.option('--token <token>', 'Bearer token (default: GODOT_MCP_TOKEN)')
|
|
42
|
+
.action(async (codeArg, options) => {
|
|
43
|
+
const idleSeconds = parsePositiveIntFlag(options.idle, '--idle', true);
|
|
44
|
+
const readyTimeoutMs = parsePositiveIntFlag(options.readyTimeout, '--ready-timeout');
|
|
45
|
+
const timeoutMs = parsePositiveIntFlag(options.timeout, '--timeout');
|
|
46
|
+
let code;
|
|
47
|
+
try {
|
|
48
|
+
code = readCode(codeArg, options.file);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
ui.error(err instanceof Error ? err.message : String(err));
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
const projectPath = resolveAndValidateProjectPath(undefined, { path: options.path });
|
|
55
|
+
const spinner = options.raw ? null : ui.startSpinner('Connecting...');
|
|
56
|
+
const result = await execCode({
|
|
57
|
+
projectPath,
|
|
58
|
+
code,
|
|
59
|
+
usings: options.using,
|
|
60
|
+
include: options.include,
|
|
61
|
+
window: options.window === true,
|
|
62
|
+
build: options.build !== false,
|
|
63
|
+
idleSeconds,
|
|
64
|
+
readyTimeoutMs,
|
|
65
|
+
timeoutMs,
|
|
66
|
+
...resolveSessionConnection(options),
|
|
67
|
+
...(options.editorPath ? { editorPath: options.editorPath } : {}),
|
|
68
|
+
onStatus: (message) => {
|
|
69
|
+
verbose(message);
|
|
70
|
+
if (spinner)
|
|
71
|
+
spinner.text = message;
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
spinner?.stop();
|
|
75
|
+
if (result.kind === 'failure') {
|
|
76
|
+
if (options.raw && result.toolFailure?.data !== undefined) {
|
|
77
|
+
process.stdout.write(JSON.stringify(result.toolFailure.data));
|
|
78
|
+
}
|
|
79
|
+
else if (result.toolFailure && result.toolFailure.reason !== 'http-error') {
|
|
80
|
+
// Timeout, refused, reset: the same hints as run-tool.
|
|
81
|
+
const failure = result.toolFailure;
|
|
82
|
+
ui.error(buildFailureMessage(failure, { toolName: 'script-execute', endpoint: failure.endpoint, raw: false, timeoutMs, errorNoun: 'tool' }));
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
ui.error(result.message);
|
|
86
|
+
}
|
|
87
|
+
process.exit(1);
|
|
88
|
+
}
|
|
89
|
+
verbose(`Ran on ${result.baseUrl} (editor: ${result.editor})`);
|
|
90
|
+
if (options.raw) {
|
|
91
|
+
process.stdout.write(typeof result.data === 'string' ? result.data : JSON.stringify(result.data));
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const response = readToolResponse(result.data);
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
ui.error(response.text);
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
console.log(response.text);
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=exec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exec.js","sourceRoot":"","sources":["../../src/commands/exec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,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,4BAA4B,EAAE,gCAAgC,EAAE,MAAM,0BAA0B,CAAC;AAC1G,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAkB5D,SAAS,OAAO,CAAC,KAAa,EAAE,QAAkB;IAChD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,IAAwB,EAAE,IAAwB;IAClE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IAC/H,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/E,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IACjI,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAK,EAAE,OAAO,CAAC,CAAC;IAC7D,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;IACnH,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,0FAA0F,CAAC;KACvG,QAAQ,CAAC,QAAQ,EAAE,2DAA2D,CAAC;KAC/E,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,8BAA8B,EAAE,OAAO,EAAE,EAAE,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,qFAAqF,EAAE,OAAO,EAAE,EAAE,CAAC;KAC9H,MAAM,CAAC,UAAU,EAAE,oFAAoF,CAAC;KACxG,MAAM,CAAC,kBAAkB,EAAE,0EAA0E,EAAE,MAAM,CAAC,4BAA4B,CAAC,CAAC;KAC5I,MAAM,CAAC,sBAAsB,EAAE,uDAAuD,EAAE,MAAM,CAAC,gCAAgC,CAAC,CAAC;KACjI,MAAM,CAAC,gBAAgB,EAAE,mCAAmC,EAAE,MAAM,CAAC,uBAAuB,CAAC,CAAC;KAC9F,MAAM,CAAC,YAAY,EAAE,wDAAwD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,8CAA8C,CAAC;KAC9E,MAAM,CAAC,OAAO,EAAE,kCAAkC,CAAC;KACnD,MAAM,CAAC,aAAa,EAAE,2DAA2D,CAAC;KAClF,MAAM,CAAC,iBAAiB,EAAE,yCAAyC,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,OAAuB,EAAE,EAAE;IACrE,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,YAAY,EAAE,iBAAiB,CAAC,CAAC;IACrF,MAAM,SAAS,GAAG,oBAAoB,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IACrE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,EAAE,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,WAAW,GAAG,6BAA6B,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;QAC5B,WAAW;QACX,IAAI;QACJ,MAAM,EAAE,OAAO,CAAC,KAAK;QACrB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;QAC/B,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,KAAK;QAC9B,WAAW;QACX,cAAc;QACd,SAAS;QACT,GAAG,wBAAwB,CAAC,OAAO,CAAC;QACpC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE;YACpB,OAAO,CAAC,OAAO,CAAC,CAAC;YACjB,IAAI,OAAO;gBAAE,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;QACtC,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,EAAE,IAAI,EAAE,CAAC;IAChB,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;QAChE,CAAC;aAAM,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;YAC5E,uDAAuD;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;YACnC,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/I,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,UAAU,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC"}
|
package/dist/commands/open.js
CHANGED
|
@@ -3,7 +3,11 @@ import * as path from 'path';
|
|
|
3
3
|
import * as ui from '../utils/ui.js';
|
|
4
4
|
import { verbose } from '../utils/ui.js';
|
|
5
5
|
import { openProject, resolveProjectPath as libResolveProjectPath, isGodotProjectDir as libIsGodotProjectDir, } from '../lib/open.js';
|
|
6
|
-
import { resolveOpenAuthToken } from '../utils/connection.js';
|
|
6
|
+
import { resolveOpenAuthToken, resolveSessionConnection } from '../utils/connection.js';
|
|
7
|
+
import { createGodotSession, ensureEditor } from '../lib/session.js';
|
|
8
|
+
import { isLocalhostUrl } from '../utils/project-marker.js';
|
|
9
|
+
import { parsePositiveIntFlag } from '../utils/input.js';
|
|
10
|
+
import { DEFAULT_SESSION_IDLE_SECONDS, DEFAULT_SESSION_READY_TIMEOUT_MS } from '@baizor/gamedev-cli-core';
|
|
7
11
|
/**
|
|
8
12
|
* Resolve the project path from the positional argument, `--path` option, or
|
|
9
13
|
* the current working directory when neither is provided. Re-exported for tests.
|
|
@@ -28,6 +32,9 @@ export const openCommand = new Command('open')
|
|
|
28
32
|
.option('--auth <option>', 'Auth option: None or Required (sets GODOT_MCP_AUTH_OPTION)')
|
|
29
33
|
.option('--mode <mode>', 'Connection mode: Cloud or Custom (sets GODOT_MCP_CONNECTION_MODE)')
|
|
30
34
|
.option('--log-level <level>', 'Log level: Trace/Debug/Info/Warning/Error/None (sets GODOT_MCP_LOG_LEVEL)')
|
|
35
|
+
.option('--headless', "Start a windowless editor on the project's local MCP server and wait until it is ready (reuses a running one)")
|
|
36
|
+
.option('--idle-timeout <seconds>', 'With --headless: the started editor quits after this many seconds without tool calls (0 = never)', String(DEFAULT_SESSION_IDLE_SECONDS))
|
|
37
|
+
.option('--ready-timeout <ms>', 'With --headless: how long to wait for the editor to become ready', String(DEFAULT_SESSION_READY_TIMEOUT_MS))
|
|
31
38
|
.action(async (positionalPath, options) => {
|
|
32
39
|
const { projectPath, usedCwdFallback } = resolveOpenProjectPath(positionalPath, options.path, process.cwd());
|
|
33
40
|
const fs = await import('fs');
|
|
@@ -59,6 +66,30 @@ export const openCommand = new Command('open')
|
|
|
59
66
|
ui.error('--mode must be "Cloud" or "Custom"');
|
|
60
67
|
process.exit(1);
|
|
61
68
|
}
|
|
69
|
+
if (options.headless) {
|
|
70
|
+
await openHeadless(projectPath, options);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// A headless editor this CLI started holds the project: close it so the windowed one can open.
|
|
74
|
+
const local = options.url !== undefined && isLocalhostUrl(options.url) ? { url: options.url } : {};
|
|
75
|
+
let prepared;
|
|
76
|
+
try {
|
|
77
|
+
prepared = await createGodotSession({ projectPath, ...resolveSessionConnection({ ...local, token: options.token }) }).session.prepareWindowOpen();
|
|
78
|
+
}
|
|
79
|
+
catch (err) {
|
|
80
|
+
ui.error(err instanceof Error ? err.message : String(err));
|
|
81
|
+
process.exit(1);
|
|
82
|
+
}
|
|
83
|
+
if (prepared.kind === 'already-open') {
|
|
84
|
+
ui.success(`The editor started by godot-cli already runs with a window (PID ${prepared.pid})`);
|
|
85
|
+
process.exit(0);
|
|
86
|
+
}
|
|
87
|
+
if (prepared.kind === 'still-running') {
|
|
88
|
+
ui.error(`The headless editor started by godot-cli (PID ${prepared.pid}) did not quit; run \`godot-cli close --owned-only --force\`.`);
|
|
89
|
+
process.exit(1);
|
|
90
|
+
}
|
|
91
|
+
if (prepared.stoppedPid !== undefined)
|
|
92
|
+
verbose(`Closed the headless editor (PID ${prepared.stoppedPid})`);
|
|
62
93
|
// In Cloud mode with no explicit --token / GODOT_MCP_TOKEN, inject the
|
|
63
94
|
// token persisted by `godot-cli login` so `open --mode Cloud` auto-connects.
|
|
64
95
|
const authToken = await resolveOpenAuthToken(projectPath, { token: options.token, mode: options.mode });
|
|
@@ -151,4 +182,33 @@ export const openCommand = new Command('open')
|
|
|
151
182
|
}
|
|
152
183
|
verbose(`Resolved project path: ${path.resolve(result.projectPath)}`);
|
|
153
184
|
});
|
|
185
|
+
/** `open --headless`: a ready windowless editor on the project's local server (cli-core EditorSession). */
|
|
186
|
+
async function openHeadless(projectPath, options) {
|
|
187
|
+
const idleSeconds = parsePositiveIntFlag(options.idleTimeout, '--idle-timeout', true);
|
|
188
|
+
const readyTimeoutMs = parsePositiveIntFlag(options.readyTimeout, '--ready-timeout');
|
|
189
|
+
const spinner = ui.startSpinner('Connecting...');
|
|
190
|
+
const result = await ensureEditor({
|
|
191
|
+
projectPath,
|
|
192
|
+
...resolveSessionConnection(options),
|
|
193
|
+
...(options.editorPath ? { editorPath: options.editorPath } : {}),
|
|
194
|
+
build: options.build !== false,
|
|
195
|
+
idleSeconds,
|
|
196
|
+
readyTimeoutMs,
|
|
197
|
+
onStatus: (message) => {
|
|
198
|
+
verbose(message);
|
|
199
|
+
spinner.text = message;
|
|
200
|
+
},
|
|
201
|
+
});
|
|
202
|
+
if (result.kind === 'failure') {
|
|
203
|
+
spinner.error(result.reason === 'not-ready' ? 'The editor did not become ready' : 'Could not start the Godot editor');
|
|
204
|
+
ui.error(result.message);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
const { ensured, godot } = result;
|
|
208
|
+
const pid = ensured.lease?.pid;
|
|
209
|
+
const what = ensured.source === 'started' ? 'Started a headless Godot editor' : 'A Godot editor is already running for this project';
|
|
210
|
+
spinner.success(`${what}${pid !== undefined ? ` (PID ${pid})` : ''}; MCP server ready at ${godot.url}`);
|
|
211
|
+
if (ensured.source === 'started' && idleSeconds > 0)
|
|
212
|
+
ui.info(`It quits after ${idleSeconds}s without tool calls.`);
|
|
213
|
+
}
|
|
154
214
|
//# sourceMappingURL=open.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,WAAW,EACX,kBAAkB,IAAI,qBAAqB,EAC3C,iBAAiB,IAAI,oBAAoB,GAC1C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import type { RunToolOptions, RunToolResult } from '../lib/types.js';
|
|
2
|
+
import type { RunToolFailure, RunToolOptions, RunToolResult } from '../lib/types.js';
|
|
3
3
|
interface BuilderOptions {
|
|
4
4
|
/** CLI subcommand name, e.g. `'run-tool'`. */
|
|
5
5
|
name: string;
|
|
@@ -21,5 +21,13 @@ interface BuilderOptions {
|
|
|
21
21
|
/** Library function — `runTool` or `runSystemTool`. */
|
|
22
22
|
invoke: (opts: RunToolOptions) => Promise<RunToolResult>;
|
|
23
23
|
}
|
|
24
|
+
export interface FailureContext {
|
|
25
|
+
toolName: string;
|
|
26
|
+
endpoint: string;
|
|
27
|
+
raw: boolean | undefined;
|
|
28
|
+
timeoutMs: number;
|
|
29
|
+
errorNoun: string;
|
|
30
|
+
}
|
|
24
31
|
export declare function buildRunToolCommand(cfg: BuilderOptions): Command;
|
|
32
|
+
export declare function buildFailureMessage(failure: RunToolFailure, ctx: FailureContext): string;
|
|
25
33
|
export {};
|
|
@@ -99,7 +99,7 @@ function handleFailure(failure, ctx) {
|
|
|
99
99
|
ui.error(`Failed to call ${ctx.errorNoun}: ${message}`);
|
|
100
100
|
process.exit(1);
|
|
101
101
|
}
|
|
102
|
-
function buildFailureMessage(failure, ctx) {
|
|
102
|
+
export function buildFailureMessage(failure, ctx) {
|
|
103
103
|
switch (failure.reason) {
|
|
104
104
|
case 'timeout':
|
|
105
105
|
return `${capitalize(ctx.errorNoun)} call timed out after ${ctx.timeoutMs / 1000} seconds: ${ctx.toolName}`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-tool-builder.js","sourceRoot":"","sources":["../../src/commands/run-tool-builder.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"run-tool-builder.js","sourceRoot":"","sources":["../../src/commands/run-tool-builder.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,6 +16,7 @@ import { createUpdateCommand } from './commands/update.js';
|
|
|
16
16
|
import { installPluginCommand } from './commands/install-plugin.js';
|
|
17
17
|
import { installExtensionCommand } from './commands/install-extension.js';
|
|
18
18
|
import { removePluginCommand } from './commands/remove-plugin.js';
|
|
19
|
+
import { execCommand } from './commands/exec.js';
|
|
19
20
|
import { configureStyledHelp, error as uiError, setVerbose } from './utils/ui.js';
|
|
20
21
|
import { checkForUpdate, isRunningViaNpx, printUpdateNotification } from './utils/update-check.js';
|
|
21
22
|
const require = createRequire(import.meta.url);
|
|
@@ -32,6 +33,7 @@ const subcommands = [
|
|
|
32
33
|
closeCommand,
|
|
33
34
|
configureCommand,
|
|
34
35
|
createProjectCommand,
|
|
36
|
+
execCommand,
|
|
35
37
|
installPluginCommand,
|
|
36
38
|
installExtensionCommand,
|
|
37
39
|
loginCommand,
|
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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"}
|