@skillcap/gdh 0.25.5 → 0.26.1

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 (62) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +121 -0
  3. package/node_modules/@gdh/adapters/dist/claude-settings-patch.d.ts.map +1 -1
  4. package/node_modules/@gdh/adapters/dist/claude-settings-patch.js +38 -15
  5. package/node_modules/@gdh/adapters/dist/claude-settings-patch.js.map +1 -1
  6. package/node_modules/@gdh/adapters/dist/index.d.ts +12 -0
  7. package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
  8. package/node_modules/@gdh/adapters/dist/index.js +21 -0
  9. package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
  10. package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts +5 -2
  11. package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts.map +1 -1
  12. package/node_modules/@gdh/adapters/dist/skill-rendering.js +39 -0
  13. package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
  14. package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +196 -5
  15. package/node_modules/@gdh/adapters/package.json +8 -8
  16. package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.d.ts +1 -0
  17. package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.d.ts.map +1 -1
  18. package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.js +1 -0
  19. package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.js.map +1 -1
  20. package/node_modules/@gdh/authoring/dist/diagnostics-broker.d.ts +2 -1
  21. package/node_modules/@gdh/authoring/dist/diagnostics-broker.d.ts.map +1 -1
  22. package/node_modules/@gdh/authoring/dist/diagnostics-broker.js +90 -11
  23. package/node_modules/@gdh/authoring/dist/diagnostics-broker.js.map +1 -1
  24. package/node_modules/@gdh/authoring/dist/index.d.ts +1 -1
  25. package/node_modules/@gdh/authoring/dist/index.d.ts.map +1 -1
  26. package/node_modules/@gdh/authoring/dist/index.js +1 -1
  27. package/node_modules/@gdh/authoring/dist/index.js.map +1 -1
  28. package/node_modules/@gdh/authoring/dist/lsp-warmup.d.ts +30 -0
  29. package/node_modules/@gdh/authoring/dist/lsp-warmup.d.ts.map +1 -0
  30. package/node_modules/@gdh/authoring/dist/lsp-warmup.js +213 -0
  31. package/node_modules/@gdh/authoring/dist/lsp-warmup.js.map +1 -0
  32. package/node_modules/@gdh/authoring/dist/lsp.d.ts +7 -1
  33. package/node_modules/@gdh/authoring/dist/lsp.d.ts.map +1 -1
  34. package/node_modules/@gdh/authoring/dist/lsp.js +223 -121
  35. package/node_modules/@gdh/authoring/dist/lsp.js.map +1 -1
  36. package/node_modules/@gdh/authoring/package.json +2 -2
  37. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  38. package/node_modules/@gdh/cli/dist/index.js +73 -8
  39. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  40. package/node_modules/@gdh/cli/package.json +10 -10
  41. package/node_modules/@gdh/core/dist/index.d.ts +177 -5
  42. package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
  43. package/node_modules/@gdh/core/dist/index.js +43 -3
  44. package/node_modules/@gdh/core/dist/index.js.map +1 -1
  45. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts +15 -0
  46. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts.map +1 -1
  47. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js +18 -0
  48. package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js.map +1 -1
  49. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.d.ts.map +1 -1
  50. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js +2 -0
  51. package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js.map +1 -1
  52. package/node_modules/@gdh/core/package.json +1 -1
  53. package/node_modules/@gdh/docs/package.json +2 -2
  54. package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
  55. package/node_modules/@gdh/mcp/dist/index.js +30 -1
  56. package/node_modules/@gdh/mcp/dist/index.js.map +1 -1
  57. package/node_modules/@gdh/mcp/package.json +8 -8
  58. package/node_modules/@gdh/observability/package.json +2 -2
  59. package/node_modules/@gdh/runtime/package.json +2 -2
  60. package/node_modules/@gdh/scan/package.json +3 -3
  61. package/node_modules/@gdh/verify/package.json +7 -7
  62. package/package.json +11 -11
@@ -15,16 +15,16 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@clack/prompts": "^1.2.0",
18
- "@gdh/adapters": "0.25.5",
19
- "@gdh/authoring": "0.25.5",
20
- "@gdh/core": "0.25.5",
21
- "@gdh/docs": "0.25.5",
22
- "@gdh/mcp": "0.25.5",
23
- "@gdh/observability": "0.25.5",
24
- "@gdh/runtime": "0.25.5",
25
- "@gdh/scan": "0.25.5",
26
- "@gdh/verify": "0.25.5",
18
+ "@gdh/adapters": "0.26.1",
19
+ "@gdh/authoring": "0.26.1",
20
+ "@gdh/core": "0.26.1",
21
+ "@gdh/docs": "0.26.1",
22
+ "@gdh/mcp": "0.26.1",
23
+ "@gdh/observability": "0.26.1",
24
+ "@gdh/runtime": "0.26.1",
25
+ "@gdh/scan": "0.26.1",
26
+ "@gdh/verify": "0.26.1",
27
27
  "picocolors": "^1.1.1"
28
28
  },
29
- "version": "0.25.5"
29
+ "version": "0.26.1"
30
30
  }
@@ -29,7 +29,16 @@ export declare const GDH_PROJECT_CONFIG_VERSION = 3;
29
29
  export declare const GDH_RECIPE_SCHEMA_VERSION = 2;
30
30
  export declare const GDH_SCENARIO_SCHEMA_VERSION = 2;
31
31
  export declare const GDH_RULES_SCHEMA_VERSION = 3;
32
- export declare const GDH_AGENT_CONTRACT_VERSION = 11;
32
+ /**
33
+ * Bumped to 13 in Phase 82 to drive a managed-target rebake on the next
34
+ * `gdh setup` / migration. The rebake is required to land the Stop hook
35
+ * surface and the post-edit hook's `warming_up` additionalContext token
36
+ * (LSP-02 / LSP-03 / LSP-07).
37
+ * Bumped to 14 in Phase 83 (LSP-09) to drive a managed-target rebake so that
38
+ * existing managed targets receive the new PostToolBatch hook install on the
39
+ * next `gdh setup` / `gdh migrate apply` run.
40
+ */
41
+ export declare const GDH_AGENT_CONTRACT_VERSION = 14;
33
42
  /**
34
43
  * Minimum self-update source pin (WFL-03 / D-21).
35
44
  *
@@ -46,7 +55,7 @@ export declare const GDH_AUTHORING_DOGFOOD_VERSION = 1;
46
55
  export declare const GDH_AUTHORING_SLICE_REPORT_VERSION = 1;
47
56
  export declare const GDH_MCP_MANIFEST_VERSION = 1;
48
57
  export declare const GDH_CURSOR_RULE_VERSION = 4;
49
- export declare const GDH_UPDATE_HOOK_VERSION = 9;
58
+ export declare const GDH_UPDATE_HOOK_VERSION = 10;
50
59
  export declare const GDH_RUNTIME_RECIPE_RUN_VERSION = 1;
51
60
  export declare const GDH_RUNTIME_RUN_BUNDLE_VERSION = 1;
52
61
  export declare const GDH_RUNTIME_CORPUS_ARTIFACT_VERSION = 1;
@@ -556,7 +565,7 @@ export interface GdhAuthoringSliceReport {
556
565
  readonly dogfood: GdhAuthoringDogfoodTargetResult;
557
566
  readonly authoringCheck: GdhAuthoringCheckResult | null;
558
567
  }
559
- export type GdhMcpToolName = "docs.search" | "docs.fetch" | "target.prepare" | "authoring.check" | "authoring.diagnostics.status" | "authoring.diagnostics.current" | "authoring.diagnostics.refresh" | "authoring.diagnostics.doctor" | "run-config.check" | "run-config.run" | "bridge.session.start" | "bridge.entry.list" | "bridge.entry.invoke" | "bridge.session.stop" | "verify.run";
568
+ export type GdhMcpToolName = "docs.search" | "docs.fetch" | "target.prepare" | "authoring.check" | "authoring.diagnostics.status" | "authoring.diagnostics.current" | "authoring.diagnostics.refresh" | "authoring.diagnostics.doctor" | "run-config.check" | "run-config.run" | "bridge.session.start" | "bridge.entry.list" | "bridge.entry.invoke" | "bridge.session.stop" | "verify.run" | "authoring.warmup";
560
569
  export interface GdhMcpResourceManifestEntry {
561
570
  readonly name: string;
562
571
  readonly summary: string;
@@ -697,7 +706,18 @@ export type GdhLspLifecycleStatus = "ready" | "degraded" | "unavailable";
697
706
  export type GdhLspTrustState = "trusted" | "degraded" | "stale";
698
707
  export type GdhLspLauncherKind = "godot_editor" | "test_fake";
699
708
  export type GdhLspValidationMode = "unimplemented" | "passed" | "diagnostics" | "degraded";
700
- export declare const GDH_MANAGED_LSP_SURFACE_VERSION = 1;
709
+ export declare const GDH_MANAGED_LSP_SURFACE_VERSION = 2;
710
+ /**
711
+ * Minimum Godot editor version supported by the managed LSP (Phase 81 / LSP-08 / D-14).
712
+ *
713
+ * Godot 4.5.0 and 4.5.1 ship with broken external-editor surfaces (PR #104401
714
+ * regression — restored in 4.5.2 by PR #111478 backport). The managed LSP
715
+ * refuses-to-launch on those versions and routes agents to 4.5.2+ or 4.6.x.
716
+ *
717
+ * Documented in docs/development/runtime-support-matrix.md.
718
+ * Centralized here so future floor bumps are a one-line change.
719
+ */
720
+ export declare const GDH_MANAGED_LSP_MIN_GODOT_VERSION = "4.5.2";
701
721
  export interface GdhWorktreeIdentity {
702
722
  readonly rootPath: string;
703
723
  readonly worktreeKey: string;
@@ -748,6 +768,23 @@ export interface GdhManagedLspStatusProvenance {
748
768
  readonly stateRootPath: string;
749
769
  readonly rawPayload: Readonly<Record<string, unknown>> | null;
750
770
  }
771
+ /**
772
+ * Structured advisory carried on the unavailable result when the configured
773
+ * Godot binary fails the managed-LSP version floor (Phase 81 / LSP-08 / D-16).
774
+ * Non-null only when `availability === "unavailable"` AND reason includes
775
+ * `"godot_editor_version_unsupported_for_lsp"`.
776
+ *
777
+ * - detectedVersion — what Godot reported (or null if unprobed)
778
+ * - minimumVersion — equals GDH_MANAGED_LSP_MIN_GODOT_VERSION
779
+ * - recommendedVersions — sequence of recommended labels (e.g. ["4.5.2", "4.6.x"])
780
+ * - recommendedCommand — optional next-step command suggestion
781
+ */
782
+ export interface GdhVersionFloorAdvisory {
783
+ readonly detectedVersion: string | null;
784
+ readonly minimumVersion: string;
785
+ readonly recommendedVersions: readonly string[];
786
+ readonly recommendedCommand?: GdhRecommendedCommand;
787
+ }
751
788
  export interface GdhManagedLspStatusResult {
752
789
  readonly targetPath: string;
753
790
  readonly capability: "authoring.lsp";
@@ -761,6 +798,13 @@ export interface GdhManagedLspStatusResult {
761
798
  readonly session: GdhManagedLspSessionSnapshot;
762
799
  readonly instance: GdhManagedLspInstanceSnapshot | null;
763
800
  readonly provenance: GdhManagedLspStatusProvenance;
801
+ /**
802
+ * Set when availability is "unavailable" AND reasons include
803
+ * "godot_editor_version_unsupported_for_lsp". CLI compact and MCP renderers
804
+ * surface this as the actionable advisory pointing agents at 4.5.2+ or 4.6.x
805
+ * (Phase 81 / LSP-08 / D-16).
806
+ */
807
+ readonly versionFloorAdvisory?: GdhVersionFloorAdvisory | null;
764
808
  }
765
809
  export interface GdhAuthoringCheckLspSnapshot {
766
810
  readonly status: GdhLspLifecycleStatus;
@@ -801,6 +845,33 @@ export interface GdhAuthoringCheckResult {
801
845
  readonly reasons: readonly string[];
802
846
  readonly provenance: GdhAuthoringCheckProvenance;
803
847
  }
848
+ /**
849
+ * Result of a call to the managed LSP warmup verb.
850
+ *
851
+ * - `already_warm`: A cheap probe found the managed LSP healthy; no lock taken,
852
+ * no Godot launched.
853
+ * - `warming`: `lsp.lock` is currently held by another warmup; this caller
854
+ * returns without launching a second Godot editor.
855
+ * - `started`: This caller acquired `lsp.lock` and launched the managed Godot
856
+ * editor (or completed the launch if already in flight under our lock).
857
+ * - `blocked`: The configured Godot binary fails the version floor (see
858
+ * GdhVersionFloorAdvisory). The warmup did not launch Godot. Phase 81's
859
+ * refuse-to-launch contract is propagated here verbatim.
860
+ */
861
+ export type GdhAuthoringLspWarmupResult = {
862
+ readonly status: "already_warm";
863
+ readonly targetPath: string;
864
+ } | {
865
+ readonly status: "warming";
866
+ readonly targetPath: string;
867
+ } | {
868
+ readonly status: "started";
869
+ readonly targetPath: string;
870
+ } | {
871
+ readonly status: "blocked";
872
+ readonly targetPath: string;
873
+ readonly versionFloorAdvisory: GdhVersionFloorAdvisory;
874
+ };
804
875
  export type GdhAuthoringValidatorFamily = "gdscript_lsp" | "godot_scene_resource" | "unsupported";
805
876
  export type GdhProjectPlacement = "root" | "nested" | "submodule" | "vendored";
806
877
  export interface GdhScanProvenance {
@@ -2053,10 +2124,60 @@ export type GdhDiagnosticsSnapshotScope = "opened_files_only" | "refreshed_files
2053
2124
  * - scope_limited: diagnostics exist but cover only a subset of requested files
2054
2125
  */
2055
2126
  export type GdhDiagnosticsFreshnessState = "fresh" | "stale" | "missing" | "unavailable" | "scope_limited";
2127
+ /**
2128
+ * Status discriminant for compact authoring-check output and hook
2129
+ * `additionalContext` strings (Phase 81 / LSP-06 / D-02). This is the
2130
+ * user-visible token used by `formatCompactAuthoringCheckResult` and the
2131
+ * authoring-hook regex dispatch.
2132
+ *
2133
+ * Distinct from `GdhDiagnosticsFreshnessState` (which describes per-snapshot
2134
+ * file freshness). Result-status merges per-file freshness AND LSP lifecycle
2135
+ * into one user-visible vocabulary; do not conflate the two.
2136
+ *
2137
+ * - "fresh" — all requested files checked, no blocking errors
2138
+ * - "partial" — some files checked, some still pending
2139
+ * - "pending" — no files captured because warmup is in flight
2140
+ * - "timeout" — hook bound exceeded before drain completed
2141
+ * - "stale" — LSP up but snapshot's lspInstanceId no longer matches current LSP
2142
+ * - "failed" — LSP unavailable, connection error, or refusal
2143
+ */
2144
+ export type GdhDiagnosticsResultStatus = "fresh" | "partial" | "pending" | "timeout" | "stale" | "failed";
2145
+ /**
2146
+ * Value-level array form of `GdhDiagnosticsResultStatus` for runtime iteration
2147
+ * and exhaustiveness assertions (Phase 81 / D-02). Element type IS
2148
+ * `GdhDiagnosticsResultStatus`; consumers can `forEach` to render help text or
2149
+ * `includes(value)` to runtime-validate untrusted JSON inputs.
2150
+ */
2151
+ export declare const GDH_DIAGNOSTICS_RESULT_STATUSES: readonly GdhDiagnosticsResultStatus[];
2152
+ /**
2153
+ * Token surfaced as `additionalContext` (Codex) or context body (Claude) by
2154
+ * the post-edit authoring hook when the managed LSP is cold-starting and a
2155
+ * detached warmup has been kicked off. Phase 82 / LSP-02.
2156
+ */
2157
+ export declare const GDH_AUTHORING_WARMING_UP_TOKEN: "warming_up";
2056
2158
  /**
2057
2159
  * Reasons reported in broker health and diagnostics freshness results.
2160
+ *
2161
+ * Phase 81 additions (D-08, D-15):
2162
+ * - "broker_not_yet_primed" — broker has never been refreshed; .primed marker absent.
2163
+ * Distinct from "broker_metadata_missing" (which now means snapshot was pruned).
2164
+ * - "godot_editor_version_unsupported_for_lsp" — configured Godot binary is below
2165
+ * GDH_MANAGED_LSP_MIN_GODOT_VERSION (= "4.5.2"); managed LSP refuses-to-launch.
2058
2166
  */
2059
- export type GdhDiagnosticsBrokerReason = "broker_metadata_missing" | "broker_protocol_mismatch" | "broker_gdh_version_mismatch" | "broker_target_mismatch" | "broker_godot_project_mismatch" | "broker_state_root_mismatch" | "broker_token_missing" | "broker_heartbeat_stale" | "broker_process_not_alive" | "broker_lsp_unavailable" | "broker_ready" | "diagnostics_stale" | "diagnostics_missing" | "diagnostics_scope_limited" | "lsp_instance_identity_mismatch";
2167
+ export type GdhDiagnosticsBrokerReason = "broker_metadata_missing" | "broker_protocol_mismatch" | "broker_gdh_version_mismatch" | "broker_target_mismatch" | "broker_godot_project_mismatch" | "broker_state_root_mismatch" | "broker_token_missing" | "broker_heartbeat_stale" | "broker_process_not_alive" | "broker_lsp_unavailable" | "broker_ready" | "diagnostics_stale" | "diagnostics_missing" | "diagnostics_scope_limited" | "lsp_instance_identity_mismatch" | "broker_not_yet_primed" | "godot_editor_version_unsupported_for_lsp";
2168
+ /**
2169
+ * Structured actionable suggestion attached to broker-absence reasons,
2170
+ * version-floor advisories, and any future surface that wants to point
2171
+ * agents at a concrete next-step command (Phase 81 / LSP-05, LSP-08 / D-07).
2172
+ *
2173
+ * CLI renderers compose `command + " " + args.join(" ")` for prose;
2174
+ * MCP renderers can surface as a structured suggestion field. Keep the verb
2175
+ * minimal; downstream renderers append target context as needed.
2176
+ */
2177
+ export interface GdhRecommendedCommand {
2178
+ readonly command: string;
2179
+ readonly args?: readonly string[];
2180
+ }
2060
2181
  /**
2061
2182
  * Target/worktree identity for the diagnostics broker, normalized for
2062
2183
  * cross-platform and symlink-safe comparison. Mirrors the runtime bridge
@@ -2118,6 +2239,13 @@ export interface GdhDiagnosticsBrokerHealth {
2118
2239
  readonly lifecycle: GdhDiagnosticsBrokerLifecycleState;
2119
2240
  readonly reasons: readonly GdhDiagnosticsBrokerReason[];
2120
2241
  readonly metadata: GdhDiagnosticsBrokerMetadata | null;
2242
+ /**
2243
+ * Optional actionable next-step suggestion. Set when the reason set carries
2244
+ * an absent-broker reason (broker_not_yet_primed, broker_metadata_missing)
2245
+ * or any other reason where a single command would help (Phase 81 / LSP-05 / D-07).
2246
+ * Renderers compose `command + args.join(" ")` for prose.
2247
+ */
2248
+ readonly recommendedCommand?: GdhRecommendedCommand;
2121
2249
  }
2122
2250
  /**
2123
2251
  * Full diagnostics snapshot returned by broker operations.
@@ -2134,4 +2262,48 @@ export interface GdhDiagnosticsSnapshot {
2134
2262
  readonly warningCount: number;
2135
2263
  readonly infoCount: number;
2136
2264
  }
2265
+ /**
2266
+ * Top-level diagnostics result envelope with a discriminated `status` field
2267
+ * (Phase 81 / LSP-06 / D-05). The two branches make `status: fresh` with
2268
+ * `files: []` (legitimately empty — D-13 project-empty / scope-empty) STRUCTURALLY
2269
+ * DISTINCT from `status: pending` (warmup in flight, no files captured yet).
2270
+ *
2271
+ * Branches:
2272
+ * - `"fresh" | "partial"` carry `readonly files`. The array MAY be empty (D-13
2273
+ * legitimate empty-set case); the array's emptiness is a domain truth, not a
2274
+ * wire-format ambiguity. Renderers SHOULD branch on `status` first, then on
2275
+ * `files.length` only after narrowing into this branch.
2276
+ * - `"pending" | "timeout" | "stale" | "failed"` OMIT `files` entirely.
2277
+ * TypeScript exhaustiveness blocks `result.files` access in this branch at
2278
+ * compile time, eliminating the "is `[]` clean or not-yet-resolved?" class
2279
+ * of bugs called out by ROADMAP success criterion #4.
2280
+ *
2281
+ * Phase 81 introduces this type for use by:
2282
+ * - Plan 05 hook-render dispatch (consumes the `status` token via wire format)
2283
+ * - Plan 05 CLI compact formatter (TypeScript-narrows on `status` to decide
2284
+ * whether to emit a "files" line)
2285
+ * - Phase 82 warmup machinery (will produce `pending` envelopes during cold-start)
2286
+ *
2287
+ * The envelope is additive — `GdhDiagnosticsSnapshot` (which keeps its `files`
2288
+ * field on every shape via its independent `freshness` discriminant) continues
2289
+ * to exist for consumers that prefer the snapshot view.
2290
+ */
2291
+ export type GdhAuthoringDiagnosticsResultEnvelope = {
2292
+ readonly status: "fresh" | "partial";
2293
+ readonly health: GdhDiagnosticsBrokerHealth;
2294
+ readonly files: readonly GdhDiagnosticsFileSnapshot[];
2295
+ readonly observedAt: string;
2296
+ readonly errorCount: number;
2297
+ readonly warningCount: number;
2298
+ readonly infoCount: number;
2299
+ readonly summary: string;
2300
+ } | {
2301
+ readonly status: "pending" | "timeout" | "stale" | "failed";
2302
+ readonly health: GdhDiagnosticsBrokerHealth;
2303
+ readonly observedAt: string;
2304
+ readonly errorCount: number;
2305
+ readonly warningCount: number;
2306
+ readonly infoCount: number;
2307
+ readonly summary: string;
2308
+ };
2137
2309
  //# sourceMappingURL=index.d.ts.map