@skillcap/gdh 0.13.2 → 0.14.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/INSTALL-BUNDLE.json +1 -1
- package/README.md +4 -4
- package/RELEASE-SPAN-UPDATE-CONTRACTS.json +121 -0
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/package.json +2 -2
- package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/index.js +11 -7
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +44 -4
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +2 -2
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/guidance.js +1 -1
- package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
- package/node_modules/@gdh/docs/package.json +2 -2
- package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/mcp/dist/index.js +13 -0
- package/node_modules/@gdh/mcp/dist/index.js.map +1 -1
- package/node_modules/@gdh/mcp/package.json +8 -8
- package/node_modules/@gdh/observability/dist/runtime-bundles.d.ts.map +1 -1
- package/node_modules/@gdh/observability/dist/runtime-bundles.js +28 -2
- package/node_modules/@gdh/observability/dist/runtime-bundles.js.map +1 -1
- package/node_modules/@gdh/observability/package.json +2 -2
- package/node_modules/@gdh/runtime/dist/bridge-surface.js +187 -9
- package/node_modules/@gdh/runtime/dist/bridge-surface.js.map +1 -1
- package/node_modules/@gdh/runtime/dist/docker-provider.d.ts +4 -2
- package/node_modules/@gdh/runtime/dist/docker-provider.d.ts.map +1 -1
- package/node_modules/@gdh/runtime/dist/docker-provider.js +21 -10
- package/node_modules/@gdh/runtime/dist/docker-provider.js.map +1 -1
- package/node_modules/@gdh/runtime/dist/index.d.ts +1 -1
- package/node_modules/@gdh/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/runtime/dist/index.js +561 -23
- package/node_modules/@gdh/runtime/dist/index.js.map +1 -1
- package/node_modules/@gdh/runtime/package.json +2 -2
- package/node_modules/@gdh/scan/package.json +3 -3
- package/node_modules/@gdh/verify/dist/scenarios.d.ts +4 -1
- package/node_modules/@gdh/verify/dist/scenarios.d.ts.map +1 -1
- package/node_modules/@gdh/verify/dist/scenarios.js +447 -69
- package/node_modules/@gdh/verify/dist/scenarios.js.map +1 -1
- package/node_modules/@gdh/verify/package.json +7 -7
- package/package.json +11 -11
package/INSTALL-BUNDLE.json
CHANGED
package/README.md
CHANGED
|
@@ -12,10 +12,10 @@ GDH detects your Godot project, configures your AI agents, and gives them the co
|
|
|
12
12
|
## Install
|
|
13
13
|
|
|
14
14
|
```sh
|
|
15
|
-
npx -y @skillcap/gdh@0.
|
|
15
|
+
npx -y @skillcap/gdh@0.14.0 setup
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Replace `0.
|
|
18
|
+
Replace `0.14.0` with the GDH version you want to pin this project to. `gdh setup` records the pinned version in `.gdh/project.yaml`; every managed surface generated from that config invokes GDH at that exact pinned version, so future sessions stay reproducible.
|
|
19
19
|
|
|
20
20
|
From `0.9.0` onward, the shipped package also carries bounded release-span update metadata in `RELEASE-SPAN-UPDATE-CONTRACTS.json` so update flows can explain release-specific migration steps without reading repo-only `docs/releases/` files at target runtime.
|
|
21
21
|
|
|
@@ -36,7 +36,7 @@ The full install and update contract lives in [install-and-update.md](docs/devel
|
|
|
36
36
|
|
|
37
37
|
```sh
|
|
38
38
|
# 1. Run setup in your Godot project
|
|
39
|
-
npx -y @skillcap/gdh@0.
|
|
39
|
+
npx -y @skillcap/gdh@0.14.0 setup
|
|
40
40
|
|
|
41
41
|
# 2. Open your AI agent (Claude, Cursor, Codex) in the repo
|
|
42
42
|
|
|
@@ -101,7 +101,7 @@ The CLI exists for advanced operators, debugging, and automation. Update preview
|
|
|
101
101
|
|
|
102
102
|
## Status
|
|
103
103
|
|
|
104
|
-
GDH now ships the current `0.
|
|
104
|
+
GDH now ships the current `0.14.0` release line and remains ready for broader internal use within the documented support contract. The current release line is `0.14.0` at the `broader_internal_release` stage.
|
|
105
105
|
That line includes one first-class Docker-backed rendered runtime provider and bounded screenshot evidence on rendered-capable paths.
|
|
106
106
|
|
|
107
107
|
The release-stage label applies only to the documented support window in [runtime-support-matrix.md](docs/development/runtime-support-matrix.md) and [runtime-release-readiness.md](docs/development/runtime-release-readiness.md). It is not a blanket claim that every Godot project shape is supported or that this implementation checkout should behave like a GDH-managed target repo.
|
|
@@ -891,6 +891,127 @@
|
|
|
891
891
|
}
|
|
892
892
|
]
|
|
893
893
|
}
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
"version": "0.13.3",
|
|
897
|
+
"releaseTag": "v0.13.3",
|
|
898
|
+
"migrationStatus": "no_op",
|
|
899
|
+
"summary": "v0.13.3 restores GDH-owned rendered screenshot verification after the v0.13.2 regression. Verification scenarios can again request one supporting screenshot artifact through the canonical `artifact_policy.screenshots: \"rendered\"` policy, legacy `\"fallback\"` remains a compatibility alias, the shipped Docker rendered-runtime image is rebuilt around current Node and Godot truth, and runtime-bridge screenshot capture now waits for real scene readiness before declaring success or failure. Existing targets do not require a new release-scoped managed-project migrate step for this release line.",
|
|
900
|
+
"releaseHighlights": {
|
|
901
|
+
"summary": "v0.13.3 is a patch release that restores GDH-owned rendered screenshot verification after the v0.13.2 regression. Verification scenarios can again request one supporting rendered screenshot artifact through the canonical `artifact_policy.screenshots: \"rendered\"` policy, legacy `\"fallback\"` remains accepted as a compatibility alias, and the shipped Docker plus runtime-bridge path is hardened enough to pass the real Beacon title-screen proof again.",
|
|
902
|
+
"operatorChanges": [
|
|
903
|
+
"**Rendered screenshot requests are reachable again through GDH's normal verification surfaces.** `gdh verify run` and `gdh run-config run` now share an explicit rendered-screenshot request contract, verification scenarios can declare `artifact_policy.screenshots: \"rendered\"`, and legacy `\"fallback\"` now normalizes to the same supporting-artifact behavior instead of blocking the run outright.",
|
|
904
|
+
"**The shipped Docker rendered-runtime image is rebuilt around the current toolchain truth.** The default image now targets `gdh-runtime-rendered:4.6-stable-r3`, uses Ubuntu 24.04 plus Node 22 and Godot 4.6, and exposes both `godot-linux` and `godot` inside the container for consistent GDH and manual debugging behavior.",
|
|
905
|
+
"**Rendered Docker launches are more resilient against real-target drift.** GDH now overlays sanitized `project.godot` and `.godot/extension_list.cfg` inputs for Docker Godot launches, rewrites stale UID-backed main-scene references when a resolvable `res://` path exists, forces dummy audio, and allows a longer Docker bridge handshake for slow real targets.",
|
|
906
|
+
"**Managed bridge screenshot capture is now honest about scene readiness.** The runtime bridge waits for a real current scene before attempting capture, keeps retrying until the viewport image is actually ready, and writes structured unavailability metadata when the session exits before capture completes."
|
|
907
|
+
]
|
|
908
|
+
},
|
|
909
|
+
"updateContract": {
|
|
910
|
+
"summary": "No release-specific managed migration is required after self-update. v0.13.3 restores rendered screenshot verification and hardens the Docker plus bridge path; if a target still behaves like the older bridge template, use the ordinary `gdh bridge status` and `gdh bridge repair` flow before retrying rendered verification.",
|
|
911
|
+
"steps": [
|
|
912
|
+
{
|
|
913
|
+
"id": "repair_managed_bridge_if_rendered_verify_still_looks_stale",
|
|
914
|
+
"kind": "mechanical",
|
|
915
|
+
"summary": "If rendered verification still behaves like the older managed bridge files, run the ordinary bridge repair flow before retrying.",
|
|
916
|
+
"detail": "v0.13.3 does not bump a managed surface version, but it does ship a stricter runtime-bridge screenshot path. When a target still carries older managed bridge files or rendered verification exits before a scene becomes ready, use `gdh bridge status` and `gdh bridge repair` to rebake the managed bridge baseline. This is bounded ordinary repair, not a new release-scoped migrate step.",
|
|
917
|
+
"commands": [
|
|
918
|
+
"gdh bridge status",
|
|
919
|
+
"gdh bridge repair"
|
|
920
|
+
],
|
|
921
|
+
"validationCommands": [
|
|
922
|
+
"gdh bridge status",
|
|
923
|
+
"gdh verify run <target> <run-config-id> --verification-scenario <scenario-id> --provider docker"
|
|
924
|
+
]
|
|
925
|
+
},
|
|
926
|
+
{
|
|
927
|
+
"id": "prefer_canonical_rendered_policy_for_project_owned_scenarios",
|
|
928
|
+
"kind": "agent_reasoning",
|
|
929
|
+
"summary": "Project-owned screenshot scenarios should prefer `artifact_policy.screenshots: \"rendered\"` going forward.",
|
|
930
|
+
"detail": "Legacy `\"fallback\"` remains accepted as a compatibility alias in v0.13.3, but `\"rendered\"` is the canonical screenshot policy now and keeps docs, tests, and future migrations aligned. Scenario truth should still come from project-owned signals rather than image interpretation.",
|
|
931
|
+
"commands": [],
|
|
932
|
+
"validationCommands": []
|
|
933
|
+
}
|
|
934
|
+
]
|
|
935
|
+
}
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
"version": "0.14.0",
|
|
939
|
+
"releaseTag": "v0.14.0",
|
|
940
|
+
"migrationStatus": "required",
|
|
941
|
+
"summary": "v0.14.0 expands state-first runtime verification with node-presence and signal waiters, persists waiter evidence in run records, and refreshes shipped guidance to the canonical rendered-screenshot plus waiter vocabulary. The release changes both GDH_GUIDANCE_UNIT_VERSION (2 -> 3) and GDH_RUNTIME_BRIDGE_SURFACE_VERSION (3 -> 4), so managed targets need release-specific follow-through: bridge-enabled targets repair the runtime bridge and finish plugin/autoload registration, then onboarded targets run `gdh migrate --apply` to regenerate guidance units and return to a healthy lifecycle state.",
|
|
942
|
+
"releaseHighlights": {
|
|
943
|
+
"summary": "v0.14.0 pushes GDH runtime verification toward state-first proof instead of ad hoc polling. The managed runtime bridge now supports node-presence and signal-observation waiters, run records preserve waiter evidence and clearer rendered failure classes, and the shipped guidance plus bridge surfaces move to versions `3` and `4`. Because both managed guidance units and the managed runtime bridge surface changed, this release requires a bounded post-update migration path.",
|
|
944
|
+
"operatorChanges": [
|
|
945
|
+
"**Bounded waiter coverage expands beyond node-property polling.** The managed runtime bridge now ships the plumbing behind `state.node_presence.await` and `state.signal.await`, so runtime verification can wait on node appearance/disappearance and signal emission through structured bridge evidence instead of open-ended sleep loops.",
|
|
946
|
+
"**Run records keep waiter evidence and split rendered failures more honestly.** Runtime assertion results now persist waiter evidence and transcripts, inspect surfaces prefer the latest valid run record when local debris exists, and rendered verification feedback now separates screenshot-unavailable, provider/runtime incompatibility, and assertion-failure signals.",
|
|
947
|
+
"**Project-owned guidance surfaces now reinforce the shipped runtime vocabulary.** Managed guidance units now say `artifact_policy.screenshots: \"rendered\"` is canonical, keep legacy `\"fallback\"` only as a compatibility alias, and carry the bounded `player_reachable` / `internal_route` / `waiter` terminology used by the runtime and verification surfaces.",
|
|
948
|
+
"**Release safety checks are stricter for maintainers.** `corepack yarn release:preview --json` now refuses stale branch lineages, and required-release migration proof is part of the hard `check:public-release` gate instead of maintainer ceremony only."
|
|
949
|
+
]
|
|
950
|
+
},
|
|
951
|
+
"updateContract": {
|
|
952
|
+
"summary": "Managed targets need a release-specific post-update path for v0.14.0 because guidance units move to version 3 and the runtime bridge surface moves to version 4. Bridge-enabled targets repair the managed bridge and finish plugin registration first, then `gdh migrate --apply` refreshes the guidance units and returns the target to a healthy lifecycle state.",
|
|
953
|
+
"steps": [
|
|
954
|
+
{
|
|
955
|
+
"id": "verify_post_update_status",
|
|
956
|
+
"kind": "mechanical",
|
|
957
|
+
"summary": "Run the standard post-update lifecycle check.",
|
|
958
|
+
"detail": "Start with `gdh status` so GDH can tell you whether the target only needs the guidance refresh branch or whether it also entered the bridge-specific repair branch for the v0.14.0 runtime bridge surface update.",
|
|
959
|
+
"commands": [
|
|
960
|
+
"gdh status"
|
|
961
|
+
],
|
|
962
|
+
"validationCommands": [
|
|
963
|
+
"gdh status"
|
|
964
|
+
]
|
|
965
|
+
},
|
|
966
|
+
{
|
|
967
|
+
"id": "inspect_bridge_specific_branch",
|
|
968
|
+
"kind": "agent_reasoning",
|
|
969
|
+
"summary": "Decide whether the target also needs the bridge-specific repair branch.",
|
|
970
|
+
"detail": "If `gdh status` surfaces `runtime_bridge_*` reasons, inspect `gdh bridge status` and treat that as the v0.14.0 bridge branch. If no runtime-bridge reasons appear, skip the bridge-specific steps and proceed straight to `gdh migrate --apply` for the guidance-unit refresh.",
|
|
971
|
+
"commands": [
|
|
972
|
+
"gdh bridge status"
|
|
973
|
+
],
|
|
974
|
+
"validationCommands": [
|
|
975
|
+
"gdh status"
|
|
976
|
+
]
|
|
977
|
+
},
|
|
978
|
+
{
|
|
979
|
+
"id": "repair_runtime_bridge_surface",
|
|
980
|
+
"kind": "mechanical",
|
|
981
|
+
"summary": "Repair the managed runtime bridge files when the bridge branch is active.",
|
|
982
|
+
"detail": "Bridge-enabled `v0.13.3` targets drift on the managed bridge files shipped in surface version 4. Run `gdh bridge repair` to rewrite the managed bridge files before attempting the final guidance refresh.",
|
|
983
|
+
"commands": [
|
|
984
|
+
"gdh bridge repair"
|
|
985
|
+
],
|
|
986
|
+
"validationCommands": [
|
|
987
|
+
"gdh bridge status"
|
|
988
|
+
]
|
|
989
|
+
},
|
|
990
|
+
{
|
|
991
|
+
"id": "enable_plugin_and_finish_gdhbridge_registration",
|
|
992
|
+
"kind": "manual_review",
|
|
993
|
+
"summary": "Enable the GDH Runtime Bridge plugin so GDHBridge registers again.",
|
|
994
|
+
"detail": "GDH still does not hand-edit `project.godot` for operators. After `gdh bridge repair`, open the project in the Godot editor and enable the `GDH Runtime Bridge` plugin so it can register `GDHBridge` and clear the remaining plugin/autoload reasons.",
|
|
995
|
+
"commands": [],
|
|
996
|
+
"validationCommands": [
|
|
997
|
+
"gdh bridge status",
|
|
998
|
+
"gdh status"
|
|
999
|
+
]
|
|
1000
|
+
},
|
|
1001
|
+
{
|
|
1002
|
+
"id": "refresh_guidance_units_and_validate",
|
|
1003
|
+
"kind": "mechanical",
|
|
1004
|
+
"summary": "Run migrate apply to refresh the guidance units and finish the release hop.",
|
|
1005
|
+
"detail": "Once bridge follow-through is complete, or immediately when the target had no bridge-specific reasons, run `gdh migrate --apply`. This regenerates the managed guidance-unit surfaces at version 3 and should return the target to a healthy lifecycle state.",
|
|
1006
|
+
"commands": [
|
|
1007
|
+
"gdh migrate --apply"
|
|
1008
|
+
],
|
|
1009
|
+
"validationCommands": [
|
|
1010
|
+
"gdh status"
|
|
1011
|
+
]
|
|
1012
|
+
}
|
|
1013
|
+
]
|
|
1014
|
+
}
|
|
894
1015
|
}
|
|
895
1016
|
]
|
|
896
1017
|
}
|
|
@@ -11,13 +11,13 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@gdh/authoring": "0.
|
|
15
|
-
"@gdh/core": "0.
|
|
16
|
-
"@gdh/docs": "0.
|
|
17
|
-
"@gdh/observability": "0.
|
|
18
|
-
"@gdh/runtime": "0.
|
|
19
|
-
"@gdh/scan": "0.
|
|
20
|
-
"@gdh/verify": "0.
|
|
14
|
+
"@gdh/authoring": "0.14.0",
|
|
15
|
+
"@gdh/core": "0.14.0",
|
|
16
|
+
"@gdh/docs": "0.14.0",
|
|
17
|
+
"@gdh/observability": "0.14.0",
|
|
18
|
+
"@gdh/runtime": "0.14.0",
|
|
19
|
+
"@gdh/scan": "0.14.0",
|
|
20
|
+
"@gdh/verify": "0.14.0"
|
|
21
21
|
},
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.14.0"
|
|
23
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2EA,OAAO,EAIL,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AA4C5B,eAAO,MAAM,UAAU,wCAerB,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACpD;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAA0D,GAC7D,OAAO,CAAC,MAAM,CAAC,CA4HjB;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,KAAK,EACT,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,IAAI,CAGN;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA2EA,OAAO,EAIL,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AA4C5B,eAAO,MAAM,UAAU,wCAerB,CAAC;AAEH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CACpD;AAED,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAA0D,GAC7D,OAAO,CAAC,MAAM,CAAC,CA4HjB;AAED,wBAAgB,eAAe,CAC7B,EAAE,EAAE,KAAK,EACT,KAAK,EAAE,OAAO,EACd,OAAO,GAAE;IAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GACvD,IAAI,CAGN;AA6/ID,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAErD;AAyDD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAchG;AAED,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C,GACA,MAAM,GAAG,IAAI,CAcf;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC,GACA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CA4CA;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,OAAO,EAAE;IACP,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,2BAA2B,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC5D,GACA;IACD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B,CAeA;AAuBD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CAef;AAiFD,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,SAAS,MAAM,EAAE,CAuBnB"}
|
|
@@ -1431,7 +1431,7 @@ async function runRecipeCommand(args, io) {
|
|
|
1431
1431
|
"Usage: gdh run-config list [target]",
|
|
1432
1432
|
"Usage: gdh run-config show [target] <run-config-id>",
|
|
1433
1433
|
"Usage: gdh run-config check [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value]",
|
|
1434
|
-
"Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
|
|
1434
|
+
"Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]",
|
|
1435
1435
|
].join("\n") + "\n");
|
|
1436
1436
|
return 1;
|
|
1437
1437
|
}
|
|
@@ -1849,16 +1849,16 @@ async function runRecipeCheckCommand(args, io) {
|
|
|
1849
1849
|
async function runRecipeRunCommand(args, io) {
|
|
1850
1850
|
if (args.includes("--help")) {
|
|
1851
1851
|
io.stdout.write([
|
|
1852
|
-
"Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
|
|
1852
|
+
"Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]",
|
|
1853
1853
|
"",
|
|
1854
1854
|
"Run one run configuration and print structured process evidence as JSON.",
|
|
1855
1855
|
].join("\n") + "\n");
|
|
1856
1856
|
return 0;
|
|
1857
1857
|
}
|
|
1858
1858
|
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
1859
|
-
usage: "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]\n",
|
|
1859
|
+
usage: "Usage: gdh run-config run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]\n",
|
|
1860
1860
|
optionsWithValues: ["--provider", "--param", "--feature", "--no-feature", "--env"],
|
|
1861
|
-
booleanOptions: ["--live-workspace"],
|
|
1861
|
+
booleanOptions: ["--live-workspace", "--rendered-screenshot"],
|
|
1862
1862
|
});
|
|
1863
1863
|
if (unsupportedOptionsError !== null) {
|
|
1864
1864
|
io.stderr.write(unsupportedOptionsError);
|
|
@@ -1885,6 +1885,7 @@ async function runRecipeRunCommand(args, io) {
|
|
|
1885
1885
|
disabledFeatures: collectOptionValues(args, "--no-feature"),
|
|
1886
1886
|
environment: collectAssignmentOptionValues(args, "--env"),
|
|
1887
1887
|
workspaceMode: args.includes("--live-workspace") ? "live_workspace" : "isolated_copy",
|
|
1888
|
+
screenshotCapture: args.includes("--rendered-screenshot") ? "rendered" : "never",
|
|
1888
1889
|
});
|
|
1889
1890
|
await recordSessionEvent(effectiveTargetPath, {
|
|
1890
1891
|
commandStartedAtMs,
|
|
@@ -2446,14 +2447,14 @@ async function runVerifyDoneCommand(args, io) {
|
|
|
2446
2447
|
async function runVerifyRunCommand(args, io) {
|
|
2447
2448
|
if (args.includes("--help")) {
|
|
2448
2449
|
io.stdout.write([
|
|
2449
|
-
"Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
|
|
2450
|
+
"Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]",
|
|
2450
2451
|
"",
|
|
2451
2452
|
"Execute one verification scenario over a selected run configuration and print the structured run record as JSON.",
|
|
2452
2453
|
].join("\n") + "\n");
|
|
2453
2454
|
return 0;
|
|
2454
2455
|
}
|
|
2455
2456
|
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2456
|
-
usage: "Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]\n",
|
|
2457
|
+
usage: "Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace] [--rendered-screenshot]\n",
|
|
2457
2458
|
optionsWithValues: [
|
|
2458
2459
|
"--verification-scenario",
|
|
2459
2460
|
"--scenario",
|
|
@@ -2463,7 +2464,7 @@ async function runVerifyRunCommand(args, io) {
|
|
|
2463
2464
|
"--no-feature",
|
|
2464
2465
|
"--env",
|
|
2465
2466
|
],
|
|
2466
|
-
booleanOptions: ["--live-workspace"],
|
|
2467
|
+
booleanOptions: ["--live-workspace", "--rendered-screenshot"],
|
|
2467
2468
|
});
|
|
2468
2469
|
if (unsupportedOptionsError !== null) {
|
|
2469
2470
|
io.stderr.write(unsupportedOptionsError);
|
|
@@ -2505,6 +2506,9 @@ async function runVerifyRunCommand(args, io) {
|
|
|
2505
2506
|
disabledFeatures: collectOptionValues(args, "--no-feature"),
|
|
2506
2507
|
environment: collectAssignmentOptionValues(args, "--env"),
|
|
2507
2508
|
workspaceMode: args.includes("--live-workspace") ? "live_workspace" : "isolated_copy",
|
|
2509
|
+
screenshotCapture: args.includes("--rendered-screenshot") || readSingleOptionValue(args, "--provider") === "docker"
|
|
2510
|
+
? "rendered"
|
|
2511
|
+
: "never",
|
|
2508
2512
|
});
|
|
2509
2513
|
await recordSessionEvent(effectiveTargetPath, {
|
|
2510
2514
|
commandStartedAtMs,
|