gdharness 0.4.2 → 0.5.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/LICENSE +1 -0
- package/README.md +31 -87
- package/build/cli.js +34888 -26369
- package/build/godot/addons/gdharness_runtime/runtime_input.gd +11 -3
- package/build/index.js +670 -112
- package/package.json +1 -1
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -15,40 +15,10 @@
|
|
|
15
15
|
[](https://bun.sh/)
|
|
16
16
|
[](LICENSE)
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
Drive a Godot 4 project from an agent: the editor that is open, the game that is running, and the
|
|
19
|
+
project on disk.
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
1.4.0 or newer too.
|
|
23
|
-
|
|
24
|
-
```jsonc
|
|
25
|
-
runtime_inspect { "op": "rect", "nodePath": "/root/Hall/Ledger/BuyButton" }
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
"type": "rect",
|
|
29
|
-
"path": "/root/Hall/Ledger/BuyButton",
|
|
30
|
-
"visible": true,
|
|
31
|
-
"canvas": { "position": { "x": 812, "y": 418 }, "size": { "x": 180, "y": 34 } },
|
|
32
|
-
"window": { "position": { "x": 812, "y": 418 }, "size": { "x": 180, "y": 34 } }
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
**Documentation: [aureliolo.github.io/gdharness](https://aureliolo.github.io/gdharness)**
|
|
37
|
-
|
|
38
|
-
## Install
|
|
39
|
-
|
|
40
|
-
From the project directory:
|
|
41
|
-
|
|
42
|
-
```bash
|
|
43
|
-
npx -y gdharness@0.4.2 setup . --runtime
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Addons in, editor plugins on, class list rebuilt, and the server written into every agent harness
|
|
47
|
-
found on the machine: Claude Code, Cursor, VS Code, opencode, Codex, Gemini CLI, Windsurf, Hermes
|
|
48
|
-
and the rest. Reconnect the harness, then check `editor_status` answers.
|
|
49
|
-
|
|
50
|
-
[Install](https://aureliolo.github.io/gdharness/install.html) has the rest, including the signed
|
|
51
|
-
archive for a pinned or offline install. To have an agent do it, paste:
|
|
21
|
+
**Hand this to your agent:**
|
|
52
22
|
|
|
53
23
|
```text
|
|
54
24
|
Install gdharness into this project by following
|
|
@@ -56,72 +26,46 @@ https://aureliolo.github.io/gdharness/agent.md, then tell me what it asked you t
|
|
|
56
26
|
recommend back to me.
|
|
57
27
|
```
|
|
58
28
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
**Inside Godot.** Addons installed into your project. They make the open editor and the running
|
|
62
|
-
game answerable, and reload the editor's view when files change on disk.
|
|
29
|
+
Or do it yourself, and pick your harness:
|
|
30
|
+
[aureliolo.github.io/gdharness](https://aureliolo.github.io/gdharness)
|
|
63
31
|
|
|
64
|
-
|
|
32
|
+
## What it is for
|
|
65
33
|
|
|
66
|
-
|
|
67
|
-
|
|
34
|
+
An agent cannot see a running game. This makes one answerable: where a control is, what a property
|
|
35
|
+
reads, what the console printed, what broke and on which line.
|
|
68
36
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
## Tools
|
|
72
|
-
|
|
73
|
-
Tools are named `domain_verb`. A tool that does several related things takes an `op`. An unknown op
|
|
74
|
-
or argument is refused with the valid set listed. Answers are read from the engine after the
|
|
75
|
-
change, not echoed from the request.
|
|
76
|
-
|
|
77
|
-
[Reference](https://aureliolo.github.io/gdharness/tools.html), generated from the server.
|
|
78
|
-
|
|
79
|
-
## Rules
|
|
37
|
+
```jsonc
|
|
38
|
+
runtime_inspect { "op": "rect", "nodePath": "/root/Hall/Ledger/BuyButton" }
|
|
80
39
|
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
- **Strict projects are the baseline.** Everything shipped, and everything the tools write, parses
|
|
85
|
-
with all GDScript warnings as errors.
|
|
86
|
-
- **Few tools, shaped like tasks.** Around thirty, not a hundred.
|
|
87
|
-
- **Answers are sized.** Detail levels by default, pagination where unbounded.
|
|
40
|
+
{ "canvas": { "position": { "x": 812, "y": 418 }, "size": { "x": 180, "y": 34 } },
|
|
41
|
+
"visible": true }
|
|
42
|
+
```
|
|
88
43
|
|
|
89
|
-
|
|
44
|
+
## At a glance
|
|
90
45
|
|
|
91
|
-
|
|
46
|
+
| | |
|
|
47
|
+
| --------- | ------------------------------------------------------------------------ |
|
|
48
|
+
| Needs | Godot 4.7 or newer, Node 22 or newer. Runs under Bun 1.4 too. |
|
|
49
|
+
| Surface | 30 tools named `domain_verb`, and 4 `godot://` resources |
|
|
50
|
+
| Reaches | The editor that is open, a game it is playing, and the project on disk |
|
|
51
|
+
| Harnesses | 35, written inside the project wherever the harness has a project config |
|
|
52
|
+
| Skill | Written to `.agents/skills`, which every major harness reads |
|
|
53
|
+
| Install | npm, or a Sigstore-signed archive with an SBOM, SLSA Build Level 3 |
|
|
54
|
+
| Proven | Every tool driven against a pinned Godot in CI, on three platforms |
|
|
92
55
|
|
|
93
|
-
|
|
94
|
-
game serves it.
|
|
95
|
-
- Subprocesses are spawned with an argument array, never a shell.
|
|
96
|
-
- Releases carry an SPDX SBOM and a keyless Sigstore build-provenance attestation over the archive,
|
|
97
|
-
its checksum and the SBOM, built by one reusable workflow: [SLSA Build Level
|
|
98
|
-
3](.github/release-process.md#slsa). Published releases are immutable.
|
|
99
|
-
- Every dependency is an exact version and every action is pinned by commit digest. Nothing
|
|
100
|
-
downloaded in CI runs unless it matches a digest in this repository.
|
|
101
|
-
- `main` takes pull requests only, linear history, signed commits, and every CI job is a required
|
|
102
|
-
check. CodeQL, Scorecard, actionlint, zizmor and secret scanning run on every change.
|
|
56
|
+
## Documentation
|
|
103
57
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
--signer-workflow Aureliolo/gdharness/.github/workflows/release-build.yml
|
|
107
|
-
```
|
|
58
|
+
[aureliolo.github.io/gdharness](https://aureliolo.github.io/gdharness): installing it, how the
|
|
59
|
+
parts connect, and every tool, op and argument.
|
|
108
60
|
|
|
109
61
|
[SECURITY.md](.github/SECURITY.md) is how to report something.
|
|
110
|
-
|
|
111
|
-
## Development
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
bun install
|
|
115
|
-
bun run build
|
|
116
|
-
bun run ci
|
|
117
|
-
bun run docs # the site, into site/
|
|
118
|
-
```
|
|
119
|
-
|
|
120
62
|
[CONTRIBUTING.md](.github/CONTRIBUTING.md) is what a change has to clear.
|
|
121
63
|
|
|
122
64
|
## Project
|
|
123
65
|
|
|
124
|
-
Fork of [GoPeak](https://github.com/HaD0Yun/Doyunha-Gopeak) v2.3.9, September 2026, MIT
|
|
125
|
-
|
|
66
|
+
Fork of [GoPeak](https://github.com/HaD0Yun/Doyunha-Gopeak) v2.3.9, September 2026, MIT: the
|
|
67
|
+
original MCP server [godot-mcp](https://github.com/Coding-Solo/godot-mcp) by
|
|
68
|
+
[Solomon Elias](https://github.com/Coding-Solo), GoPeak by [HaD0Yun](https://github.com/HaD0Yun),
|
|
69
|
+
and completely reworked since to be hardened, condensed and more streamlined.
|
|
126
70
|
|
|
127
|
-
Not affiliated with
|
|
71
|
+
Not affiliated with the Godot Foundation.
|