gdharness 0.13.44 → 1.0.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/README.md +10 -10
- package/build/cli.js +15 -3
- package/build/godot/addons/gdharness_runtime/runtime_queries.gd +17 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -53,16 +53,16 @@ emptily, so a call that succeeded is a call that was understood.
|
|
|
53
53
|
|
|
54
54
|
## At a glance
|
|
55
55
|
|
|
56
|
-
| |
|
|
57
|
-
| --------- |
|
|
58
|
-
| Needs | Godot 4.7 or newer, Node 22 or newer. Runs under Bun 1.4 too.
|
|
59
|
-
| Surface | 30 tools named `domain_verb`, and 4 `godot://` resources
|
|
60
|
-
| Reaches | The editor that is open, a game it is playing, and the project on disk
|
|
61
|
-
| Harnesses | 35, written inside the project wherever the harness has a project config
|
|
62
|
-
| Skill | Written to `.agents/skills`, which every major harness reads
|
|
63
|
-
| Install | npm, or a Sigstore-signed archive with an SBOM, SLSA Build Level 3
|
|
64
|
-
| Proven | Every tool driven against Godot 4.7.2 in CI, on Windows, Linux and macOS
|
|
65
|
-
| Status | 0
|
|
56
|
+
| | |
|
|
57
|
+
| --------- | ------------------------------------------------------------------------------------ |
|
|
58
|
+
| Needs | Godot 4.7 or newer, Node 22 or newer. Runs under Bun 1.4 too. |
|
|
59
|
+
| Surface | 30 tools named `domain_verb`, and 4 `godot://` resources |
|
|
60
|
+
| Reaches | The editor that is open, a game it is playing, and the project on disk |
|
|
61
|
+
| Harnesses | 35, written inside the project wherever the harness has a project config |
|
|
62
|
+
| Skill | Written to `.agents/skills`, which every major harness reads |
|
|
63
|
+
| Install | npm, or a Sigstore-signed archive with an SBOM, SLSA Build Level 3 |
|
|
64
|
+
| Proven | Every tool driven against Godot 4.7.2 in CI, on Windows, Linux and macOS |
|
|
65
|
+
| Status | 1.0: every release is a patch. [What a bump means](.github/CONTRIBUTING.md#versions) |
|
|
66
66
|
|
|
67
67
|
Older 4.x is likely to work and is not tested.
|
|
68
68
|
|
package/build/cli.js
CHANGED
|
@@ -15319,10 +15319,22 @@ function opTakes(spec, op, name) {
|
|
|
15319
15319
|
function argumentsOf(spec, op) {
|
|
15320
15320
|
return Object.keys(spec.parameters).filter((name) => opTakes(spec, op, name));
|
|
15321
15321
|
}
|
|
15322
|
-
function
|
|
15323
|
-
|
|
15322
|
+
function callsWithoutProjectPath() {
|
|
15323
|
+
const calls = [];
|
|
15324
|
+
for (const spec of TOOL_SPECS) {
|
|
15325
|
+
if (!Object.hasOwn(spec.parameters, "projectPath")) {
|
|
15326
|
+
calls.push(spec.name);
|
|
15327
|
+
continue;
|
|
15328
|
+
}
|
|
15329
|
+
for (const op of Object.keys(spec.operations ?? {})) {
|
|
15330
|
+
if (!opTakes(spec, op, "projectPath")) {
|
|
15331
|
+
calls.push(`${spec.name} ${op}`);
|
|
15332
|
+
}
|
|
15333
|
+
}
|
|
15334
|
+
}
|
|
15335
|
+
return calls.sort();
|
|
15324
15336
|
}
|
|
15325
|
-
function projectPathSentence(without =
|
|
15337
|
+
function projectPathSentence(without = callsWithoutProjectPath()) {
|
|
15326
15338
|
if (without.length === 0) {
|
|
15327
15339
|
return "Every call takes `projectPath`";
|
|
15328
15340
|
}
|
|
@@ -247,11 +247,27 @@ func _matches_apart_from_name(node: Node, wanted: Dictionary[String, String]) ->
|
|
|
247
247
|
if not script is Script:
|
|
248
248
|
return false
|
|
249
249
|
var attached: Script = script
|
|
250
|
-
if attached
|
|
250
|
+
if not _script_is(attached, wanted["class"]):
|
|
251
251
|
return false
|
|
252
252
|
return true
|
|
253
253
|
|
|
254
254
|
|
|
255
|
+
## Whether [param attached] is the script class [param wanted], the way a typed `is` reads it: its
|
|
256
|
+
## own class_name, or one it extends at any distance.
|
|
257
|
+
##
|
|
258
|
+
## The class_name alone answered 0 for `Card` over a tree of rows whose scripts extend Card two
|
|
259
|
+
## steps down, IntakeRow extends DocketCard extends Card, while `is_class` reaches every native
|
|
260
|
+
## subclass. A caller naming a class means what extends it, whichever side of the line the class
|
|
261
|
+
## is declared on.
|
|
262
|
+
static func _script_is(attached: Script, wanted: String) -> bool:
|
|
263
|
+
var walk: Script = attached
|
|
264
|
+
while walk != null:
|
|
265
|
+
if walk.get_global_name() == wanted:
|
|
266
|
+
return true
|
|
267
|
+
walk = walk.get_base_script()
|
|
268
|
+
return false
|
|
269
|
+
|
|
270
|
+
|
|
255
271
|
## Where a node is on screen: a Control's rectangle, a Node2D's position, or the place a 3D node
|
|
256
272
|
## is drawn in, in both the canvas coordinates the node reports and the window pixels input
|
|
257
273
|
## arrives in. The two differ whenever the project stretches its viewport, which is what made a
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gdharness",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
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",
|