@skillcap/gdh 0.7.0 → 0.9.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/node_modules/@gdh/adapters/dist/index.d.ts +3 -1
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +65 -17
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.js +9 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.js.map +1 -1
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/dist/prepare.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/prepare.js +5 -1
- package/node_modules/@gdh/authoring/dist/prepare.js.map +1 -1
- package/node_modules/@gdh/authoring/package.json +2 -2
- package/node_modules/@gdh/cli/dist/index.d.ts +35 -0
- package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/index.js +227 -137
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts +4 -0
- package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.js +13 -0
- 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 +52 -3
- package/node_modules/@gdh/cli/dist/self-update.js.map +1 -1
- package/node_modules/@gdh/cli/dist/setup.d.ts +41 -0
- package/node_modules/@gdh/cli/dist/setup.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/setup.js +181 -26
- 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 +75 -1
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +45 -1
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/dist/update-cache.d.ts +12 -0
- package/node_modules/@gdh/core/dist/update-cache.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/update-cache.js +20 -0
- package/node_modules/@gdh/core/dist/update-cache.js.map +1 -1
- package/node_modules/@gdh/core/dist/update-probe.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/update-probe.js +7 -1
- package/node_modules/@gdh/core/dist/update-probe.js.map +1 -1
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/index.d.ts +2 -0
- package/node_modules/@gdh/docs/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/docs/dist/index.js +1 -0
- package/node_modules/@gdh/docs/dist/index.js.map +1 -1
- package/node_modules/@gdh/docs/dist/recovery-hints.d.ts +43 -0
- package/node_modules/@gdh/docs/dist/recovery-hints.d.ts.map +1 -0
- package/node_modules/@gdh/docs/dist/recovery-hints.js +203 -0
- package/node_modules/@gdh/docs/dist/recovery-hints.js.map +1 -0
- 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/dist/bridge-surface.js +7 -1
- package/node_modules/@gdh/runtime/dist/bridge-surface.js.map +1 -1
- package/node_modules/@gdh/runtime/dist/index.js +1 -1
- package/node_modules/@gdh/runtime/package.json +2 -2
- package/node_modules/@gdh/scan/dist/detect-existing-onboarding.d.ts +19 -0
- package/node_modules/@gdh/scan/dist/detect-existing-onboarding.d.ts.map +1 -0
- package/node_modules/@gdh/scan/dist/detect-existing-onboarding.js +58 -0
- package/node_modules/@gdh/scan/dist/detect-existing-onboarding.js.map +1 -0
- package/node_modules/@gdh/scan/dist/index.d.ts +1 -0
- package/node_modules/@gdh/scan/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/scan/dist/index.js +1 -0
- 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 +12 -4
- 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 +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.9.0 setup
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
-
Replace `0.
|
|
18
|
+
Replace `0.9.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
|
The full install and update contract lives in [install-and-update.md](docs/development/install-and-update.md).
|
|
21
21
|
|
|
@@ -30,7 +30,7 @@ The full install and update contract lives in [install-and-update.md](docs/devel
|
|
|
30
30
|
|
|
31
31
|
```sh
|
|
32
32
|
# 1. Run setup in your Godot project
|
|
33
|
-
npx -y @skillcap/gdh@0.
|
|
33
|
+
npx -y @skillcap/gdh@0.9.0 setup
|
|
34
34
|
|
|
35
35
|
# 2. Open your AI agent (Claude, Cursor, Codex) in the repo
|
|
36
36
|
|
|
@@ -94,7 +94,7 @@ The CLI exists for advanced operators, debugging, and automation. See [Advanced
|
|
|
94
94
|
|
|
95
95
|
## Status
|
|
96
96
|
|
|
97
|
-
GDH now ships the current `0.
|
|
97
|
+
GDH now ships the current `0.9.0` release line and remains ready for broader internal use within the documented support contract. The current release line is `0.9.0` at the `broader_internal_release` stage.
|
|
98
98
|
|
|
99
99
|
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.
|
|
100
100
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GdhAgentAdaptersInstallResult, type GdhAgentAdaptersStatusResult, type GdhGsdSnapshot, type GdhProjectLifecycleCompatibilityResult, type GdhStatusResult, type GdhSupportedAgent, type GdhValidationKind } from "@gdh/core";
|
|
1
|
+
import { type GdhAgentAdaptersInstallResult, type GdhAgentAdaptersStatusResult, type GdhGsdSnapshot, type GdhProjectLifecycleCompatibilityResult, type GdhProjectLifecycleSurfaceStatus, type GdhStatusResult, type GdhSupportedAgent, type GdhValidationKind } from "@gdh/core";
|
|
2
2
|
export declare const adaptersPackage: import("@gdh/core").GdhPackageBoundary;
|
|
3
3
|
export declare const SUPPORTED_AGENTS: readonly ["codex", "claude", "cursor"];
|
|
4
4
|
export declare const CLAUDE_SHIM_RELATIVE_PATH = "CLAUDE.md";
|
|
@@ -77,7 +77,9 @@ export declare function renderCodexVerifySkill(pinnedVersion: string): string;
|
|
|
77
77
|
export declare function renderCursorVerifySkill(pinnedVersion: string): string;
|
|
78
78
|
export declare function renderManagedCodexProjectSection(pinnedVersion: string): string;
|
|
79
79
|
export declare function renderManagedCodexProjectConfig(existingContent: string | null, pinnedVersion: string): string;
|
|
80
|
+
declare function summarizeProjectLifecycleCompatibility(targetPath: string, surfaces: readonly GdhProjectLifecycleSurfaceStatus[]): GdhProjectLifecycleCompatibilityResult;
|
|
80
81
|
export { bumpAndRebakePin, type BumpAndRebakePinResult, } from "./self-update-mechanics.js";
|
|
81
82
|
export { CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH } from "./claude-update-hook-render.js";
|
|
82
83
|
export { CLAUDE_STATUSLINE_RELATIVE_PATH } from "./claude-statusline-render.js";
|
|
84
|
+
export { summarizeProjectLifecycleCompatibility };
|
|
83
85
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA8BA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,8 @@ import { CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH, CLAUDE_CHECK_UPDATE_WORKER_RELA
|
|
|
9
9
|
import { renderClaudeCheckUpdateWorker } from "./claude-update-worker-render.js";
|
|
10
10
|
import { CLAUDE_STATUSLINE_RELATIVE_PATH, renderClaudeUpdateStatusline, } from "./claude-statusline-render.js";
|
|
11
11
|
import { CLAUDE_SETTINGS_RELATIVE_PATH, patchClaudeSettingsForGdhSessionStart, patchClaudeSettingsForGdhStatusline, } from "./claude-settings-patch.js";
|
|
12
|
-
import { GDH_AGENT_CONTRACT_VERSION, GDH_CURSOR_RULE_VERSION, GDH_GUIDANCE_INDEX_VERSION, GDH_GUIDANCE_UNIT_VERSION, GDH_PROJECT_CONFIG_VERSION, GDH_RECIPE_SCHEMA_VERSION, GDH_RULES_SCHEMA_VERSION, GDH_SCENARIO_SCHEMA_VERSION, definePackageBoundary, resolveCurrentGdhInstall, resolveGdhProductMetadata, } from "@gdh/core";
|
|
13
|
-
import { createDefaultGuidanceUnits, getGuidanceStatus, resolveGuidanceQuery, } from "@gdh/docs";
|
|
12
|
+
import { GDH_AGENT_CONTRACT_VERSION, GDH_CURSOR_RULE_VERSION, GDH_GUIDANCE_INDEX_VERSION, GDH_GUIDANCE_UNIT_VERSION, GDH_PROJECT_CONFIG_VERSION, GDH_RECIPE_SCHEMA_VERSION, GDH_RULES_SCHEMA_VERSION, GDH_SCENARIO_SCHEMA_VERSION, assertProjectLifecycleCompatibilityInvariant, definePackageBoundary, resolveCurrentGdhInstall, resolveGdhProductMetadata, } from "@gdh/core";
|
|
13
|
+
import { createDefaultGuidanceUnits, getGuidanceStatus, resolveGuidanceQuery, resolveRecoveryHints, } from "@gdh/docs";
|
|
14
14
|
import { inspectGuidanceAudit } from "@gdh/observability";
|
|
15
15
|
import { inspectRuntimeBridgeSurface } from "@gdh/runtime";
|
|
16
16
|
import { scanGodotProjectInventory } from "@gdh/scan";
|
|
@@ -67,6 +67,11 @@ export const CURSOR_SCAN_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-scan/SKILL.md
|
|
|
67
67
|
export const LOCAL_PATH_HINTS_RELATIVE_PATH = ".gdh-state/local-paths.json";
|
|
68
68
|
export const CODEX_PROJECT_CONFIG_RELATIVE_PATH = ".codex/config.toml";
|
|
69
69
|
export const GDH_MCP_SERVER_NAME = "gdh";
|
|
70
|
+
// Phase 17 UX-01: single source of truth for the `/gdh-status` preview-header
|
|
71
|
+
// literal. The character between "dry-run)" and "not" is em-dash U+2014 (NOT
|
|
72
|
+
// two hyphens). Centralizing here prevents silent drift across the 3
|
|
73
|
+
// `/gdh-status` renderer bodies (Pitfall #5 three-adapter parity).
|
|
74
|
+
const PREVIEW_HEADER_LITERAL = "Preview (dry-run) — not applied";
|
|
70
75
|
const execFile = promisify(execFileCallback);
|
|
71
76
|
export async function getSupportedAgentAdaptersStatus(targetPath, options = {}) {
|
|
72
77
|
const includeUserLocal = options.includeUserLocal ?? true;
|
|
@@ -222,10 +227,12 @@ export async function inspectProjectLifecycleCompatibility(targetPath) {
|
|
|
222
227
|
export async function buildGdhStatusResult(targetPath) {
|
|
223
228
|
const context = await buildAuthoringContext(targetPath);
|
|
224
229
|
const projectLifecycle = await inspectProjectLifecycleCompatibility(targetPath);
|
|
230
|
+
const recoveryHints = resolveRecoveryHints(projectLifecycle.reasons);
|
|
225
231
|
return {
|
|
226
232
|
...context.status,
|
|
227
233
|
product: resolveGdhProductMetadata(),
|
|
228
234
|
projectLifecycle,
|
|
235
|
+
recoveryHints,
|
|
229
236
|
};
|
|
230
237
|
}
|
|
231
238
|
export async function createGsdSnapshot(targetPath, options = {}) {
|
|
@@ -470,9 +477,12 @@ export function renderClaudeStatusCommand(pinnedVersion) {
|
|
|
470
477
|
"Follow this order:",
|
|
471
478
|
"",
|
|
472
479
|
`1. Run \`npx -y @skillcap/gdh@${pinnedVersion} status\` and explain each readiness field.`,
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
480
|
+
"2. Distinguish `blockingReasons` (needs /gdh-update or manual intervention) from `coupledReasons` (fixable via /gdh-migrate).",
|
|
481
|
+
`3. Check if migration is needed with \`npx -y @skillcap/gdh@${pinnedVersion} migrate\`.`,
|
|
482
|
+
`4. ${PREVIEW_HEADER_LITERAL} — migrate output at this step describes planned actions ("would delete …") not applied ones ("deleted").`,
|
|
483
|
+
"5. If status JSON `recoveryHints` array is non-empty, surface each entry's `{command, skillName}` pair.",
|
|
484
|
+
"6. Surface any degraded or unavailable capabilities.",
|
|
485
|
+
"7. Suggest the most productive next step based on current state.",
|
|
476
486
|
"</process>",
|
|
477
487
|
"",
|
|
478
488
|
"<rules>",
|
|
@@ -511,7 +521,10 @@ export function renderCodexStatusSkill(pinnedVersion) {
|
|
|
511
521
|
"Follow this order:",
|
|
512
522
|
"",
|
|
513
523
|
`- run \`npx -y @skillcap/gdh@${pinnedVersion} status\` and explain each readiness field`,
|
|
524
|
+
"- distinguish `blockingReasons` (needs /gdh-update or manual intervention) from `coupledReasons` (fixable via /gdh-migrate)",
|
|
514
525
|
`- check if migration is needed with \`npx -y @skillcap/gdh@${pinnedVersion} migrate\``,
|
|
526
|
+
`- ${PREVIEW_HEADER_LITERAL} — migrate output describes planned actions ("would delete …") not applied ones ("deleted")`,
|
|
527
|
+
"- if status JSON `recoveryHints` array is non-empty, surface each entry's `{command, skillName}` pair",
|
|
515
528
|
"- surface any degraded or unavailable capabilities",
|
|
516
529
|
"- suggest the most productive next step based on current state",
|
|
517
530
|
"</process>",
|
|
@@ -550,7 +563,10 @@ export function renderCursorStatusSkill(pinnedVersion) {
|
|
|
550
563
|
"Follow this order:",
|
|
551
564
|
"",
|
|
552
565
|
`- run \`npx -y @skillcap/gdh@${pinnedVersion} status\` and explain each readiness field`,
|
|
566
|
+
"- distinguish `blockingReasons` (needs /gdh-update or manual intervention) from `coupledReasons` (fixable via /gdh-migrate)",
|
|
553
567
|
`- check if migration is needed with \`npx -y @skillcap/gdh@${pinnedVersion} migrate\``,
|
|
568
|
+
`- ${PREVIEW_HEADER_LITERAL} — migrate output describes planned actions ("would delete …") not applied ones ("deleted")`,
|
|
569
|
+
"- if status JSON `recoveryHints` array is non-empty, surface each entry's `{command, skillName}` pair",
|
|
554
570
|
"- surface any degraded or unavailable capabilities",
|
|
555
571
|
"- suggest the most productive next step based on current state",
|
|
556
572
|
"</process>",
|
|
@@ -694,10 +710,11 @@ export function renderClaudeMigrateCommand(pinnedVersion) {
|
|
|
694
710
|
"<process>",
|
|
695
711
|
"Follow this order:",
|
|
696
712
|
"",
|
|
697
|
-
`1. Run \`npx -y @skillcap/gdh@${pinnedVersion} migrate\` to preview pending migrations.`,
|
|
698
|
-
"2.
|
|
699
|
-
|
|
700
|
-
`4.
|
|
713
|
+
`1. Run \`npx -y @skillcap/gdh@${pinnedVersion} migrate\` to preview pending migrations (this is a dry-run; the JSON \`mode\` field will be \`"preview"\`).`,
|
|
714
|
+
"2. Inspect `compatibility.blockingReasons` vs `compatibility.coupledReasons` — if `blockingReasons` is non-empty, STOP: `migrate --apply` cannot fix them (recommend `/gdh-update` or manual intervention per each reason's recovery hint). If only `coupledReasons` is non-empty, proceed.",
|
|
715
|
+
"3. Explain what each migration step will change and why (use \"would\" verb forms — \"would delete\", \"would create\", \"would refresh\").",
|
|
716
|
+
`4. Offer to run \`npx -y @skillcap/gdh@${pinnedVersion} migrate --apply\` if the user approves — after apply, the JSON \`mode\` field becomes \`"applied"\` and verbs switch to past tense ("deleted", "created", "refreshed").`,
|
|
717
|
+
`5. After apply, run \`npx -y @skillcap/gdh@${pinnedVersion} status\` to verify the migration succeeded.`,
|
|
701
718
|
"</process>",
|
|
702
719
|
"",
|
|
703
720
|
"<rules>",
|
|
@@ -734,9 +751,10 @@ export function renderCodexMigrateSkill(pinnedVersion) {
|
|
|
734
751
|
"<process>",
|
|
735
752
|
"Follow this order:",
|
|
736
753
|
"",
|
|
737
|
-
`- run \`npx -y @skillcap/gdh@${pinnedVersion} migrate\` to preview pending migrations`,
|
|
738
|
-
"-
|
|
739
|
-
|
|
754
|
+
`- run \`npx -y @skillcap/gdh@${pinnedVersion} migrate\` to preview pending migrations (this is a dry-run; the JSON \`mode\` field will be \`"preview"\`)`,
|
|
755
|
+
"- inspect `compatibility.blockingReasons` vs `compatibility.coupledReasons` — if `blockingReasons` is non-empty, STOP: `migrate --apply` cannot fix them (recommend `/gdh-update` or manual intervention per each reason's recovery hint); if only `coupledReasons` is non-empty, proceed",
|
|
756
|
+
"- explain what each migration step will change and why (use \"would\" verb forms — \"would delete\", \"would create\", \"would refresh\")",
|
|
757
|
+
`- offer to run \`npx -y @skillcap/gdh@${pinnedVersion} migrate --apply\` if the user approves — after apply, the JSON \`mode\` field becomes \`"applied"\` and verbs switch to past tense ("deleted", "created", "refreshed")`,
|
|
740
758
|
`- after apply, run \`npx -y @skillcap/gdh@${pinnedVersion} status\` to verify the migration succeeded`,
|
|
741
759
|
"</process>",
|
|
742
760
|
"",
|
|
@@ -772,9 +790,10 @@ export function renderCursorMigrateSkill(pinnedVersion) {
|
|
|
772
790
|
"<process>",
|
|
773
791
|
"Follow this order:",
|
|
774
792
|
"",
|
|
775
|
-
`- run \`npx -y @skillcap/gdh@${pinnedVersion} migrate\` to preview pending migrations`,
|
|
776
|
-
"-
|
|
777
|
-
|
|
793
|
+
`- run \`npx -y @skillcap/gdh@${pinnedVersion} migrate\` to preview pending migrations (this is a dry-run; the JSON \`mode\` field will be \`"preview"\`)`,
|
|
794
|
+
"- inspect `compatibility.blockingReasons` vs `compatibility.coupledReasons` — if `blockingReasons` is non-empty, STOP: `migrate --apply` cannot fix them (recommend `/gdh-update` or manual intervention per each reason's recovery hint); if only `coupledReasons` is non-empty, proceed",
|
|
795
|
+
"- explain what each migration step will change and why (use \"would\" verb forms — \"would delete\", \"would create\", \"would refresh\")",
|
|
796
|
+
`- offer to run \`npx -y @skillcap/gdh@${pinnedVersion} migrate --apply\` if the user approves — after apply, the JSON \`mode\` field becomes \`"applied"\` and verbs switch to past tense ("deleted", "created", "refreshed")`,
|
|
778
797
|
`- after apply, run \`npx -y @skillcap/gdh@${pinnedVersion} status\` to verify the migration succeeded`,
|
|
779
798
|
"</process>",
|
|
780
799
|
"",
|
|
@@ -830,6 +849,7 @@ export function renderClaudeUpdateCommand(_pinnedVersion) {
|
|
|
830
849
|
"2. Surface the planned version delta and re-bake action count to the human conversationally.",
|
|
831
850
|
"3. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
|
|
832
851
|
"4. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
|
|
852
|
+
"5. Read the `pendingMigration` field in the self-update stdout JSON. When non-null, narrate the chain to the human and run `npx -y @skillcap/gdh@latest migrate --apply` as the next action; when null, confirm no migration is pending and stop.",
|
|
833
853
|
"</process>",
|
|
834
854
|
"",
|
|
835
855
|
"<rules>",
|
|
@@ -867,6 +887,7 @@ export function renderCodexUpdateSkill(_pinnedVersion) {
|
|
|
867
887
|
"2. Surface the planned version delta and re-bake action count to the human conversationally.",
|
|
868
888
|
"3. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
|
|
869
889
|
"4. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
|
|
890
|
+
"5. Read the `pendingMigration` field in the self-update stdout JSON. When non-null, narrate the chain to the human and run `npx -y @skillcap/gdh@latest migrate --apply` as the next action; when null, confirm no migration is pending and stop.",
|
|
870
891
|
"</process>",
|
|
871
892
|
"",
|
|
872
893
|
"<rules>",
|
|
@@ -902,6 +923,7 @@ export function renderCursorUpdateSkill(_pinnedVersion) {
|
|
|
902
923
|
"2. Surface the planned version delta and re-bake action count to the human conversationally.",
|
|
903
924
|
"3. Apply: run `npx -y @skillcap/gdh@latest self-update [version]` (omit `[version]` to apply against npm latest; forward whatever positional the user passed to `/gdh-update`).",
|
|
904
925
|
"4. Verify: run `npx -y @skillcap/gdh@latest verify drift` to confirm every baked surface matches the new pin.",
|
|
926
|
+
"5. Read the `pendingMigration` field in the self-update stdout JSON. When non-null, narrate the chain to the human and run `npx -y @skillcap/gdh@latest migrate --apply` as the next action; when null, confirm no migration is pending and stop.",
|
|
905
927
|
"</process>",
|
|
906
928
|
"",
|
|
907
929
|
"<rules>",
|
|
@@ -3282,14 +3304,35 @@ async function inspectYamlSurfaceDirectory(input) {
|
|
|
3282
3304
|
}
|
|
3283
3305
|
function summarizeProjectLifecycleCompatibility(targetPath, surfaces) {
|
|
3284
3306
|
const state = resolveProjectLifecycleState(surfaces);
|
|
3285
|
-
const
|
|
3286
|
-
|
|
3307
|
+
const blocking = [];
|
|
3308
|
+
const coupled = [];
|
|
3309
|
+
for (const surface of surfaces) {
|
|
3310
|
+
const bucket = surface.state === "migration_blocked" || surface.state === "compatibility_degraded"
|
|
3311
|
+
? blocking
|
|
3312
|
+
: surface.state === "migration_needed" || surface.state === "migration_available"
|
|
3313
|
+
? coupled
|
|
3314
|
+
: null;
|
|
3315
|
+
if (bucket) {
|
|
3316
|
+
for (const reason of surface.reasons) {
|
|
3317
|
+
if (reason.length > 0)
|
|
3318
|
+
bucket.push(reason);
|
|
3319
|
+
}
|
|
3320
|
+
}
|
|
3321
|
+
}
|
|
3322
|
+
const blockingReasons = dedupe(blocking);
|
|
3323
|
+
const coupledReasons = dedupe(coupled.filter((r) => !blockingReasons.includes(r)));
|
|
3324
|
+
const reasons = [...blockingReasons, ...coupledReasons];
|
|
3325
|
+
const result = {
|
|
3287
3326
|
targetPath,
|
|
3288
3327
|
state,
|
|
3289
3328
|
summary: summarizeProjectLifecycleState(state, surfaces),
|
|
3290
3329
|
reasons,
|
|
3330
|
+
blockingReasons,
|
|
3331
|
+
coupledReasons,
|
|
3291
3332
|
surfaces,
|
|
3292
3333
|
};
|
|
3334
|
+
assertProjectLifecycleCompatibilityInvariant(result);
|
|
3335
|
+
return result;
|
|
3293
3336
|
}
|
|
3294
3337
|
function resolveProjectLifecycleState(surfaces) {
|
|
3295
3338
|
if (surfaces.some((surface) => surface.state === "migration_blocked")) {
|
|
@@ -3417,4 +3460,9 @@ function normalizeChangedFiles(files) {
|
|
|
3417
3460
|
export { bumpAndRebakePin, } from "./self-update-mechanics.js";
|
|
3418
3461
|
export { CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH } from "./claude-update-hook-render.js";
|
|
3419
3462
|
export { CLAUDE_STATUSLINE_RELATIVE_PATH } from "./claude-statusline-render.js";
|
|
3463
|
+
// Internal aggregator exposed for Wave 0 unit tests
|
|
3464
|
+
// (packages/adapters/src/lifecycle-compatibility.test.ts). Callers outside this
|
|
3465
|
+
// package should continue to use inspectProjectLifecycleCompatibility, which
|
|
3466
|
+
// wraps this function with filesystem probing and surface discovery.
|
|
3467
|
+
export { summarizeProjectLifecycleCompatibility };
|
|
3420
3468
|
//# sourceMappingURL=index.js.map
|