@skillcap/gdh 3.2.2 → 4.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/INSTALL-BUNDLE.json +1 -1
- package/README.md +6 -5
- package/RELEASE-SPAN-UPDATE-CONTRACTS.json +120 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +0 -2
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/skill-rendering.js +26 -30
- package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
- package/node_modules/@gdh/adapters/package.json +7 -7
- package/node_modules/@gdh/authoring/dist/lsp.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp.js +22 -18
- package/node_modules/@gdh/authoring/dist/lsp.js.map +1 -1
- package/node_modules/@gdh/authoring/package.json +2 -2
- package/node_modules/@gdh/cli/dist/bridge-session.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/bridge-session.js +12 -26
- package/node_modules/@gdh/cli/dist/bridge-session.js.map +1 -1
- package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/index.js +26 -537
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/mcp-cleanup.d.ts +3 -0
- package/node_modules/@gdh/cli/dist/mcp-cleanup.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/mcp-cleanup.js +47 -0
- package/node_modules/@gdh/cli/dist/mcp-cleanup.js.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.js +25 -0
- package/node_modules/@gdh/cli/dist/migrate.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +11 -11
- package/node_modules/@gdh/core/dist/index.d.ts +10 -4
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +9 -11
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/entries/s3c26_to_s3c27_run_game_knowledge.d.ts +3 -0
- package/node_modules/@gdh/core/dist/migrations/entries/s3c26_to_s3c27_run_game_knowledge.d.ts.map +1 -0
- package/node_modules/@gdh/core/dist/migrations/entries/s3c26_to_s3c27_run_game_knowledge.js +91 -0
- package/node_modules/@gdh/core/dist/migrations/entries/s3c26_to_s3c27_run_game_knowledge.js.map +1 -0
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts +7 -2
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js +9 -3
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.d.ts +20 -9
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js +22 -10
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/registry.d.ts +1 -1
- package/node_modules/@gdh/core/dist/migrations/registry.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/registry.js +2 -0
- package/node_modules/@gdh/core/dist/migrations/registry.js.map +1 -1
- package/node_modules/@gdh/core/dist/process-termination.d.ts +29 -0
- package/node_modules/@gdh/core/dist/process-termination.d.ts.map +1 -0
- package/node_modules/@gdh/core/dist/process-termination.js +125 -0
- package/node_modules/@gdh/core/dist/process-termination.js.map +1 -0
- package/node_modules/@gdh/core/dist/run-game-knowledge-scaffold.d.ts +16 -0
- package/node_modules/@gdh/core/dist/run-game-knowledge-scaffold.d.ts.map +1 -0
- package/node_modules/@gdh/core/dist/run-game-knowledge-scaffold.js +89 -0
- package/node_modules/@gdh/core/dist/run-game-knowledge-scaffold.js.map +1 -0
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/guidance.d.ts.map +1 -1
- package/node_modules/@gdh/docs/dist/guidance.js +29 -0
- package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
- package/node_modules/@gdh/docs/dist/templates/guidance/runtime.md.tpl +33 -0
- package/node_modules/@gdh/docs/package.json +2 -2
- package/node_modules/@gdh/editor/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/editor/dist/index.js +38 -2
- package/node_modules/@gdh/editor/dist/index.js.map +1 -1
- package/node_modules/@gdh/editor/package.json +2 -2
- package/node_modules/@gdh/mcp/dist/bridge-tools.d.ts +3 -4
- package/node_modules/@gdh/mcp/dist/bridge-tools.d.ts.map +1 -1
- package/node_modules/@gdh/mcp/dist/bridge-tools.js +5 -77
- package/node_modules/@gdh/mcp/dist/bridge-tools.js.map +1 -1
- package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/mcp/dist/index.js +18 -180
- 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/package.json +2 -2
- package/node_modules/@gdh/runtime/dist/bridge-broker-client.d.ts +1 -0
- package/node_modules/@gdh/runtime/dist/bridge-broker-client.d.ts.map +1 -1
- package/node_modules/@gdh/runtime/dist/bridge-broker-client.js +8 -0
- package/node_modules/@gdh/runtime/dist/bridge-broker-client.js.map +1 -1
- package/node_modules/@gdh/runtime/dist/bridge-broker.d.ts +1 -0
- package/node_modules/@gdh/runtime/dist/bridge-broker.d.ts.map +1 -1
- package/node_modules/@gdh/runtime/dist/bridge-broker.js +63 -17
- package/node_modules/@gdh/runtime/dist/bridge-broker.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 +63 -17
- 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/dist/onboard.d.ts.map +1 -1
- package/node_modules/@gdh/scan/dist/onboard.js +60 -180
- package/node_modules/@gdh/scan/dist/onboard.js.map +1 -1
- package/node_modules/@gdh/scan/package.json +3 -3
- package/node_modules/@gdh/verify/package.json +6 -6
- package/package.json +12 -12
|
@@ -11,9 +11,9 @@ import { fetchOfficialGodotDoc, getGuidanceStatus, resolveGuidanceQuery, searchO
|
|
|
11
11
|
import { inspectEditorBridgeSession, runEditorOperation, } from "@gdh/editor";
|
|
12
12
|
import { createMcpManifest, invokeMcpTool, serveMcpOverStdio } from "@gdh/mcp";
|
|
13
13
|
import { inspectAuthoringEffectiveness, inspectAuthoringSessions, inspectGuidanceAudit, recordAuthoringSessionEvent, } from "@gdh/observability";
|
|
14
|
-
import {
|
|
14
|
+
import { createRuntimeBridgeManager, inspectRuntimeBridgeSurface, installRuntimeBridgeSurface, removeRuntimeBridgeSurface, repairRuntimeBridgeSurface, serveRuntimeBridgeBroker, } from "@gdh/runtime";
|
|
15
15
|
import { applyRepairableOnboardingWrites, onboardGodotProject, persistInventoryForTarget, readInventoryCacheOrScan, scanGodotProjectInventory, } from "@gdh/scan";
|
|
16
|
-
import { exerciseRuntimeCorpusEntry, inspectRuntimeCorpusStatus, inspectRuntimeVerificationBundleState, inspectRuntimeVerificationReadiness,
|
|
16
|
+
import { exerciseRuntimeCorpusEntry, inspectRuntimeCorpusStatus, inspectRuntimeVerificationBundleState, inspectRuntimeVerificationReadiness, materializeRuntimeCorpusEntry, recordRuntimeCorpusValidation, } from "@gdh/verify";
|
|
17
17
|
import { extractPositionalArgs, findUnsupportedOptionsError, parseOptionalPositionalTargetPath, parseSingleTargetPathArg, readSingleOptionValue, } from "./args.js";
|
|
18
18
|
import { runBridgeSessionCommand } from "./bridge-session.js";
|
|
19
19
|
import { formatCliError, writeJsonResult } from "./io.js";
|
|
@@ -108,7 +108,7 @@ export async function runCli(args, io = { stdout: process.stdout, stderr: proces
|
|
|
108
108
|
return runImportsCommand(rest, io);
|
|
109
109
|
}
|
|
110
110
|
if (command === "run-config" || command === "recipe") {
|
|
111
|
-
return
|
|
111
|
+
return runRetiredRunConfigCommand(io);
|
|
112
112
|
}
|
|
113
113
|
if (command === "bridge") {
|
|
114
114
|
return runBridgeCommand(rest, io);
|
|
@@ -117,7 +117,7 @@ export async function runCli(args, io = { stdout: process.stdout, stderr: proces
|
|
|
117
117
|
return runEditorCommand(rest, io);
|
|
118
118
|
}
|
|
119
119
|
if (command === "verification-scenario" || command === "scenario") {
|
|
120
|
-
return
|
|
120
|
+
return runRetiredVerificationScenarioCommand(io);
|
|
121
121
|
}
|
|
122
122
|
if (command === "guidance") {
|
|
123
123
|
return runGuidanceCommand(rest, io);
|
|
@@ -1937,6 +1937,22 @@ async function runAuthoringSliceDoctorCommand(args, io) {
|
|
|
1937
1937
|
return 1;
|
|
1938
1938
|
}
|
|
1939
1939
|
}
|
|
1940
|
+
async function runRetiredRunConfigCommand(io) {
|
|
1941
|
+
io.stderr.write([
|
|
1942
|
+
"The `gdh run-config` command is retired.",
|
|
1943
|
+
"GDH no longer owns project launch orchestration because Godot projects vary too much for a constrained launch API.",
|
|
1944
|
+
"Use the managed `gdh-run-game` agent skill and project-owned `.gdh/runtime-knowledge/run-game.md` guidance instead. Run the project's real command and save useful logs under `.gdh-state/runs/`.",
|
|
1945
|
+
].join("\n") + "\n");
|
|
1946
|
+
return 1;
|
|
1947
|
+
}
|
|
1948
|
+
async function runRetiredVerificationScenarioCommand(io) {
|
|
1949
|
+
io.stderr.write([
|
|
1950
|
+
"The `gdh verification-scenario` command is retired.",
|
|
1951
|
+
"Runtime proof should start from project-owned run guidance and project-native launch commands, not GDH run-config YAML.",
|
|
1952
|
+
"Use `.gdh/runtime-knowledge/run-game.md` to maintain launch knowledge and capture useful evidence under `.gdh-state/runs/`.",
|
|
1953
|
+
].join("\n") + "\n");
|
|
1954
|
+
return 1;
|
|
1955
|
+
}
|
|
1940
1956
|
async function runVerifyCommand(args, io) {
|
|
1941
1957
|
const [subcommand, ...rest] = args;
|
|
1942
1958
|
if (!subcommand || subcommand === "--help" || subcommand === "help") {
|
|
@@ -1944,8 +1960,6 @@ async function runVerifyCommand(args, io) {
|
|
|
1944
1960
|
"Usage: gdh verify <command> [target]",
|
|
1945
1961
|
"",
|
|
1946
1962
|
"Commands:",
|
|
1947
|
-
" run [target] <run-config-id> --verification-scenario <verification-scenario-id>",
|
|
1948
|
-
" Execute one verification scenario over a run configuration and print the structured run record as JSON.",
|
|
1949
1963
|
" inspect [target] [--run-record <run-record-id>]",
|
|
1950
1964
|
" Inspect the latest or selected run record as JSON.",
|
|
1951
1965
|
" readiness [target]",
|
|
@@ -1968,7 +1982,8 @@ async function runVerifyCommand(args, io) {
|
|
|
1968
1982
|
await emitUpdateBannerIfStale(verifyTargetPath, io);
|
|
1969
1983
|
}
|
|
1970
1984
|
if (subcommand === "run") {
|
|
1971
|
-
|
|
1985
|
+
io.stderr.write("The `gdh verify run` command is retired with run configs. Use project-owned run guidance and capture run evidence under `.gdh-state/runs/`.\n");
|
|
1986
|
+
return 1;
|
|
1972
1987
|
}
|
|
1973
1988
|
if (subcommand === "inspect") {
|
|
1974
1989
|
return runVerifyInspectCommand(rest, io);
|
|
@@ -1985,7 +2000,6 @@ async function runVerifyCommand(args, io) {
|
|
|
1985
2000
|
io.stderr.write([
|
|
1986
2001
|
`Unknown verify command: ${subcommand}`,
|
|
1987
2002
|
"",
|
|
1988
|
-
"Usage: gdh verify run [target] <run-config-id> --verification-scenario <verification-scenario-id>",
|
|
1989
2003
|
"Usage: gdh verify inspect [target] [--run-record <run-record-id>]",
|
|
1990
2004
|
"Usage: gdh verify readiness [target]",
|
|
1991
2005
|
"Usage: gdh verify corpus status [--manifest <path>] [--workspace-root <path>]",
|
|
@@ -2037,42 +2051,8 @@ async function runVerifyCorpusCommand(args, io) {
|
|
|
2037
2051
|
return 1;
|
|
2038
2052
|
}
|
|
2039
2053
|
async function runRecipeCommand(args, io) {
|
|
2040
|
-
|
|
2041
|
-
|
|
2042
|
-
io.stdout.write([
|
|
2043
|
-
"Usage: gdh run-config <command> [target] [run-config-id]",
|
|
2044
|
-
"",
|
|
2045
|
-
"Commands:",
|
|
2046
|
-
" list [target] List run configurations discovered under .gdh/run-configurations as JSON.",
|
|
2047
|
-
" show [target] <run-config-id> Show one run configuration as JSON.",
|
|
2048
|
-
" check [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value]",
|
|
2049
|
-
" Evaluate whether a run configuration is runnable, blocked, or misconfigured.",
|
|
2050
|
-
" run [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value] [--live-workspace]",
|
|
2051
|
-
" Run one run configuration and emit structured process evidence.",
|
|
2052
|
-
].join("\n") + "\n");
|
|
2053
|
-
return 0;
|
|
2054
|
-
}
|
|
2055
|
-
if (subcommand === "list") {
|
|
2056
|
-
return runRecipeListCommand(rest, io);
|
|
2057
|
-
}
|
|
2058
|
-
if (subcommand === "show") {
|
|
2059
|
-
return runRecipeShowCommand(rest, io);
|
|
2060
|
-
}
|
|
2061
|
-
if (subcommand === "check") {
|
|
2062
|
-
return runRecipeCheckCommand(rest, io);
|
|
2063
|
-
}
|
|
2064
|
-
if (subcommand === "run") {
|
|
2065
|
-
return runRecipeRunCommand(rest, io);
|
|
2066
|
-
}
|
|
2067
|
-
io.stderr.write([
|
|
2068
|
-
`Unknown run-config command: ${subcommand}`,
|
|
2069
|
-
"",
|
|
2070
|
-
"Usage: gdh run-config list [target]",
|
|
2071
|
-
"Usage: gdh run-config show [target] <run-config-id>",
|
|
2072
|
-
"Usage: gdh run-config check [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value]",
|
|
2073
|
-
"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]",
|
|
2074
|
-
].join("\n") + "\n");
|
|
2075
|
-
return 1;
|
|
2054
|
+
void args;
|
|
2055
|
+
return runRetiredRunConfigCommand(io);
|
|
2076
2056
|
}
|
|
2077
2057
|
async function runBridgeCommand(args, io) {
|
|
2078
2058
|
const [subcommand, ...rest] = args;
|
|
@@ -2121,30 +2101,8 @@ async function runBridgeCommand(args, io) {
|
|
|
2121
2101
|
return 1;
|
|
2122
2102
|
}
|
|
2123
2103
|
async function runScenarioCommand(args, io) {
|
|
2124
|
-
|
|
2125
|
-
|
|
2126
|
-
io.stdout.write([
|
|
2127
|
-
"Usage: gdh verification-scenario <command> [target] [verification-scenario-id]",
|
|
2128
|
-
"",
|
|
2129
|
-
"Commands:",
|
|
2130
|
-
" list [target] List verification scenarios discovered under .gdh/verification-scenarios as JSON.",
|
|
2131
|
-
" show [target] <verification-scenario-id> Show one verification scenario as JSON.",
|
|
2132
|
-
].join("\n") + "\n");
|
|
2133
|
-
return 0;
|
|
2134
|
-
}
|
|
2135
|
-
if (subcommand === "list") {
|
|
2136
|
-
return runScenarioListCommand(rest, io);
|
|
2137
|
-
}
|
|
2138
|
-
if (subcommand === "show") {
|
|
2139
|
-
return runScenarioShowCommand(rest, io);
|
|
2140
|
-
}
|
|
2141
|
-
io.stderr.write([
|
|
2142
|
-
`Unknown verification-scenario command: ${subcommand}`,
|
|
2143
|
-
"",
|
|
2144
|
-
"Usage: gdh verification-scenario list [target]",
|
|
2145
|
-
"Usage: gdh verification-scenario show [target] <verification-scenario-id>",
|
|
2146
|
-
].join("\n") + "\n");
|
|
2147
|
-
return 1;
|
|
2104
|
+
void args;
|
|
2105
|
+
return runRetiredVerificationScenarioCommand(io);
|
|
2148
2106
|
}
|
|
2149
2107
|
async function runMigrateCommand(args, io) {
|
|
2150
2108
|
if (args.includes("--help")) {
|
|
@@ -2547,359 +2505,6 @@ async function runBridgeApplyCommand(args, io, operation) {
|
|
|
2547
2505
|
return 1;
|
|
2548
2506
|
}
|
|
2549
2507
|
}
|
|
2550
|
-
async function runRecipeListCommand(args, io) {
|
|
2551
|
-
if (args.includes("--help")) {
|
|
2552
|
-
io.stdout.write([
|
|
2553
|
-
"Usage: gdh run-config list [target]",
|
|
2554
|
-
"",
|
|
2555
|
-
"List run configurations discovered under .gdh/run-configurations and print a JSON summary.",
|
|
2556
|
-
].join("\n") + "\n");
|
|
2557
|
-
return 0;
|
|
2558
|
-
}
|
|
2559
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2560
|
-
usage: "Usage: gdh run-config list [target]\n",
|
|
2561
|
-
});
|
|
2562
|
-
if (unsupportedOptionsError !== null) {
|
|
2563
|
-
io.stderr.write(unsupportedOptionsError);
|
|
2564
|
-
return 1;
|
|
2565
|
-
}
|
|
2566
|
-
const { targetPath, error: targetPathError } = parseOptionalPositionalTargetPath(args, {
|
|
2567
|
-
usage: "Usage: gdh run-config list [target]\n",
|
|
2568
|
-
additionalOptionsWithValues: new Set([
|
|
2569
|
-
"--provider",
|
|
2570
|
-
"--param",
|
|
2571
|
-
"--feature",
|
|
2572
|
-
"--no-feature",
|
|
2573
|
-
"--env",
|
|
2574
|
-
]),
|
|
2575
|
-
});
|
|
2576
|
-
if (targetPathError !== null) {
|
|
2577
|
-
io.stderr.write(targetPathError);
|
|
2578
|
-
return 1;
|
|
2579
|
-
}
|
|
2580
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
2581
|
-
const commandStartedAtMs = Date.now();
|
|
2582
|
-
try {
|
|
2583
|
-
const projectConfig = await readProjectConfig(effectiveTargetPath);
|
|
2584
|
-
const result = await listRuntimeRecipes({
|
|
2585
|
-
targetPath: effectiveTargetPath,
|
|
2586
|
-
projectConfig,
|
|
2587
|
-
});
|
|
2588
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2589
|
-
commandStartedAtMs,
|
|
2590
|
-
kind: "recipe_list",
|
|
2591
|
-
command: "gdh run-config list",
|
|
2592
|
-
state: result.state === "ready" ? "succeeded" : "blocked",
|
|
2593
|
-
summary: result.summary,
|
|
2594
|
-
});
|
|
2595
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
2596
|
-
return 0;
|
|
2597
|
-
}
|
|
2598
|
-
catch (error) {
|
|
2599
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2600
|
-
commandStartedAtMs,
|
|
2601
|
-
kind: "recipe_list",
|
|
2602
|
-
command: "gdh run-config list",
|
|
2603
|
-
state: "failed",
|
|
2604
|
-
summary: "Run-configuration listing failed before producing a result.",
|
|
2605
|
-
errorMessage: formatCliError(error),
|
|
2606
|
-
});
|
|
2607
|
-
io.stderr.write(`Failed to list run configurations for "${targetPath}": ${formatCliError(error)}\n`);
|
|
2608
|
-
return 1;
|
|
2609
|
-
}
|
|
2610
|
-
}
|
|
2611
|
-
async function runRecipeShowCommand(args, io) {
|
|
2612
|
-
if (args.includes("--help")) {
|
|
2613
|
-
io.stdout.write([
|
|
2614
|
-
"Usage: gdh run-config show [target] <run-config-id>",
|
|
2615
|
-
"",
|
|
2616
|
-
"Show one run configuration and print the parsed result as JSON.",
|
|
2617
|
-
].join("\n") + "\n");
|
|
2618
|
-
return 0;
|
|
2619
|
-
}
|
|
2620
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2621
|
-
usage: "Usage: gdh run-config show [target] <run-config-id>\n",
|
|
2622
|
-
});
|
|
2623
|
-
if (unsupportedOptionsError !== null) {
|
|
2624
|
-
io.stderr.write(unsupportedOptionsError);
|
|
2625
|
-
return 1;
|
|
2626
|
-
}
|
|
2627
|
-
const positionalArgs = extractRecipePositionalArgs(args);
|
|
2628
|
-
if (positionalArgs.length === 0 || positionalArgs.length > 2) {
|
|
2629
|
-
io.stderr.write("Usage error: gdh run-config show requires <run-config-id> and accepts at most one positional target path.\n");
|
|
2630
|
-
return 1;
|
|
2631
|
-
}
|
|
2632
|
-
const targetPath = positionalArgs.length === 1 ? "." : positionalArgs[0];
|
|
2633
|
-
const recipeId = positionalArgs.length === 1 ? positionalArgs[0] : positionalArgs[1];
|
|
2634
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
2635
|
-
const commandStartedAtMs = Date.now();
|
|
2636
|
-
try {
|
|
2637
|
-
const projectConfig = await readProjectConfig(effectiveTargetPath);
|
|
2638
|
-
const result = await showRuntimeRecipe({
|
|
2639
|
-
targetPath: effectiveTargetPath,
|
|
2640
|
-
projectConfig,
|
|
2641
|
-
recipeId,
|
|
2642
|
-
});
|
|
2643
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2644
|
-
commandStartedAtMs,
|
|
2645
|
-
kind: "recipe_show",
|
|
2646
|
-
command: "gdh run-config show",
|
|
2647
|
-
state: result.state === "ready" ? "succeeded" : "blocked",
|
|
2648
|
-
summary: result.summary,
|
|
2649
|
-
});
|
|
2650
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
2651
|
-
return result.state === "ready" ? 0 : 1;
|
|
2652
|
-
}
|
|
2653
|
-
catch (error) {
|
|
2654
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2655
|
-
commandStartedAtMs,
|
|
2656
|
-
kind: "recipe_show",
|
|
2657
|
-
command: "gdh run-config show",
|
|
2658
|
-
state: "failed",
|
|
2659
|
-
summary: "Run-configuration inspection failed before producing a result.",
|
|
2660
|
-
errorMessage: formatCliError(error),
|
|
2661
|
-
});
|
|
2662
|
-
io.stderr.write(`Failed to show run configuration "${recipeId}" for "${targetPath}": ${formatCliError(error)}\n`);
|
|
2663
|
-
return 1;
|
|
2664
|
-
}
|
|
2665
|
-
}
|
|
2666
|
-
async function runRecipeCheckCommand(args, io) {
|
|
2667
|
-
if (args.includes("--help")) {
|
|
2668
|
-
io.stdout.write([
|
|
2669
|
-
"Usage: gdh run-config check [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value]",
|
|
2670
|
-
"",
|
|
2671
|
-
"Check whether a run configuration is runnable, blocked, or misconfigured and print the structured result as JSON.",
|
|
2672
|
-
].join("\n") + "\n");
|
|
2673
|
-
return 0;
|
|
2674
|
-
}
|
|
2675
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2676
|
-
usage: "Usage: gdh run-config check [target] <run-config-id> [--provider <id>] [--param key=value] [--feature <id>] [--no-feature <id>] [--env NAME=value]\n",
|
|
2677
|
-
optionsWithValues: ["--provider", "--param", "--feature", "--no-feature", "--env"],
|
|
2678
|
-
});
|
|
2679
|
-
if (unsupportedOptionsError !== null) {
|
|
2680
|
-
io.stderr.write(unsupportedOptionsError);
|
|
2681
|
-
return 1;
|
|
2682
|
-
}
|
|
2683
|
-
const positionalArgs = extractRecipePositionalArgs(args);
|
|
2684
|
-
if (positionalArgs.length === 0 || positionalArgs.length > 2) {
|
|
2685
|
-
io.stderr.write("Usage error: gdh run-config check requires <run-config-id> and accepts at most one positional target path.\n");
|
|
2686
|
-
return 1;
|
|
2687
|
-
}
|
|
2688
|
-
const targetPath = positionalArgs.length === 1 ? "." : positionalArgs[0];
|
|
2689
|
-
const recipeId = positionalArgs.length === 1 ? positionalArgs[0] : positionalArgs[1];
|
|
2690
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
2691
|
-
const commandStartedAtMs = Date.now();
|
|
2692
|
-
try {
|
|
2693
|
-
const projectConfig = await readProjectConfig(effectiveTargetPath);
|
|
2694
|
-
const result = await checkRuntimeRecipe({
|
|
2695
|
-
targetPath: effectiveTargetPath,
|
|
2696
|
-
projectConfig,
|
|
2697
|
-
recipeId,
|
|
2698
|
-
provider: readSingleOptionValue(args, "--provider"),
|
|
2699
|
-
parameters: collectAssignmentOptionValues(args, "--param"),
|
|
2700
|
-
enabledFeatures: collectOptionValues(args, "--feature"),
|
|
2701
|
-
disabledFeatures: collectOptionValues(args, "--no-feature"),
|
|
2702
|
-
environment: collectAssignmentOptionValues(args, "--env"),
|
|
2703
|
-
workspaceMode: "isolated_copy",
|
|
2704
|
-
});
|
|
2705
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2706
|
-
commandStartedAtMs,
|
|
2707
|
-
kind: "recipe_check",
|
|
2708
|
-
command: "gdh run-config check",
|
|
2709
|
-
state: result.state === "runnable" ? "succeeded" : "blocked",
|
|
2710
|
-
summary: result.summary,
|
|
2711
|
-
});
|
|
2712
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
2713
|
-
return result.state === "runnable" ? 0 : 1;
|
|
2714
|
-
}
|
|
2715
|
-
catch (error) {
|
|
2716
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2717
|
-
commandStartedAtMs,
|
|
2718
|
-
kind: "recipe_check",
|
|
2719
|
-
command: "gdh run-config check",
|
|
2720
|
-
state: "failed",
|
|
2721
|
-
summary: "Run-configuration readiness evaluation failed before producing a result.",
|
|
2722
|
-
errorMessage: formatCliError(error),
|
|
2723
|
-
});
|
|
2724
|
-
io.stderr.write(`Failed to check run configuration "${recipeId}" for "${targetPath}": ${formatCliError(error)}\n`);
|
|
2725
|
-
return 1;
|
|
2726
|
-
}
|
|
2727
|
-
}
|
|
2728
|
-
async function runRecipeRunCommand(args, io) {
|
|
2729
|
-
if (args.includes("--help")) {
|
|
2730
|
-
io.stdout.write([
|
|
2731
|
-
"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]",
|
|
2732
|
-
"",
|
|
2733
|
-
"Run one run configuration and print structured process evidence as JSON.",
|
|
2734
|
-
].join("\n") + "\n");
|
|
2735
|
-
return 0;
|
|
2736
|
-
}
|
|
2737
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2738
|
-
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",
|
|
2739
|
-
optionsWithValues: ["--provider", "--param", "--feature", "--no-feature", "--env"],
|
|
2740
|
-
booleanOptions: ["--live-workspace", "--rendered-screenshot"],
|
|
2741
|
-
});
|
|
2742
|
-
if (unsupportedOptionsError !== null) {
|
|
2743
|
-
io.stderr.write(unsupportedOptionsError);
|
|
2744
|
-
return 1;
|
|
2745
|
-
}
|
|
2746
|
-
const positionalArgs = extractRecipePositionalArgs(args);
|
|
2747
|
-
if (positionalArgs.length === 0 || positionalArgs.length > 2) {
|
|
2748
|
-
io.stderr.write("Usage error: gdh run-config run requires <run-config-id> and accepts at most one positional target path.\n");
|
|
2749
|
-
return 1;
|
|
2750
|
-
}
|
|
2751
|
-
const targetPath = positionalArgs.length === 1 ? "." : positionalArgs[0];
|
|
2752
|
-
const recipeId = positionalArgs.length === 1 ? positionalArgs[0] : positionalArgs[1];
|
|
2753
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
2754
|
-
const commandStartedAtMs = Date.now();
|
|
2755
|
-
try {
|
|
2756
|
-
const projectConfig = await readProjectConfig(effectiveTargetPath);
|
|
2757
|
-
const result = await runRuntimeRecipe({
|
|
2758
|
-
targetPath: effectiveTargetPath,
|
|
2759
|
-
projectConfig,
|
|
2760
|
-
recipeId,
|
|
2761
|
-
provider: readSingleOptionValue(args, "--provider"),
|
|
2762
|
-
parameters: collectAssignmentOptionValues(args, "--param"),
|
|
2763
|
-
enabledFeatures: collectOptionValues(args, "--feature"),
|
|
2764
|
-
disabledFeatures: collectOptionValues(args, "--no-feature"),
|
|
2765
|
-
environment: collectAssignmentOptionValues(args, "--env"),
|
|
2766
|
-
workspaceMode: args.includes("--live-workspace") ? "live_workspace" : "isolated_copy",
|
|
2767
|
-
screenshotCapture: args.includes("--rendered-screenshot") ? "rendered" : "never",
|
|
2768
|
-
});
|
|
2769
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2770
|
-
commandStartedAtMs,
|
|
2771
|
-
kind: "recipe_run",
|
|
2772
|
-
command: "gdh run-config run",
|
|
2773
|
-
state: result.state === "passed" ? "succeeded" : result.state === "blocked" ? "blocked" : "failed",
|
|
2774
|
-
summary: result.summary,
|
|
2775
|
-
producedArtifacts: result.artifacts.map((entry) => entry.path),
|
|
2776
|
-
});
|
|
2777
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
2778
|
-
return result.state === "passed" ? 0 : 1;
|
|
2779
|
-
}
|
|
2780
|
-
catch (error) {
|
|
2781
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2782
|
-
commandStartedAtMs,
|
|
2783
|
-
kind: "recipe_run",
|
|
2784
|
-
command: "gdh run-config run",
|
|
2785
|
-
state: "failed",
|
|
2786
|
-
summary: "Run-configuration execution failed before producing a result.",
|
|
2787
|
-
errorMessage: formatCliError(error),
|
|
2788
|
-
});
|
|
2789
|
-
io.stderr.write(`Failed to run run configuration "${recipeId}" for "${targetPath}": ${formatCliError(error)}\n`);
|
|
2790
|
-
return 1;
|
|
2791
|
-
}
|
|
2792
|
-
}
|
|
2793
|
-
async function runScenarioListCommand(args, io) {
|
|
2794
|
-
if (args.includes("--help")) {
|
|
2795
|
-
io.stdout.write([
|
|
2796
|
-
"Usage: gdh verification-scenario list [target]",
|
|
2797
|
-
"",
|
|
2798
|
-
"List verification scenarios discovered under .gdh/verification-scenarios and print a JSON summary.",
|
|
2799
|
-
].join("\n") + "\n");
|
|
2800
|
-
return 0;
|
|
2801
|
-
}
|
|
2802
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2803
|
-
usage: "Usage: gdh verification-scenario list [target]\n",
|
|
2804
|
-
});
|
|
2805
|
-
if (unsupportedOptionsError !== null) {
|
|
2806
|
-
io.stderr.write(unsupportedOptionsError);
|
|
2807
|
-
return 1;
|
|
2808
|
-
}
|
|
2809
|
-
const { targetPath, error: targetPathError } = parseOptionalPositionalTargetPath(args, {
|
|
2810
|
-
usage: "Usage: gdh verification-scenario list [target]\n",
|
|
2811
|
-
additionalOptionsWithValues: new Set([
|
|
2812
|
-
"--provider",
|
|
2813
|
-
"--param",
|
|
2814
|
-
"--feature",
|
|
2815
|
-
"--no-feature",
|
|
2816
|
-
"--env",
|
|
2817
|
-
]),
|
|
2818
|
-
});
|
|
2819
|
-
if (targetPathError !== null) {
|
|
2820
|
-
io.stderr.write(targetPathError);
|
|
2821
|
-
return 1;
|
|
2822
|
-
}
|
|
2823
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
2824
|
-
const commandStartedAtMs = Date.now();
|
|
2825
|
-
try {
|
|
2826
|
-
const result = await listRuntimeScenarios({ targetPath: effectiveTargetPath });
|
|
2827
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2828
|
-
commandStartedAtMs,
|
|
2829
|
-
kind: "scenario_list",
|
|
2830
|
-
command: "gdh verification-scenario list",
|
|
2831
|
-
state: result.state === "ready" ? "succeeded" : "blocked",
|
|
2832
|
-
summary: result.summary,
|
|
2833
|
-
});
|
|
2834
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
2835
|
-
return result.state === "ready" ? 0 : 1;
|
|
2836
|
-
}
|
|
2837
|
-
catch (error) {
|
|
2838
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2839
|
-
commandStartedAtMs,
|
|
2840
|
-
kind: "scenario_list",
|
|
2841
|
-
command: "gdh verification-scenario list",
|
|
2842
|
-
state: "failed",
|
|
2843
|
-
summary: "Verification-scenario listing failed before producing a result.",
|
|
2844
|
-
errorMessage: formatCliError(error),
|
|
2845
|
-
});
|
|
2846
|
-
io.stderr.write(`Failed to list verification scenarios for "${targetPath}": ${formatCliError(error)}\n`);
|
|
2847
|
-
return 1;
|
|
2848
|
-
}
|
|
2849
|
-
}
|
|
2850
|
-
async function runScenarioShowCommand(args, io) {
|
|
2851
|
-
if (args.includes("--help")) {
|
|
2852
|
-
io.stdout.write([
|
|
2853
|
-
"Usage: gdh verification-scenario show [target] <verification-scenario-id>",
|
|
2854
|
-
"",
|
|
2855
|
-
"Show one verification scenario and print the parsed result as JSON.",
|
|
2856
|
-
].join("\n") + "\n");
|
|
2857
|
-
return 0;
|
|
2858
|
-
}
|
|
2859
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
2860
|
-
usage: "Usage: gdh verification-scenario show [target] <verification-scenario-id>\n",
|
|
2861
|
-
});
|
|
2862
|
-
if (unsupportedOptionsError !== null) {
|
|
2863
|
-
io.stderr.write(unsupportedOptionsError);
|
|
2864
|
-
return 1;
|
|
2865
|
-
}
|
|
2866
|
-
const positionalArgs = extractRecipePositionalArgs(args);
|
|
2867
|
-
if (positionalArgs.length === 0 || positionalArgs.length > 2) {
|
|
2868
|
-
io.stderr.write("Usage error: gdh verification-scenario show requires <verification-scenario-id> and accepts at most one positional target path.\n");
|
|
2869
|
-
return 1;
|
|
2870
|
-
}
|
|
2871
|
-
const targetPath = positionalArgs.length === 1 ? "." : positionalArgs[0];
|
|
2872
|
-
const scenarioId = positionalArgs.length === 1 ? positionalArgs[0] : positionalArgs[1];
|
|
2873
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
2874
|
-
const commandStartedAtMs = Date.now();
|
|
2875
|
-
try {
|
|
2876
|
-
const result = await showRuntimeScenario({
|
|
2877
|
-
targetPath: effectiveTargetPath,
|
|
2878
|
-
scenarioId,
|
|
2879
|
-
});
|
|
2880
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2881
|
-
commandStartedAtMs,
|
|
2882
|
-
kind: "scenario_show",
|
|
2883
|
-
command: "gdh verification-scenario show",
|
|
2884
|
-
state: result.state === "ready" ? "succeeded" : "blocked",
|
|
2885
|
-
summary: result.summary,
|
|
2886
|
-
});
|
|
2887
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
2888
|
-
return result.state === "ready" ? 0 : 1;
|
|
2889
|
-
}
|
|
2890
|
-
catch (error) {
|
|
2891
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
2892
|
-
commandStartedAtMs,
|
|
2893
|
-
kind: "scenario_show",
|
|
2894
|
-
command: "gdh verification-scenario show",
|
|
2895
|
-
state: "failed",
|
|
2896
|
-
summary: "Verification-scenario inspection failed before producing a result.",
|
|
2897
|
-
errorMessage: formatCliError(error),
|
|
2898
|
-
});
|
|
2899
|
-
io.stderr.write(`Failed to show verification scenario "${scenarioId}" for "${targetPath}": ${formatCliError(error)}\n`);
|
|
2900
|
-
return 1;
|
|
2901
|
-
}
|
|
2902
|
-
}
|
|
2903
2508
|
async function runAdaptersStatusCommand(args, io) {
|
|
2904
2509
|
if (args.includes("--help")) {
|
|
2905
2510
|
io.stdout.write([
|
|
@@ -3187,101 +2792,6 @@ async function buildAuthoringContext(targetPath, io) {
|
|
|
3187
2792
|
status,
|
|
3188
2793
|
};
|
|
3189
2794
|
}
|
|
3190
|
-
async function runVerifyRunCommand(args, io) {
|
|
3191
|
-
if (args.includes("--help")) {
|
|
3192
|
-
io.stdout.write([
|
|
3193
|
-
"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]",
|
|
3194
|
-
"",
|
|
3195
|
-
"Execute one verification scenario over a selected run configuration and print the structured run record as JSON.",
|
|
3196
|
-
].join("\n") + "\n");
|
|
3197
|
-
return 0;
|
|
3198
|
-
}
|
|
3199
|
-
const unsupportedOptionsError = findUnsupportedOptionsError(args, {
|
|
3200
|
-
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",
|
|
3201
|
-
optionsWithValues: [
|
|
3202
|
-
"--verification-scenario",
|
|
3203
|
-
"--scenario",
|
|
3204
|
-
"--provider",
|
|
3205
|
-
"--param",
|
|
3206
|
-
"--feature",
|
|
3207
|
-
"--no-feature",
|
|
3208
|
-
"--env",
|
|
3209
|
-
],
|
|
3210
|
-
booleanOptions: ["--live-workspace", "--rendered-screenshot"],
|
|
3211
|
-
});
|
|
3212
|
-
if (unsupportedOptionsError !== null) {
|
|
3213
|
-
io.stderr.write(unsupportedOptionsError);
|
|
3214
|
-
return 1;
|
|
3215
|
-
}
|
|
3216
|
-
const positionalArgs = extractPositionalArgs(args, new Set([
|
|
3217
|
-
"--verification-scenario",
|
|
3218
|
-
"--scenario",
|
|
3219
|
-
"--provider",
|
|
3220
|
-
"--param",
|
|
3221
|
-
"--feature",
|
|
3222
|
-
"--no-feature",
|
|
3223
|
-
"--env",
|
|
3224
|
-
]));
|
|
3225
|
-
if (positionalArgs.length === 0 || positionalArgs.length > 2) {
|
|
3226
|
-
io.stderr.write("Usage error: gdh verify run requires <run-config-id> and accepts at most one positional target path.\n");
|
|
3227
|
-
return 1;
|
|
3228
|
-
}
|
|
3229
|
-
const scenarioId = readSingleOptionValue(args, "--verification-scenario") ??
|
|
3230
|
-
readSingleOptionValue(args, "--scenario");
|
|
3231
|
-
if (!scenarioId) {
|
|
3232
|
-
io.stderr.write("Usage error: gdh verify run requires --verification-scenario <verification-scenario-id>.\n");
|
|
3233
|
-
return 1;
|
|
3234
|
-
}
|
|
3235
|
-
const targetPath = positionalArgs.length === 1 ? "." : positionalArgs[0];
|
|
3236
|
-
const recipeId = positionalArgs.length === 1 ? positionalArgs[0] : positionalArgs[1];
|
|
3237
|
-
const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
|
|
3238
|
-
const commandStartedAtMs = Date.now();
|
|
3239
|
-
try {
|
|
3240
|
-
const projectConfig = await readProjectConfig(effectiveTargetPath);
|
|
3241
|
-
const result = await runRuntimeVerificationScenario({
|
|
3242
|
-
targetPath: effectiveTargetPath,
|
|
3243
|
-
projectConfig,
|
|
3244
|
-
recipeId,
|
|
3245
|
-
scenarioId,
|
|
3246
|
-
provider: readSingleOptionValue(args, "--provider"),
|
|
3247
|
-
parameters: collectAssignmentOptionValues(args, "--param"),
|
|
3248
|
-
enabledFeatures: collectOptionValues(args, "--feature"),
|
|
3249
|
-
disabledFeatures: collectOptionValues(args, "--no-feature"),
|
|
3250
|
-
environment: collectAssignmentOptionValues(args, "--env"),
|
|
3251
|
-
workspaceMode: args.includes("--live-workspace") ? "live_workspace" : "isolated_copy",
|
|
3252
|
-
screenshotCapture: args.includes("--rendered-screenshot") ||
|
|
3253
|
-
readSingleOptionValue(args, "--provider") === "docker"
|
|
3254
|
-
? "rendered"
|
|
3255
|
-
: "never",
|
|
3256
|
-
});
|
|
3257
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
3258
|
-
commandStartedAtMs,
|
|
3259
|
-
kind: "verify_run",
|
|
3260
|
-
command: "gdh verify run",
|
|
3261
|
-
state: result.outcome === "passed" || result.outcome === "flaky"
|
|
3262
|
-
? "succeeded"
|
|
3263
|
-
: result.outcome === "blocked"
|
|
3264
|
-
? "blocked"
|
|
3265
|
-
: "failed",
|
|
3266
|
-
summary: result.summary,
|
|
3267
|
-
producedArtifacts: result.artifacts.map((entry) => entry.path),
|
|
3268
|
-
});
|
|
3269
|
-
writeJsonResult(io, result, { presentRuntimeTerms: true });
|
|
3270
|
-
return result.outcome === "passed" || result.outcome === "flaky" ? 0 : 1;
|
|
3271
|
-
}
|
|
3272
|
-
catch (error) {
|
|
3273
|
-
await recordSessionEvent(effectiveTargetPath, {
|
|
3274
|
-
commandStartedAtMs,
|
|
3275
|
-
kind: "verify_run",
|
|
3276
|
-
command: "gdh verify run",
|
|
3277
|
-
state: "failed",
|
|
3278
|
-
summary: "Verification-scenario execution failed before producing a result.",
|
|
3279
|
-
errorMessage: formatCliError(error),
|
|
3280
|
-
});
|
|
3281
|
-
io.stderr.write(`Failed to run runtime verification for "${targetPath}": ${formatCliError(error)}\n`);
|
|
3282
|
-
return 1;
|
|
3283
|
-
}
|
|
3284
|
-
}
|
|
3285
2795
|
async function runVerifyInspectCommand(args, io) {
|
|
3286
2796
|
if (args.includes("--help")) {
|
|
3287
2797
|
io.stdout.write([
|
|
@@ -4634,10 +4144,6 @@ function renderHelp() {
|
|
|
4634
4144
|
" warmup [target] [--dry-run] Inspect or apply authoring worktree warmup.",
|
|
4635
4145
|
" target prepare [target] [--source-target <path>] [--dry-run] Prepare target-local generated/import state.",
|
|
4636
4146
|
" imports refresh [target] [--dry-run] Run or plan a headless Godot import refresh.",
|
|
4637
|
-
" run-config list [target] List run configurations.",
|
|
4638
|
-
" run-config show [target] <run-config-id> Show one run configuration.",
|
|
4639
|
-
" run-config check [target] <run-config-id> Evaluate run-configuration readiness.",
|
|
4640
|
-
" run-config run [target] <run-config-id> Execute one run configuration.",
|
|
4641
4147
|
" bridge status [target] Inspect the managed runtime bridge lifecycle state.",
|
|
4642
4148
|
" bridge session <command> [target] Operate broker-owned runtime bridge sessions.",
|
|
4643
4149
|
" bridge doctor [target] Alias for bridge status.",
|
|
@@ -4646,8 +4152,6 @@ function renderHelp() {
|
|
|
4646
4152
|
" bridge remove [target] [--dry-run] Remove the GDH-managed runtime bridge surface.",
|
|
4647
4153
|
" editor session status [target] Inspect Editor Bridge availability for the exact target/worktree.",
|
|
4648
4154
|
" editor operation run [target] --input-json <json> Run one Godot-native editor operation.",
|
|
4649
|
-
" verification-scenario list [target] List verification scenarios.",
|
|
4650
|
-
" verification-scenario show [target] <verification-scenario-id> Show one verification scenario.",
|
|
4651
4155
|
" guidance status [target] Inspect durable guidance and audit availability.",
|
|
4652
4156
|
" guidance resolve [target] Resolve eligible deeper guidance units.",
|
|
4653
4157
|
" guidance audit [target] Inspect stored guidance-audit history.",
|
|
@@ -4658,7 +4162,6 @@ function renderHelp() {
|
|
|
4658
4162
|
" mcp serve --target <path> Run the real GDH stdio MCP server.",
|
|
4659
4163
|
" mcp cleanup [--target <path>] [--apply] List or stop stale target-owned GDH MCP processes.",
|
|
4660
4164
|
" mcp invoke <tool> [target] [--input-json <json>] Invoke one GDH MCP tool.",
|
|
4661
|
-
" verify run [target] <run-config-id> --verification-scenario <verification-scenario-id> Execute one verification scenario.",
|
|
4662
4165
|
" verify inspect [target] [--run-record <run-record-id>] Inspect one run record.",
|
|
4663
4166
|
" verify readiness [target] Summarize runtime verification readiness and recurring runtime feedback.",
|
|
4664
4167
|
" verify corpus status Inspect runtime corpus release-readiness evidence.",
|
|
@@ -4742,17 +4245,6 @@ function stripVariadicOptions(args, variadicOptions) {
|
|
|
4742
4245
|
}
|
|
4743
4246
|
return filteredArgs;
|
|
4744
4247
|
}
|
|
4745
|
-
function collectAssignmentOptionValues(args, optionName) {
|
|
4746
|
-
const assignments = {};
|
|
4747
|
-
for (const value of collectOptionValues(args, optionName)) {
|
|
4748
|
-
const separatorIndex = value.indexOf("=");
|
|
4749
|
-
if (separatorIndex <= 0 || separatorIndex === value.length - 1) {
|
|
4750
|
-
continue;
|
|
4751
|
-
}
|
|
4752
|
-
assignments[value.slice(0, separatorIndex)] = value.slice(separatorIndex + 1);
|
|
4753
|
-
}
|
|
4754
|
-
return assignments;
|
|
4755
|
-
}
|
|
4756
4248
|
function parsePositiveIntegerOptionValue(value) {
|
|
4757
4249
|
if (!/^\d+$/.test(value)) {
|
|
4758
4250
|
return null;
|
|
@@ -4853,7 +4345,4 @@ function deriveGuidanceRepoState(context) {
|
|
|
4853
4345
|
}
|
|
4854
4346
|
return [...repoState];
|
|
4855
4347
|
}
|
|
4856
|
-
function extractRecipePositionalArgs(args) {
|
|
4857
|
-
return extractPositionalArgs(args, new Set(["--provider", "--param", "--feature", "--no-feature", "--env"]));
|
|
4858
|
-
}
|
|
4859
4348
|
//# sourceMappingURL=index.js.map
|