@skillcap/gdh 0.9.0 → 0.11.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 +12 -5
- package/RELEASE-SPAN-UPDATE-CONTRACTS.json +660 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +92 -22
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- 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.js +1 -1
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts +10 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.js +141 -23
- package/node_modules/@gdh/cli/dist/migrate.js.map +1 -1
- package/node_modules/@gdh/cli/dist/self-update.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/self-update.js +212 -22
- package/node_modules/@gdh/cli/dist/self-update.js.map +1 -1
- package/node_modules/@gdh/cli/dist/setup.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/setup.js +2 -22
- package/node_modules/@gdh/cli/dist/setup.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +19 -1
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +3 -0
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/dist/managed-gitignore.d.ts +11 -0
- package/node_modules/@gdh/core/dist/managed-gitignore.d.ts.map +1 -0
- package/node_modules/@gdh/core/dist/managed-gitignore.js +84 -0
- package/node_modules/@gdh/core/dist/managed-gitignore.js.map +1 -0
- package/node_modules/@gdh/core/dist/release-span-preview.d.ts +45 -0
- package/node_modules/@gdh/core/dist/release-span-preview.d.ts.map +1 -0
- package/node_modules/@gdh/core/dist/release-span-preview.js +147 -0
- package/node_modules/@gdh/core/dist/release-span-preview.js.map +1 -0
- package/node_modules/@gdh/core/dist/release-span-update-contract.d.ts +33 -0
- package/node_modules/@gdh/core/dist/release-span-update-contract.d.ts.map +1 -0
- package/node_modules/@gdh/core/dist/release-span-update-contract.js +138 -0
- package/node_modules/@gdh/core/dist/release-span-update-contract.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 +10 -4
- 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/package.json +8 -8
- package/node_modules/@gdh/observability/package.json +2 -2
- package/node_modules/@gdh/runtime/package.json +2 -2
- package/node_modules/@gdh/scan/dist/index.d.ts +5 -5
- package/node_modules/@gdh/scan/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/scan/dist/index.js +5 -4
- package/node_modules/@gdh/scan/dist/index.js.map +1 -1
- package/node_modules/@gdh/scan/dist/onboard.d.ts +2 -0
- package/node_modules/@gdh/scan/dist/onboard.d.ts.map +1 -1
- package/node_modules/@gdh/scan/dist/onboard.js +33 -6
- 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 +7 -7
- package/package.json +12 -11
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { isNewerGdhVersion } from "./update-probe.js";
|
|
2
|
+
import { readReleaseSpanUpdateContracts, } from "./release-span-update-contract.js";
|
|
3
|
+
export function resolveReleaseSpanPreview(input) {
|
|
4
|
+
const asset = input.asset ?? readReleaseSpanUpdateContracts(input.startUrl);
|
|
5
|
+
const orderingIssues = validateReleaseOrdering(asset.releases);
|
|
6
|
+
if (orderingIssues.length > 0) {
|
|
7
|
+
return blockedPreview({
|
|
8
|
+
code: "contradictory_release_metadata",
|
|
9
|
+
currentVersion: input.currentVersion,
|
|
10
|
+
targetVersion: input.targetVersion,
|
|
11
|
+
issues: orderingIssues,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const releaseIndex = new Map(asset.releases.map((entry, index) => [entry.version, index]));
|
|
15
|
+
const currentIndex = releaseIndex.get(input.currentVersion);
|
|
16
|
+
if (currentIndex === undefined) {
|
|
17
|
+
return blockedPreview({
|
|
18
|
+
code: "missing_span_entry",
|
|
19
|
+
currentVersion: input.currentVersion,
|
|
20
|
+
targetVersion: input.targetVersion,
|
|
21
|
+
issues: [
|
|
22
|
+
`Current pinned version ${input.currentVersion} is missing from packaged release-span metadata.`,
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
const targetIndex = releaseIndex.get(input.targetVersion);
|
|
27
|
+
if (targetIndex === undefined) {
|
|
28
|
+
return blockedPreview({
|
|
29
|
+
code: "target_not_packaged",
|
|
30
|
+
currentVersion: input.currentVersion,
|
|
31
|
+
targetVersion: input.targetVersion,
|
|
32
|
+
issues: [
|
|
33
|
+
`Target version ${input.targetVersion} is not present in packaged release-span metadata.`,
|
|
34
|
+
],
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
if (input.currentVersion === input.targetVersion) {
|
|
38
|
+
return {
|
|
39
|
+
state: "noop",
|
|
40
|
+
currentVersion: input.currentVersion,
|
|
41
|
+
targetVersion: input.targetVersion,
|
|
42
|
+
releases: [],
|
|
43
|
+
orderedSteps: [],
|
|
44
|
+
approvalRequired: false,
|
|
45
|
+
issues: [],
|
|
46
|
+
counts: zeroCounts(),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (!isNewerGdhVersion(input.targetVersion, input.currentVersion)) {
|
|
50
|
+
return blockedPreview({
|
|
51
|
+
code: "target_not_newer",
|
|
52
|
+
currentVersion: input.currentVersion,
|
|
53
|
+
targetVersion: input.targetVersion,
|
|
54
|
+
issues: [
|
|
55
|
+
`Target version ${input.targetVersion} is not newer than current pinned version ${input.currentVersion}.`,
|
|
56
|
+
],
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if (targetIndex <= currentIndex) {
|
|
60
|
+
return blockedPreview({
|
|
61
|
+
code: "contradictory_release_metadata",
|
|
62
|
+
currentVersion: input.currentVersion,
|
|
63
|
+
targetVersion: input.targetVersion,
|
|
64
|
+
issues: [
|
|
65
|
+
`Packaged release-span ordering places target ${input.targetVersion} at or before current ${input.currentVersion}.`,
|
|
66
|
+
],
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const releases = asset.releases.slice(currentIndex + 1, targetIndex + 1);
|
|
70
|
+
const orderedSteps = releases.flatMap((release) => release.updateContract.steps.map((step) => ({
|
|
71
|
+
...step,
|
|
72
|
+
releaseVersion: release.version,
|
|
73
|
+
releaseTag: release.releaseTag,
|
|
74
|
+
})));
|
|
75
|
+
return {
|
|
76
|
+
state: "ready",
|
|
77
|
+
currentVersion: input.currentVersion,
|
|
78
|
+
targetVersion: input.targetVersion,
|
|
79
|
+
releases,
|
|
80
|
+
orderedSteps,
|
|
81
|
+
approvalRequired: true,
|
|
82
|
+
issues: [],
|
|
83
|
+
counts: countStepKinds(orderedSteps),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
function validateReleaseOrdering(releases) {
|
|
87
|
+
const issues = [];
|
|
88
|
+
const seenVersions = new Set();
|
|
89
|
+
for (const [index, release] of releases.entries()) {
|
|
90
|
+
if (seenVersions.has(release.version)) {
|
|
91
|
+
issues.push(`Duplicate packaged release entry found for version ${release.version}.`);
|
|
92
|
+
}
|
|
93
|
+
seenVersions.add(release.version);
|
|
94
|
+
if (index === 0) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const previous = releases[index - 1];
|
|
98
|
+
if (previous === undefined) {
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (!isNewerGdhVersion(release.version, previous.version)) {
|
|
102
|
+
issues.push(`Packaged release entries must be strictly ascending, but ${release.version} does not come after ${previous.version}.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return issues;
|
|
106
|
+
}
|
|
107
|
+
function countStepKinds(steps) {
|
|
108
|
+
const counts = zeroCounts();
|
|
109
|
+
for (const step of steps) {
|
|
110
|
+
incrementCount(counts, step.kind);
|
|
111
|
+
}
|
|
112
|
+
return counts;
|
|
113
|
+
}
|
|
114
|
+
function incrementCount(counts, kind) {
|
|
115
|
+
switch (kind) {
|
|
116
|
+
case "mechanical":
|
|
117
|
+
counts.mechanical += 1;
|
|
118
|
+
break;
|
|
119
|
+
case "agent_reasoning":
|
|
120
|
+
counts.agentReasoning += 1;
|
|
121
|
+
break;
|
|
122
|
+
case "manual_review":
|
|
123
|
+
counts.manualReview += 1;
|
|
124
|
+
break;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function blockedPreview(input) {
|
|
128
|
+
return {
|
|
129
|
+
state: "blocked",
|
|
130
|
+
code: input.code,
|
|
131
|
+
currentVersion: input.currentVersion,
|
|
132
|
+
targetVersion: input.targetVersion,
|
|
133
|
+
releases: [],
|
|
134
|
+
orderedSteps: [],
|
|
135
|
+
approvalRequired: false,
|
|
136
|
+
issues: input.issues,
|
|
137
|
+
counts: zeroCounts(),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function zeroCounts() {
|
|
141
|
+
return {
|
|
142
|
+
mechanical: 0,
|
|
143
|
+
agentReasoning: 0,
|
|
144
|
+
manualReview: 0,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=release-span-preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-span-preview.js","sourceRoot":"","sources":["../src/release-span-preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export declare const RELEASE_SPAN_UPDATE_CONTRACTS_ASSET_RELATIVE_PATH = "RELEASE-SPAN-UPDATE-CONTRACTS.json";
|
|
2
|
+
export declare const RELEASE_SPAN_UPDATE_CONTRACTS_SCHEMA_VERSION = 1;
|
|
3
|
+
export type GdhReleaseUpdateStepKind = "mechanical" | "agent_reasoning" | "manual_review";
|
|
4
|
+
export interface GdhReleaseUpdateContractStep {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly kind: GdhReleaseUpdateStepKind;
|
|
7
|
+
readonly summary: string;
|
|
8
|
+
readonly detail: string;
|
|
9
|
+
readonly commands: readonly string[];
|
|
10
|
+
readonly validationCommands: readonly string[];
|
|
11
|
+
}
|
|
12
|
+
export interface GdhReleaseUpdateContract {
|
|
13
|
+
readonly summary: string;
|
|
14
|
+
readonly steps: readonly GdhReleaseUpdateContractStep[];
|
|
15
|
+
}
|
|
16
|
+
export interface GdhReleasePreviewHighlights {
|
|
17
|
+
readonly summary: string;
|
|
18
|
+
readonly operatorChanges: readonly string[];
|
|
19
|
+
}
|
|
20
|
+
export interface GdhReleaseSpanUpdateContractEntry {
|
|
21
|
+
readonly version: string;
|
|
22
|
+
readonly releaseTag: string;
|
|
23
|
+
readonly migrationStatus: "no_op" | "required" | "blocked";
|
|
24
|
+
readonly summary: string;
|
|
25
|
+
readonly releaseHighlights: GdhReleasePreviewHighlights;
|
|
26
|
+
readonly updateContract: GdhReleaseUpdateContract;
|
|
27
|
+
}
|
|
28
|
+
export interface GdhReleaseSpanUpdateContractsAsset {
|
|
29
|
+
readonly schemaVersion: typeof RELEASE_SPAN_UPDATE_CONTRACTS_SCHEMA_VERSION;
|
|
30
|
+
readonly releases: readonly GdhReleaseSpanUpdateContractEntry[];
|
|
31
|
+
}
|
|
32
|
+
export declare function readReleaseSpanUpdateContracts(startUrl?: string | URL): GdhReleaseSpanUpdateContractsAsset;
|
|
33
|
+
//# sourceMappingURL=release-span-update-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-span-update-contract.d.ts","sourceRoot":"","sources":["../src/release-span-update-contract.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,iDAAiD,uCACxB,CAAC;AACvC,eAAO,MAAM,4CAA4C,IAAI,CAAC;AAE9D,MAAM,MAAM,wBAAwB,GAChC,YAAY,GACZ,iBAAiB,GACjB,eAAe,CAAC;AAEpB,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CAChD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,iCAAiC;IAChD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;IAC3D,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IACxD,QAAQ,CAAC,cAAc,EAAE,wBAAwB,CAAC;CACnD;AAED,MAAM,WAAW,kCAAkC;IACjD,QAAQ,CAAC,aAAa,EAAE,OAAO,4CAA4C,CAAC;IAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,iCAAiC,EAAE,CAAC;CACjE;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,MAAM,GAAG,GAAqB,GACvC,kCAAkC,CAiCpC"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { resolveCurrentGdhInstall } from "./index.js";
|
|
4
|
+
export const RELEASE_SPAN_UPDATE_CONTRACTS_ASSET_RELATIVE_PATH = "RELEASE-SPAN-UPDATE-CONTRACTS.json";
|
|
5
|
+
export const RELEASE_SPAN_UPDATE_CONTRACTS_SCHEMA_VERSION = 1;
|
|
6
|
+
export function readReleaseSpanUpdateContracts(startUrl = import.meta.url) {
|
|
7
|
+
const install = resolveCurrentGdhInstall(startUrl);
|
|
8
|
+
const assetPath = path.join(install.rootPath, RELEASE_SPAN_UPDATE_CONTRACTS_ASSET_RELATIVE_PATH);
|
|
9
|
+
let raw;
|
|
10
|
+
try {
|
|
11
|
+
raw = fs.readFileSync(assetPath, "utf8");
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
throw new Error(`Missing packaged release-span update-contract asset at ${assetPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
15
|
+
}
|
|
16
|
+
let parsed;
|
|
17
|
+
try {
|
|
18
|
+
parsed = JSON.parse(raw);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw new Error(`Invalid packaged release-span update-contract asset at ${assetPath}: ${error instanceof Error ? error.message : String(error)}`);
|
|
22
|
+
}
|
|
23
|
+
const issues = validateReleaseSpanUpdateContractsAsset(parsed);
|
|
24
|
+
if (issues.length > 0) {
|
|
25
|
+
throw new Error(`Invalid packaged release-span update-contract asset at ${assetPath}:\n${issues.map((issue) => `- ${issue}`).join("\n")}`);
|
|
26
|
+
}
|
|
27
|
+
return parsed;
|
|
28
|
+
}
|
|
29
|
+
function validateReleaseSpanUpdateContractsAsset(value) {
|
|
30
|
+
const issues = [];
|
|
31
|
+
if (!isRecord(value)) {
|
|
32
|
+
return ["asset root must be an object."];
|
|
33
|
+
}
|
|
34
|
+
const asset = value;
|
|
35
|
+
if (asset["schemaVersion"] !== RELEASE_SPAN_UPDATE_CONTRACTS_SCHEMA_VERSION) {
|
|
36
|
+
issues.push(`schemaVersion must be ${RELEASE_SPAN_UPDATE_CONTRACTS_SCHEMA_VERSION}.`);
|
|
37
|
+
}
|
|
38
|
+
if (!Array.isArray(asset["releases"]) || asset["releases"].length === 0) {
|
|
39
|
+
issues.push("releases must be a non-empty array.");
|
|
40
|
+
return issues;
|
|
41
|
+
}
|
|
42
|
+
for (const [entryIndex, entry] of asset["releases"].entries()) {
|
|
43
|
+
const entryLabel = `releases[${entryIndex}]`;
|
|
44
|
+
if (!isRecord(entry)) {
|
|
45
|
+
issues.push(`${entryLabel} must be an object.`);
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
const releaseEntry = entry;
|
|
49
|
+
if (typeof releaseEntry["version"] !== "string" ||
|
|
50
|
+
releaseEntry["version"].length === 0) {
|
|
51
|
+
issues.push(`${entryLabel}.version must be a non-empty string.`);
|
|
52
|
+
}
|
|
53
|
+
if (typeof releaseEntry["releaseTag"] !== "string" ||
|
|
54
|
+
releaseEntry["releaseTag"].length === 0) {
|
|
55
|
+
issues.push(`${entryLabel}.releaseTag must be a non-empty string.`);
|
|
56
|
+
}
|
|
57
|
+
if (releaseEntry["migrationStatus"] !== "no_op" &&
|
|
58
|
+
releaseEntry["migrationStatus"] !== "required" &&
|
|
59
|
+
releaseEntry["migrationStatus"] !== "blocked") {
|
|
60
|
+
issues.push(`${entryLabel}.migrationStatus must be one of: no_op, required, blocked.`);
|
|
61
|
+
}
|
|
62
|
+
if (typeof releaseEntry["summary"] !== "string" ||
|
|
63
|
+
releaseEntry["summary"].trim().length === 0) {
|
|
64
|
+
issues.push(`${entryLabel}.summary must be a non-empty string.`);
|
|
65
|
+
}
|
|
66
|
+
validateReleaseHighlights(releaseEntry["releaseHighlights"], `${entryLabel}.releaseHighlights`, issues);
|
|
67
|
+
validateUpdateContract(releaseEntry["updateContract"], `${entryLabel}.updateContract`, issues);
|
|
68
|
+
}
|
|
69
|
+
return issues;
|
|
70
|
+
}
|
|
71
|
+
function validateReleaseHighlights(value, label, issues) {
|
|
72
|
+
if (!isRecord(value)) {
|
|
73
|
+
issues.push(`${label} must be an object.`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const releaseHighlights = value;
|
|
77
|
+
if (typeof releaseHighlights["summary"] !== "string" ||
|
|
78
|
+
releaseHighlights["summary"].trim().length === 0) {
|
|
79
|
+
issues.push(`${label}.summary must be a non-empty string.`);
|
|
80
|
+
}
|
|
81
|
+
if (!Array.isArray(releaseHighlights["operatorChanges"]) ||
|
|
82
|
+
releaseHighlights["operatorChanges"].length === 0 ||
|
|
83
|
+
releaseHighlights["operatorChanges"].some((value) => typeof value !== "string" || value.trim().length === 0)) {
|
|
84
|
+
issues.push(`${label}.operatorChanges must be a non-empty array of strings.`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function validateUpdateContract(value, label, issues) {
|
|
88
|
+
if (!isRecord(value)) {
|
|
89
|
+
issues.push(`${label} must be an object.`);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const updateContract = value;
|
|
93
|
+
if (typeof updateContract["summary"] !== "string" ||
|
|
94
|
+
updateContract["summary"].trim().length === 0) {
|
|
95
|
+
issues.push(`${label}.summary must be a non-empty string.`);
|
|
96
|
+
}
|
|
97
|
+
if (!Array.isArray(updateContract["steps"]) ||
|
|
98
|
+
updateContract["steps"].length === 0) {
|
|
99
|
+
issues.push(`${label}.steps must be a non-empty array.`);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
for (const [stepIndex, step] of updateContract["steps"].entries()) {
|
|
103
|
+
const stepLabel = `${label}.steps[${stepIndex}]`;
|
|
104
|
+
if (!isRecord(step)) {
|
|
105
|
+
issues.push(`${stepLabel} must be an object.`);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
const updateStep = step;
|
|
109
|
+
if (typeof updateStep["id"] !== "string" || updateStep["id"].trim().length === 0) {
|
|
110
|
+
issues.push(`${stepLabel}.id must be a non-empty string.`);
|
|
111
|
+
}
|
|
112
|
+
if (updateStep["kind"] !== "mechanical" &&
|
|
113
|
+
updateStep["kind"] !== "agent_reasoning" &&
|
|
114
|
+
updateStep["kind"] !== "manual_review") {
|
|
115
|
+
issues.push(`${stepLabel}.kind must be one of: mechanical, agent_reasoning, manual_review.`);
|
|
116
|
+
}
|
|
117
|
+
if (typeof updateStep["summary"] !== "string" ||
|
|
118
|
+
updateStep["summary"].trim().length === 0) {
|
|
119
|
+
issues.push(`${stepLabel}.summary must be a non-empty string.`);
|
|
120
|
+
}
|
|
121
|
+
if (typeof updateStep["detail"] !== "string" ||
|
|
122
|
+
updateStep["detail"].trim().length === 0) {
|
|
123
|
+
issues.push(`${stepLabel}.detail must be a non-empty string.`);
|
|
124
|
+
}
|
|
125
|
+
if (!Array.isArray(updateStep["commands"]) ||
|
|
126
|
+
updateStep["commands"].some((command) => typeof command !== "string")) {
|
|
127
|
+
issues.push(`${stepLabel}.commands must be an array of strings.`);
|
|
128
|
+
}
|
|
129
|
+
if (!Array.isArray(updateStep["validationCommands"]) ||
|
|
130
|
+
updateStep["validationCommands"].some((command) => typeof command !== "string")) {
|
|
131
|
+
issues.push(`${stepLabel}.validationCommands must be an array of strings.`);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
function isRecord(value) {
|
|
136
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=release-span-update-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-span-update-contract.js","sourceRoot":"","sources":["../src/release-span-update-contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../src/guidance.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAQnB,UAAU,6BAA6B;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,gBAAgB,GAC9B,SAAS,6BAA6B,EAAE,
|
|
1
|
+
{"version":3,"file":"guidance.d.ts","sourceRoot":"","sources":["../src/guidance.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAQnB,UAAU,6BAA6B;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,gBAAgB,GAC9B,SAAS,6BAA6B,EAAE,CA8M1C;AAED,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,SAAS,6BAA6B,EAAE,GAC9C,MAAM,CAoBR;AAED,wBAAsB,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC,CAuBhD;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC,CAqB1C;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,SAAS,uBAAuB,EAAE,CAAC,CA4B7C;AAED,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYzF"}
|
|
@@ -124,11 +124,14 @@ export function createDefaultGuidanceUnits(projectConfig) {
|
|
|
124
124
|
"- run `gdh status` first and name the exact migration or degraded-compatibility reasons GDH reports",
|
|
125
125
|
"- run `gdh migrate` before proposing manual edits so GDH can preview the supported repair or migration actions",
|
|
126
126
|
"- only run `gdh migrate --apply` after explaining the planned changes and confirming the target path is correct",
|
|
127
|
-
"- after apply,
|
|
127
|
+
"- after apply, read `terminal.state` in the stdout JSON instead of guessing from prose summaries",
|
|
128
|
+
"- if `terminal.state` is `healthy`, stop — no further migration action is required",
|
|
129
|
+
"- if `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands` before treating the target as healthy",
|
|
130
|
+
"- if `terminal.state` is `manual_review_required`, complete the surfaced `terminal.manualSteps`, then run the surfaced `terminal.validationCommands`; do not collapse review-gated work into an automatic repair",
|
|
128
131
|
"- if runtime bridge compatibility remains degraded, enable the `GDH Runtime Bridge` plugin in the Godot editor so the addon can register `GDHBridge` itself",
|
|
129
|
-
"-
|
|
132
|
+
"- if `terminal.state` is `blocked`, stop and review the surfaced reasons before making repo-local changes",
|
|
130
133
|
"",
|
|
131
|
-
"Do not hand-edit `project.godot` to register `GDHBridge`, and do not treat a migrated target as healthy until GDH's structured surfaces agree.",
|
|
134
|
+
"Do not hand-edit `project.godot` to register `GDHBridge`, and do not treat a migrated target as healthy until GDH's structured surfaces agree. GDH does not yet back up or reapply customized managed-surface patches automatically.",
|
|
132
135
|
].join("\n"),
|
|
133
136
|
},
|
|
134
137
|
{
|
|
@@ -153,7 +156,9 @@ export function createDefaultGuidanceUnits(projectConfig) {
|
|
|
153
156
|
"- `.gdh/` is durable project truth, including project config, rules, run configurations, and verification scenarios",
|
|
154
157
|
"- `docs/agent/` holds richer Godot-specific operational guidance for progressive disclosure",
|
|
155
158
|
"- `.gdh-state/` is ignored operational state for inventories, readiness snapshots, and other worktree-local artifacts",
|
|
159
|
+
"- GDH may ensure `.gitignore` ignores `.gdh-state/`, because that path is GDH-owned machine-local state",
|
|
156
160
|
"- `.godot/` is generated editor/import state and should not be treated as durable project truth, even when GDH hydrates or refreshes it during target preparation",
|
|
161
|
+
"- GDH does not manage `.godot/` ignore policy; whether a project commits or ignores `.godot/` remains Godot/project-owned policy",
|
|
157
162
|
"- project-local env files such as `.env.local` are not part of default GDH target preparation unless project-specific guidance explicitly says otherwise",
|
|
158
163
|
].join("\n"),
|
|
159
164
|
},
|
|
@@ -191,7 +196,7 @@ export function createDefaultGuidanceUnits(projectConfig) {
|
|
|
191
196
|
"| Command | Reads from disk | Writes to disk | Precondition | Session event |",
|
|
192
197
|
"|---------|-----------------|----------------|--------------|---------------|",
|
|
193
198
|
"| scan | `.gdh-state/inventory.json` (cache-first on onboarded targets) | `.gdh-state/inventory.json` (onboarded targets only) | Any filesystem path | `kind: \"scan\"` on onboarded branch only |",
|
|
194
|
-
"| onboard | `.gdh/project.yaml` (if exists, for migration check) | `.gdh/project.yaml`, `.gdh-state/inventory.json`, skill files | No precondition | `kind: \"onboard\"` |",
|
|
199
|
+
"| onboard | `.gdh/project.yaml` (if exists, for migration check), `.gitignore` | `.gitignore` (GDH-managed `.gdh-state/` section only), `.gdh/project.yaml`, `.gdh-state/inventory.json`, skill files | No precondition | `kind: \"onboard\"` |",
|
|
195
200
|
"| status | `.gdh-state/inventory.json` (cache-first when onboarded) | None | Any filesystem path | None |",
|
|
196
201
|
"",
|
|
197
202
|
"Key facts agents keep getting wrong:",
|
|
@@ -199,6 +204,7 @@ export function createDefaultGuidanceUnits(projectConfig) {
|
|
|
199
204
|
"- `gdh scan` on a target with no ancestor `.gdh/project.yaml` writes nothing — it is stdout-only and `persisted` is `null`. It does not \"warm the cache\" because there is no cache to warm.",
|
|
200
205
|
"- `gdh scan` on an onboarded target writes `.gdh-state/inventory.json` atomically and emits `persisted.mode` of `create`, `unchanged`, or `overwrite`.",
|
|
201
206
|
"- `gdh status` never writes to disk. It reads the cached inventory when present and live-scans when it is missing, corrupt, or schema-mismatched (degraded path).",
|
|
207
|
+
"- `gdh onboard` may update `.gitignore`, but only for the GDH-managed `.gdh-state/` ignore section. It does not take ownership of `.godot/` ignore policy.",
|
|
202
208
|
"- `gdh onboard` writes durable project truth (`.gdh/project.yaml`), derived state (`.gdh-state/inventory.json`), and skill files. It is not a synonym for scan.",
|
|
203
209
|
"",
|
|
204
210
|
"Do not infer behavior from command names. Read the table, run the command, and check the envelope.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guidance.js","sourceRoot":"","sources":["../src/guidance.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"guidance.js","sourceRoot":"","sources":["../src/guidance.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@gdh/adapters": "0.
|
|
15
|
-
"@gdh/authoring": "0.
|
|
16
|
-
"@gdh/core": "0.
|
|
17
|
-
"@gdh/docs": "0.
|
|
18
|
-
"@gdh/observability": "0.
|
|
19
|
-
"@gdh/scan": "0.
|
|
20
|
-
"@gdh/verify": "0.
|
|
14
|
+
"@gdh/adapters": "0.11.0",
|
|
15
|
+
"@gdh/authoring": "0.11.0",
|
|
16
|
+
"@gdh/core": "0.11.0",
|
|
17
|
+
"@gdh/docs": "0.11.0",
|
|
18
|
+
"@gdh/observability": "0.11.0",
|
|
19
|
+
"@gdh/scan": "0.11.0",
|
|
20
|
+
"@gdh/verify": "0.11.0",
|
|
21
21
|
"@modelcontextprotocol/sdk": "1.29.0"
|
|
22
22
|
},
|
|
23
|
-
"version": "0.
|
|
23
|
+
"version": "0.11.0"
|
|
24
24
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
export { detectExistingOnboarding
|
|
1
|
+
import { applyRepairableOnboardingWrites, onboardFromInventory, onboardGodotProject } from "./onboard.js";
|
|
2
|
+
import { scanGodotProjectInventory } from "./scan.js";
|
|
3
|
+
import { persistInventoryForTarget, readInventoryCacheOrScan, type GdhInventoryReadResult, type GdhPersistedInventoryDescriptor } from "./inventory-cache.js";
|
|
4
|
+
import { detectExistingOnboarding } from "./detect-existing-onboarding.js";
|
|
5
|
+
export { applyRepairableOnboardingWrites, onboardFromInventory, onboardGodotProject, scanGodotProjectInventory, persistInventoryForTarget, readInventoryCacheOrScan, detectExistingOnboarding, type GdhInventoryReadResult, type GdhPersistedInventoryDescriptor, };
|
|
6
6
|
export declare const scanPackage: import("@gdh/core").GdhPackageBoundary;
|
|
7
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,yBAAyB,EACzB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,EACrC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,+BAA+B,GACrC,CAAC;AAEF,eAAO,MAAM,WAAW,wCAMtB,CAAC"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { definePackageBoundary } from "@gdh/core";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { applyRepairableOnboardingWrites, onboardFromInventory, onboardGodotProject, } from "./onboard.js";
|
|
3
|
+
import { scanGodotProjectInventory } from "./scan.js";
|
|
4
|
+
import { persistInventoryForTarget, readInventoryCacheOrScan, } from "./inventory-cache.js";
|
|
5
|
+
import { detectExistingOnboarding } from "./detect-existing-onboarding.js";
|
|
6
|
+
export { applyRepairableOnboardingWrites, onboardFromInventory, onboardGodotProject, scanGodotProjectInventory, persistInventoryForTarget, readInventoryCacheOrScan, detectExistingOnboarding, };
|
|
6
7
|
export const scanPackage = definePackageBoundary({
|
|
7
8
|
name: "@gdh/scan",
|
|
8
9
|
layer: "capability",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EACL,yBAAyB,EACzB,wBAAwB,GAGzB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAE3E,OAAO,EACL,+BAA+B,EAC/B,oBAAoB,EACpB,mBAAmB,EACnB,yBAAyB,EACzB,yBAAyB,EACzB,wBAAwB,EACxB,wBAAwB,GAGzB,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAC/C,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,YAAY;IACnB,cAAc,EACZ,2FAA2F;IAC7F,2BAA2B,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC;CACxD,CAAC,CAAC"}
|
|
@@ -3,6 +3,7 @@ export declare function onboardGodotProject(targetPath: string, options?: {
|
|
|
3
3
|
readonly dryRun?: boolean;
|
|
4
4
|
readonly selectedProjectRelativePath?: string | null;
|
|
5
5
|
readonly allowDurableTruthOverwrites?: boolean;
|
|
6
|
+
readonly gitignoreRootPath?: string | null;
|
|
6
7
|
}): Promise<GdhOnboardingResult>;
|
|
7
8
|
export declare function applyRepairableOnboardingWrites(writes: readonly GdhOnboardingArtifactWrite[], options?: {
|
|
8
9
|
readonly allowDurableTruthOverwrites?: boolean;
|
|
@@ -11,6 +12,7 @@ export declare function onboardFromInventory(inventory: GdhProjectInventory, opt
|
|
|
11
12
|
readonly dryRun?: boolean;
|
|
12
13
|
readonly selectedProjectRelativePath?: string | null;
|
|
13
14
|
readonly allowDurableTruthOverwrites?: boolean;
|
|
15
|
+
readonly gitignoreRootPath?: string | null;
|
|
14
16
|
}): Promise<GdhOnboardingResult>;
|
|
15
17
|
declare function planInventoryWrite(inventory: GdhProjectInventory): Promise<readonly GdhOnboardingArtifactWrite[]>;
|
|
16
18
|
declare function applyArtifactWrites(writes: readonly GdhOnboardingArtifactWrite[], options?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../src/onboard.ts"],"names":[],"mappings":"AASA,OAAO,EAML,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EAExB,KAAK,mBAAmB,EAEzB,MAAM,WAAW,CAAC;AAsBnB,wBAAsB,mBAAmB,CACvC,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC,GACL,OAAO,CAAC,mBAAmB,CAAC,CAG9B;AAED,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,SAAS,0BAA0B,EAAE,EAC7C,OAAO,GAAE;IAAE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAA;CAAO,GAC/D,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC,CAKhD;AAED,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,mBAAmB,EAC9B,OAAO,GAAE;IACP,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC,GACL,OAAO,CAAC,mBAAmB,CAAC,CAkD9B;AAiOD,iBAAe,kBAAkB,CAC/B,SAAS,EAAE,mBAAmB,GAC7B,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC,CAShD;AAyBD,iBAAe,mBAAmB,CAChC,MAAM,EAAE,SAAS,0BAA0B,EAAE,EAC7C,OAAO,GAAE;IACP,QAAQ,CAAC,8CAA8C,CAAC,EAAE,OAAO,CAAC;IAClE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC;CAC3C,GACL,OAAO,CAAC,SAAS,0BAA0B,EAAE,CAAC,CAmChD;AA+ND,OAAO,EAAE,kBAAkB,IAAI,2BAA2B,EAAE,CAAC;AAC7D,OAAO,EAAE,mBAAmB,IAAI,mBAAmB,EAAE,CAAC"}
|