@skillcap/gdh 0.26.2 → 0.26.4
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/authoring-hook-render.d.ts +13 -0
- package/node_modules/@gdh/adapters/dist/authoring-hook-render.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/authoring-hook-render.js +1 -0
- package/node_modules/@gdh/adapters/dist/authoring-hook-render.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.d.ts +17 -0
- package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.d.ts.map +1 -0
- package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.js +23 -0
- package/node_modules/@gdh/adapters/dist/authoring-hook-state-path.js.map +1 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +36 -0
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +407 -112
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/package.json +2 -2
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +1 -1
- package/node_modules/@gdh/core/dist/index.js +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
|
@@ -3061,6 +3061,121 @@
|
|
|
3061
3061
|
}
|
|
3062
3062
|
]
|
|
3063
3063
|
}
|
|
3064
|
+
},
|
|
3065
|
+
{
|
|
3066
|
+
"version": "0.26.3",
|
|
3067
|
+
"releaseTag": "v0.26.3",
|
|
3068
|
+
"migrationStatus": "required",
|
|
3069
|
+
"summary": "v0.26.3 bumps GDH_UPDATE_HOOK_VERSION 11 -> 12 to land the embedded broker-snapshot reader in the managed authoring-hook.js. handlePostEdit, handlePostToolBatch, and handleStop now read .gdh-state/authoring/lsp-instance.json + diagnostics-broker/snapshot.json directly instead of shelling out to `npx -y @skillcap/gdh@PINNED authoring check` synchronously, eliminating the ~9.32 s npx bootstrap tax that was making every hook event time out at the 2500 ms default budget. Detached warmup spawn still uses npx (fire-and-forget). Class-1 deterministic re-bake (D-09 / D-03 exempt — GDH_UPDATE_HOOK_VERSION is in CLASS_ONE_REBAKE_EXEMPT). Managed targets re-bake via gdh self-update or gdh migrate --apply. No surface-schema changes; no AGENTS.md contract bump; no broker schema bump.",
|
|
3070
|
+
"releaseHighlights": {
|
|
3071
|
+
"summary": "v0.26.3 is a patch release that eliminates the per-edit `npx` tax in the managed authoring hook. Dogfooding on monorepo targets measured `npx -y @skillcap/gdh@0.25.5 --version` alone at ~9.32 s on cold cache; the hook's default check budget is 2500 ms (env-cap 10 000 ms), so every PostToolUse, PostToolBatch, and Stop event timed out before GDH could produce diagnostics. The hook now embeds the broker-snapshot fast-path read directly — `<integrationRoot>/.gdh-state/authoring/lsp-instance.json` + `diagnostics-broker/snapshot.json` are read in the hook process (sub-100 ms warm), validated against `lspInstanceId` and utf8 SHA-256 `contentHash`, and rendered into the same bracketed-token vocabulary the existing dispatch consumes.",
|
|
3072
|
+
"operatorChanges": [
|
|
3073
|
+
"**Embedded broker-snapshot reader on the hot path.** `handlePostEdit`, `handlePostToolBatch`, and `handleStop` now route through a shared `runEmbeddedDiagnosticsRead(stateRoot, changedFiles)` helper rendered into the hook template. The synchronous `runGdh(['authoring','check',...])` call site (and its `npx -y @skillcap/gdh@PINNED` shellout) is deleted.",
|
|
3074
|
+
"**Detached warmup spawn unchanged.** `spawnDetachedWarmup` still uses `child_process.spawn('npx', ['-y', '@skillcap/gdh@PINNED', 'lsp', 'warmup', ...])` because it is fire-and-forget (`detached: true`, `stdio: 'ignore'`, `.unref()`); the npx tax there does not block hook return. Eliminating it is future work.",
|
|
3075
|
+
"**New render-time input `stateRelativePathFromHook`.** Computed at install-plan time per call site so monorepo nesting works: a hook installed at `<root>/.codex/hooks/gdh-authoring-guard.js` and a hook installed at `<root>/apps/game/.claude/hooks/gdh-authoring-guard.js` both resolve to the same `<integrationRoot>/.gdh-state/` at runtime via `path.resolve(__dirname, STATE_RELATIVE_PATH_FROM_HOOK)`.",
|
|
3076
|
+
"**Stop hook contract relaxation.** Stop no longer synchronously launches Godot via `gdh authoring check --mode final`. When the broker is cold (no `lsp-instance.json` / no `snapshot.json`), Stop returns `additionalContext` recommending `gdh authoring check --mode final` manually and spawns detached warmup so the next session benefits. The never-block invariant from Phase 82 / LSP-03 is preserved; the existing `hasAuthoringWorkInTarget` (GF3) git-gate noop is preserved. RFC 0009 carries an addendum recording the relaxation.",
|
|
3077
|
+
"**`GDH_UPDATE_HOOK_VERSION` 11 → 12.** Forces deterministic re-bake on the existing class-1 deterministic surface mechanism. No agentContract bump, no `MIGRATION_REGISTRY_ENTRIES` entry, no schema change."
|
|
3078
|
+
]
|
|
3079
|
+
},
|
|
3080
|
+
"updateContract": {
|
|
3081
|
+
"summary": "Managed targets must re-bake the managed authoring-hook.js so the embedded broker-snapshot reader replaces the synchronous npx shellout in PostEdit / PostToolBatch / Stop. Re-render is deterministic; no manual editor steps. Operators see the largest behavior delta as wallclock — every authoring-file edit's hook event returns sub-100 ms warm instead of timing out after 2500 ms. Stop hook contract relaxes intentionally: cold-broker Stop now reports a recommendation and spawns warmup rather than synchronously launching Godot.",
|
|
3082
|
+
"steps": [
|
|
3083
|
+
{
|
|
3084
|
+
"id": "install_v0_26_3",
|
|
3085
|
+
"kind": "mechanical",
|
|
3086
|
+
"summary": "Install the v0.26.3 GDH package.",
|
|
3087
|
+
"detail": "Run gdh self-update so the target uses the new managed authoring-hook.js fingerprint (hook version 12) with the embedded broker-snapshot reader.",
|
|
3088
|
+
"commands": [
|
|
3089
|
+
"gdh self-update --apply"
|
|
3090
|
+
],
|
|
3091
|
+
"validationCommands": [
|
|
3092
|
+
"gdh status",
|
|
3093
|
+
"gdh adapters status"
|
|
3094
|
+
]
|
|
3095
|
+
},
|
|
3096
|
+
{
|
|
3097
|
+
"id": "rebake_authoring_hook",
|
|
3098
|
+
"kind": "mechanical",
|
|
3099
|
+
"summary": "Re-bake managed authoring-hook.js via gdh migrate --apply.",
|
|
3100
|
+
"detail": "If gdh self-update reports pending lifecycle work, run gdh migrate --apply. The migrate path re-renders the managed Codex authoring hook and the Claude authoring hook templates with hook version 12 and the new STATE_RELATIVE_PATH_FROM_HOOK constant baked per install location. The new behavior is opaque to AGENTS.md contract surfaces, settings, and skill bodies; no other re-bake required for this release.",
|
|
3101
|
+
"commands": [
|
|
3102
|
+
"gdh migrate --apply"
|
|
3103
|
+
],
|
|
3104
|
+
"validationCommands": [
|
|
3105
|
+
"gdh adapters status"
|
|
3106
|
+
]
|
|
3107
|
+
},
|
|
3108
|
+
{
|
|
3109
|
+
"id": "confirm_embedded_reader",
|
|
3110
|
+
"kind": "agent_reasoning",
|
|
3111
|
+
"summary": "Confirm the embedded broker-snapshot reader is active and the npx tax is gone.",
|
|
3112
|
+
"detail": "Inspect the rendered authoring-hook.js header for `gdh-hook-version: 12` and confirm `STATE_RELATIVE_PATH_FROM_HOOK` and `runEmbeddedDiagnosticsRead` (or equivalent symbol) appear in the script. Optionally exercise: edit a `.gd` file in the configured Godot target; the PostToolUse hook should return within ~100 ms once warmup has primed the broker (first edit is bound by warmup latency, subsequent edits read directly). Cold-broker Stop should report `broker not yet primed; run gdh authoring check --mode final manually` rather than synchronously launching Godot.",
|
|
3113
|
+
"commands": [
|
|
3114
|
+
"gdh adapters status"
|
|
3115
|
+
],
|
|
3116
|
+
"validationCommands": [
|
|
3117
|
+
"gdh adapters status"
|
|
3118
|
+
]
|
|
3119
|
+
}
|
|
3120
|
+
]
|
|
3121
|
+
}
|
|
3122
|
+
},
|
|
3123
|
+
{
|
|
3124
|
+
"version": "0.26.4",
|
|
3125
|
+
"releaseTag": "v0.26.4",
|
|
3126
|
+
"migrationStatus": "required",
|
|
3127
|
+
"summary": "v0.26.4 bumps GDH_UPDATE_HOOK_VERSION 12 -> 13 to land a three-bug fix in the managed authoring-hook.js. Bug A: spawnDetachedWarmup running `gdh lsp warmup` only booted Godot LSP and never primed diagnostics-broker/snapshot.json, so the embedded reader returned `[pending] broker_not_yet_primed` indefinitely; replaced with spawnDetachedRefresh running `gdh authoring diagnostics refresh --target ROOT --changed FILE...` (calls refreshAuthoringDiagnostics which writes snapshot.json + primed marker, per-file 10 s drain timeout). Bug B: Stop hook emitted `{\"hookSpecificOutput\":{\"hookEventName\":\"Stop\",\"additionalContext\":\"...\"}}` for Claude, which Claude Stop schema rejects (Stop accepts only decision/reason/continue/stopReason/suppressOutput/systemMessage); Claude Stop now silent-allow, Codex Stop unchanged. Bug C: same gate silently swallowed Claude PostToolUse [pending]/[stale]/[timeout] hints; gate narrowed to Stop-only on Claude, plus new reasonHint(output, targetRoot) helper appended to context messages so the agent gets per-edit actionable next-step text per broker reason class. Class-1 deterministic re-bake (D-09 / D-03 exempt — GDH_UPDATE_HOOK_VERSION is in CLASS_ONE_REBAKE_EXEMPT). Managed targets re-bake via gdh self-update or gdh migrate --apply. No surface-schema changes; no AGENTS.md contract bump; no broker schema bump.",
|
|
3128
|
+
"releaseHighlights": {
|
|
3129
|
+
"summary": "v0.26.4 is a patch release that fixes a three-bug stack in the managed authoring hook (`packages/adapters/src/templates/authoring-hook.js.tpl`) that was preventing the post-edit dispatch from ever reaching `[fresh]` on Claude. v0.26.3 eliminated the per-edit npx tax via the embedded broker-snapshot reader, but the detached spawn still ran `gdh lsp warmup` — which only boots Godot LSP and writes `lsp-instance.json`, never priming the broker `snapshot.json` that the embedded reader requires. The hook also emitted Claude-invalid Stop JSON and silently dropped Claude PostToolUse hints. v0.26.4 replaces the bare warmup with a scoped `gdh authoring diagnostics refresh --target ROOT --changed FILE...` spawn, makes Claude Stop silent-allow, and adds agent-actionable per-edit `reasonHint` text on `[pending]/[stale]/[timeout]` PostToolUse events.",
|
|
3130
|
+
"operatorChanges": [
|
|
3131
|
+
"**Hook spawns scoped diagnostics refresh, not bare warmup.** `spawnDetachedWarmup(targetRoot)` renamed to `spawnDetachedRefresh(targetRoot, files)`; the spawned argv is `npx -y @skillcap/gdh@PINNED authoring diagnostics refresh --target <root> --changed <file>...` with `detached: true`, `stdio: 'ignore'`, `windowsHide: true`, `.unref()` invariants preserved (Pitfall 1). All four call sites updated (PostToolUse, PostToolBatch, Stop cold-broker × 2). The new CLI verb runs `getManagedLspStatus({ launchPolicy: \"launch_if_needed\" })` (boots Godot if needed), opens scoped files via LSP, drains diagnostics with per-file 10 s timeout, and writes `diagnostics-broker/snapshot.json` plus the `primed` marker via `writePersistedSnapshot` (`packages/authoring/src/diagnostics-broker.ts:316`). Result: post-edit hooks now reach `[fresh]` on the second edit instead of looping forever on `[pending] broker_not_yet_primed`.",
|
|
3132
|
+
"**Claude Stop hook silent-allow.** The Stop hook previously emitted `{\"hookSpecificOutput\":{\"hookEventName\":\"Stop\",\"additionalContext\":\"...\"}}`, which Claude rejects with `error: hook returned invalid stop hook JSON output` because the documented Stop schema only accepts `decision` / `reason` / `continue` / `stopReason` / `suppressOutput` / `systemMessage`. The `context()` gate now returns `allow()` (empty stdout, exit 0) for Claude Stop. Codex Stop is unchanged — Codex accepts `additionalContext` on every event.",
|
|
3133
|
+
"**Per-edit `reasonHint` on Claude PostToolUse / PostToolBatch.** The same `context()` gate previously silently swallowed Claude PostToolUse `[pending]/[stale]/[timeout]` results, so the agent received no per-edit signal. The fix narrows the gate to `if (AGENT !== 'codex' && CURRENT_EVENT === 'Stop') return allow();`, so Claude PostToolUse / PostToolBatch / FileChanged now emit `hookSpecificOutput.additionalContext`. A new `reasonHint(output, targetRoot)` helper appends an agent-actionable next step keyed on the broker reason class (`lsp_instance_not_running`, `broker_not_yet_primed`, `file_not_in_snapshot`, `content_hash_mismatch`, `freshness_expired`, `lsp_instance_identity_mismatch`, generic). Each hint embeds the target path so the agent has copy-paste-ready commands like `gdh authoring diagnostics refresh --target \"<root>\"` or `gdh lsp prune --target \"<root>\"`.",
|
|
3134
|
+
"**`GDH_UPDATE_HOOK_VERSION` 12 → 13.** Forces deterministic re-bake on the existing class-1 deterministic surface mechanism. No agentContract bump, no `MIGRATION_REGISTRY_ENTRIES` entry, no schema change."
|
|
3135
|
+
]
|
|
3136
|
+
},
|
|
3137
|
+
"updateContract": {
|
|
3138
|
+
"summary": "Managed targets must re-bake the managed authoring-hook.js so the detached spawn switches from bare `lsp warmup` to scoped `authoring diagnostics refresh --target ROOT --changed FILE...`, Claude Stop becomes silent-allow (instead of emitting the Claude-invalid `hookSpecificOutput.additionalContext` JSON), and PostToolUse / PostToolBatch [pending]/[stale]/[timeout] events on Claude now deliver agent-actionable reasonHint text. Re-render is deterministic; no manual editor steps. Operators see two visible behavior deltas: post-edit dispatch now reaches `[fresh]` on the second edit instead of looping forever on `broker_not_yet_primed`, and the `Stop hook (failed): hook returned invalid stop hook JSON output` Claude error stops appearing.",
|
|
3139
|
+
"steps": [
|
|
3140
|
+
{
|
|
3141
|
+
"id": "install_v0_26_4",
|
|
3142
|
+
"kind": "mechanical",
|
|
3143
|
+
"summary": "Install the v0.26.4 GDH package.",
|
|
3144
|
+
"detail": "Run gdh self-update so the target uses the new managed authoring-hook.js fingerprint (hook version 13) with the scoped diagnostics-refresh spawn, Claude Stop silent-allow, and reasonHint helper.",
|
|
3145
|
+
"commands": [
|
|
3146
|
+
"gdh self-update --apply"
|
|
3147
|
+
],
|
|
3148
|
+
"validationCommands": [
|
|
3149
|
+
"gdh status",
|
|
3150
|
+
"gdh adapters status"
|
|
3151
|
+
]
|
|
3152
|
+
},
|
|
3153
|
+
{
|
|
3154
|
+
"id": "rebake_authoring_hook",
|
|
3155
|
+
"kind": "mechanical",
|
|
3156
|
+
"summary": "Re-bake managed authoring-hook.js via gdh migrate --apply.",
|
|
3157
|
+
"detail": "If gdh self-update reports pending lifecycle work, run gdh migrate --apply. The migrate path re-renders the managed Codex authoring hook and the Claude authoring hook templates with hook version 13: spawnDetachedRefresh replaces spawnDetachedWarmup (argv: authoring diagnostics refresh --target ROOT --changed FILE...), context() Stop branch returns allow() on Claude (silent), and reasonHint(output, targetRoot) is appended to PostToolUse / PostToolBatch / Stop pending-stale-timeout context messages. The new behavior is opaque to AGENTS.md contract surfaces, settings, and skill bodies; no other re-bake required for this release.",
|
|
3158
|
+
"commands": [
|
|
3159
|
+
"gdh migrate --apply"
|
|
3160
|
+
],
|
|
3161
|
+
"validationCommands": [
|
|
3162
|
+
"gdh adapters status"
|
|
3163
|
+
]
|
|
3164
|
+
},
|
|
3165
|
+
{
|
|
3166
|
+
"id": "confirm_post_edit_reaches_fresh",
|
|
3167
|
+
"kind": "agent_reasoning",
|
|
3168
|
+
"summary": "Confirm post-edit dispatch now reaches `[fresh]` and Claude Stop no longer fails.",
|
|
3169
|
+
"detail": "Inspect the rendered authoring-hook.js header for `gdh-hook-version: 13` and confirm `spawnDetachedRefresh` (or equivalent symbol) plus `reasonHint` appear in the script. Optionally exercise: edit a `.gd` file in the configured Godot target; the first PostToolUse hook returns `[pending] broker_not_yet_primed` plus a `reasonHint` snippet pointing at `gdh authoring diagnostics refresh --target <root>`, and the detached refresh primes `<integrationRoot>/.gdh-state/authoring/diagnostics-broker/snapshot.json` within ~10 s. Subsequent edits to the same file return silent allow ([fresh]) from the embedded reader. End-of-session Stop on Claude no longer surfaces `Stop hook (failed): hook returned invalid stop hook JSON output`.",
|
|
3170
|
+
"commands": [
|
|
3171
|
+
"gdh adapters status"
|
|
3172
|
+
],
|
|
3173
|
+
"validationCommands": [
|
|
3174
|
+
"gdh adapters status"
|
|
3175
|
+
]
|
|
3176
|
+
}
|
|
3177
|
+
]
|
|
3178
|
+
}
|
|
3064
3179
|
}
|
|
3065
3180
|
]
|
|
3066
3181
|
}
|
|
@@ -6,5 +6,18 @@ export declare function renderGdhAuthoringHook(input: {
|
|
|
6
6
|
readonly pinnedVersion: string;
|
|
7
7
|
readonly targetRelativePath: string;
|
|
8
8
|
readonly agent: "codex" | "claude";
|
|
9
|
+
/**
|
|
10
|
+
* POSIX-normalised relative path from the directory containing the rendered
|
|
11
|
+
* hook (`__dirname` at runtime) to the integration root's `.gdh-state/`
|
|
12
|
+
* directory. The hook's embedded broker-snapshot reader resolves
|
|
13
|
+
* `path.resolve(__dirname, STATE_RELATIVE_PATH_FROM_HOOK)` to find the
|
|
14
|
+
* authoring state files (`lsp-instance.json`,
|
|
15
|
+
* `diagnostics-broker/snapshot.json`).
|
|
16
|
+
*
|
|
17
|
+
* Computed at install-plan time as
|
|
18
|
+
* `path.relative(hookDirAbsolute, path.join(integrationRootAbsolute, ".gdh-state"))`
|
|
19
|
+
* with separators converted to `/`.
|
|
20
|
+
*/
|
|
21
|
+
readonly stateRelativePathFromHook: string;
|
|
9
22
|
}): string;
|
|
10
23
|
//# sourceMappingURL=authoring-hook-render.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-hook-render.d.ts","sourceRoot":"","sources":["../src/authoring-hook-render.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mCAAmC,yCAAyC,CAAC;AAC1F,eAAO,MAAM,kCAAkC,wCAAwC,CAAC;AACxF,eAAO,MAAM,6BAA6B,uRAC4O,CAAC;AACvR,eAAO,MAAM,4BAA4B,qRAC2O,CAAC;AAErR,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"authoring-hook-render.d.ts","sourceRoot":"","sources":["../src/authoring-hook-render.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,mCAAmC,yCAAyC,CAAC;AAC1F,eAAO,MAAM,kCAAkC,wCAAwC,CAAC;AACxF,eAAO,MAAM,6BAA6B,uRAC4O,CAAC;AACvR,eAAO,MAAM,4BAA4B,qRAC2O,CAAC;AAErR,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAAC;IACnC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,CAAC;CAC5C,GAAG,MAAM,CAQT"}
|
|
@@ -11,6 +11,7 @@ export function renderGdhAuthoringHook(input) {
|
|
|
11
11
|
pinnedVersionJson: JSON.stringify(input.pinnedVersion),
|
|
12
12
|
targetRelativePathJson: JSON.stringify(input.targetRelativePath),
|
|
13
13
|
agentJson: JSON.stringify(input.agent),
|
|
14
|
+
stateRelativePathFromHookJson: JSON.stringify(input.stateRelativePathFromHook),
|
|
14
15
|
});
|
|
15
16
|
}
|
|
16
17
|
//# sourceMappingURL=authoring-hook-render.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authoring-hook-render.js","sourceRoot":"","sources":["../src/authoring-hook-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,mCAAmC,GAAG,sCAAsC,CAAC;AAC1F,MAAM,CAAC,MAAM,kCAAkC,GAAG,qCAAqC,CAAC;AACxF,MAAM,CAAC,MAAM,6BAA6B,GACxC,oRAAoR,CAAC;AACvR,MAAM,CAAC,MAAM,4BAA4B,GACvC,kRAAkR,CAAC;AAErR,MAAM,UAAU,sBAAsB,CAAC,
|
|
1
|
+
{"version":3,"file":"authoring-hook-render.js","sourceRoot":"","sources":["../src/authoring-hook-render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAE3E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAqB,CAAC,gBAAgB,EAAE,eAAe,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,mCAAmC,GAAG,sCAAsC,CAAC;AAC1F,MAAM,CAAC,MAAM,kCAAkC,GAAG,qCAAqC,CAAC;AACxF,MAAM,CAAC,MAAM,6BAA6B,GACxC,oRAAoR,CAAC;AACvR,MAAM,CAAC,MAAM,4BAA4B,GACvC,kRAAkR,CAAC;AAErR,MAAM,UAAU,sBAAsB,CAAC,KAiBtC;IACC,OAAO,qBAAqB,CAAC,uBAAuB,EAAE;QACpD,WAAW,EAAE,MAAM,CAAC,uBAAuB,CAAC;QAC5C,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC;QACtD,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,CAAC;QAChE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;QACtC,6BAA6B,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,yBAAyB,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compute the POSIX-normalised relative path from the directory of an installed
|
|
3
|
+
* authoring hook to the integration root's `.gdh-state/` directory. Used to
|
|
4
|
+
* bake `STATE_RELATIVE_PATH_FROM_HOOK` into the rendered hook so its embedded
|
|
5
|
+
* broker-snapshot reader can resolve `path.resolve(__dirname, …)` to the state
|
|
6
|
+
* files at runtime regardless of `process.cwd()`.
|
|
7
|
+
*
|
|
8
|
+
* @param installRoot Absolute directory at which the hook file's relative path
|
|
9
|
+
* is anchored (Codex install: `integrationRootPath`; Claude same-repo target
|
|
10
|
+
* install: `targetPath`).
|
|
11
|
+
* @param hookRelativePath Hook path relative to `installRoot` (e.g.
|
|
12
|
+
* `.codex/hooks/gdh-authoring-guard.js`).
|
|
13
|
+
* @param integrationRootAbsolute Absolute integration-root path containing the
|
|
14
|
+
* shared `.gdh-state/` directory.
|
|
15
|
+
*/
|
|
16
|
+
export declare function computeStateRelativePathFromHook(installRoot: string, hookRelativePath: string, integrationRootAbsolute: string): string;
|
|
17
|
+
//# sourceMappingURL=authoring-hook-state-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring-hook-state-path.d.ts","sourceRoot":"","sources":["../src/authoring-hook-state-path.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gCAAgC,CAC9C,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,EACxB,uBAAuB,EAAE,MAAM,GAC9B,MAAM,CAKR"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
/**
|
|
3
|
+
* Compute the POSIX-normalised relative path from the directory of an installed
|
|
4
|
+
* authoring hook to the integration root's `.gdh-state/` directory. Used to
|
|
5
|
+
* bake `STATE_RELATIVE_PATH_FROM_HOOK` into the rendered hook so its embedded
|
|
6
|
+
* broker-snapshot reader can resolve `path.resolve(__dirname, …)` to the state
|
|
7
|
+
* files at runtime regardless of `process.cwd()`.
|
|
8
|
+
*
|
|
9
|
+
* @param installRoot Absolute directory at which the hook file's relative path
|
|
10
|
+
* is anchored (Codex install: `integrationRootPath`; Claude same-repo target
|
|
11
|
+
* install: `targetPath`).
|
|
12
|
+
* @param hookRelativePath Hook path relative to `installRoot` (e.g.
|
|
13
|
+
* `.codex/hooks/gdh-authoring-guard.js`).
|
|
14
|
+
* @param integrationRootAbsolute Absolute integration-root path containing the
|
|
15
|
+
* shared `.gdh-state/` directory.
|
|
16
|
+
*/
|
|
17
|
+
export function computeStateRelativePathFromHook(installRoot, hookRelativePath, integrationRootAbsolute) {
|
|
18
|
+
const stateAbsolute = path.join(integrationRootAbsolute, ".gdh-state");
|
|
19
|
+
const hookDirAbsolute = path.dirname(path.join(installRoot, hookRelativePath));
|
|
20
|
+
const relative = path.relative(hookDirAbsolute, stateAbsolute) || ".";
|
|
21
|
+
return relative.split(path.sep).join("/");
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=authoring-hook-state-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authoring-hook-state-path.js","sourceRoot":"","sources":["../src/authoring-hook-state-path.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,gCAAgC,CAC9C,WAAmB,EACnB,gBAAwB,EACxB,uBAA+B;IAE/B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,YAAY,CAAC,CAAC;IACvE,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC;IACtE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAeL,KAAK,6BAA6B,EAClC,KAAK,4BAA4B,EACjC,KAAK,cAAc,EAInB,KAAK,sCAAsC,EAE3C,KAAK,gCAAgC,EAKrC,KAAK,eAAe,EACpB,KAAK,iBAAiB,EAIvB,MAAM,WAAW,CAAC;AAyBnB,OAAO,EAEL,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,6 +13,7 @@ import { readInventoryCacheOrScan } from "@gdh/scan";
|
|
|
13
13
|
import { CLAUDE_SETTINGS_RELATIVE_PATH, patchClaudeSettingsForGdhAuthoringHooks, patchClaudeSettingsForGdhSessionStart, patchClaudeSettingsForGdhStatusline, } from "./claude-settings-patch.js";
|
|
14
14
|
import { computeDeferredActionsAdvisory, } from "./deferred-actions-advisory.js";
|
|
15
15
|
import { CLAUDE_AUTHORING_HOOK_RELATIVE_PATH, CODEX_AUTHORING_HOOK_COMMAND, CODEX_AUTHORING_HOOK_RELATIVE_PATH, renderGdhAuthoringHook, } from "./authoring-hook-render.js";
|
|
16
|
+
import { computeStateRelativePathFromHook } from "./authoring-hook-state-path.js";
|
|
16
17
|
import { CLAUDE_STATUSLINE_RELATIVE_PATH, renderClaudeUpdateStatusline, } from "./claude-statusline-render.js";
|
|
17
18
|
import { CLAUDE_CHECK_UPDATE_HOOK_RELATIVE_PATH, CLAUDE_CHECK_UPDATE_WORKER_RELATIVE_PATH, renderClaudeCheckUpdateHook, } from "./claude-update-hook-render.js";
|
|
18
19
|
import { renderClaudeCheckUpdateWorker } from "./claude-update-worker-render.js";
|
|
@@ -852,6 +853,7 @@ async function inspectCodexAdapter(targetPath, guidance, projectMcp, pinnedVersi
|
|
|
852
853
|
pinnedVersion,
|
|
853
854
|
targetRelativePath: path.relative(projectMcp.integrationRootPath, targetPath) || ".",
|
|
854
855
|
agent: "codex",
|
|
856
|
+
stateRelativePathFromHook: computeStateRelativePathFromHook(projectMcp.integrationRootPath, CODEX_AUTHORING_HOOK_RELATIVE_PATH, projectMcp.integrationRootPath),
|
|
855
857
|
});
|
|
856
858
|
const surfaces = [
|
|
857
859
|
createSurfaceStatus({
|
|
@@ -983,6 +985,10 @@ async function inspectClaudeAdapter(targetPath, guidance, projectMcp, pinnedVers
|
|
|
983
985
|
pinnedVersion,
|
|
984
986
|
targetRelativePath: ".",
|
|
985
987
|
agent: "claude",
|
|
988
|
+
// inspectClaudeAdapter previews the same-repo install: hook lives at
|
|
989
|
+
// `<targetPath>/.claude/hooks/gdh-authoring-guard.js`; state lives at
|
|
990
|
+
// `<targetPath>/.gdh-state/`. Compute the relative from the hook dir.
|
|
991
|
+
stateRelativePathFromHook: computeStateRelativePathFromHook(targetPath, CLAUDE_AUTHORING_HOOK_RELATIVE_PATH, targetPath),
|
|
986
992
|
});
|
|
987
993
|
const expectedClaudeStatusCommand = pinnedVersion === null ? null : renderClaudeStatusCommand(pinnedVersion);
|
|
988
994
|
const expectedClaudeMigrateCommand = pinnedVersion === null ? null : renderClaudeMigrateCommand(pinnedVersion);
|
|
@@ -1398,6 +1404,21 @@ function planSharedRepoInstallActions(targetPath, projectMcp, agent, effectiveDe
|
|
|
1398
1404
|
}
|
|
1399
1405
|
return actions;
|
|
1400
1406
|
}
|
|
1407
|
+
/**
|
|
1408
|
+
* Compute the POSIX-normalised relative path from the directory of an installed
|
|
1409
|
+
* authoring hook to the integration root's `.gdh-state/` directory. Used to
|
|
1410
|
+
* bake `STATE_RELATIVE_PATH_FROM_HOOK` into the rendered hook so its embedded
|
|
1411
|
+
* broker-snapshot reader can resolve `path.resolve(__dirname, …)` to the state
|
|
1412
|
+
* files at runtime regardless of `process.cwd()`.
|
|
1413
|
+
*
|
|
1414
|
+
* @param installRoot Absolute directory at which the hook file's relative path
|
|
1415
|
+
* is anchored (Codex install: `integrationRootPath`; Claude same-repo target
|
|
1416
|
+
* install: `targetPath`).
|
|
1417
|
+
* @param hookRelativePath Hook path relative to `installRoot` (e.g.
|
|
1418
|
+
* `.codex/hooks/gdh-authoring-guard.js`).
|
|
1419
|
+
* @param integrationRootAbsolute Absolute integration-root path containing the
|
|
1420
|
+
* shared `.gdh-state/` directory.
|
|
1421
|
+
*/
|
|
1401
1422
|
function planSkillInstallAction(agent, targetPath, adapter, relativePath, renderFn, skillName, pinnedVersion) {
|
|
1402
1423
|
const surface = adapter.surfaces.find((s) => s.relativePath === relativePath);
|
|
1403
1424
|
if (!surface || surface.state === "ready") {
|
|
@@ -1508,6 +1529,9 @@ function planCodexRepoInstallActions(targetPath, adapter, pinnedVersion, project
|
|
|
1508
1529
|
pinnedVersion: version,
|
|
1509
1530
|
targetRelativePath: path.relative(integrationRootPath, targetPath) || ".",
|
|
1510
1531
|
agent: "codex",
|
|
1532
|
+
// Codex install-action: hook installed at integrationRootPath; state
|
|
1533
|
+
// root lives at integrationRootPath/.gdh-state.
|
|
1534
|
+
stateRelativePathFromHook: computeStateRelativePathFromHook(integrationRootPath, CODEX_AUTHORING_HOOK_RELATIVE_PATH, integrationRootPath),
|
|
1511
1535
|
}), "authoring guard", pinnedVersion),
|
|
1512
1536
|
];
|
|
1513
1537
|
if (projectMcp.enabled && projectMcp.codexProjectFile.state !== "ready") {
|
|
@@ -1812,6 +1836,14 @@ function planClaudeInstallActions(targetPath, adapter, pinnedVersion, integratio
|
|
|
1812
1836
|
pinnedVersion: version,
|
|
1813
1837
|
targetRelativePath: ".",
|
|
1814
1838
|
agent: "claude",
|
|
1839
|
+
// Claude install-action target install: hook lives at
|
|
1840
|
+
// `<targetPath>/.claude/hooks/...`; state root lives at
|
|
1841
|
+
// `<integrationRootPath>/.gdh-state/`. In the same-repo case,
|
|
1842
|
+
// integrationRootPath equals targetPath; in the monorepo nested-target
|
|
1843
|
+
// case (where this same hook is also installed at the target alongside
|
|
1844
|
+
// a separate root-launched hook from site #5), the state remains at
|
|
1845
|
+
// integrationRootPath/.gdh-state, so use integrationRootPath here.
|
|
1846
|
+
stateRelativePathFromHook: computeStateRelativePathFromHook(targetPath, CLAUDE_AUTHORING_HOOK_RELATIVE_PATH, integrationRootPath),
|
|
1815
1847
|
}), "authoring guard", pinnedVersion));
|
|
1816
1848
|
if (path.resolve(integrationRootPath) !== path.resolve(targetPath)) {
|
|
1817
1849
|
const rootTargetRelativePath = path.relative(integrationRootPath, targetPath) || ".";
|
|
@@ -1831,6 +1863,10 @@ function planClaudeInstallActions(targetPath, adapter, pinnedVersion, integratio
|
|
|
1831
1863
|
pinnedVersion,
|
|
1832
1864
|
targetRelativePath: rootTargetRelativePath,
|
|
1833
1865
|
agent: "claude",
|
|
1866
|
+
// Root-launched Claude install in monorepo nested-target case: hook
|
|
1867
|
+
// lives at `<integrationRootPath>/.claude/hooks/...`; state lives at
|
|
1868
|
+
// `<integrationRootPath>/.gdh-state/`.
|
|
1869
|
+
stateRelativePathFromHook: computeStateRelativePathFromHook(integrationRootPath, CLAUDE_AUTHORING_HOOK_RELATIVE_PATH, integrationRootPath),
|
|
1834
1870
|
}),
|
|
1835
1871
|
readySummary: "Root-launched Claude authoring hook already matches the managed target-scoped hook.",
|
|
1836
1872
|
createSummary: "Create the root-launched Claude authoring hook with target-scoped filtering.",
|