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 CHANGED
@@ -1,6 +1,7 @@
1
1
  MIT License
2
2
 
3
3
  Copyright (c) 2025 Solomon Elias
4
+ Copyright (c) 2026 HaD0Yun
4
5
  Copyright (c) 2026 Aurelio Amoroso
5
6
 
6
7
  Permission is hereby granted, free of charge, to any person obtaining a copy
package/README.md CHANGED
@@ -15,40 +15,10 @@
15
15
  [![Bun](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2FAureliolo%2Fgdharness%2Fmain%2Fpackage.json&query=%24.engines.bun&label=bun&color=f9f1e1&logo=bun&logoColor=black)](https://bun.sh/)
16
16
  [![Licence](https://img.shields.io/github/license/Aureliolo/gdharness)](LICENSE)
17
17
 
18
- MCP server and Godot addons for driving a Godot 4 project from an agent: the editor that is open,
19
- the game that is running, and the project on disk.
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
- Requires Godot 4.7.0 or newer, and Node 22 or newer for `npx`. It runs under [Bun](https://bun.sh)
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
- ## Three parts
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
- **The MCP server.** What your agent calls: thirty-odd tools and four `godot://` resources.
32
+ ## What it is for
65
33
 
66
- **The CLI.** Installs the addons, registers the server with the harnesses on the machine, checks
67
- them, rebuilds the class cache.
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
- [How it works](https://aureliolo.github.io/gdharness/architecture.html) is what connects to what.
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
- - **No fixture, no ship.** Every tool is driven against a pinned Godot in CI before it ships.
82
- - **A tool fails rather than answers.** No success payload for an empty or partial result.
83
- - **Every mutation reads back** from the engine.
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
- [What is proven](https://aureliolo.github.io/gdharness/tested.html) is how to check that.
44
+ ## At a glance
90
45
 
91
- ## Security
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
- - The runtime bridge binds `127.0.0.1` and refuses to listen outside a debug build. No exported
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
- ```bash
105
- gh attestation verify gdharness-X.Y.Z.tgz --repo Aureliolo/gdharness \
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, by Solomon
125
- Elias originally and completely reworked since to be hardened, condensed and more streamlined.
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 GoPeak or the Godot Foundation.
71
+ Not affiliated with the Godot Foundation.