@skillcap/gdh 0.26.3 → 0.26.5

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.
Files changed (33) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +117 -0
  3. package/node_modules/@gdh/adapters/dist/skill-rendering.js +2 -2
  4. package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
  5. package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +175 -40
  6. package/node_modules/@gdh/adapters/package.json +8 -8
  7. package/node_modules/@gdh/authoring/dist/index.d.ts +1 -1
  8. package/node_modules/@gdh/authoring/dist/index.d.ts.map +1 -1
  9. package/node_modules/@gdh/authoring/dist/index.js +86 -18
  10. package/node_modules/@gdh/authoring/dist/index.js.map +1 -1
  11. package/node_modules/@gdh/authoring/dist/scene-resource.d.ts.map +1 -1
  12. package/node_modules/@gdh/authoring/dist/scene-resource.js +15 -9
  13. package/node_modules/@gdh/authoring/dist/scene-resource.js.map +1 -1
  14. package/node_modules/@gdh/authoring/package.json +2 -2
  15. package/node_modules/@gdh/cli/dist/index.d.ts +3 -1
  16. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  17. package/node_modules/@gdh/cli/dist/index.js +119 -36
  18. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  19. package/node_modules/@gdh/cli/package.json +10 -10
  20. package/node_modules/@gdh/core/dist/index.d.ts +3 -3
  21. package/node_modules/@gdh/core/dist/index.js +3 -3
  22. package/node_modules/@gdh/core/package.json +1 -1
  23. package/node_modules/@gdh/docs/dist/templates/guidance/authoring-and-validation.md.tpl +5 -4
  24. package/node_modules/@gdh/docs/package.json +2 -2
  25. package/node_modules/@gdh/mcp/package.json +8 -8
  26. package/node_modules/@gdh/observability/dist/guidance-audit.d.ts.map +1 -1
  27. package/node_modules/@gdh/observability/dist/guidance-audit.js +15 -2
  28. package/node_modules/@gdh/observability/dist/guidance-audit.js.map +1 -1
  29. package/node_modules/@gdh/observability/package.json +2 -2
  30. package/node_modules/@gdh/runtime/package.json +2 -2
  31. package/node_modules/@gdh/scan/package.json +3 -3
  32. package/node_modules/@gdh/verify/package.json +7 -7
  33. package/package.json +11 -11
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "product": "GDH",
3
- "version": "0.26.3",
3
+ "version": "0.26.5",
4
4
  "installMode": "packaged_install"
5
5
  }
@@ -3119,6 +3119,123 @@
3119
3119
  }
3120
3120
  ]
3121
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
+ }
3179
+ },
3180
+ {
3181
+ "version": "0.26.5",
3182
+ "releaseTag": "v0.26.5",
3183
+ "migrationStatus": "required",
3184
+ "summary": "v0.26.5 makes authoring validation truthful by file type and re-bakes managed target surfaces so agents receive the scoped contract. GDH_AGENT_CONTRACT_VERSION moves 14 -> 15 for generated skill/status guidance, GDH_GUIDANCE_UNIT_VERSION moves 20 -> 21 for authoring-and-validation guidance, and GDH_UPDATE_HOOK_VERSION moves 13 -> 14 for managed authoring hook behavior. Existing targets should self-update and migrate so generated hooks, generated guidance, and generated agent skills reflect: .gd uses Godot LSP diagnostics, .tscn uses scoped Godot scene validation, and .tres is ignored by automatic scoped checks.",
3185
+ "releaseHighlights": {
3186
+ "summary": "v0.26.5 is a patch release that makes GDH authoring validation honest by file type and reduces false LSP confidence during agent edits. Scoped checks now treat `.gd` files as Godot LSP inputs, `.tscn` files as Godot-backed scene-validation inputs, and `.tres` files as ignored for automatic scoped post-edit checks. The CLI also rejects misleading `authoring check --mode final --changed ...` requests because final validation is a whole-target handoff gate, not changed-file evidence.",
3187
+ "operatorChanges": [
3188
+ "**Post-edit hook feedback is scoped and actionable.** Managed hooks report changed-file diagnostics with stable line and column fallback behavior, file-type-aware recovery commands, and lock-timeout guidance. `.gd` hints point at diagnostics refresh; `.tscn` hints point at scoped post-edit scene validation; `.tres` hints explain that automatic scoped validation ignores resources.",
3189
+ "**CLI scope semantics are less surprising.** `--changed` now accepts repeated flags and variadic values. `--json` works as an alias where operators expect it. Final-mode authoring checks reject scoped changed-file input and suggest the correct post-edit or final command instead.",
3190
+ "**Authoring validation routes by file type.** `.gd` files go through the managed Godot LSP diagnostics broker. `.tscn` files run the scoped scene validator, including the Godot-backed load path after the fast reference scan passes. `.tres` files are not sent to the LSP and are ignored by automatic scoped checks.",
3191
+ "**Noisy diagnostic payloads are trimmed.** Default authoring-check JSON and `gdh lsp stop` output omit nested raw diagnostic payloads so agents see the result instead of drowning in protocol detail.",
3192
+ "**Authoring-session state writes are atomic.** `authoring-sessions.json` writes now use a temp file plus rename, preventing partial JSON artifacts during concurrent guidance-audit writes.",
3193
+ "**Release workflow guidance now owns push.** Maintainer release and publish guidance now treats pushing the release branch and tag as part of the workflow when tag and HEAD preconditions hold."
3194
+ ]
3195
+ },
3196
+ "updateContract": {
3197
+ "summary": "Managed targets must re-bake generated hooks, generated guidance, and generated agent skills so the target-side contract matches the v0.26.5 scoped authoring-validation behavior.",
3198
+ "steps": [
3199
+ {
3200
+ "id": "install_v0_26_5",
3201
+ "kind": "mechanical",
3202
+ "summary": "Install the v0.26.5 GDH package.",
3203
+ "detail": "Run gdh self-update so the target uses the v0.26.5 package and can re-render managed authoring surfaces with agent contract 15, guidance unit 21, and update hook 14.",
3204
+ "commands": [
3205
+ "gdh self-update --apply"
3206
+ ],
3207
+ "validationCommands": [
3208
+ "gdh status",
3209
+ "gdh adapters status"
3210
+ ]
3211
+ },
3212
+ {
3213
+ "id": "rebake_authoring_surfaces",
3214
+ "kind": "mechanical",
3215
+ "summary": "Re-bake managed authoring hook, guidance, and skills.",
3216
+ "detail": "If lifecycle status reports pending managed-surface work, run gdh migrate --apply. The migration re-renders the authoring hook, authoring-and-validation guidance, and provider skill/status text so agents stop treating scenes and resources as LSP files.",
3217
+ "commands": [
3218
+ "gdh migrate --apply"
3219
+ ],
3220
+ "validationCommands": [
3221
+ "gdh adapters status",
3222
+ "gdh status"
3223
+ ]
3224
+ },
3225
+ {
3226
+ "id": "confirm_scoped_authoring_contract",
3227
+ "kind": "agent_reasoning",
3228
+ "summary": "Confirm the target reports the scoped authoring contract.",
3229
+ "detail": "Check generated guidance or status output for the v0.26.5 behavior: .gd files use Godot LSP diagnostics, .tscn files use scoped scene validation, and .tres files are ignored by automatic scoped post-edit checks. Do not claim final code-validity from changed-file evidence; use gdh authoring check --mode final --target <target> for handoff evidence.",
3230
+ "commands": [
3231
+ "gdh status"
3232
+ ],
3233
+ "validationCommands": [
3234
+ "gdh authoring check --mode final --target <target>"
3235
+ ]
3236
+ }
3237
+ ]
3238
+ }
3122
3239
  }
3123
3240
  ]
3124
3241
  }
@@ -105,7 +105,7 @@ const RUN_GAME_TERMS = [
105
105
  "`bridge session`: a GDH-managed interactive game run started with `bridge session start`; it can be listed, inspected, driven, screenshotted, and stopped later.",
106
106
  ];
107
107
  const WARMUP_TERMS = [
108
- "`managed LSP`: the GDH-spawned headless Godot editor that serves diagnostics for `.gd`, `.tscn`, `.tres`.",
108
+ "`managed LSP`: the GDH-spawned headless Godot editor that serves diagnostics for `.gd`; scene files use GDH scene validation and `.tres` is ignored by scoped automatic checks in this version.",
109
109
  "`warmup`: a fire-and-forget LSP launch serialized by `lsp.lock` so concurrent calls do not multi-spawn Godot.",
110
110
  "`already_warm`: the managed LSP is already healthy; warmup is unnecessary.",
111
111
  "`warming`: another warmup is in flight; this call returns without launching a second editor.",
@@ -168,7 +168,7 @@ export const GDH_SKILL_DEFINITIONS = {
168
168
  `${PREVIEW_HEADER_LITERAL} — migrate output at this step describes planned actions ("would delete ...") not applied ones ("deleted").`,
169
169
  "Surface degraded/unavailable capabilities, including operational/diagnostic capability fields when present.",
170
170
  "When `runtimeBridgeBroker.state` is `stale` or `incompatible`, route recovery through `runtimeBridgeBroker.cleanupCommand` / gdh bridge session prune; do not recommend gdh bridge repair unless project lifecycle or bridge status reports runtime bridge surface drift.",
171
- "For code-validity evidence, the canonical command family is gdh authoring check: `.gd` changes need `gdscript_lsp`, `.tscn`/`.tres` changes need `godot_scene_resource`, and LSP lifecycle/capability readiness is not diagnostic evidence.",
171
+ "For code-validity evidence, the canonical command family is gdh authoring check: `.gd` changes need `gdscript_lsp`, `.tscn` changes need `godot_scene_resource`, `.tres` is ignored by scoped automatic checks in this version, and LSP lifecycle/capability readiness is not diagnostic evidence.",
172
172
  "Do not treat capability availability as validation evidence and do not recommend validation as the generic next step after status/update. Mention validation only when the user explicitly asks for code-validity evidence, when recent hook output is already relevant, or when structured status/recovery fields require it.",
173
173
  "Suggest one most productive next step based on the structured fields; do not claim GDH emitted a top-level `nextStep` field.",
174
174
  ],
@@ -1 +1 @@
1
- {"version":3,"file":"skill-rendering.js","sourceRoot":"","sources":["../src/skill-rendering.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-rendering.js","sourceRoot":"","sources":["../src/skill-rendering.ts"],"names":[],"mappings":"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"}
@@ -52,12 +52,14 @@ function handlePostEdit(input, targetRoot) {
52
52
  const changed = collectChangedFiles(input, targetRoot);
53
53
  const authoring = changed.filter(isAuthoringValidationPath);
54
54
  if (authoring.length === 0) return allow();
55
- // Phase 82 / LSP-02: fire-and-forget warmup BEFORE the bounded check. The verb
56
- // is idempotent (lsp.lock single-attempt; in-flight warmups return "warming"
57
- // without re-spawning) so spamming on every edit is safe. Hook still returns
58
- // within CHECK_TIMEOUT_MS regardless of warmup outcome (Pitfall 1: detached +
59
- // stdio:'ignore' + .unref() means the parent never blocks on the child).
60
- spawnDetachedWarmup(targetRoot);
55
+ // Phase 82 / LSP-02: fire-and-forget scoped diagnostics refresh BEFORE the
56
+ // bounded read. The verb calls `refreshAuthoringDiagnostics` which boots
57
+ // Godot LSP if needed, opens scoped files via LSP, drains diagnostics, and
58
+ // writes `diagnostics-broker/snapshot.json` + `primed` marker. Hook still
59
+ // returns within CHECK_TIMEOUT_MS regardless of refresh outcome (Pitfall 1:
60
+ // detached + stdio:'ignore' + .unref() means the parent never blocks on
61
+ // the child).
62
+ spawnDetachedRefresh(targetRoot, authoring);
61
63
  // Quick task 260504-ix2: embedded broker-snapshot reader. Replaces the
62
64
  // per-edit synchronous `npx -y @skillcap/gdh@PINNED authoring check ...`
63
65
  // shellout (which was eating the full `CHECK_TIMEOUT_MS` budget on the npx
@@ -84,10 +86,10 @@ function handlePostEdit(input, targetRoot) {
84
86
  return allow();
85
87
  }
86
88
  if (/^\[pending\]/m.test(output) || /^\[stale\]/m.test(output)) {
87
- return context(`GDH post-edit authoring check could not prove this edit quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')}`);
89
+ return context(`GDH post-edit authoring check could not prove this edit quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
88
90
  }
89
91
  if (/^\[timeout\]/m.test(output)) {
90
- return context(`GDH post-edit authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')}`);
92
+ return context(`GDH post-edit authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
91
93
  }
92
94
  return allow();
93
95
  }
@@ -130,10 +132,10 @@ function handlePostToolBatch(input, targetRoot) {
130
132
  const authoring = unique(files).filter(isAuthoringValidationPath);
131
133
  if (authoring.length === 0) return allow(); // Pitfall 2: no authoring files — no work
132
134
 
133
- // SC2: spawnDetachedWarmup reuses Phase 82's lsp.lock-serialized helper. If a
134
- // per-edit warmup is already in flight when this fires, the lock primitive
135
- // returns warming without spawning a second Godot.
136
- spawnDetachedWarmup(targetRoot);
135
+ // SC2: spawnDetachedRefresh reuses the lsp.lock-serialized helper. If a
136
+ // per-edit refresh is already in flight when this fires, the broker side
137
+ // serializes via the lock primitive no double-spawn of Godot.
138
+ spawnDetachedRefresh(targetRoot, authoring);
137
139
 
138
140
  // Quick task 260504-ix2: embedded broker-snapshot reader replaces the
139
141
  // synchronous `npx ... authoring check` shellout. The reader is invoked
@@ -160,10 +162,10 @@ function handlePostToolBatch(input, targetRoot) {
160
162
  return allow();
161
163
  }
162
164
  if (/^\[pending\]/m.test(output) || /^\[stale\]/m.test(output)) {
163
- return context(`GDH PostToolBatch authoring check could not prove this batch quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')}`);
165
+ return context(`GDH PostToolBatch authoring check could not prove this batch quickly; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
164
166
  }
165
167
  if (/^\[timeout\]/m.test(output)) {
166
- return context(`GDH PostToolBatch authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')}`);
168
+ return context(`GDH PostToolBatch authoring check returned a timeout status; continuing without blocking. ${compactOneLine(output || 'Run final authoring validation before claiming code-validity.')} ${reasonHint(output, targetRoot, authoring)}`);
167
169
  }
168
170
  return allow();
169
171
  }
@@ -171,24 +173,39 @@ function handlePostToolBatch(input, targetRoot) {
171
173
  // Quick task 260504-ix2: `runGdh` deleted. The function previously wrapped
172
174
  // `spawnSync('npx', ['-y', '@skillcap/gdh@PINNED', ...args])` for the three
173
175
  // event handlers (handlePostEdit, handlePostToolBatch, handleStop). All three
174
- // now call `runEmbeddedDiagnosticsRead` instead. `spawnDetachedWarmup` uses
176
+ // now call `runEmbeddedDiagnosticsRead` instead. `spawnDetachedRefresh` uses
175
177
  // `child_process.spawn` directly (always did — it was never a `runGdh`
176
- // caller), so removing the helper has no effect on the warmup path.
177
-
178
- // Phase 82 / LSP-02. Fire-and-forget warmup spawn from the post-edit hook. The
179
- // hook returns within CHECK_TIMEOUT_MS regardless of whether warmup has finished
180
- // Godot startup typically takes 2-5 s, much longer than the 2500 ms cap.
178
+ // caller), so removing the helper has no effect on the refresh path.
179
+ // Quick task 260504-o6w renamed `spawnDetachedWarmup` → `spawnDetachedRefresh`
180
+ // and switched the spawn argv from `lsp warmup` to `authoring diagnostics
181
+ // refresh --changed`. Detached spawn still uses `child_process.spawn` directly
182
+ // (always did).
183
+
184
+ // Quick task 260504-o6w. Fire-and-forget scoped diagnostics refresh from the
185
+ // post-edit hook. The CLI verb calls `refreshAuthoringDiagnostics` which boots
186
+ // Godot LSP if needed, opens scoped files via LSP, drains diagnostics, and
187
+ // writes `diagnostics-broker/snapshot.json` + `primed` marker — so this single
188
+ // fire-and-forget call covers BOTH warmup and broker priming. The previous
189
+ // `lsp warmup` argv only wrote `lsp-instance.json` and left the broker empty,
190
+ // leaving the embedded reader stuck on `[pending] broker_not_yet_primed`
191
+ // indefinitely (verified live on TheBeacon, 2026-05-04 dogfooding session 14).
181
192
  //
182
193
  // All three options are required (Pitfall 1):
183
194
  // - detached: true — child gets its own process group, survives parent exit
184
195
  // - stdio: 'ignore' — no fds tether the child to the parent's lifecycle
185
196
  // - windowsHide: true — prevents a console flash on Windows
186
197
  // .unref() is required so the Node event loop does not wait on the child.
187
- function spawnDetachedWarmup(targetRoot) {
198
+ function spawnDetachedRefresh(targetRoot, files) {
188
199
  try {
200
+ const args = ['-y', `@skillcap/gdh@${PINNED_VERSION}`, 'authoring', 'diagnostics', 'refresh', '--target', targetRoot];
201
+ if (Array.isArray(files)) {
202
+ for (const f of files) {
203
+ args.push('--changed', f);
204
+ }
205
+ }
189
206
  const child = require('child_process').spawn(
190
207
  'npx',
191
- ['-y', `@skillcap/gdh@${PINNED_VERSION}`, 'lsp', 'warmup', '--target', targetRoot],
208
+ args,
192
209
  {
193
210
  cwd: targetRoot,
194
211
  detached: true,
@@ -198,7 +215,7 @@ function spawnDetachedWarmup(targetRoot) {
198
215
  );
199
216
  child.unref();
200
217
  } catch (_error) {
201
- // Silent failure — warmup is fire-and-forget. The bounded check below still runs.
218
+ // Silent failure — refresh is fire-and-forget. The bounded read below still runs.
202
219
  }
203
220
  }
204
221
 
@@ -262,27 +279,27 @@ function handleStop(input, targetRoot) {
262
279
  return allow();
263
280
  }
264
281
  if (/^\[failed\]/m.test(output) || /^\[partial\]/m.test(output) || /^\[stale\]/m.test(output)) {
265
- return stopContext(`GDH session-end check found unresolved diagnostics: ${compactOneLine(output)}`);
282
+ return stopContext(`GDH session-end check found unresolved diagnostics: ${compactOneLine(output)} ${reasonHint(output, targetRoot, authoringFiles)}`);
266
283
  }
267
284
  if (/^\[pending\]/m.test(output) || /^\[timeout\]/m.test(output)) {
268
- // Cold/missing broker: spawn detached warmup so the NEXT session benefits.
285
+ // Cold/missing broker: spawn detached refresh so the NEXT session benefits.
269
286
  // The current Stop returns additionalContext recommending manual
270
287
  // `gdh authoring check --mode final` (the relaxed contract — see RFC 0009
271
- // addendum 2026-05-04). spawnDetachedWarmup is fire-and-forget; it never
288
+ // addendum 2026-05-04). spawnDetachedRefresh is fire-and-forget; it never
272
289
  // blocks hook return.
273
- spawnDetachedWarmup(targetRoot);
290
+ spawnDetachedRefresh(targetRoot, authoringFiles);
274
291
  return stopContext(
275
292
  'GDH session-end check could not prove final code-validity from the cached broker snapshot; continuing without blocking. ' +
276
293
  'Run `gdh authoring check --mode final` manually before claiming code-validity. ' +
277
- compactOneLine(output),
294
+ compactOneLine(output) + ' ' + reasonHint(output, targetRoot, authoringFiles),
278
295
  );
279
296
  }
280
297
  // Unknown status: degrade to additionalContext (NEVER block).
281
- spawnDetachedWarmup(targetRoot);
298
+ spawnDetachedRefresh(targetRoot, authoringFiles);
282
299
  return stopContext(
283
300
  'GDH session-end check could not produce a final result; continuing without blocking. ' +
284
301
  'Run `gdh authoring check --mode final` manually before claiming code-validity. ' +
285
- compactOneLine(output),
302
+ compactOneLine(output) + ' ' + reasonHint(output, targetRoot, authoringFiles),
286
303
  );
287
304
  }
288
305
 
@@ -451,8 +468,9 @@ function formatFreshDiagnostics(items) {
451
468
  if (sev === 'error') errors += 1;
452
469
  else if (sev === 'warning') warnings += 1;
453
470
  else infoCount += 1;
454
- const line = (diag && diag.range && diag.range.start && Number.isFinite(diag.range.start.line)) ? diag.range.start.line + 1 : 0;
455
- const col = (diag && diag.range && diag.range.start && Number.isFinite(diag.range.start.character)) ? diag.range.start.character + 1 : 0;
471
+ const pos = diagnosticPosition(diag);
472
+ const line = pos.line;
473
+ const col = pos.column;
456
474
  const msg = (diag && typeof diag.message === 'string') ? diag.message : '';
457
475
  lines.push(`${item.uri}:${line}:${col} [${sev}] ${msg}`);
458
476
  }
@@ -467,6 +485,35 @@ function formatFreshDiagnostics(items) {
467
485
  return `${head}[${statusToken}] ${errors} errors, ${warnings} warnings, ${infoCount} info. Completion ${completion}.`;
468
486
  }
469
487
 
488
+ function diagnosticPosition(diag) {
489
+ const directLine = numberOrNull(diag && diag.line);
490
+ const directColumn = numberOrNull(diag && diag.column);
491
+ if (directLine !== null || directColumn !== null) {
492
+ return { line: directLine || 0, column: directColumn || 0 };
493
+ }
494
+ const rawRange = diag && diag.raw && diag.raw.range;
495
+ const rawStart = rawRange && rawRange.start;
496
+ const rawLine = rawStart ? numberOrNull(rawStart.line) : null;
497
+ const rawColumn = rawStart ? numberOrNull(rawStart.character) : null;
498
+ if (rawLine !== null || rawColumn !== null) {
499
+ return {
500
+ line: rawLine === null ? 0 : rawLine + 1,
501
+ column: rawColumn === null ? 0 : rawColumn + 1,
502
+ };
503
+ }
504
+ const legacyStart = diag && diag.range && diag.range.start;
505
+ const legacyLine = legacyStart ? numberOrNull(legacyStart.line) : null;
506
+ const legacyColumn = legacyStart ? numberOrNull(legacyStart.character) : null;
507
+ return {
508
+ line: legacyLine === null ? 0 : legacyLine + 1,
509
+ column: legacyColumn === null ? 0 : legacyColumn + 1,
510
+ };
511
+ }
512
+
513
+ function numberOrNull(value) {
514
+ return Number.isFinite(value) ? value : null;
515
+ }
516
+
470
517
  function resolveStateRoot(targetRoot) {
471
518
  // 1. Baked render-time path — the canonical resolution for installed hooks.
472
519
  try {
@@ -626,15 +673,103 @@ function compactOneLine(value) {
626
673
  }
627
674
 
628
675
  function allow() { process.exit(0); }
629
- function context(additionalContext) {
630
- // Codex always receives hookSpecificOutput.additionalContext (any event).
631
- // Claude receives hookSpecificOutput.additionalContext on Stop (Phase 82 / LSP-03) and
632
- // on PostToolBatch (Phase 83 / LSP-09 — coalesced batch result). Without the third
633
- // branch below, [pending]/[stale]/[timeout] PostToolBatch results would silently drop
634
- // additionalContext on Claude Pitfall 1.
635
- if (AGENT !== 'codex') {
636
- if (CURRENT_EVENT !== 'Stop' && CURRENT_EVENT !== 'PostToolBatch') return allow();
676
+ // Quick task 260504-o6w: agent-actionable hint derived from the Reasons: line in
677
+ // the embedded reader's output. The mapping covers all reason classes emitted by
678
+ // `formatStatus` so the agent receives a copy-paste-ready command rather than a
679
+ // generic "authoring check failed" message.
680
+ function reasonHint(output, targetRoot, files) {
681
+ const text = String(output || '');
682
+ const match = text.match(/^Reasons:\s*(.+)$/m);
683
+ const reasons = match ? match[1].split(',').map(r => r.trim()).filter(Boolean) : [];
684
+ // JSON.stringify embeds the path so spaces and quotes survive shell re-use.
685
+ const targetArg = JSON.stringify(targetRoot);
686
+ const scopedHint = fileTypeScopedHint(targetArg, files);
687
+ // First-match-wins ordering: more specific reasons before generic.
688
+ if (reasons.includes('lsp_instance_identity_mismatch')) {
689
+ return `Cross-worktree LSP from another checkout. Run \`gdh lsp prune --target ${targetArg}\` then retry the edit.`;
690
+ }
691
+ if (reasons.includes('lsp_state_lock_timeout')) {
692
+ return `Authoring state lock busy; ${describeLspLock(targetRoot)} Retry the scoped command after the current authoring operation finishes. ${scopedHint}`;
693
+ }
694
+ if (reasons.includes('lsp_instance_not_running')) {
695
+ return `LSP launching in background; next edit will report fresh diagnostics. ${scopedHint}`;
696
+ }
697
+ if (reasons.includes('broker_not_yet_primed') || reasons.includes('file_not_in_snapshot')) {
698
+ return `Broker priming in background; next edit will be fresh. ${scopedHint}`;
699
+ }
700
+ if (reasons.includes('content_hash_mismatch') || reasons.includes('freshness_expired')) {
701
+ return `Broker snapshot stale; background refresh running. ${scopedHint}`;
702
+ }
703
+ return `Run scoped authoring validation before claiming code-validity. ${scopedHint}`;
704
+ }
705
+
706
+ function fileTypeScopedHint(targetArg, files) {
707
+ const inputFiles = Array.isArray(files) ? unique(files) : [];
708
+ const gdFiles = inputFiles.filter(f => path.extname(f).toLowerCase() === '.gd');
709
+ const sceneFiles = inputFiles.filter(f => path.extname(f).toLowerCase() === '.tscn');
710
+ const resourceFiles = inputFiles.filter(f => path.extname(f).toLowerCase() === '.tres');
711
+ const parts = [];
712
+ if (gdFiles.length > 0) {
713
+ parts.push(`For .gd: \`gdh authoring diagnostics refresh --target ${targetArg}${changedArgs(gdFiles)}\``);
714
+ }
715
+ if (sceneFiles.length > 0) {
716
+ parts.push(`For .tscn: \`gdh authoring check --mode post-edit --target ${targetArg}${changedArgs(sceneFiles)}\``);
637
717
  }
718
+ if (resourceFiles.length > 0) {
719
+ parts.push('.tres automatic scoped validation is ignored in this GDH version; do not wait on LSP/resource diagnostics for those files.');
720
+ }
721
+ if (parts.length === 0) {
722
+ return `Run \`gdh authoring check --mode final --target ${targetArg}\` before claiming code-validity.`;
723
+ }
724
+ return parts.join(' ');
725
+ }
726
+
727
+ function changedArgs(files) {
728
+ return files.map(f => ` --changed ${JSON.stringify(f)}`).join('');
729
+ }
730
+
731
+ function describeLspLock(targetRoot) {
732
+ const stateRoot = resolveStateRoot(targetRoot) || path.join(targetRoot, '.gdh-state');
733
+ const candidates = [
734
+ { label: 'authoring/lsp.lock', file: path.join(stateRoot, 'authoring', 'lsp.lock', 'metadata.json') },
735
+ { label: 'lsp.lock', file: path.join(stateRoot, 'lsp.lock', 'metadata.json') },
736
+ ];
737
+ for (const candidate of candidates) {
738
+ try {
739
+ const metadata = JSON.parse(fs.readFileSync(candidate.file, 'utf8'));
740
+ const owner = typeof metadata.owner === 'string' && metadata.owner ? metadata.owner : 'unknown-owner';
741
+ const pid = Number.isFinite(metadata.pid) ? ` pid=${metadata.pid}` : '';
742
+ const acquiredMs = Date.parse(metadata.acquiredAt);
743
+ const ageMs = Number.isFinite(acquiredMs) ? Math.max(0, Date.now() - acquiredMs) : null;
744
+ const age = ageMs === null ? 'age=unknown' : `age=${Math.round(ageMs / 1000)}s`;
745
+ const staleAfter = Number.isFinite(metadata.staleAfterMs)
746
+ ? `staleAfter=${Math.round(metadata.staleAfterMs / 1000)}s`
747
+ : 'staleAfter=unknown';
748
+ return `${candidate.label} held by ${owner}${pid} (${age}, ${staleAfter}).`;
749
+ } catch (_err) {
750
+ // Try next known lock path.
751
+ }
752
+ }
753
+ return 'lock metadata unavailable (expected .gdh-state/authoring/lsp.lock or .gdh-state/lsp.lock).';
754
+ }
755
+ // Codex always receives hookSpecificOutput.additionalContext (any event — Codex's
756
+ // hook contract accepts it on PreToolUse / PostToolUse / Stop / etc.).
757
+ //
758
+ // Claude receives hookSpecificOutput.additionalContext on PostToolUse / PostToolBatch
759
+ // / FileChanged. Claude Stop is silent-allow because the Stop hook schema does NOT
760
+ // accept additionalContext (only decision/reason/continue/stopReason/suppressOutput/
761
+ // systemMessage). The previous gate emitted the wrong shape on every Claude Stop
762
+ // and Claude rejected it as "invalid stop hook JSON output" (quick task 260504-o6w
763
+ // bug B, verified live on TheBeacon 2026-05-04).
764
+ function context(additionalContext) {
765
+ // Claude: Stop hook schema does NOT accept hookSpecificOutput.additionalContext
766
+ // (only decision/reason/continue/stopReason/suppressOutput/systemMessage). Emitting
767
+ // the wrong shape causes Claude to reject the hook with "invalid stop hook JSON
768
+ // output" — verified locally 2026-05-04 (quick task 260504-o6w bug B). Drop to
769
+ // silent-allow on Claude Stop. Claude PostToolUse / PostToolBatch DO accept
770
+ // additionalContext, so those branches still flow through. Codex accepts
771
+ // additionalContext on every event.
772
+ if (AGENT !== 'codex' && CURRENT_EVENT === 'Stop') return allow();
638
773
  const payload = { hookSpecificOutput: { hookEventName: CURRENT_EVENT, additionalContext } };
639
774
  process.stdout.write(`${JSON.stringify(payload)}\n`);
640
775
  process.exit(0);
@@ -11,13 +11,13 @@
11
11
  }
12
12
  },
13
13
  "dependencies": {
14
- "@gdh/authoring": "0.26.3",
15
- "@gdh/core": "0.26.3",
16
- "@gdh/docs": "0.26.3",
17
- "@gdh/observability": "0.26.3",
18
- "@gdh/runtime": "0.26.3",
19
- "@gdh/scan": "0.26.3",
20
- "@gdh/verify": "0.26.3"
14
+ "@gdh/authoring": "0.26.5",
15
+ "@gdh/core": "0.26.5",
16
+ "@gdh/docs": "0.26.5",
17
+ "@gdh/observability": "0.26.5",
18
+ "@gdh/runtime": "0.26.5",
19
+ "@gdh/scan": "0.26.5",
20
+ "@gdh/verify": "0.26.5"
21
21
  },
22
- "version": "0.26.3"
22
+ "version": "0.26.5"
23
23
  }
@@ -8,8 +8,8 @@ export declare function runAuthoringCheck(input: {
8
8
  readonly changedFiles?: readonly string[];
9
9
  readonly severityPolicy?: GdhAuthoringSeverityPolicy;
10
10
  }): Promise<GdhAuthoringCheckResult>;
11
- export { getCurrentAuthoringDiagnostics, getAuthoringDiagnosticsStatus, refreshAuthoringDiagnostics, doctorAuthoringDiagnostics, pruneAuthoringDiagnostics, type GetAuthoringDiagnosticsStatusInput, type GetCurrentAuthoringDiagnosticsInput, type RefreshAuthoringDiagnosticsInput, type RefreshAuthoringDiagnosticsResult, type DoctorAuthoringDiagnosticsInput, type DoctorAuthoringDiagnosticsResult, type PruneAuthoringDiagnosticsInput, type PruneAuthoringDiagnosticsResult, } from "./diagnostics-broker.js";
12
11
  export { inspectCacheState, pruneCacheState, resolveCacheNamespace } from "./cache.js";
12
+ export { type DoctorAuthoringDiagnosticsInput, type DoctorAuthoringDiagnosticsResult, doctorAuthoringDiagnostics, type GetAuthoringDiagnosticsStatusInput, type GetCurrentAuthoringDiagnosticsInput, getAuthoringDiagnosticsStatus, getCurrentAuthoringDiagnostics, type PruneAuthoringDiagnosticsInput, type PruneAuthoringDiagnosticsResult, pruneAuthoringDiagnostics, type RefreshAuthoringDiagnosticsInput, type RefreshAuthoringDiagnosticsResult, refreshAuthoringDiagnostics, } from "./diagnostics-broker.js";
13
13
  export { checkManagedLsp, doctorManagedLsp, getManagedLspStatus, pruneManagedLsp, resetManagedLspTestState, restartManagedLsp, runManagedAuthoringCheck, stopManagedLsp, warmupManagedLsp, } from "./lsp.js";
14
14
  export { runImportRefresh, runTargetPrepare } from "./prepare.js";
15
15
  export { hasCompleteOnboardingSurface, parseProjectConfigYaml, readProjectConfig, readWorktreeState, resolveAuthoringStatus, resolveConfiguredCapabilities, resolveEffectiveTargetPath, resolvePinnedVersion, resolvePinnedVersionOrNull, resolveProjectRoot, resolveTargetGodotDocsVersion, } from "./project.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAMnB,eAAO,MAAM,gBAAgB,wCAM3B,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC;CACtD,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA2CnC;AAqFD,OAAO,EACL,8BAA8B,EAC9B,6BAA6B,EAC7B,2BAA2B,EAC3B,0BAA0B,EAC1B,yBAAyB,EACzB,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,GACrC,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACtB,MAAM,WAAW,CAAC;AAMnB,eAAO,MAAM,gBAAgB,wCAM3B,CAAC;AAEH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAChD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IACtC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,0BAA0B,CAAC;CACtD,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAsDnC;AAoKD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACL,KAAK,+BAA+B,EACpC,KAAK,gCAAgC,EACrC,0BAA0B,EAC1B,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EACxC,6BAA6B,EAC7B,8BAA8B,EAC9B,KAAK,8BAA8B,EACnC,KAAK,+BAA+B,EACpC,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,KAAK,iCAAiC,EACtC,2BAA2B,GAC5B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,wBAAwB,EACxB,iBAAiB,EACjB,wBAAwB,EACxB,cAAc,EACd,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,6BAA6B,EAC7B,0BAA0B,EAC1B,oBAAoB,EACpB,0BAA0B,EAC1B,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}