@skillcap/gdh 0.25.4 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL-BUNDLE.json +1 -1
- package/RELEASE-SPAN-UPDATE-CONTRACTS.json +147 -0
- package/node_modules/@gdh/adapters/dist/claude-settings-patch.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/claude-settings-patch.js +38 -15
- package/node_modules/@gdh/adapters/dist/claude-settings-patch.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.d.ts +12 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +21 -0
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.js +49 -16
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts +5 -2
- package/node_modules/@gdh/adapters/dist/skill-rendering.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/skill-rendering.js +39 -0
- package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +200 -15
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.d.ts +1 -0
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.js +1 -0
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.d.ts +2 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.js +91 -13
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/index.d.ts +1 -1
- package/node_modules/@gdh/authoring/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/index.js +2 -1
- package/node_modules/@gdh/authoring/dist/index.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp-warmup.d.ts +30 -0
- package/node_modules/@gdh/authoring/dist/lsp-warmup.d.ts.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-warmup.js +213 -0
- package/node_modules/@gdh/authoring/dist/lsp-warmup.js.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp.d.ts +8 -1
- package/node_modules/@gdh/authoring/dist/lsp.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp.js +256 -104
- package/node_modules/@gdh/authoring/dist/lsp.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/scene-resource.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/scene-resource.js +140 -0
- package/node_modules/@gdh/authoring/dist/scene-resource.js.map +1 -1
- package/node_modules/@gdh/authoring/package.json +2 -2
- package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/index.js +75 -10
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/self-update.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/self-update.js +66 -10
- package/node_modules/@gdh/cli/dist/self-update.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +178 -6
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +44 -4
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts +15 -0
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js +18 -0
- package/node_modules/@gdh/core/dist/migrations/managed-surface-classes.js.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js +2 -0
- package/node_modules/@gdh/core/dist/migrations/managed-target-surface-inventory.js.map +1 -1
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/templates/guidance/authoring-and-validation.md.tpl +4 -5
- package/node_modules/@gdh/docs/package.json +2 -2
- package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/mcp/dist/index.js +30 -1
- package/node_modules/@gdh/mcp/dist/index.js.map +1 -1
- 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
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
2
|
+
//
|
|
3
|
+
// Phase 82 / LSP-02 / LSP-07 — managed-LSP warmup implementation.
|
|
4
|
+
//
|
|
5
|
+
// This module hosts the implementation of `warmupManagedLsp`. The wrapper
|
|
6
|
+
// in `lsp.ts` defers to this module via a dynamic `await import("./lsp-warmup.js")`
|
|
7
|
+
// at call time. The deferral ensures that `lsp-warmup.ts` is NOT a static
|
|
8
|
+
// dependency of `lsp.ts`; under unit test, this lets vitest's
|
|
9
|
+
// `vi.mock("./lsp.js", ...)` factory register BEFORE this module is loaded,
|
|
10
|
+
// so the static `import { getManagedLspStatus } from "./lsp.js"` below
|
|
11
|
+
// resolves through the mocked module instead of capturing the real
|
|
12
|
+
// (original) function from a partially-evaluated module record.
|
|
13
|
+
//
|
|
14
|
+
// The warmup lock lives at `<targetPath>/.gdh-state/lsp.lock` — distinct
|
|
15
|
+
// from the lifecycle lock at `<targetPath>/.gdh-state/authoring/lsp.lock`
|
|
16
|
+
// used by `getManagedLspStatus`/`acquireManagedLspStateLock`. Warmup needs
|
|
17
|
+
// its own non-blocking lock so a busy lifecycle command does not stall
|
|
18
|
+
// post-edit hook spawns, and so the warmup-specific "warming" state is
|
|
19
|
+
// observable without taking the lifecycle lock. The schema is identical
|
|
20
|
+
// (lockId/owner/pid/acquiredAt/staleAfterMs/acquireTimeoutMs/schemaVersion=1)
|
|
21
|
+
// so existing inspection tooling reads either lock with the same parser.
|
|
22
|
+
import { randomUUID } from "node:crypto";
|
|
23
|
+
import fs from "node:fs/promises";
|
|
24
|
+
import path from "node:path";
|
|
25
|
+
import { getManagedLspStatus } from "./lsp.js";
|
|
26
|
+
// ─── Lock metadata schema ────────────────────────────────────────────────────
|
|
27
|
+
// Matches the lifecycle-lock schema in lsp.ts so a single inspector can read
|
|
28
|
+
// either lock without branching on placement.
|
|
29
|
+
const WARMUP_LOCK_SCHEMA_VERSION = 1;
|
|
30
|
+
const WARMUP_LOCK_STALE_AFTER_MS = 30_000;
|
|
31
|
+
const WARMUP_LOCK_ACQUIRE_TIMEOUT_MS = 5_000;
|
|
32
|
+
function isPidAliveLocal(pid) {
|
|
33
|
+
try {
|
|
34
|
+
process.kill(pid, 0);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
const code = error.code;
|
|
39
|
+
// EPERM means the PID exists but is owned by another user — treat as alive.
|
|
40
|
+
return code === "EPERM";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
async function detectStaleReason(metadataPath) {
|
|
44
|
+
const content = await fs.readFile(metadataPath, "utf8").catch(() => null);
|
|
45
|
+
if (content === null) {
|
|
46
|
+
const lockStats = await fs.stat(path.dirname(metadataPath)).catch(() => null);
|
|
47
|
+
if (lockStats !== null && Date.now() - lockStats.mtimeMs >= WARMUP_LOCK_STALE_AFTER_MS) {
|
|
48
|
+
return "lsp_state_lock_metadata_invalid";
|
|
49
|
+
}
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
let metadata;
|
|
53
|
+
try {
|
|
54
|
+
metadata = JSON.parse(content);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return "lsp_state_lock_metadata_invalid";
|
|
58
|
+
}
|
|
59
|
+
if (metadata.schemaVersion !== WARMUP_LOCK_SCHEMA_VERSION ||
|
|
60
|
+
typeof metadata.pid !== "number" ||
|
|
61
|
+
typeof metadata.acquiredAt !== "string") {
|
|
62
|
+
return "lsp_state_lock_metadata_invalid";
|
|
63
|
+
}
|
|
64
|
+
if (!isPidAliveLocal(metadata.pid)) {
|
|
65
|
+
return "lsp_state_lock_recovered_dead_pid";
|
|
66
|
+
}
|
|
67
|
+
const staleAfterMs = typeof metadata.staleAfterMs === "number"
|
|
68
|
+
? metadata.staleAfterMs
|
|
69
|
+
: WARMUP_LOCK_STALE_AFTER_MS;
|
|
70
|
+
if (Date.now() - Date.parse(metadata.acquiredAt) >= staleAfterMs) {
|
|
71
|
+
return "lsp_state_lock_recovered_expired";
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Phase 82 / LSP-02. Single-attempt acquire of `<stateRoot>/lsp.lock`.
|
|
77
|
+
*
|
|
78
|
+
* Returns the acquired lock on success, or `null` immediately when the lock
|
|
79
|
+
* is already held by a live owner. Performs at most ONE stale-recovery
|
|
80
|
+
* attempt (mirroring the lifecycle acquire loop's recover-and-continue
|
|
81
|
+
* branch) so a stale lock left by a crashed warmup does not permanently
|
|
82
|
+
* wedge the surface.
|
|
83
|
+
*
|
|
84
|
+
* Critically, this helper does NOT spin on a retry delay — a second
|
|
85
|
+
* concurrent post-edit hook never blocks; it returns null and the caller
|
|
86
|
+
* maps that to {@link GdhAuthoringLspWarmupResult} `status: "warming"`.
|
|
87
|
+
*/
|
|
88
|
+
async function tryAcquireManagedLspStateLockOnce(stateRootPath, owner) {
|
|
89
|
+
await fs.mkdir(stateRootPath, { recursive: true });
|
|
90
|
+
const lockPath = path.join(stateRootPath, "lsp.lock");
|
|
91
|
+
const metadataPath = path.join(lockPath, "metadata.json");
|
|
92
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
93
|
+
const record = {
|
|
94
|
+
schemaVersion: WARMUP_LOCK_SCHEMA_VERSION,
|
|
95
|
+
lockId: randomUUID(),
|
|
96
|
+
owner,
|
|
97
|
+
pid: process.pid,
|
|
98
|
+
acquiredAt: new Date().toISOString(),
|
|
99
|
+
staleAfterMs: WARMUP_LOCK_STALE_AFTER_MS,
|
|
100
|
+
acquireTimeoutMs: WARMUP_LOCK_ACQUIRE_TIMEOUT_MS,
|
|
101
|
+
};
|
|
102
|
+
try {
|
|
103
|
+
await fs.mkdir(lockPath);
|
|
104
|
+
await fs.writeFile(metadataPath, JSON.stringify(record, null, 2), "utf8");
|
|
105
|
+
return { lockId: record.lockId, stateRootPath };
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
const code = error.code;
|
|
109
|
+
if (code !== "EEXIST") {
|
|
110
|
+
throw error;
|
|
111
|
+
}
|
|
112
|
+
const staleReason = await detectStaleReason(metadataPath);
|
|
113
|
+
if (staleReason !== null && attempt === 0) {
|
|
114
|
+
// Stale lock — clear it and retry once.
|
|
115
|
+
await fs.rm(lockPath, { recursive: true, force: true });
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
// Either the lock is held by a live owner OR stale-recovery was
|
|
119
|
+
// already attempted on the first iteration — return null so the
|
|
120
|
+
// caller surfaces "warming" without blocking.
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
async function releaseWarmupLock(lock) {
|
|
127
|
+
const lockPath = path.join(lock.stateRootPath, "lsp.lock");
|
|
128
|
+
const metadataPath = path.join(lockPath, "metadata.json");
|
|
129
|
+
// Only release the lock if we still own it (lockId matches). This guards
|
|
130
|
+
// against double-release across stale-recovery race conditions.
|
|
131
|
+
const content = await fs.readFile(metadataPath, "utf8").catch(() => null);
|
|
132
|
+
if (content === null) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
let metadata;
|
|
136
|
+
try {
|
|
137
|
+
metadata = JSON.parse(content);
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
if (metadata.lockId !== lock.lockId) {
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
await fs.rm(lockPath, { recursive: true, force: true });
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Phase 82 / LSP-02 / LSP-07. Idempotently warm up the managed Godot LSP for
|
|
149
|
+
* the given target so subsequent post-edit authoring checks return fast
|
|
150
|
+
* diagnostics from a healthy LSP instance.
|
|
151
|
+
*
|
|
152
|
+
* Flow:
|
|
153
|
+
* 1. Cheap probe via `getManagedLspStatus({ launchPolicy: "reuse_existing" })`
|
|
154
|
+
* — never spawns Godot, never takes the lifecycle lock. If the probe says
|
|
155
|
+
* `availability: "available"`, return `already_warm` without taking any
|
|
156
|
+
* lock.
|
|
157
|
+
* 2. Phase 81 D-17 propagation: if the probe surfaces a `versionFloorAdvisory`
|
|
158
|
+
* (Godot 4.5.0/4.5.1), return `blocked` with the advisory verbatim. No
|
|
159
|
+
* launch attempt; no lock acquisition.
|
|
160
|
+
* 3. Single-attempt acquire of `<targetPath>/.gdh-state/lsp.lock`. If another
|
|
161
|
+
* live owner holds it, return `warming`. Otherwise call `getManagedLspStatus`
|
|
162
|
+
* with `launchPolicy: "launch_if_needed"`, release the lock in `finally`,
|
|
163
|
+
* and return `started`.
|
|
164
|
+
*
|
|
165
|
+
* Idempotent under concurrent callers: at most one launch happens; the
|
|
166
|
+
* second caller sees `warming` and the agent renders the in-flight warmup as
|
|
167
|
+
* `additionalContext: "warming_up"` (Phase 82 / LSP-03).
|
|
168
|
+
*/
|
|
169
|
+
export async function warmupManagedLsp(input) {
|
|
170
|
+
const { targetPath, status, projectConfig, owner } = input;
|
|
171
|
+
// Step 1: cheap probe — never spawns Godot, never takes the warmup lock.
|
|
172
|
+
const probe = await getManagedLspStatus({
|
|
173
|
+
targetPath,
|
|
174
|
+
status,
|
|
175
|
+
projectConfig,
|
|
176
|
+
owner: `${owner} probe`,
|
|
177
|
+
launchPolicy: "reuse_existing",
|
|
178
|
+
});
|
|
179
|
+
if (probe.availability === "available") {
|
|
180
|
+
return { status: "already_warm", targetPath };
|
|
181
|
+
}
|
|
182
|
+
// Phase 81 / LSP-08 / D-17 propagation: refuse-to-launch on 4.5.0/4.5.1.
|
|
183
|
+
// The advisory comes from getManagedLspStatus; warmup never re-implements
|
|
184
|
+
// the version probe.
|
|
185
|
+
if (probe.versionFloorAdvisory != null) {
|
|
186
|
+
return {
|
|
187
|
+
status: "blocked",
|
|
188
|
+
targetPath,
|
|
189
|
+
versionFloorAdvisory: probe.versionFloorAdvisory,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
// Step 2: try to take the warmup lock without blocking.
|
|
193
|
+
const stateRootPath = path.join(path.resolve(targetPath), ".gdh-state");
|
|
194
|
+
const lock = await tryAcquireManagedLspStateLockOnce(stateRootPath, owner);
|
|
195
|
+
if (lock === null) {
|
|
196
|
+
return { status: "warming", targetPath };
|
|
197
|
+
}
|
|
198
|
+
// Step 3: launch (release the warmup lock in finally regardless of outcome).
|
|
199
|
+
try {
|
|
200
|
+
await getManagedLspStatus({
|
|
201
|
+
targetPath,
|
|
202
|
+
status,
|
|
203
|
+
projectConfig,
|
|
204
|
+
owner: `${owner} launch`,
|
|
205
|
+
launchPolicy: "launch_if_needed",
|
|
206
|
+
});
|
|
207
|
+
return { status: "started", targetPath };
|
|
208
|
+
}
|
|
209
|
+
finally {
|
|
210
|
+
await releaseWarmupLock(lock);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=lsp-warmup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-warmup.js","sourceRoot":"","sources":["../src/lsp-warmup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GdhAuthoringCheckResult, GdhAuthoringSeverityPolicy, GdhAuthoringStatusResult, GdhLspLauncherKind, GdhManagedLspStatusResult, GdhProjectConfig, GdhWorktreeIdentity } from "@gdh/core";
|
|
1
|
+
import type { GdhAuthoringCheckResult, GdhAuthoringLspWarmupResult, GdhAuthoringSeverityPolicy, GdhAuthoringStatusResult, GdhLspLauncherKind, GdhManagedLspStatusResult, GdhProjectConfig, GdhWorktreeIdentity } from "@gdh/core";
|
|
2
2
|
type GdhManagedLspLifecycleCommand = "check" | "stop" | "restart" | "prune" | "doctor";
|
|
3
3
|
type GdhManagedLspLifecycleCommandStatus = "ready" | "degraded" | "unavailable" | "stopped" | "pruned" | "not_found";
|
|
4
4
|
export interface GdhManagedLspLifecycleCommandResult {
|
|
@@ -38,7 +38,14 @@ export declare function getManagedLspStatus(input: {
|
|
|
38
38
|
readonly status: GdhAuthoringStatusResult;
|
|
39
39
|
readonly projectConfig: GdhProjectConfig | null;
|
|
40
40
|
readonly owner?: string;
|
|
41
|
+
readonly launchPolicy?: "launch_if_needed" | "reuse_existing";
|
|
41
42
|
}): Promise<GdhManagedLspStatusResult>;
|
|
43
|
+
export declare function warmupManagedLsp(input: {
|
|
44
|
+
readonly targetPath: string;
|
|
45
|
+
readonly status: GdhAuthoringStatusResult;
|
|
46
|
+
readonly projectConfig: GdhProjectConfig | null;
|
|
47
|
+
readonly owner: string;
|
|
48
|
+
}): Promise<GdhAuthoringLspWarmupResult>;
|
|
42
49
|
export declare function checkManagedLsp(input: {
|
|
43
50
|
readonly targetPath: string;
|
|
44
51
|
readonly status: GdhAuthoringStatusResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EAEvB,0BAA0B,EAC1B,wBAAwB,EAExB,kBAAkB,EAKlB,yBAAyB,EACzB,gBAAgB,
|
|
1
|
+
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"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"}
|