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.
Files changed (106) hide show
  1. package/build/cli.js +383 -243
  2. package/build/godot/addons/auto_reload/auto_reload.gd +18 -19
  3. package/build/godot/addons/gdharness_editor/animation_reads.gd +55 -33
  4. package/build/godot/addons/gdharness_editor/bridge_client.gd +53 -58
  5. package/build/godot/addons/gdharness_editor/declared_values.gd +68 -32
  6. package/build/godot/addons/gdharness_editor/file_reads.gd +83 -42
  7. package/build/godot/addons/gdharness_editor/file_walk.gd +12 -5
  8. package/build/godot/addons/gdharness_editor/headless_check.gd +68 -44
  9. package/build/godot/addons/gdharness_editor/plugin.gd +2 -3
  10. package/build/godot/addons/gdharness_editor/property_paths.gd +22 -12
  11. package/build/godot/addons/gdharness_editor/property_values.gd +143 -78
  12. package/build/godot/addons/gdharness_editor/reading.gd +51 -17
  13. package/build/godot/addons/gdharness_editor/same_values.gd +4 -4
  14. package/build/godot/addons/gdharness_editor/scene_file.gd +127 -80
  15. package/build/godot/addons/gdharness_editor/scene_uids.gd +12 -6
  16. package/build/godot/addons/gdharness_editor/serialisation.gd +75 -51
  17. package/build/godot/addons/gdharness_editor/setting_reads.gd +7 -6
  18. package/build/godot/addons/gdharness_editor/tool_executor.gd +3 -6
  19. package/build/godot/addons/gdharness_editor/tools/animation_states.gd +37 -27
  20. package/build/godot/addons/gdharness_editor/tools/animation_tools.gd +79 -49
  21. package/build/godot/addons/gdharness_editor/tools/animation_tracks.gd +70 -40
  22. package/build/godot/addons/gdharness_editor/tools/class_tools.gd +65 -42
  23. package/build/godot/addons/gdharness_editor/tools/filesystem_tools.gd +24 -22
  24. package/build/godot/addons/gdharness_editor/tools/navigation_bake.gd +49 -29
  25. package/build/godot/addons/gdharness_editor/tools/play_tools.gd +26 -21
  26. package/build/godot/addons/gdharness_editor/tools/profile_tools.gd +40 -40
  27. package/build/godot/addons/gdharness_editor/tools/resource_tools.gd +166 -107
  28. package/build/godot/addons/gdharness_editor/tools/scene_groups.gd +16 -9
  29. package/build/godot/addons/gdharness_editor/tools/scene_kin.gd +68 -41
  30. package/build/godot/addons/gdharness_editor/tools/scene_paths.gd +35 -20
  31. package/build/godot/addons/gdharness_editor/tools/scene_placing.gd +28 -13
  32. package/build/godot/addons/gdharness_editor/tools/scene_sharing.gd +12 -5
  33. package/build/godot/addons/gdharness_editor/tools/scene_tools.gd +113 -67
  34. package/build/godot/addons/gdharness_editor/tools/script_paths.gd +20 -8
  35. package/build/godot/addons/gdharness_editor/tools/settings_tools.gd +11 -8
  36. package/build/godot/addons/gdharness_editor/tools/signal_tools.gd +47 -34
  37. package/build/godot/addons/gdharness_editor/tools/tileset_tools.gd +77 -50
  38. package/build/godot/addons/gdharness_editor/value_shapes.gd +5 -6
  39. package/build/godot/addons/gdharness_runtime/call_errors.gd +1 -2
  40. package/build/godot/addons/gdharness_runtime/declared_values.gd +68 -32
  41. package/build/godot/addons/gdharness_runtime/error_report.gd +1 -2
  42. package/build/godot/addons/gdharness_runtime/reading.gd +51 -17
  43. package/build/godot/addons/gdharness_runtime/runtime_accessibility.gd +84 -63
  44. package/build/godot/addons/gdharness_runtime/runtime_autoload.gd +149 -147
  45. package/build/godot/addons/gdharness_runtime/runtime_capture.gd +64 -42
  46. package/build/godot/addons/gdharness_runtime/runtime_changes.gd +184 -122
  47. package/build/godot/addons/gdharness_runtime/runtime_frames.gd +2 -2
  48. package/build/godot/addons/gdharness_runtime/runtime_hover.gd +24 -20
  49. package/build/godot/addons/gdharness_runtime/runtime_input.gd +134 -92
  50. package/build/godot/addons/gdharness_runtime/runtime_items.gd +29 -13
  51. package/build/godot/addons/gdharness_runtime/runtime_menus.gd +0 -1
  52. package/build/godot/addons/gdharness_runtime/runtime_mouse.gd +34 -17
  53. package/build/godot/addons/gdharness_runtime/runtime_pad.gd +17 -13
  54. package/build/godot/addons/gdharness_runtime/runtime_paths.gd +84 -46
  55. package/build/godot/addons/gdharness_runtime/runtime_queries.gd +117 -79
  56. package/build/godot/addons/gdharness_runtime/runtime_says.gd +14 -17
  57. package/build/godot/addons/gdharness_runtime/runtime_screen.gd +23 -16
  58. package/build/godot/addons/gdharness_runtime/runtime_targets.gd +117 -66
  59. package/build/godot/addons/gdharness_runtime/runtime_touch.gd +15 -15
  60. package/build/godot/addons/gdharness_runtime/runtime_typing.gd +44 -27
  61. package/build/godot/addons/gdharness_runtime/runtime_values.gd +108 -73
  62. package/build/godot/addons/gdharness_runtime/runtime_waits.gd +111 -84
  63. package/build/godot/addons/gdharness_runtime/runtime_words.gd +10 -7
  64. package/build/godot/addons/gdharness_runtime/serialisation.gd +75 -51
  65. package/build/godot/addons/gdharness_runtime/value_shapes.gd +5 -6
  66. package/build/godot/addons/gdharness_tests/bench.gd +4 -5
  67. package/build/godot/addons/gdharness_tests/event.gd +10 -5
  68. package/build/godot/addons/gdharness_tests/share.gd +38 -18
  69. package/build/godot/addons/gdharness_tests/suites.gd +3 -3
  70. package/build/godot/addons/gdharness_tests/wait.gd +3 -2
  71. package/build/godot/loader/loader.gd +9 -9
  72. package/build/godot/operations/animation_reads.gd +55 -33
  73. package/build/godot/operations/audio_buses.gd +48 -19
  74. package/build/godot/operations/class_cache.gd +16 -11
  75. package/build/godot/operations/classdb_queries.gd +89 -44
  76. package/build/godot/operations/declared_values.gd +68 -32
  77. package/build/godot/operations/dependencies.gd +190 -109
  78. package/build/godot/operations/editor_tools.gd +10 -10
  79. package/build/godot/operations/export_presets.gd +100 -54
  80. package/build/godot/operations/file_reads.gd +83 -42
  81. package/build/godot/operations/file_walk.gd +12 -5
  82. package/build/godot/operations/gdscript_analysis.gd +86 -65
  83. package/build/godot/operations/gdscript_authoring.gd +83 -36
  84. package/build/godot/operations/godot_operations.gd +17 -11
  85. package/build/godot/operations/import_pipeline.gd +110 -59
  86. package/build/godot/operations/input_actions.gd +62 -39
  87. package/build/godot/operations/patterns.gd +3 -1
  88. package/build/godot/operations/plugins.gd +36 -16
  89. package/build/godot/operations/project_config.gd +61 -32
  90. package/build/godot/operations/project_diagnostics.gd +24 -11
  91. package/build/godot/operations/project_file.gd +16 -16
  92. package/build/godot/operations/project_validation.gd +71 -44
  93. package/build/godot/operations/property_paths.gd +22 -12
  94. package/build/godot/operations/property_values.gd +143 -78
  95. package/build/godot/operations/reading.gd +51 -17
  96. package/build/godot/operations/rename_checks.gd +2 -2
  97. package/build/godot/operations/resource_files.gd +11 -9
  98. package/build/godot/operations/same_values.gd +4 -4
  99. package/build/godot/operations/scene_connections.gd +27 -13
  100. package/build/godot/operations/script_check.gd +52 -49
  101. package/build/godot/operations/serialisation.gd +75 -51
  102. package/build/godot/operations/setting_reads.gd +7 -6
  103. package/build/godot/operations/value_shapes.gd +5 -6
  104. package/build/godot/tests/listed.gd +321 -268
  105. package/build/keeper.js +43 -43
  106. 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 readFileSync6, rmSync as rmSync6, writeFileSync as writeFileSync3 } from "node:fs";
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 readFileSync4 } from "node:fs";
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 readFileSync2 } from "node:fs";
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(readFileSync2("/proc/stat", "utf8"))?.[1] ?? Number.NaN) * 1000;
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 = readFileSync2(`/proc/${String(pid)}/stat`, "utf8");
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 readFileSync3 } from "node:fs";
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(readFileSync3(new URL("../package.json", import.meta.url), "utf8"));
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 = readFileSync4(join6(shippedAddonsDirectory(), "gdharness_runtime", "runtime_autoload.gd"), "utf8").split(`
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 readFileSync5, rmSync as rmSync5, statSync as statSync3 } from "node:fs";
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(readFileSync5(path, "utf8"));
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(readFileSync6(pidFile, "utf8").trim()) : Number.NaN;
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 = readFileSync6(join10(projectPath, "project.godot"), "utf8");
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(readFileSync6(join10(notes, `exit-${String(pid)}.json`), "utf8"));
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.42",
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",