@skillcap/gdh 0.17.0 → 0.17.2
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/RELEASE-SPAN-UPDATE-CONTRACTS.json +115 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts +8 -8
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +80 -28
- 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/dist/lsp.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp.js +79 -11
- 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/index.js +1 -1
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.js +17 -6
- package/node_modules/@gdh/cli/dist/migrate.js.map +1 -1
- package/node_modules/@gdh/cli/dist/setup.d.ts +1 -1
- package/node_modules/@gdh/cli/dist/setup.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/setup.js +9 -0
- 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 +2 -2
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/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/package.json +3 -3
- package/node_modules/@gdh/verify/package.json +7 -7
- package/package.json +11 -11
package/INSTALL-BUNDLE.json
CHANGED
|
@@ -1356,6 +1356,121 @@
|
|
|
1356
1356
|
}
|
|
1357
1357
|
]
|
|
1358
1358
|
}
|
|
1359
|
+
},
|
|
1360
|
+
{
|
|
1361
|
+
"version": "0.17.1",
|
|
1362
|
+
"releaseTag": "v0.17.1",
|
|
1363
|
+
"migrationStatus": "no_op",
|
|
1364
|
+
"summary": "v0.17.1 fixes update and migration follow-through classification plus managed Godot LSP startup timing without changing managed project surface versions. Existing targets do not need release-scoped migration for this patch line; agents should follow the ordinary self-update terminal contract, and managed LSP state remains compatible.",
|
|
1365
|
+
"releaseHighlights": {
|
|
1366
|
+
"summary": "v0.17.1 fixes two dogfooding regressions from the v0.17.0 authoring release. Update and migration follow-up now separates safe GDH-managed repair from project-owned manual review, and managed Godot LSP startup now waits long enough for slower real projects to become protocol-ready.",
|
|
1367
|
+
"operatorChanges": [
|
|
1368
|
+
"**Self-update no longer hides safe repair behind manual review.** `gdh self-update` and `gdh migrate --apply` can repair auto-applicable managed bridge drift even when project-owned rules still need review.",
|
|
1369
|
+
"**Terminal commands are safer to trust.** `terminal.commands` now contains only GDH-classified auto-applicable follow-up commands; project-owned review remains in `terminal.manualSteps`.",
|
|
1370
|
+
"**Generated update guidance is clearer.** `/gdh-update` and `/gdh-migrate` tell agents to run surfaced safe commands before stopping for manual review.",
|
|
1371
|
+
"**Migration action hints point at apply when work is auto-applicable.** Lifecycle surfaces that GDH can safely migrate now surface `gdh migrate --apply` instead of preview-only `gdh migrate`.",
|
|
1372
|
+
"**Managed LSP startup is less brittle.** GDH now gives the Godot editor a longer startup window, retries startup `initialize` timeouts, and records command, pid, port, timeout budget, attempts, elapsed time, and protocol failure details when authoring LSP still cannot become ready.",
|
|
1373
|
+
"**Real-project LSP proof is restored.** The Beacon dogfood target now reaches `authoring.lsp` `ready` with initialized protocol health using the local v0.17.1 build."
|
|
1374
|
+
]
|
|
1375
|
+
},
|
|
1376
|
+
"updateContract": {
|
|
1377
|
+
"summary": "No release-scoped managed migration is required for v0.17.1. After self-update, agents should trust the terminal contract: run any surfaced auto-applicable `terminal.commands`, validate with `terminal.validationCommands`, and stop for the remaining `terminal.manualSteps`. Managed LSP startup behavior improves automatically with the new GDH package and does not require target migration.",
|
|
1378
|
+
"steps": [
|
|
1379
|
+
{
|
|
1380
|
+
"id": "verify_post_update_terminal",
|
|
1381
|
+
"kind": "mechanical",
|
|
1382
|
+
"summary": "Read the post-update terminal result.",
|
|
1383
|
+
"detail": "After `gdh self-update`, inspect `terminal.state`, `terminal.commands`, `terminal.validationCommands`, and `terminal.manualSteps`. Treat `terminal.commands` as GDH-classified auto-applicable follow-up only.",
|
|
1384
|
+
"commands": [
|
|
1385
|
+
"gdh status"
|
|
1386
|
+
],
|
|
1387
|
+
"validationCommands": [
|
|
1388
|
+
"gdh status"
|
|
1389
|
+
]
|
|
1390
|
+
},
|
|
1391
|
+
{
|
|
1392
|
+
"id": "run_safe_terminal_commands",
|
|
1393
|
+
"kind": "mechanical",
|
|
1394
|
+
"summary": "Run surfaced safe commands before manual review.",
|
|
1395
|
+
"detail": "If `terminal.commands` is non-empty, run those commands because GDH classified them as auto-applicable. This may include managed bridge repair or migration apply work that is independent from project-owned review.",
|
|
1396
|
+
"commands": [
|
|
1397
|
+
"gdh migrate --apply",
|
|
1398
|
+
"gdh bridge repair"
|
|
1399
|
+
],
|
|
1400
|
+
"validationCommands": [
|
|
1401
|
+
"gdh status",
|
|
1402
|
+
"gdh bridge status"
|
|
1403
|
+
]
|
|
1404
|
+
},
|
|
1405
|
+
{
|
|
1406
|
+
"id": "review_remaining_manual_steps",
|
|
1407
|
+
"kind": "manual_review",
|
|
1408
|
+
"summary": "Stop for remaining project-owned or editor-side manual review.",
|
|
1409
|
+
"detail": "If `terminal.manualSteps` remains after safe commands and validation, explain those steps and stop. Do not overwrite project-owned rules or pretend editor-side plugin enable happened automatically.",
|
|
1410
|
+
"commands": [],
|
|
1411
|
+
"validationCommands": [
|
|
1412
|
+
"gdh status"
|
|
1413
|
+
]
|
|
1414
|
+
}
|
|
1415
|
+
]
|
|
1416
|
+
}
|
|
1417
|
+
},
|
|
1418
|
+
{
|
|
1419
|
+
"version": "0.17.2",
|
|
1420
|
+
"releaseTag": "v0.17.2",
|
|
1421
|
+
"migrationStatus": "no_op",
|
|
1422
|
+
"summary": "v0.17.2 hardens Codex supported-agent skills and MCP recovery without changing managed project schema or lifecycle surface versions. Existing targets do not need release-scoped schema migration, but Codex targets should run ordinary self-update or adapter repair so skills move to .agents/skills and exact managed legacy .codex/skills copies are removed.",
|
|
1423
|
+
"releaseHighlights": {
|
|
1424
|
+
"summary": "v0.17.2 hardens supported-agent setup after dogfooding exposed Codex skill-location drift and stale MCP registration confusion. Codex target skills now use the documented `.agents/skills` location, exact managed legacy `.codex/skills` files are cleaned up during repair, and MCP recovery guidance now explains what GDH can repair versus what the host agent must reconnect.",
|
|
1425
|
+
"operatorChanges": [
|
|
1426
|
+
"**Codex target skills use the documented project-local location.** Generated GDH target skills now install under `.agents/skills/gdh-*/SKILL.md`.",
|
|
1427
|
+
"**Managed legacy Codex skill copies are cleaned safely.** `gdh adapters install` and migration translation remove exact managed `.codex/skills/gdh-*` files after the new `.agents/skills` copy exists; customized files are preserved.",
|
|
1428
|
+
"**Codex project MCP config is part of readiness.** GDH lifecycle checks now include `.codex/config.toml` alongside Claude `.mcp.json` and Cursor `.cursor/mcp.json`.",
|
|
1429
|
+
"**Codex MCP startup is less ambiguous.** Generated `.codex/config.toml` includes explicit startup and tool timeouts for the GDH MCP server.",
|
|
1430
|
+
"**MCP recovery docs are clearer.** Install/update docs now distinguish project-local repair, Codex user-local registration cleanup, and the host-owned restart needed after a stdio MCP transport closes."
|
|
1431
|
+
]
|
|
1432
|
+
},
|
|
1433
|
+
"updateContract": {
|
|
1434
|
+
"summary": "No release-scoped managed schema migration is required for v0.17.2. After self-update, Codex users should verify adapter surfaces so generated GDH skills live under `.agents/skills`, exact managed legacy `.codex/skills` copies are gone, and MCP config points at the current pinned GDH command. Closed host MCP transports still require the host agent to reconnect or restart.",
|
|
1435
|
+
"steps": [
|
|
1436
|
+
{
|
|
1437
|
+
"id": "rebake_agent_adapters",
|
|
1438
|
+
"kind": "mechanical",
|
|
1439
|
+
"summary": "Re-bake supported-agent surfaces at the new GDH pin.",
|
|
1440
|
+
"detail": "`gdh self-update` re-runs the adapter install path. If an agent needs to repair surfaces manually, run `gdh adapters install <target>` for repo-local agent surfaces.",
|
|
1441
|
+
"commands": [
|
|
1442
|
+
"gdh adapters install <target>"
|
|
1443
|
+
],
|
|
1444
|
+
"validationCommands": [
|
|
1445
|
+
"gdh adapters status <target>",
|
|
1446
|
+
"gdh verify drift <target>"
|
|
1447
|
+
]
|
|
1448
|
+
},
|
|
1449
|
+
{
|
|
1450
|
+
"id": "repair_codex_user_mcp",
|
|
1451
|
+
"kind": "mechanical",
|
|
1452
|
+
"summary": "Repair or remove stale Codex user-local MCP registrations when present.",
|
|
1453
|
+
"detail": "For user-local Codex registrations that point at an old package version or missing legacy launcher, run the GDH Codex user install flow for the expected project key or remove stale unrelated entries with `codex mcp remove <name>`.",
|
|
1454
|
+
"commands": [
|
|
1455
|
+
"gdh adapters install <target> --user --agent codex"
|
|
1456
|
+
],
|
|
1457
|
+
"validationCommands": [
|
|
1458
|
+
"codex mcp list --json",
|
|
1459
|
+
"gdh adapters status <target>"
|
|
1460
|
+
]
|
|
1461
|
+
},
|
|
1462
|
+
{
|
|
1463
|
+
"id": "restart_closed_mcp_transport",
|
|
1464
|
+
"kind": "manual_review",
|
|
1465
|
+
"summary": "Restart the host agent session if the live MCP transport is closed.",
|
|
1466
|
+
"detail": "GDH can repair configuration and prove command shape, but Codex, Claude, and Cursor own their live stdio MCP process. If the transport is already closed, refresh or restart the host agent session before trusting MCP tool availability.",
|
|
1467
|
+
"commands": [],
|
|
1468
|
+
"validationCommands": [
|
|
1469
|
+
"gdh adapters status <target>"
|
|
1470
|
+
]
|
|
1471
|
+
}
|
|
1472
|
+
]
|
|
1473
|
+
}
|
|
1359
1474
|
}
|
|
1360
1475
|
]
|
|
1361
1476
|
}
|
|
@@ -7,27 +7,27 @@ export declare const PROJECT_MCP_RELATIVE_PATH = ".mcp.json";
|
|
|
7
7
|
export declare const CURSOR_MCP_RELATIVE_PATH = ".cursor/mcp.json";
|
|
8
8
|
export declare const CURSOR_RULE_RELATIVE_PATH = ".cursor/rules/gdh-agent.mdc";
|
|
9
9
|
export declare const CURSOR_ONBOARD_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-onboard/SKILL.md";
|
|
10
|
-
export declare const CODEX_ONBOARD_SKILL_RELATIVE_PATH = ".
|
|
10
|
+
export declare const CODEX_ONBOARD_SKILL_RELATIVE_PATH = ".agents/skills/gdh-onboard/SKILL.md";
|
|
11
11
|
export declare const CLAUDE_STATUS_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/status.md";
|
|
12
12
|
export declare const CLAUDE_MIGRATE_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/migrate.md";
|
|
13
13
|
export declare const CLAUDE_CHECK_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/check.md";
|
|
14
14
|
export declare const CLAUDE_PREPARE_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/prepare.md";
|
|
15
15
|
export declare const CLAUDE_VERIFY_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/verify.md";
|
|
16
|
-
export declare const CODEX_STATUS_SKILL_RELATIVE_PATH = ".
|
|
17
|
-
export declare const CODEX_MIGRATE_SKILL_RELATIVE_PATH = ".
|
|
18
|
-
export declare const CODEX_CHECK_SKILL_RELATIVE_PATH = ".
|
|
19
|
-
export declare const CODEX_PREPARE_SKILL_RELATIVE_PATH = ".
|
|
20
|
-
export declare const CODEX_VERIFY_SKILL_RELATIVE_PATH = ".
|
|
16
|
+
export declare const CODEX_STATUS_SKILL_RELATIVE_PATH = ".agents/skills/gdh-status/SKILL.md";
|
|
17
|
+
export declare const CODEX_MIGRATE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-migrate/SKILL.md";
|
|
18
|
+
export declare const CODEX_CHECK_SKILL_RELATIVE_PATH = ".agents/skills/gdh-check/SKILL.md";
|
|
19
|
+
export declare const CODEX_PREPARE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-prepare/SKILL.md";
|
|
20
|
+
export declare const CODEX_VERIFY_SKILL_RELATIVE_PATH = ".agents/skills/gdh-verify/SKILL.md";
|
|
21
21
|
export declare const CURSOR_STATUS_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-status/SKILL.md";
|
|
22
22
|
export declare const CURSOR_MIGRATE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-migrate/SKILL.md";
|
|
23
23
|
export declare const CURSOR_CHECK_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-check/SKILL.md";
|
|
24
24
|
export declare const CURSOR_PREPARE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-prepare/SKILL.md";
|
|
25
25
|
export declare const CURSOR_VERIFY_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-verify/SKILL.md";
|
|
26
26
|
export declare const CLAUDE_UPDATE_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/update.md";
|
|
27
|
-
export declare const CODEX_UPDATE_SKILL_RELATIVE_PATH = ".
|
|
27
|
+
export declare const CODEX_UPDATE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-update/SKILL.md";
|
|
28
28
|
export declare const CURSOR_UPDATE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-update/SKILL.md";
|
|
29
29
|
export declare const CLAUDE_SCAN_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/scan.md";
|
|
30
|
-
export declare const CODEX_SCAN_SKILL_RELATIVE_PATH = ".
|
|
30
|
+
export declare const CODEX_SCAN_SKILL_RELATIVE_PATH = ".agents/skills/gdh-scan/SKILL.md";
|
|
31
31
|
export declare const CURSOR_SCAN_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-scan/SKILL.md";
|
|
32
32
|
export declare const LOCAL_PATH_HINTS_RELATIVE_PATH = ".gdh-state/local-paths.json";
|
|
33
33
|
export declare const CODEX_PROJECT_CONFIG_RELATIVE_PATH = ".codex/config.toml";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAcL,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAGnB,KAAK,sCAAsC,EAE3C,KAAK,gCAAgC,EAIrC,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EAIvB,MAAM,WAAW,CAAC;AA2BnB,eAAO,MAAM,eAAe,wCAc1B,CAAC;AAEH,eAAO,MAAM,gBAAgB,wCAIoB,CAAC;AAClD,eAAO,MAAM,yBAAyB,cAAc,CAAC;AACrD,eAAO,MAAM,oCAAoC,oCAAoC,CAAC;AACtF,eAAO,MAAM,yBAAyB,cAAc,CAAC;AACrD,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAC3D,eAAO,MAAM,yBAAyB,gCAAgC,CAAC;AACvE,eAAO,MAAM,kCAAkC,wCAAwC,CAAC;AACxF,eAAO,MAAM,iCAAiC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,17 +40,17 @@ export const PROJECT_MCP_RELATIVE_PATH = ".mcp.json";
|
|
|
40
40
|
export const CURSOR_MCP_RELATIVE_PATH = ".cursor/mcp.json";
|
|
41
41
|
export const CURSOR_RULE_RELATIVE_PATH = ".cursor/rules/gdh-agent.mdc";
|
|
42
42
|
export const CURSOR_ONBOARD_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-onboard/SKILL.md";
|
|
43
|
-
export const CODEX_ONBOARD_SKILL_RELATIVE_PATH = ".
|
|
43
|
+
export const CODEX_ONBOARD_SKILL_RELATIVE_PATH = ".agents/skills/gdh-onboard/SKILL.md";
|
|
44
44
|
export const CLAUDE_STATUS_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/status.md";
|
|
45
45
|
export const CLAUDE_MIGRATE_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/migrate.md";
|
|
46
46
|
export const CLAUDE_CHECK_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/check.md";
|
|
47
47
|
export const CLAUDE_PREPARE_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/prepare.md";
|
|
48
48
|
export const CLAUDE_VERIFY_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/verify.md";
|
|
49
|
-
export const CODEX_STATUS_SKILL_RELATIVE_PATH = ".
|
|
50
|
-
export const CODEX_MIGRATE_SKILL_RELATIVE_PATH = ".
|
|
51
|
-
export const CODEX_CHECK_SKILL_RELATIVE_PATH = ".
|
|
52
|
-
export const CODEX_PREPARE_SKILL_RELATIVE_PATH = ".
|
|
53
|
-
export const CODEX_VERIFY_SKILL_RELATIVE_PATH = ".
|
|
49
|
+
export const CODEX_STATUS_SKILL_RELATIVE_PATH = ".agents/skills/gdh-status/SKILL.md";
|
|
50
|
+
export const CODEX_MIGRATE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-migrate/SKILL.md";
|
|
51
|
+
export const CODEX_CHECK_SKILL_RELATIVE_PATH = ".agents/skills/gdh-check/SKILL.md";
|
|
52
|
+
export const CODEX_PREPARE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-prepare/SKILL.md";
|
|
53
|
+
export const CODEX_VERIFY_SKILL_RELATIVE_PATH = ".agents/skills/gdh-verify/SKILL.md";
|
|
54
54
|
export const CURSOR_STATUS_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-status/SKILL.md";
|
|
55
55
|
export const CURSOR_MIGRATE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-migrate/SKILL.md";
|
|
56
56
|
export const CURSOR_CHECK_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-check/SKILL.md";
|
|
@@ -63,10 +63,20 @@ export const CURSOR_VERIFY_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-verify/SKIL
|
|
|
63
63
|
// INTENTIONALLY excluded from VERIFY_DRIFT_SCANNED_FILES (D-13) because the
|
|
64
64
|
// rendered bodies are version-agnostic by design.
|
|
65
65
|
export const CLAUDE_UPDATE_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/update.md";
|
|
66
|
-
export const CODEX_UPDATE_SKILL_RELATIVE_PATH = ".
|
|
66
|
+
export const CODEX_UPDATE_SKILL_RELATIVE_PATH = ".agents/skills/gdh-update/SKILL.md";
|
|
67
67
|
export const CURSOR_UPDATE_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-update/SKILL.md";
|
|
68
68
|
export const CLAUDE_SCAN_COMMAND_RELATIVE_PATH = ".claude/commands/gdh/scan.md";
|
|
69
|
-
export const CODEX_SCAN_SKILL_RELATIVE_PATH = ".
|
|
69
|
+
export const CODEX_SCAN_SKILL_RELATIVE_PATH = ".agents/skills/gdh-scan/SKILL.md";
|
|
70
|
+
const LEGACY_CODEX_SKILL_RELATIVE_PATHS = [
|
|
71
|
+
[".codex/skills/gdh-onboard/SKILL.md", renderCodexOnboardSkill, "gdh-onboard"],
|
|
72
|
+
[".codex/skills/gdh-status/SKILL.md", renderCodexStatusSkill, "gdh-status"],
|
|
73
|
+
[".codex/skills/gdh-migrate/SKILL.md", renderCodexMigrateSkill, "gdh-migrate"],
|
|
74
|
+
[".codex/skills/gdh-update/SKILL.md", renderCodexUpdateSkill, "gdh-update"],
|
|
75
|
+
[".codex/skills/gdh-check/SKILL.md", renderCodexCheckSkill, "gdh-check"],
|
|
76
|
+
[".codex/skills/gdh-prepare/SKILL.md", renderCodexPrepareSkill, "gdh-prepare"],
|
|
77
|
+
[".codex/skills/gdh-verify/SKILL.md", renderCodexVerifySkill, "gdh-verify"],
|
|
78
|
+
[".codex/skills/gdh-scan/SKILL.md", renderCodexScanSkill, "gdh-scan"],
|
|
79
|
+
];
|
|
70
80
|
export const CURSOR_SCAN_SKILL_RELATIVE_PATH = ".cursor/skills/gdh-scan/SKILL.md";
|
|
71
81
|
export const LOCAL_PATH_HINTS_RELATIVE_PATH = ".gdh-state/local-paths.json";
|
|
72
82
|
export const CODEX_PROJECT_CONFIG_RELATIVE_PATH = ".codex/config.toml";
|
|
@@ -138,6 +148,9 @@ export async function installSupportedAgentAdapters(targetPath, options = {}) {
|
|
|
138
148
|
if (action.kind === "ensure_symlink") {
|
|
139
149
|
await applySymlinkAction(action);
|
|
140
150
|
}
|
|
151
|
+
else if (action.kind === "remove_file") {
|
|
152
|
+
await applyRemoveFileAction(action);
|
|
153
|
+
}
|
|
141
154
|
else if (action.kind === "run_command") {
|
|
142
155
|
await applyRunCommandAction(action);
|
|
143
156
|
}
|
|
@@ -728,7 +741,7 @@ export function renderClaudeMigrateCommand(pinnedVersion) {
|
|
|
728
741
|
"5. After apply, read `terminal.state` in the stdout JSON.",
|
|
729
742
|
"6. If `terminal.state` is `healthy`, confirm no further migration action is required and stop.",
|
|
730
743
|
"7. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
|
|
731
|
-
"8. If `terminal.state` is `manual_review_required`,
|
|
744
|
+
"8. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of improvising a repair.",
|
|
732
745
|
"9. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
|
|
733
746
|
"</process>",
|
|
734
747
|
"",
|
|
@@ -773,7 +786,7 @@ export function renderCodexMigrateSkill(pinnedVersion) {
|
|
|
773
786
|
"- after apply, read `terminal.state` in the stdout JSON",
|
|
774
787
|
"- if `terminal.state` is `healthy`, confirm no further migration action is required and stop",
|
|
775
788
|
"- if `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping",
|
|
776
|
-
"- if `terminal.state` is `manual_review_required`,
|
|
789
|
+
"- if `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of improvising a repair",
|
|
777
790
|
"- if `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop",
|
|
778
791
|
"</process>",
|
|
779
792
|
"",
|
|
@@ -816,7 +829,7 @@ export function renderCursorMigrateSkill(pinnedVersion) {
|
|
|
816
829
|
"- after apply, read `terminal.state` in the stdout JSON",
|
|
817
830
|
"- if `terminal.state` is `healthy`, confirm no further migration action is required and stop",
|
|
818
831
|
"- if `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping",
|
|
819
|
-
"- if `terminal.state` is `manual_review_required`,
|
|
832
|
+
"- if `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of improvising a repair",
|
|
820
833
|
"- if `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop",
|
|
821
834
|
"</process>",
|
|
822
835
|
"",
|
|
@@ -880,7 +893,7 @@ export function renderClaudeUpdateCommand(_pinnedVersion) {
|
|
|
880
893
|
"8. Read `terminal.state` in the apply stdout JSON and treat it as the lifecycle/runtime truth.",
|
|
881
894
|
"9. If `terminal.state` is `healthy`, confirm the update completed and stop.",
|
|
882
895
|
"10. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
|
|
883
|
-
"11. If `terminal.state` is `manual_review_required`,
|
|
896
|
+
"11. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of inventing a repair.",
|
|
884
897
|
"12. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
|
|
885
898
|
"</process>",
|
|
886
899
|
"",
|
|
@@ -888,6 +901,7 @@ export function renderClaudeUpdateCommand(_pinnedVersion) {
|
|
|
888
901
|
"- Do ask for explicit approval after the structured preview and before apply.",
|
|
889
902
|
"- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
|
|
890
903
|
"- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
|
|
904
|
+
"- `terminal.commands` contains only GDH-classified auto-applicable follow-up; project-owned review stays in `terminal.manualSteps`.",
|
|
891
905
|
"- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
|
|
892
906
|
"- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
|
|
893
907
|
"- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
|
|
@@ -927,7 +941,7 @@ export function renderCodexUpdateSkill(_pinnedVersion) {
|
|
|
927
941
|
"8. Read `terminal.state` in the apply stdout JSON and treat it as the lifecycle/runtime truth.",
|
|
928
942
|
"9. If `terminal.state` is `healthy`, confirm the update completed and stop.",
|
|
929
943
|
"10. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
|
|
930
|
-
"11. If `terminal.state` is `manual_review_required`,
|
|
944
|
+
"11. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of inventing a repair.",
|
|
931
945
|
"12. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
|
|
932
946
|
"</process>",
|
|
933
947
|
"",
|
|
@@ -935,6 +949,7 @@ export function renderCodexUpdateSkill(_pinnedVersion) {
|
|
|
935
949
|
"- Do ask for explicit approval after the structured preview and before apply.",
|
|
936
950
|
"- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
|
|
937
951
|
"- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
|
|
952
|
+
"- `terminal.commands` contains only GDH-classified auto-applicable follow-up; project-owned review stays in `terminal.manualSteps`.",
|
|
938
953
|
"- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
|
|
939
954
|
"- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
|
|
940
955
|
"- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
|
|
@@ -972,7 +987,7 @@ export function renderCursorUpdateSkill(_pinnedVersion) {
|
|
|
972
987
|
"8. Read `terminal.state` in the apply stdout JSON and treat it as the lifecycle/runtime truth.",
|
|
973
988
|
"9. If `terminal.state` is `healthy`, confirm the update completed and stop.",
|
|
974
989
|
"10. If `terminal.state` is `follow_up_required`, run the surfaced `terminal.commands`, then run the surfaced `terminal.validationCommands`, and confirm the follow-up results before stopping.",
|
|
975
|
-
"11. If `terminal.state` is `manual_review_required`,
|
|
990
|
+
"11. If `terminal.state` is `manual_review_required`, run any surfaced `terminal.commands` first because they are auto-applicable, then run the surfaced `terminal.validationCommands`, explain the remaining `terminal.manualSteps`, and stop for review instead of inventing a repair.",
|
|
976
991
|
"12. If `terminal.state` is `blocked`, surface `terminal.summary` plus the reasons and stop.",
|
|
977
992
|
"</process>",
|
|
978
993
|
"",
|
|
@@ -980,6 +995,7 @@ export function renderCursorUpdateSkill(_pinnedVersion) {
|
|
|
980
995
|
"- Do ask for explicit approval after the structured preview and before apply.",
|
|
981
996
|
"- Do not invent migration steps from prose docs; use the machine-readable `preview` payload.",
|
|
982
997
|
"- Do treat `terminal.state` as the primary apply truth; the additive compatibility fields are not the main follow-through contract.",
|
|
998
|
+
"- `terminal.commands` contains only GDH-classified auto-applicable follow-up; project-owned review stays in `terminal.manualSteps`.",
|
|
983
999
|
"- Bake literal `@latest` in the shellout so the new CLI performs the update, not the old one.",
|
|
984
1000
|
"- If `self-update` returns `rolled_back` or `blocked`, surface the failure reason and stop (do not retry).",
|
|
985
1001
|
"- If `self-update` returns `skipped_dev_mode`, explain that dev-from-source mode bypasses pinning; no action needed.",
|
|
@@ -1563,7 +1579,7 @@ function inspectCodexSkillSurface(targetPath, relativePath, content, expectedCon
|
|
|
1563
1579
|
present: content !== null,
|
|
1564
1580
|
state: content === null ? "missing" : content === expectedContent ? "ready" : "misconfigured",
|
|
1565
1581
|
summary: content === null
|
|
1566
|
-
? `Codex \`/${skillName}\` skill is missing and should install under .
|
|
1582
|
+
? `Codex \`/${skillName}\` skill is missing and should install under .agents/skills/.`
|
|
1567
1583
|
: content === expectedContent
|
|
1568
1584
|
? `Codex can discover the managed \`/${skillName}\` skill.`
|
|
1569
1585
|
: `Codex \`/${skillName}\` skill exists but no longer matches the expected managed GDH skill.`,
|
|
@@ -1704,7 +1720,7 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
|
|
|
1704
1720
|
? "ready"
|
|
1705
1721
|
: "misconfigured",
|
|
1706
1722
|
summary: codexSkillContent === null
|
|
1707
|
-
? "Codex onboarding handoff is missing and should install `/gdh-onboard` under .
|
|
1723
|
+
? "Codex onboarding handoff is missing and should install `/gdh-onboard` under .agents/skills/."
|
|
1708
1724
|
: expectedCodexOnboardSkill === null
|
|
1709
1725
|
? "Codex onboarding handoff cannot be validated yet: no `gdh_version` is pinned (run `gdh setup` or `gdh migrate --apply`)."
|
|
1710
1726
|
: codexSkillContent === expectedCodexOnboardSkill
|
|
@@ -2196,6 +2212,30 @@ function planCodexRepoInstallActions(targetPath, adapter, pinnedVersion, project
|
|
|
2196
2212
|
content: renderManagedCodexProjectConfig(existingContent, pinnedVersion),
|
|
2197
2213
|
}));
|
|
2198
2214
|
}
|
|
2215
|
+
actions.push(...planLegacyCodexSkillCleanupActions(targetPath, pinnedVersion));
|
|
2216
|
+
return actions;
|
|
2217
|
+
}
|
|
2218
|
+
function planLegacyCodexSkillCleanupActions(targetPath, pinnedVersion) {
|
|
2219
|
+
const actions = [];
|
|
2220
|
+
for (const [relativePath, renderFn, skillName] of LEGACY_CODEX_SKILL_RELATIVE_PATHS) {
|
|
2221
|
+
const absolutePath = path.join(targetPath, relativePath);
|
|
2222
|
+
const content = fsSync.existsSync(absolutePath)
|
|
2223
|
+
? fsSync.readFileSync(absolutePath, "utf8")
|
|
2224
|
+
: null;
|
|
2225
|
+
if (content === null || content !== renderFn(pinnedVersion)) {
|
|
2226
|
+
continue;
|
|
2227
|
+
}
|
|
2228
|
+
actions.push(createInstallAction({
|
|
2229
|
+
agent: "codex",
|
|
2230
|
+
kind: "remove_file",
|
|
2231
|
+
scope: "repo",
|
|
2232
|
+
targetPath,
|
|
2233
|
+
relativePath,
|
|
2234
|
+
state: "planned",
|
|
2235
|
+
mode: "delete",
|
|
2236
|
+
summary: `Remove legacy managed Codex \`/${skillName}\` skill from .codex/skills after installing the documented .agents/skills location.`,
|
|
2237
|
+
}));
|
|
2238
|
+
}
|
|
2199
2239
|
return actions;
|
|
2200
2240
|
}
|
|
2201
2241
|
function planCodexUserInstallActions(targetPath, projectMcp, integrationRootPath, pinnedVersion) {
|
|
@@ -2412,6 +2452,12 @@ async function applyWriteFileAction(action) {
|
|
|
2412
2452
|
await fs.mkdir(path.dirname(action.absolutePath), { recursive: true });
|
|
2413
2453
|
await fs.writeFile(action.absolutePath, action.content ?? renderCursorRule(), "utf8");
|
|
2414
2454
|
}
|
|
2455
|
+
async function applyRemoveFileAction(action) {
|
|
2456
|
+
if (action.absolutePath === null) {
|
|
2457
|
+
throw new Error("Remove-file install action is missing an absolute path.");
|
|
2458
|
+
}
|
|
2459
|
+
await fs.rm(action.absolutePath, { force: true });
|
|
2460
|
+
}
|
|
2415
2461
|
async function applyRunCommandAction(action) {
|
|
2416
2462
|
const [command, ...args] = action.command ?? [];
|
|
2417
2463
|
if (!command) {
|
|
@@ -2509,6 +2555,8 @@ export function renderManagedCodexProjectSection(pinnedVersion) {
|
|
|
2509
2555
|
"[mcp_servers.gdh]",
|
|
2510
2556
|
'command = "npx"',
|
|
2511
2557
|
`args = ["-y", "@skillcap/gdh@${pinnedVersion}", "mcp", "serve"]`,
|
|
2558
|
+
"startup_timeout_sec = 30",
|
|
2559
|
+
"tool_timeout_sec = 300",
|
|
2512
2560
|
].join("\n");
|
|
2513
2561
|
}
|
|
2514
2562
|
export function renderManagedCodexProjectConfig(existingContent, pinnedVersion) {
|
|
@@ -2753,7 +2801,7 @@ async function inspectProjectConfigLifecycleSurface(targetPath) {
|
|
|
2753
2801
|
action: {
|
|
2754
2802
|
kind: "apply_migration",
|
|
2755
2803
|
summary: "Run GDH migrate to rewrite the project config to the current schema.",
|
|
2756
|
-
command:
|
|
2804
|
+
command: migrateApplyCommand(targetPath),
|
|
2757
2805
|
autoApplicable: true,
|
|
2758
2806
|
},
|
|
2759
2807
|
});
|
|
@@ -2829,7 +2877,7 @@ async function inspectRulesLifecycleSurface(targetPath) {
|
|
|
2829
2877
|
action: {
|
|
2830
2878
|
kind: "apply_migration",
|
|
2831
2879
|
summary: "Run GDH migrate to create the default rules file for this target.",
|
|
2832
|
-
command:
|
|
2880
|
+
command: migrateApplyCommand(targetPath),
|
|
2833
2881
|
autoApplicable: true,
|
|
2834
2882
|
},
|
|
2835
2883
|
});
|
|
@@ -2899,7 +2947,7 @@ function inspectAgentContractLifecycleSurface(targetPath, guidanceStatus) {
|
|
|
2899
2947
|
action: {
|
|
2900
2948
|
kind: "apply_migration",
|
|
2901
2949
|
summary: "Run GDH migrate to merge or refresh the managed agent contract block.",
|
|
2902
|
-
command:
|
|
2950
|
+
command: migrateApplyCommand(targetPath),
|
|
2903
2951
|
autoApplicable: true,
|
|
2904
2952
|
},
|
|
2905
2953
|
});
|
|
@@ -2928,7 +2976,7 @@ async function inspectGuidanceIndexLifecycleSurface(targetPath) {
|
|
|
2928
2976
|
action: {
|
|
2929
2977
|
kind: "apply_migration",
|
|
2930
2978
|
summary: "Run GDH migrate to create the default guidance index for this target.",
|
|
2931
|
-
command:
|
|
2979
|
+
command: migrateApplyCommand(targetPath),
|
|
2932
2980
|
autoApplicable: true,
|
|
2933
2981
|
},
|
|
2934
2982
|
});
|
|
@@ -2954,7 +3002,7 @@ async function inspectGuidanceIndexLifecycleSurface(targetPath) {
|
|
|
2954
3002
|
action: {
|
|
2955
3003
|
kind: "apply_migration",
|
|
2956
3004
|
summary: "Run GDH migrate to regenerate the guidance index with updated content.",
|
|
2957
|
-
command:
|
|
3005
|
+
command: migrateApplyCommand(targetPath),
|
|
2958
3006
|
autoApplicable: true,
|
|
2959
3007
|
},
|
|
2960
3008
|
});
|
|
@@ -3011,7 +3059,7 @@ async function inspectGuidanceUnitLifecycleSurface(targetPath, projectConfig) {
|
|
|
3011
3059
|
action: {
|
|
3012
3060
|
kind: "apply_migration",
|
|
3013
3061
|
summary: "Run GDH migrate to create the missing default guidance unit files.",
|
|
3014
|
-
command:
|
|
3062
|
+
command: migrateApplyCommand(targetPath),
|
|
3015
3063
|
autoApplicable: true,
|
|
3016
3064
|
},
|
|
3017
3065
|
});
|
|
@@ -3026,7 +3074,7 @@ async function inspectGuidanceUnitLifecycleSurface(targetPath, projectConfig) {
|
|
|
3026
3074
|
action: {
|
|
3027
3075
|
kind: "apply_migration",
|
|
3028
3076
|
summary: "Run GDH migrate to regenerate guidance units with updated content.",
|
|
3029
|
-
command:
|
|
3077
|
+
command: migrateApplyCommand(targetPath),
|
|
3030
3078
|
autoApplicable: true,
|
|
3031
3079
|
},
|
|
3032
3080
|
});
|
|
@@ -3045,7 +3093,8 @@ function inspectMcpManifestLifecycleSurface(targetPath, mcpEnabled, adapterStatu
|
|
|
3045
3093
|
}
|
|
3046
3094
|
const claudeMcp = findAdapterSurface(adapterStatus, "claude", "mcp_file");
|
|
3047
3095
|
const cursorMcp = findAdapterSurface(adapterStatus, "cursor", "mcp_file");
|
|
3048
|
-
const
|
|
3096
|
+
const codexMcp = findAdapterSurface(adapterStatus, "codex", "mcp_file");
|
|
3097
|
+
const probes = [claudeMcp, cursorMcp, codexMcp]
|
|
3049
3098
|
.filter((surface) => surface !== null)
|
|
3050
3099
|
.map((surface) => createVersionProbe({
|
|
3051
3100
|
targetPath,
|
|
@@ -3054,13 +3103,13 @@ function inspectMcpManifestLifecycleSurface(targetPath, mcpEnabled, adapterStatu
|
|
|
3054
3103
|
expectedVersion: null,
|
|
3055
3104
|
detectedVersion: surface.present ? surface.version : null,
|
|
3056
3105
|
}));
|
|
3057
|
-
const states = [claudeMcp?.state, cursorMcp?.state].filter((state) => state !== undefined);
|
|
3106
|
+
const states = [claudeMcp?.state, cursorMcp?.state, codexMcp?.state].filter((state) => state !== undefined);
|
|
3058
3107
|
if (states.length > 0 && states.every((state) => state === "ready")) {
|
|
3059
3108
|
return createLifecycleSurfaceStatus({
|
|
3060
3109
|
surface: "mcp_manifest",
|
|
3061
3110
|
management: "managed",
|
|
3062
3111
|
state: "compatible",
|
|
3063
|
-
summary: "Project MCP config files are aligned for Claude and Cursor.",
|
|
3112
|
+
summary: "Project MCP config files are aligned for Codex, Claude, and Cursor.",
|
|
3064
3113
|
reasons: [],
|
|
3065
3114
|
probes,
|
|
3066
3115
|
action: null,
|
|
@@ -3393,7 +3442,7 @@ async function inspectYamlSurfaceDirectory(input) {
|
|
|
3393
3442
|
action: {
|
|
3394
3443
|
kind: "apply_migration",
|
|
3395
3444
|
summary: "Run GDH migrate to normalize legacy runtime surface directories.",
|
|
3396
|
-
command:
|
|
3445
|
+
command: migrateApplyCommand(input.targetPath),
|
|
3397
3446
|
autoApplicable: true,
|
|
3398
3447
|
},
|
|
3399
3448
|
});
|
|
@@ -3433,7 +3482,7 @@ async function inspectYamlSurfaceDirectory(input) {
|
|
|
3433
3482
|
action: {
|
|
3434
3483
|
kind: "apply_migration",
|
|
3435
3484
|
summary: "Run GDH migrate to normalize the affected runtime surfaces.",
|
|
3436
|
-
command:
|
|
3485
|
+
command: migrateApplyCommand(input.targetPath),
|
|
3437
3486
|
autoApplicable: true,
|
|
3438
3487
|
},
|
|
3439
3488
|
});
|
|
@@ -3519,6 +3568,9 @@ function summarizeProjectLifecycleState(state, surfaces) {
|
|
|
3519
3568
|
function createLifecycleSurfaceStatus(input) {
|
|
3520
3569
|
return input;
|
|
3521
3570
|
}
|
|
3571
|
+
function migrateApplyCommand(targetPath) {
|
|
3572
|
+
return ["gdh", "migrate", "--apply", targetPath];
|
|
3573
|
+
}
|
|
3522
3574
|
function createVersionProbe(input) {
|
|
3523
3575
|
return {
|
|
3524
3576
|
relativePath: input.relativePath,
|