gdharness 1.3.42 → 1.3.44
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 +383 -243
- package/build/godot/addons/auto_reload/auto_reload.gd +18 -19
- package/build/godot/addons/gdharness_editor/animation_reads.gd +55 -33
- package/build/godot/addons/gdharness_editor/bridge_client.gd +53 -58
- package/build/godot/addons/gdharness_editor/declared_values.gd +68 -32
- package/build/godot/addons/gdharness_editor/file_reads.gd +83 -42
- package/build/godot/addons/gdharness_editor/file_walk.gd +12 -5
- package/build/godot/addons/gdharness_editor/headless_check.gd +68 -44
- package/build/godot/addons/gdharness_editor/plugin.gd +2 -3
- package/build/godot/addons/gdharness_editor/property_paths.gd +22 -12
- package/build/godot/addons/gdharness_editor/property_values.gd +143 -78
- package/build/godot/addons/gdharness_editor/reading.gd +51 -17
- package/build/godot/addons/gdharness_editor/same_values.gd +4 -4
- package/build/godot/addons/gdharness_editor/scene_file.gd +127 -80
- package/build/godot/addons/gdharness_editor/scene_uids.gd +12 -6
- package/build/godot/addons/gdharness_editor/serialisation.gd +75 -51
- package/build/godot/addons/gdharness_editor/setting_reads.gd +7 -6
- package/build/godot/addons/gdharness_editor/tool_executor.gd +3 -6
- package/build/godot/addons/gdharness_editor/tools/animation_states.gd +37 -27
- package/build/godot/addons/gdharness_editor/tools/animation_tools.gd +79 -49
- package/build/godot/addons/gdharness_editor/tools/animation_tracks.gd +70 -40
- package/build/godot/addons/gdharness_editor/tools/class_tools.gd +65 -42
- package/build/godot/addons/gdharness_editor/tools/filesystem_tools.gd +24 -22
- package/build/godot/addons/gdharness_editor/tools/navigation_bake.gd +49 -29
- package/build/godot/addons/gdharness_editor/tools/play_tools.gd +26 -21
- package/build/godot/addons/gdharness_editor/tools/profile_tools.gd +40 -40
- package/build/godot/addons/gdharness_editor/tools/resource_tools.gd +166 -107
- package/build/godot/addons/gdharness_editor/tools/scene_groups.gd +16 -9
- package/build/godot/addons/gdharness_editor/tools/scene_kin.gd +68 -41
- package/build/godot/addons/gdharness_editor/tools/scene_paths.gd +35 -20
- package/build/godot/addons/gdharness_editor/tools/scene_placing.gd +28 -13
- package/build/godot/addons/gdharness_editor/tools/scene_sharing.gd +12 -5
- package/build/godot/addons/gdharness_editor/tools/scene_tools.gd +113 -67
- package/build/godot/addons/gdharness_editor/tools/script_paths.gd +20 -8
- package/build/godot/addons/gdharness_editor/tools/settings_tools.gd +11 -8
- package/build/godot/addons/gdharness_editor/tools/signal_tools.gd +47 -34
- package/build/godot/addons/gdharness_editor/tools/tileset_tools.gd +77 -50
- package/build/godot/addons/gdharness_editor/value_shapes.gd +5 -6
- package/build/godot/addons/gdharness_runtime/call_errors.gd +1 -2
- package/build/godot/addons/gdharness_runtime/declared_values.gd +68 -32
- package/build/godot/addons/gdharness_runtime/error_report.gd +1 -2
- package/build/godot/addons/gdharness_runtime/reading.gd +51 -17
- package/build/godot/addons/gdharness_runtime/runtime_accessibility.gd +84 -63
- package/build/godot/addons/gdharness_runtime/runtime_autoload.gd +149 -147
- package/build/godot/addons/gdharness_runtime/runtime_capture.gd +64 -42
- package/build/godot/addons/gdharness_runtime/runtime_changes.gd +184 -122
- package/build/godot/addons/gdharness_runtime/runtime_frames.gd +2 -2
- package/build/godot/addons/gdharness_runtime/runtime_hover.gd +24 -20
- package/build/godot/addons/gdharness_runtime/runtime_input.gd +134 -92
- package/build/godot/addons/gdharness_runtime/runtime_items.gd +29 -13
- package/build/godot/addons/gdharness_runtime/runtime_menus.gd +0 -1
- package/build/godot/addons/gdharness_runtime/runtime_mouse.gd +34 -17
- package/build/godot/addons/gdharness_runtime/runtime_pad.gd +17 -13
- package/build/godot/addons/gdharness_runtime/runtime_paths.gd +84 -46
- package/build/godot/addons/gdharness_runtime/runtime_queries.gd +117 -79
- package/build/godot/addons/gdharness_runtime/runtime_says.gd +14 -17
- package/build/godot/addons/gdharness_runtime/runtime_screen.gd +23 -16
- package/build/godot/addons/gdharness_runtime/runtime_targets.gd +117 -66
- package/build/godot/addons/gdharness_runtime/runtime_touch.gd +15 -15
- package/build/godot/addons/gdharness_runtime/runtime_typing.gd +44 -27
- package/build/godot/addons/gdharness_runtime/runtime_values.gd +108 -73
- package/build/godot/addons/gdharness_runtime/runtime_waits.gd +111 -84
- package/build/godot/addons/gdharness_runtime/runtime_words.gd +10 -7
- package/build/godot/addons/gdharness_runtime/serialisation.gd +75 -51
- package/build/godot/addons/gdharness_runtime/value_shapes.gd +5 -6
- package/build/godot/addons/gdharness_tests/bench.gd +4 -5
- package/build/godot/addons/gdharness_tests/event.gd +10 -5
- package/build/godot/addons/gdharness_tests/share.gd +38 -18
- package/build/godot/addons/gdharness_tests/suites.gd +3 -3
- package/build/godot/addons/gdharness_tests/wait.gd +3 -2
- package/build/godot/loader/loader.gd +9 -9
- package/build/godot/operations/animation_reads.gd +55 -33
- package/build/godot/operations/audio_buses.gd +48 -19
- package/build/godot/operations/class_cache.gd +16 -11
- package/build/godot/operations/classdb_queries.gd +89 -44
- package/build/godot/operations/declared_values.gd +68 -32
- package/build/godot/operations/dependencies.gd +190 -109
- package/build/godot/operations/editor_tools.gd +10 -10
- package/build/godot/operations/export_presets.gd +100 -54
- package/build/godot/operations/file_reads.gd +83 -42
- package/build/godot/operations/file_walk.gd +12 -5
- package/build/godot/operations/gdscript_analysis.gd +86 -65
- package/build/godot/operations/gdscript_authoring.gd +83 -36
- package/build/godot/operations/godot_operations.gd +17 -11
- package/build/godot/operations/import_pipeline.gd +110 -59
- package/build/godot/operations/input_actions.gd +62 -39
- package/build/godot/operations/patterns.gd +3 -1
- package/build/godot/operations/plugins.gd +36 -16
- package/build/godot/operations/project_config.gd +61 -32
- package/build/godot/operations/project_diagnostics.gd +24 -11
- package/build/godot/operations/project_file.gd +16 -16
- package/build/godot/operations/project_validation.gd +71 -44
- package/build/godot/operations/property_paths.gd +22 -12
- package/build/godot/operations/property_values.gd +143 -78
- package/build/godot/operations/reading.gd +51 -17
- package/build/godot/operations/rename_checks.gd +2 -2
- package/build/godot/operations/resource_files.gd +11 -9
- package/build/godot/operations/same_values.gd +4 -4
- package/build/godot/operations/scene_connections.gd +27 -13
- package/build/godot/operations/script_check.gd +52 -49
- package/build/godot/operations/serialisation.gd +75 -51
- package/build/godot/operations/setting_reads.gd +7 -6
- package/build/godot/operations/value_shapes.gd +5 -6
- package/build/godot/tests/listed.gd +321 -268
- package/build/keeper.js +43 -43
- package/package.json +1 -1
package/build/keeper.js
CHANGED
|
@@ -6946,7 +6946,7 @@ var require_public_api = __commonJS(function(exports) {
|
|
|
6946
6946
|
});
|
|
6947
6947
|
|
|
6948
6948
|
// src/keeper.ts
|
|
6949
|
-
import { closeSync as closeSync2, existsSync as existsSync3, mkdtempSync as mkdtempSync4, openSync as openSync3, readFileSync as
|
|
6949
|
+
import { closeSync as closeSync2, existsSync as existsSync3, mkdtempSync as mkdtempSync4, openSync as openSync3, readFileSync as readFileSync7, rmSync as rmSync6, writeFileSync as writeFileSync3 } from "node:fs";
|
|
6950
6950
|
import { tmpdir as tmpdir5 } from "node:os";
|
|
6951
6951
|
import { join as join10 } from "node:path";
|
|
6952
6952
|
import { setTimeout as delay3 } from "node:timers/promises";
|
|
@@ -7435,7 +7435,7 @@ function crashesReported() {
|
|
|
7435
7435
|
}
|
|
7436
7436
|
|
|
7437
7437
|
// src/game-debugger.ts
|
|
7438
|
-
import { readFileSync as
|
|
7438
|
+
import { readFileSync as readFileSync5 } from "node:fs";
|
|
7439
7439
|
import { createServer } from "node:net";
|
|
7440
7440
|
import { join as join6 } from "node:path";
|
|
7441
7441
|
|
|
@@ -7802,6 +7802,36 @@ var KEYWORDS = new Set([
|
|
|
7802
7802
|
"TAU"
|
|
7803
7803
|
]);
|
|
7804
7804
|
|
|
7805
|
+
// src/whole-file.ts
|
|
7806
|
+
import { readFileSync as readFileSync2, renameSync, rmSync as rmSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
7807
|
+
var HELD_FILE_MS = 1000;
|
|
7808
|
+
var HELD_FILE_RETRY_MS = 10;
|
|
7809
|
+
var HELD_BY_A_READER = new Set(["EPERM", "EACCES", "EBUSY"]);
|
|
7810
|
+
function writeWhole(path, text) {
|
|
7811
|
+
const partial = `${path}.${process.pid}.partial`;
|
|
7812
|
+
try {
|
|
7813
|
+
writeFileSync2(partial, text, "utf8");
|
|
7814
|
+
} catch {
|
|
7815
|
+
return false;
|
|
7816
|
+
}
|
|
7817
|
+
const until = Date.now() + HELD_FILE_MS;
|
|
7818
|
+
for (;; ) {
|
|
7819
|
+
try {
|
|
7820
|
+
renameSync(partial, path);
|
|
7821
|
+
return true;
|
|
7822
|
+
} catch (error) {
|
|
7823
|
+
const code = error.code ?? "";
|
|
7824
|
+
if (!HELD_BY_A_READER.has(code) || Date.now() >= until) {
|
|
7825
|
+
try {
|
|
7826
|
+
rmSync2(partial, { force: true });
|
|
7827
|
+
} catch {}
|
|
7828
|
+
return false;
|
|
7829
|
+
}
|
|
7830
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, HELD_FILE_RETRY_MS);
|
|
7831
|
+
}
|
|
7832
|
+
}
|
|
7833
|
+
}
|
|
7834
|
+
|
|
7805
7835
|
// src/dictionary.ts
|
|
7806
7836
|
function emptyRecord() {
|
|
7807
7837
|
return Object.create(null);
|
|
@@ -8399,14 +8429,14 @@ var MEMORY_KEPT = 4 * 1024 ** 3;
|
|
|
8399
8429
|
var MEMORY_PER_ENGINE = 1.5 * 1024 ** 3;
|
|
8400
8430
|
|
|
8401
8431
|
// src/process-children.ts
|
|
8402
|
-
import { readFileSync as
|
|
8432
|
+
import { readFileSync as readFileSync3 } from "node:fs";
|
|
8403
8433
|
import { basename as basename3 } from "node:path";
|
|
8404
8434
|
async function linuxStartTimes(pids) {
|
|
8405
8435
|
const began = new Map;
|
|
8406
8436
|
const hertz = await ticksPerSecond();
|
|
8407
8437
|
let booted;
|
|
8408
8438
|
try {
|
|
8409
|
-
booted = Number(/^btime\s+(\d+)$/m.exec(
|
|
8439
|
+
booted = Number(/^btime\s+(\d+)$/m.exec(readFileSync3("/proc/stat", "utf8"))?.[1] ?? Number.NaN) * 1000;
|
|
8410
8440
|
} catch {
|
|
8411
8441
|
return began;
|
|
8412
8442
|
}
|
|
@@ -8416,7 +8446,7 @@ async function linuxStartTimes(pids) {
|
|
|
8416
8446
|
for (const pid of pids) {
|
|
8417
8447
|
let stat;
|
|
8418
8448
|
try {
|
|
8419
|
-
stat =
|
|
8449
|
+
stat = readFileSync3(`/proc/${String(pid)}/stat`, "utf8");
|
|
8420
8450
|
} catch {
|
|
8421
8451
|
continue;
|
|
8422
8452
|
}
|
|
@@ -8516,36 +8546,6 @@ function commandWords(command) {
|
|
|
8516
8546
|
return words;
|
|
8517
8547
|
}
|
|
8518
8548
|
|
|
8519
|
-
// src/whole-file.ts
|
|
8520
|
-
import { renameSync, rmSync as rmSync2, writeFileSync as writeFileSync2 } from "node:fs";
|
|
8521
|
-
var HELD_FILE_MS = 1000;
|
|
8522
|
-
var HELD_FILE_RETRY_MS = 10;
|
|
8523
|
-
var HELD_BY_A_READER = new Set(["EPERM", "EACCES", "EBUSY"]);
|
|
8524
|
-
function writeWhole(path, text) {
|
|
8525
|
-
const partial = `${path}.${process.pid}.partial`;
|
|
8526
|
-
try {
|
|
8527
|
-
writeFileSync2(partial, text, "utf8");
|
|
8528
|
-
} catch {
|
|
8529
|
-
return false;
|
|
8530
|
-
}
|
|
8531
|
-
const until = Date.now() + HELD_FILE_MS;
|
|
8532
|
-
for (;; ) {
|
|
8533
|
-
try {
|
|
8534
|
-
renameSync(partial, path);
|
|
8535
|
-
return true;
|
|
8536
|
-
} catch (error) {
|
|
8537
|
-
const code = error.code ?? "";
|
|
8538
|
-
if (!HELD_BY_A_READER.has(code) || Date.now() >= until) {
|
|
8539
|
-
try {
|
|
8540
|
-
rmSync2(partial, { force: true });
|
|
8541
|
-
} catch {}
|
|
8542
|
-
return false;
|
|
8543
|
-
}
|
|
8544
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, HELD_FILE_RETRY_MS);
|
|
8545
|
-
}
|
|
8546
|
-
}
|
|
8547
|
-
}
|
|
8548
|
-
|
|
8549
8549
|
// src/game-log.ts
|
|
8550
8550
|
var COLOUR_CODE = new RegExp(`${String.fromCharCode(27)}\\[[0-9;]*m`, "g");
|
|
8551
8551
|
var ADMITTED = {
|
|
@@ -8847,7 +8847,7 @@ function parseIniLikeValue(value) {
|
|
|
8847
8847
|
}
|
|
8848
8848
|
|
|
8849
8849
|
// src/server-version.ts
|
|
8850
|
-
import { readFileSync as
|
|
8850
|
+
import { readFileSync as readFileSync4 } from "node:fs";
|
|
8851
8851
|
|
|
8852
8852
|
// src/update-check.ts
|
|
8853
8853
|
var CACHE_MS = 10 * 60 * 1000;
|
|
@@ -8858,7 +8858,7 @@ var MAX_RETRY_MS = 60 * 60 * 1000;
|
|
|
8858
8858
|
var DEBUG_MODE = process.env["GDHARNESS_DEBUG"] === "1";
|
|
8859
8859
|
var SERVER_VERSION = (() => {
|
|
8860
8860
|
try {
|
|
8861
|
-
const pkg = JSON.parse(
|
|
8861
|
+
const pkg = JSON.parse(readFileSync4(new URL("../package.json", import.meta.url), "utf8"));
|
|
8862
8862
|
return typeof pkg.version === "string" ? pkg.version : "0.0.0";
|
|
8863
8863
|
} catch {
|
|
8864
8864
|
return "0.0.0";
|
|
@@ -8884,7 +8884,7 @@ var RUNTIME_AUTOLOAD2 = `${RUNTIME_ADDON}runtime_autoload.gd`;
|
|
|
8884
8884
|
var frameEnd = null;
|
|
8885
8885
|
function frameEndLine() {
|
|
8886
8886
|
if (frameEnd === null) {
|
|
8887
|
-
const lines =
|
|
8887
|
+
const lines = readFileSync5(join6(shippedAddonsDirectory(), "gdharness_runtime", "runtime_autoload.gd"), "utf8").split(`
|
|
8888
8888
|
`);
|
|
8889
8889
|
const declared = lines.findIndex((line) => line.startsWith("func _notification("));
|
|
8890
8890
|
if (declared === -1) {
|
|
@@ -9642,7 +9642,7 @@ function readLaunched(printed) {
|
|
|
9642
9642
|
|
|
9643
9643
|
// src/run-record.ts
|
|
9644
9644
|
import { createHash as createHash2 } from "node:crypto";
|
|
9645
|
-
import { mkdirSync, openSync as openSync2, readdirSync as readdirSync2, readFileSync as
|
|
9645
|
+
import { mkdirSync, openSync as openSync2, readdirSync as readdirSync2, readFileSync as readFileSync6, rmSync as rmSync5, statSync as statSync3 } from "node:fs";
|
|
9646
9646
|
import { basename as basename4, join as join9, resolve as resolve4 } from "node:path";
|
|
9647
9647
|
|
|
9648
9648
|
// src/runtime-client.ts
|
|
@@ -9738,7 +9738,7 @@ function recordRunEnded(projectPath, pid, ending) {
|
|
|
9738
9738
|
function recordAt(path) {
|
|
9739
9739
|
let parsed;
|
|
9740
9740
|
try {
|
|
9741
|
-
parsed = JSON.parse(
|
|
9741
|
+
parsed = JSON.parse(readFileSync6(path, "utf8"));
|
|
9742
9742
|
} catch {
|
|
9743
9743
|
return null;
|
|
9744
9744
|
}
|
|
@@ -10186,7 +10186,7 @@ async function startThroughHelper(spec, output, stopFile) {
|
|
|
10186
10186
|
exited.now = true;
|
|
10187
10187
|
});
|
|
10188
10188
|
for (let waited = 0;waited < DESKTOP_START_MS; waited += 50) {
|
|
10189
|
-
const pid = existsSync3(pidFile) ? Number(
|
|
10189
|
+
const pid = existsSync3(pidFile) ? Number(readFileSync7(pidFile, "utf8").trim()) : Number.NaN;
|
|
10190
10190
|
if (Number.isInteger(pid) && pid > 0) {
|
|
10191
10191
|
return { child: started.child, pid };
|
|
10192
10192
|
}
|
|
@@ -10217,7 +10217,7 @@ function profiledBy(path, projectPath) {
|
|
|
10217
10217
|
};
|
|
10218
10218
|
let projectGodot = null;
|
|
10219
10219
|
try {
|
|
10220
|
-
projectGodot =
|
|
10220
|
+
projectGodot = readFileSync7(join10(projectPath, "project.godot"), "utf8");
|
|
10221
10221
|
} catch {}
|
|
10222
10222
|
const observer = new ProfileObserver((totals) => {
|
|
10223
10223
|
const first = latest === null;
|
|
@@ -10456,7 +10456,7 @@ function restartSaid(notes, pid) {
|
|
|
10456
10456
|
return null;
|
|
10457
10457
|
}
|
|
10458
10458
|
try {
|
|
10459
|
-
const said = JSON.parse(
|
|
10459
|
+
const said = JSON.parse(readFileSync7(join10(notes, `exit-${String(pid)}.json`), "utf8"));
|
|
10460
10460
|
return typeof said === "object" && said !== null && "restart" in said && typeof said.restart === "boolean" ? said.restart : null;
|
|
10461
10461
|
} catch {
|
|
10462
10462
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gdharness",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.44",
|
|
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",
|