gdharness 1.3.15 → 1.3.17
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
CHANGED
|
@@ -17517,7 +17517,7 @@ var init_tool_definitions = __esm(() => {
|
|
|
17517
17517
|
type: ["boolean", "array"],
|
|
17518
17518
|
items: { type: "string" },
|
|
17519
17519
|
ops: ["call"],
|
|
17520
|
-
description: `call: read the object the call answered with in the same answer, under result_properties: true for every variable its script declares, or a list of names, each a colon path walked from that object the way property paths are ("dead_allowed", "terms:0:name"). For a list or a dictionary the call answered with, they are read off each object in it: result_properties is then a list, or a dictionary under the same keys, with null for an element that is no object. A name that is not there is listed under result_properties_missing with why, led by the element's index or key for a list or dictionary, and a result with no object in it answers properties_note instead. Without it an object comes back as its class, its script_class or script, and id, which is the object's instance id (get_instance_id()) and never a property of its own named id: read that one through properties.`
|
|
17520
|
+
description: `call: read the object the call answered with in the same answer, under result_properties: true for every variable its script declares, or a list of names, each a colon path walked from that object the way property paths are ("dead_allowed", "terms:0:name"). For a list or a dictionary the call answered with, they are read off each object in it: result_properties is then a list, or a dictionary in the shape result gives it (under the same keys when every key is text, otherwise as entries, each a key and what was read), with null for an element that is no object. A name that is not there is listed under result_properties_missing with why, led by the element's index or key for a list or dictionary, a key that is not text shown as result shows it, and a result with no object in it answers properties_note instead. Without it an object comes back as its class, its script_class or script, and id, which is the object's instance id (get_instance_id()) and never a property of its own named id: read that one through properties.`
|
|
17521
17521
|
},
|
|
17522
17522
|
timeoutMs: {
|
|
17523
17523
|
type: "integer",
|
|
@@ -57136,7 +57136,7 @@ var init_server = __esm(() => {
|
|
|
57136
57136
|
init_bridge_announce();
|
|
57137
57137
|
init_engine_launch();
|
|
57138
57138
|
import { existsSync as existsSync35 } from "node:fs";
|
|
57139
|
-
import { join as join44, resolve as resolve14 } from "node:path";
|
|
57139
|
+
import { dirname as dirname26, join as join44, resolve as resolve14 } from "node:path";
|
|
57140
57140
|
|
|
57141
57141
|
// src/error-mode.ts
|
|
57142
57142
|
import process7 from "node:process";
|
|
@@ -58859,6 +58859,9 @@ async function registerRuntime(godot, projectPath) {
|
|
|
58859
58859
|
if (before !== "current") {
|
|
58860
58860
|
console.log(` commit ${at} with project.godot, since the entry names it`);
|
|
58861
58861
|
}
|
|
58862
|
+
if (before === "missing") {
|
|
58863
|
+
console.log(` every export carries ${dirname26(RUNTIME_AUTOLOAD.path)}/, since the entry names it, and the loader does nothing in a release build: a check or export filter that keeps unknown top-level folders out of a pack has to allow it`);
|
|
58864
|
+
}
|
|
58862
58865
|
return;
|
|
58863
58866
|
}
|
|
58864
58867
|
const path = (named ?? "").replace(/^res:\/\//, "");
|
|
@@ -711,10 +711,23 @@ func _read_off_result(result: Variant, asked: Variant) -> Dictionary:
|
|
|
711
711
|
return _read_off_many(read_each, list, "Array", missing)
|
|
712
712
|
if result is Dictionary:
|
|
713
713
|
var map: Dictionary = result
|
|
714
|
+
# In the shape result gives the dictionary: keyed by text only when every key is text, since
|
|
715
|
+
# a key 7 and a key "7" are one key once both are text, and one of them was lost.
|
|
716
|
+
var texts: bool = map.keys().all(
|
|
717
|
+
func(key: Variant) -> bool: return key is String or key is StringName
|
|
718
|
+
)
|
|
714
719
|
var read_by_key: Dictionary = {}
|
|
720
|
+
var entries: Array = []
|
|
715
721
|
for key: Variant in map:
|
|
716
|
-
|
|
717
|
-
|
|
722
|
+
var shown: Variant = _values.serialize(key)
|
|
723
|
+
var named: String = "[%s]" % (str(key) if texts else JSON.stringify(shown, "", false))
|
|
724
|
+
var got: Variant = _read_off_element(map[key], named, asked, missing)
|
|
725
|
+
if texts:
|
|
726
|
+
read_by_key[str(key)] = got
|
|
727
|
+
else:
|
|
728
|
+
entries.append([shown, got])
|
|
729
|
+
var shaped: Variant = read_by_key if texts else {"_type": "Dictionary", "entries": entries}
|
|
730
|
+
return _read_off_many(shaped, map.values(), "Dictionary", missing)
|
|
718
731
|
if result is Object and not is_instance_valid(result):
|
|
719
732
|
return {
|
|
720
733
|
"properties_note": "the call answered an object that has since been freed, so nothing was read"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gdharness",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.17",
|
|
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",
|