gdharness 1.1.27 → 1.1.29
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/build/cli.js +16 -4
- package/build/index.js +16 -4
- package/package.json +1 -1
package/build/cli.js
CHANGED
|
@@ -17144,7 +17144,7 @@ var init_tool_definitions = __esm(() => {
|
|
|
17144
17144
|
requires: ["resourcePath", "options"]
|
|
17145
17145
|
},
|
|
17146
17146
|
reimport: {
|
|
17147
|
-
summary: "reimport what status says is outdated or failed, one resource with resourcePath, or what is current as well with force. Through the open editor when one serves the project, so it reloads what it holds, waiting for it to finish; otherwise through the engine's own import pass. Answered from a second status read: reimported lists what is current now, notReimported what is not, with its status and reason, and via says which of the two did the work. stillImporting is an editor that had not finished within timeoutMs",
|
|
17147
|
+
summary: "reimport what status says is outdated or failed, one resource with resourcePath, or what is current as well with force. Through the open editor when one serves the project, so it reloads what it holds, waiting for it to finish; otherwise through the engine's own import pass. Answered from a second status read: reimported lists what is current now, notReimported what is not, with its status and reason, and via says which of the two did the work. A whole-project reimport also answers missingSource, the .import files whose source is not beside them, empty when there are none, whether or not anything needed reimporting; one resourcePath is not a walk of the project and leaves it out. stillImporting is an editor that had not finished within timeoutMs",
|
|
17148
17148
|
requires: []
|
|
17149
17149
|
},
|
|
17150
17150
|
uid: {
|
|
@@ -17617,7 +17617,7 @@ var init_tool_definitions = __esm(() => {
|
|
|
17617
17617
|
},
|
|
17618
17618
|
{
|
|
17619
17619
|
name: "editor_status",
|
|
17620
|
-
description: "Whether the editor addon is connected, which Godot answers, whether the editor is playing something, and whether a game with the runtime addon is reachable: runtimeConnected counts the games of the project this server serves, and runtimes lists every game on the machine with ofThisProject saying which is which, since a game of another project is reached only by naming its projectPath. playingInEditor is null when the editor was not asked or did not answer, which is not the same as a no: with no editor connected there is nobody to ask, and an editor that does not serve the question is given a moment and then left. A game can be playing while this is null, so read it as unanswered rather than as nothing playing, and use processActive and runtimes, which come from elsewhere and do not depend on the editor answering. editor.scan says whether the editor is scanning or importing and how many milliseconds ago its last scan finished (finishedMsAgo), or is null when it did not answer: the editor rewrites the class cache just after a scan, and editor_run waits that out before starting a game, saying so under waitedForEditorScanMs. Each game under runtimes is pinged with a short wait, so one held at a breakpoint is listed as unreachable rather than making this call wait out the runtime timeout; for the run this server is reporting on, heldAt says whether that is what it is, with the same three answers editor_output gives. A game the editor played announces the editor under editorPid, and so does whatever that game started for itself; a game some other server started announces none, which is how the two are told apart when both are running from one project. Each game also says which runtime addon it loaded, under addonVersion (null when it cannot say); addonIsStale is true when that code is not what this server ships, and staleNote says whether the project needs gdharness upgrade, the game a restart, or this server a reconnect. A second checkout of a project, such as a git worktree, carries addons of its own and is where this shows. Every runtime_* answer from such a game carries addonIsStale and staleNote too. When connected is false, mayYetConnect says whether that is final: the editor dials this server rather than the other way round and backs off between tries, so for the first half-minute after a server starts, false means \"not reached yet\" as often as it means \"no editor\". True is worth waiting out; false is an editor that is not there. False beside restartInterrupted is one that an editor_launch restart on a previous server asked to quit, where the launch half never ran because that server was ended in between, usually by the reconnect the restart was taken for; editor_launch open finishes it. True beside restartUnderway is a restart still in progress, its server alive and within the wait for the old editor to go: the editor is coming, and opening another would put two on one project. listeningSince is when this server took the bridge port, which is what that window is measured from and what a caller wanting its own window should read. An editor this server opened counts for as long as its process lives, however far past that window the import runs, and awaitingLaunchedEditor names its pid so the two reasons for true are told apart. settingsDropped appears here once when the editor this server opened saved project.godot on its way in, which is the same reading editor_launch restart makes in its own answer. A game that has announced itself in a protocol this server does not speak is listed under unreadable rather than left out, with the protocol it speaks and whether the server or the addon is the older half. This happens during an upgrade that moves the runtime protocol, which most do not: installing replaces the addon on disk as soon as the pin moves, while a server that is already running stays on the version it started with, so the two speak different protocols until the server is reconnected. Those games are real and running, but no tool here can reach them until the halves match, so runtimes stays empty and runtimeConnected stays false. An upgrade that leaves the protocol alone opens no such window and this list stays empty through it. addonIsStale is decided by the code of the editor addons rather than their version, so an editor started before an upgrade that left that code alone reports the older addonVersion, is not stale, and addonNote says so: it needs no restart. port is the one the editor bridge is on; when that is not the one this server was configured with, portWanted names the configured one and portNote says why it moved and, when it was the server this one replaced, which pid kept it. A server replacing another of its project that holds the configured port waits for it to stand down and takes the port over, which takes a few seconds; bridgeHandover says so while it waits, and it moves only if that server has not let go within the wait. An editor that has connected and not yet greeted, which lasts a frame and longer while it imports, reports nothing about itself: greeting says so, addonIsStale is absent rather than guessed, and a restart asked then waits for the greeting to learn who opened it. startedByAnEditor is an editor another editor started, by Godot's own restart or the project manager, which has none of the arguments a server gave the one before it; startedByAnEditorNote says what that costs.",
|
|
17620
|
+
description: "Whether the editor addon is connected, which Godot answers, whether the editor is playing something, and whether a game with the runtime addon is reachable: runtimeConnected counts the games of the project this server serves, and runtimes lists every game on the machine with ofThisProject saying which is which, since a game of another project is reached only by naming its projectPath. playingInEditor is null when the editor was not asked or did not answer, which is not the same as a no: with no editor connected there is nobody to ask, and an editor that does not serve the question is given a moment and then left. A game can be playing while this is null, so read it as unanswered rather than as nothing playing, and use processActive and runtimes, which come from elsewhere and do not depend on the editor answering. game.run names the run processActive is about, the one editor_output and editor_run stop answer for: its pid, its project, and adopted true when this server read it back from another server rather than starting it; null when there is none. editor.scan says whether the editor is scanning or importing and how many milliseconds ago its last scan finished (finishedMsAgo), or is null when it did not answer: the editor rewrites the class cache just after a scan, and editor_run waits that out before starting a game, saying so under waitedForEditorScanMs. Each game under runtimes is pinged with a short wait, so one held at a breakpoint is listed as unreachable rather than making this call wait out the runtime timeout; for the run this server is reporting on, heldAt says whether that is what it is, with the same three answers editor_output gives. A game the editor played announces the editor under editorPid, and so does whatever that game started for itself; a game some other server started announces none, which is how the two are told apart when both are running from one project. Each game also says which runtime addon it loaded, under addonVersion (null when it cannot say); addonIsStale is true when that code is not what this server ships, and staleNote says whether the project needs gdharness upgrade, the game a restart, or this server a reconnect. A second checkout of a project, such as a git worktree, carries addons of its own and is where this shows. Every runtime_* answer from such a game carries addonIsStale and staleNote too. When connected is false, mayYetConnect says whether that is final: the editor dials this server rather than the other way round and backs off between tries, so for the first half-minute after a server starts, false means \"not reached yet\" as often as it means \"no editor\". True is worth waiting out; false is an editor that is not there. False beside restartInterrupted is one that an editor_launch restart on a previous server asked to quit, where the launch half never ran because that server was ended in between, usually by the reconnect the restart was taken for; editor_launch open finishes it. True beside restartUnderway is a restart still in progress, its server alive and within the wait for the old editor to go: the editor is coming, and opening another would put two on one project. listeningSince is when this server took the bridge port, which is what that window is measured from and what a caller wanting its own window should read. An editor this server opened counts for as long as its process lives, however far past that window the import runs, and awaitingLaunchedEditor names its pid so the two reasons for true are told apart. settingsDropped appears here once when the editor this server opened saved project.godot on its way in, which is the same reading editor_launch restart makes in its own answer. A game that has announced itself in a protocol this server does not speak is listed under unreadable rather than left out, with the protocol it speaks and whether the server or the addon is the older half. This happens during an upgrade that moves the runtime protocol, which most do not: installing replaces the addon on disk as soon as the pin moves, while a server that is already running stays on the version it started with, so the two speak different protocols until the server is reconnected. Those games are real and running, but no tool here can reach them until the halves match, so runtimes stays empty and runtimeConnected stays false. An upgrade that leaves the protocol alone opens no such window and this list stays empty through it. addonIsStale is decided by the code of the editor addons rather than their version, so an editor started before an upgrade that left that code alone reports the older addonVersion, is not stale, and addonNote says so: it needs no restart. port is the one the editor bridge is on; when that is not the one this server was configured with, portWanted names the configured one and portNote says why it moved and, when it was the server this one replaced, which pid kept it. A server replacing another of its project that holds the configured port waits for it to stand down and takes the port over, which takes a few seconds; bridgeHandover says so while it waits, and it moves only if that server has not let go within the wait. An editor that has connected and not yet greeted, which lasts a frame and longer while it imports, reports nothing about itself: greeting says so, addonIsStale is absent rather than guessed, and a restart asked then waits for the greeting to learn who opened it. startedByAnEditor is an editor another editor started, by Godot's own restart or the project manager, which has none of the arguments a server gave the one before it; startedByAnEditorNote says what that costs.",
|
|
17621
17621
|
parameters: {},
|
|
17622
17622
|
requires: []
|
|
17623
17623
|
},
|
|
@@ -41377,6 +41377,7 @@ class GodotServer {
|
|
|
41377
41377
|
}
|
|
41378
41378
|
const listed = importStatuses(before.payload);
|
|
41379
41379
|
const missingSource = listed.filter((one) => one.status === "missing_source").map((one) => one.path);
|
|
41380
|
+
const sourceless = resourcePath === undefined ? { missingSource } : {};
|
|
41380
41381
|
if (resourcePath !== undefined && missingSource.length > 0) {
|
|
41381
41382
|
return {
|
|
41382
41383
|
ok: false,
|
|
@@ -41397,6 +41398,7 @@ class GodotServer {
|
|
|
41397
41398
|
payload: {
|
|
41398
41399
|
reimported: [],
|
|
41399
41400
|
notReimported: [],
|
|
41401
|
+
...sourceless,
|
|
41400
41402
|
note: resourcePath === undefined ? "Nothing needed reimporting. Pass force to reimport what is current." : `${listed[0]?.path ?? resourcePath} is current. Pass force to reimport it anyway.`
|
|
41401
41403
|
}
|
|
41402
41404
|
};
|
|
@@ -41415,6 +41417,7 @@ class GodotServer {
|
|
|
41415
41417
|
via: "editor",
|
|
41416
41418
|
stillImporting: true,
|
|
41417
41419
|
asked: targets,
|
|
41420
|
+
...sourceless,
|
|
41418
41421
|
note: `The editor had not finished after ${timeoutMs} ms. project_import status says what it has done so far; pass a longer timeoutMs to wait it out.`
|
|
41419
41422
|
}
|
|
41420
41423
|
};
|
|
@@ -41451,7 +41454,7 @@ class GodotServer {
|
|
|
41451
41454
|
via: viaEditor ? "editor" : "engine",
|
|
41452
41455
|
reimported,
|
|
41453
41456
|
notReimported,
|
|
41454
|
-
...
|
|
41457
|
+
...sourceless,
|
|
41455
41458
|
...extra
|
|
41456
41459
|
}
|
|
41457
41460
|
};
|
|
@@ -42183,6 +42186,13 @@ class GodotServer {
|
|
|
42183
42186
|
return null;
|
|
42184
42187
|
}
|
|
42185
42188
|
}
|
|
42189
|
+
runNamed(run) {
|
|
42190
|
+
return {
|
|
42191
|
+
pid: run.pid ?? this.announcedPidOf(run) ?? run.announcedPid ?? null,
|
|
42192
|
+
...run.throughEditor || run.projectPath === null ? {} : { project: run.projectPath },
|
|
42193
|
+
...run.pickedUp === true ? { adopted: true } : {}
|
|
42194
|
+
};
|
|
42195
|
+
}
|
|
42186
42196
|
async handleEditorStatus() {
|
|
42187
42197
|
const located = await this.locator.find();
|
|
42188
42198
|
const announced = runtimesAnnounced();
|
|
@@ -42215,10 +42225,11 @@ class GodotServer {
|
|
|
42215
42225
|
return {
|
|
42216
42226
|
playing,
|
|
42217
42227
|
active,
|
|
42228
|
+
run: current === null ? null : this.runNamed(current),
|
|
42218
42229
|
hold: current === null ? {} : await this.holdOf(current, active)
|
|
42219
42230
|
};
|
|
42220
42231
|
})();
|
|
42221
|
-
const [games, { playing, active, hold }, scan, editorStatus] = await Promise.all([
|
|
42232
|
+
const [games, { playing, active, run, hold }, scan, editorStatus] = await Promise.all([
|
|
42222
42233
|
pinged,
|
|
42223
42234
|
asked,
|
|
42224
42235
|
this.editorScanState(),
|
|
@@ -42237,6 +42248,7 @@ class GodotServer {
|
|
|
42237
42248
|
},
|
|
42238
42249
|
game: {
|
|
42239
42250
|
processActive: active,
|
|
42251
|
+
run,
|
|
42240
42252
|
playingInEditor: playing,
|
|
42241
42253
|
...hold,
|
|
42242
42254
|
runtimeConnected: games.some((game) => game.reachable && game.ofThisProject !== false),
|
package/build/index.js
CHANGED
|
@@ -31128,7 +31128,7 @@ var TOOL_SPECS = [
|
|
|
31128
31128
|
requires: ["resourcePath", "options"]
|
|
31129
31129
|
},
|
|
31130
31130
|
reimport: {
|
|
31131
|
-
summary: "reimport what status says is outdated or failed, one resource with resourcePath, or what is current as well with force. Through the open editor when one serves the project, so it reloads what it holds, waiting for it to finish; otherwise through the engine's own import pass. Answered from a second status read: reimported lists what is current now, notReimported what is not, with its status and reason, and via says which of the two did the work. stillImporting is an editor that had not finished within timeoutMs",
|
|
31131
|
+
summary: "reimport what status says is outdated or failed, one resource with resourcePath, or what is current as well with force. Through the open editor when one serves the project, so it reloads what it holds, waiting for it to finish; otherwise through the engine's own import pass. Answered from a second status read: reimported lists what is current now, notReimported what is not, with its status and reason, and via says which of the two did the work. A whole-project reimport also answers missingSource, the .import files whose source is not beside them, empty when there are none, whether or not anything needed reimporting; one resourcePath is not a walk of the project and leaves it out. stillImporting is an editor that had not finished within timeoutMs",
|
|
31132
31132
|
requires: []
|
|
31133
31133
|
},
|
|
31134
31134
|
uid: {
|
|
@@ -31601,7 +31601,7 @@ var TOOL_SPECS = [
|
|
|
31601
31601
|
},
|
|
31602
31602
|
{
|
|
31603
31603
|
name: "editor_status",
|
|
31604
|
-
description: "Whether the editor addon is connected, which Godot answers, whether the editor is playing something, and whether a game with the runtime addon is reachable: runtimeConnected counts the games of the project this server serves, and runtimes lists every game on the machine with ofThisProject saying which is which, since a game of another project is reached only by naming its projectPath. playingInEditor is null when the editor was not asked or did not answer, which is not the same as a no: with no editor connected there is nobody to ask, and an editor that does not serve the question is given a moment and then left. A game can be playing while this is null, so read it as unanswered rather than as nothing playing, and use processActive and runtimes, which come from elsewhere and do not depend on the editor answering. editor.scan says whether the editor is scanning or importing and how many milliseconds ago its last scan finished (finishedMsAgo), or is null when it did not answer: the editor rewrites the class cache just after a scan, and editor_run waits that out before starting a game, saying so under waitedForEditorScanMs. Each game under runtimes is pinged with a short wait, so one held at a breakpoint is listed as unreachable rather than making this call wait out the runtime timeout; for the run this server is reporting on, heldAt says whether that is what it is, with the same three answers editor_output gives. A game the editor played announces the editor under editorPid, and so does whatever that game started for itself; a game some other server started announces none, which is how the two are told apart when both are running from one project. Each game also says which runtime addon it loaded, under addonVersion (null when it cannot say); addonIsStale is true when that code is not what this server ships, and staleNote says whether the project needs gdharness upgrade, the game a restart, or this server a reconnect. A second checkout of a project, such as a git worktree, carries addons of its own and is where this shows. Every runtime_* answer from such a game carries addonIsStale and staleNote too. When connected is false, mayYetConnect says whether that is final: the editor dials this server rather than the other way round and backs off between tries, so for the first half-minute after a server starts, false means \"not reached yet\" as often as it means \"no editor\". True is worth waiting out; false is an editor that is not there. False beside restartInterrupted is one that an editor_launch restart on a previous server asked to quit, where the launch half never ran because that server was ended in between, usually by the reconnect the restart was taken for; editor_launch open finishes it. True beside restartUnderway is a restart still in progress, its server alive and within the wait for the old editor to go: the editor is coming, and opening another would put two on one project. listeningSince is when this server took the bridge port, which is what that window is measured from and what a caller wanting its own window should read. An editor this server opened counts for as long as its process lives, however far past that window the import runs, and awaitingLaunchedEditor names its pid so the two reasons for true are told apart. settingsDropped appears here once when the editor this server opened saved project.godot on its way in, which is the same reading editor_launch restart makes in its own answer. A game that has announced itself in a protocol this server does not speak is listed under unreadable rather than left out, with the protocol it speaks and whether the server or the addon is the older half. This happens during an upgrade that moves the runtime protocol, which most do not: installing replaces the addon on disk as soon as the pin moves, while a server that is already running stays on the version it started with, so the two speak different protocols until the server is reconnected. Those games are real and running, but no tool here can reach them until the halves match, so runtimes stays empty and runtimeConnected stays false. An upgrade that leaves the protocol alone opens no such window and this list stays empty through it. addonIsStale is decided by the code of the editor addons rather than their version, so an editor started before an upgrade that left that code alone reports the older addonVersion, is not stale, and addonNote says so: it needs no restart. port is the one the editor bridge is on; when that is not the one this server was configured with, portWanted names the configured one and portNote says why it moved and, when it was the server this one replaced, which pid kept it. A server replacing another of its project that holds the configured port waits for it to stand down and takes the port over, which takes a few seconds; bridgeHandover says so while it waits, and it moves only if that server has not let go within the wait. An editor that has connected and not yet greeted, which lasts a frame and longer while it imports, reports nothing about itself: greeting says so, addonIsStale is absent rather than guessed, and a restart asked then waits for the greeting to learn who opened it. startedByAnEditor is an editor another editor started, by Godot's own restart or the project manager, which has none of the arguments a server gave the one before it; startedByAnEditorNote says what that costs.",
|
|
31604
|
+
description: "Whether the editor addon is connected, which Godot answers, whether the editor is playing something, and whether a game with the runtime addon is reachable: runtimeConnected counts the games of the project this server serves, and runtimes lists every game on the machine with ofThisProject saying which is which, since a game of another project is reached only by naming its projectPath. playingInEditor is null when the editor was not asked or did not answer, which is not the same as a no: with no editor connected there is nobody to ask, and an editor that does not serve the question is given a moment and then left. A game can be playing while this is null, so read it as unanswered rather than as nothing playing, and use processActive and runtimes, which come from elsewhere and do not depend on the editor answering. game.run names the run processActive is about, the one editor_output and editor_run stop answer for: its pid, its project, and adopted true when this server read it back from another server rather than starting it; null when there is none. editor.scan says whether the editor is scanning or importing and how many milliseconds ago its last scan finished (finishedMsAgo), or is null when it did not answer: the editor rewrites the class cache just after a scan, and editor_run waits that out before starting a game, saying so under waitedForEditorScanMs. Each game under runtimes is pinged with a short wait, so one held at a breakpoint is listed as unreachable rather than making this call wait out the runtime timeout; for the run this server is reporting on, heldAt says whether that is what it is, with the same three answers editor_output gives. A game the editor played announces the editor under editorPid, and so does whatever that game started for itself; a game some other server started announces none, which is how the two are told apart when both are running from one project. Each game also says which runtime addon it loaded, under addonVersion (null when it cannot say); addonIsStale is true when that code is not what this server ships, and staleNote says whether the project needs gdharness upgrade, the game a restart, or this server a reconnect. A second checkout of a project, such as a git worktree, carries addons of its own and is where this shows. Every runtime_* answer from such a game carries addonIsStale and staleNote too. When connected is false, mayYetConnect says whether that is final: the editor dials this server rather than the other way round and backs off between tries, so for the first half-minute after a server starts, false means \"not reached yet\" as often as it means \"no editor\". True is worth waiting out; false is an editor that is not there. False beside restartInterrupted is one that an editor_launch restart on a previous server asked to quit, where the launch half never ran because that server was ended in between, usually by the reconnect the restart was taken for; editor_launch open finishes it. True beside restartUnderway is a restart still in progress, its server alive and within the wait for the old editor to go: the editor is coming, and opening another would put two on one project. listeningSince is when this server took the bridge port, which is what that window is measured from and what a caller wanting its own window should read. An editor this server opened counts for as long as its process lives, however far past that window the import runs, and awaitingLaunchedEditor names its pid so the two reasons for true are told apart. settingsDropped appears here once when the editor this server opened saved project.godot on its way in, which is the same reading editor_launch restart makes in its own answer. A game that has announced itself in a protocol this server does not speak is listed under unreadable rather than left out, with the protocol it speaks and whether the server or the addon is the older half. This happens during an upgrade that moves the runtime protocol, which most do not: installing replaces the addon on disk as soon as the pin moves, while a server that is already running stays on the version it started with, so the two speak different protocols until the server is reconnected. Those games are real and running, but no tool here can reach them until the halves match, so runtimes stays empty and runtimeConnected stays false. An upgrade that leaves the protocol alone opens no such window and this list stays empty through it. addonIsStale is decided by the code of the editor addons rather than their version, so an editor started before an upgrade that left that code alone reports the older addonVersion, is not stale, and addonNote says so: it needs no restart. port is the one the editor bridge is on; when that is not the one this server was configured with, portWanted names the configured one and portNote says why it moved and, when it was the server this one replaced, which pid kept it. A server replacing another of its project that holds the configured port waits for it to stand down and takes the port over, which takes a few seconds; bridgeHandover says so while it waits, and it moves only if that server has not let go within the wait. An editor that has connected and not yet greeted, which lasts a frame and longer while it imports, reports nothing about itself: greeting says so, addonIsStale is absent rather than guessed, and a restart asked then waits for the greeting to learn who opened it. startedByAnEditor is an editor another editor started, by Godot's own restart or the project manager, which has none of the arguments a server gave the one before it; startedByAnEditorNote says what that costs.",
|
|
31605
31605
|
parameters: {},
|
|
31606
31606
|
requires: []
|
|
31607
31607
|
},
|
|
@@ -33957,6 +33957,7 @@ class GodotServer {
|
|
|
33957
33957
|
}
|
|
33958
33958
|
const listed = importStatuses(before.payload);
|
|
33959
33959
|
const missingSource = listed.filter((one) => one.status === "missing_source").map((one) => one.path);
|
|
33960
|
+
const sourceless = resourcePath === undefined ? { missingSource } : {};
|
|
33960
33961
|
if (resourcePath !== undefined && missingSource.length > 0) {
|
|
33961
33962
|
return {
|
|
33962
33963
|
ok: false,
|
|
@@ -33977,6 +33978,7 @@ class GodotServer {
|
|
|
33977
33978
|
payload: {
|
|
33978
33979
|
reimported: [],
|
|
33979
33980
|
notReimported: [],
|
|
33981
|
+
...sourceless,
|
|
33980
33982
|
note: resourcePath === undefined ? "Nothing needed reimporting. Pass force to reimport what is current." : `${listed[0]?.path ?? resourcePath} is current. Pass force to reimport it anyway.`
|
|
33981
33983
|
}
|
|
33982
33984
|
};
|
|
@@ -33995,6 +33997,7 @@ class GodotServer {
|
|
|
33995
33997
|
via: "editor",
|
|
33996
33998
|
stillImporting: true,
|
|
33997
33999
|
asked: targets,
|
|
34000
|
+
...sourceless,
|
|
33998
34001
|
note: `The editor had not finished after ${timeoutMs} ms. project_import status says what it has done so far; pass a longer timeoutMs to wait it out.`
|
|
33999
34002
|
}
|
|
34000
34003
|
};
|
|
@@ -34031,7 +34034,7 @@ class GodotServer {
|
|
|
34031
34034
|
via: viaEditor ? "editor" : "engine",
|
|
34032
34035
|
reimported,
|
|
34033
34036
|
notReimported,
|
|
34034
|
-
...
|
|
34037
|
+
...sourceless,
|
|
34035
34038
|
...extra
|
|
34036
34039
|
}
|
|
34037
34040
|
};
|
|
@@ -34763,6 +34766,13 @@ class GodotServer {
|
|
|
34763
34766
|
return null;
|
|
34764
34767
|
}
|
|
34765
34768
|
}
|
|
34769
|
+
runNamed(run) {
|
|
34770
|
+
return {
|
|
34771
|
+
pid: run.pid ?? this.announcedPidOf(run) ?? run.announcedPid ?? null,
|
|
34772
|
+
...run.throughEditor || run.projectPath === null ? {} : { project: run.projectPath },
|
|
34773
|
+
...run.pickedUp === true ? { adopted: true } : {}
|
|
34774
|
+
};
|
|
34775
|
+
}
|
|
34766
34776
|
async handleEditorStatus() {
|
|
34767
34777
|
const located = await this.locator.find();
|
|
34768
34778
|
const announced = runtimesAnnounced();
|
|
@@ -34795,10 +34805,11 @@ class GodotServer {
|
|
|
34795
34805
|
return {
|
|
34796
34806
|
playing,
|
|
34797
34807
|
active,
|
|
34808
|
+
run: current === null ? null : this.runNamed(current),
|
|
34798
34809
|
hold: current === null ? {} : await this.holdOf(current, active)
|
|
34799
34810
|
};
|
|
34800
34811
|
})();
|
|
34801
|
-
const [games, { playing, active, hold }, scan, editorStatus] = await Promise.all([
|
|
34812
|
+
const [games, { playing, active, run, hold }, scan, editorStatus] = await Promise.all([
|
|
34802
34813
|
pinged,
|
|
34803
34814
|
asked,
|
|
34804
34815
|
this.editorScanState(),
|
|
@@ -34817,6 +34828,7 @@ class GodotServer {
|
|
|
34817
34828
|
},
|
|
34818
34829
|
game: {
|
|
34819
34830
|
processActive: active,
|
|
34831
|
+
run,
|
|
34820
34832
|
playingInEditor: playing,
|
|
34821
34833
|
...hold,
|
|
34822
34834
|
runtimeConnected: games.some((game) => game.reachable && game.ofThisProject !== false),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gdharness",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.29",
|
|
4
4
|
"mcpName": "io.github.Aureliolo/gdharness",
|
|
5
5
|
"description": "A harness for driving a Godot 4 project from an agent: editor addons, a runtime bridge into the running game, an MCP server in front of them, and a CLI that installs and diagnoses the Godot side.",
|
|
6
6
|
"type": "module",
|