@skillcap/gdh 0.26.6 → 0.26.8
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 +121 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +72 -3
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.d.ts +4 -2
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.js +4 -2
- package/node_modules/@gdh/adapters/dist/self-update-mechanics.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/skill-rendering.js +10 -10
- package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
- package/node_modules/@gdh/adapters/dist/templates/authoring-hook.js.tpl +148 -39
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/dist/authoring-state-store.d.ts +3 -0
- package/node_modules/@gdh/authoring/dist/authoring-state-store.d.ts.map +1 -0
- package/node_modules/@gdh/authoring/dist/authoring-state-store.js +19 -0
- package/node_modules/@gdh/authoring/dist/authoring-state-store.js.map +1 -0
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.d.ts +15 -21
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.js +22 -37
- package/node_modules/@gdh/authoring/dist/diagnostics-broker-contract.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.js +121 -15
- package/node_modules/@gdh/authoring/dist/diagnostics-broker.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp-broker-snapshot.d.ts +28 -0
- package/node_modules/@gdh/authoring/dist/lsp-broker-snapshot.d.ts.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-broker-snapshot.js +67 -0
- package/node_modules/@gdh/authoring/dist/lsp-broker-snapshot.js.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.d.ts +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.js +3 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp-warmup.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp-warmup.js +2 -1
- package/node_modules/@gdh/authoring/dist/lsp-warmup.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp.js +11 -73
- package/node_modules/@gdh/authoring/dist/lsp.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/project.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/project.js +24 -8
- package/node_modules/@gdh/authoring/dist/project.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 +73 -29
- 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.js +5 -5
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.js +3 -2
- package/node_modules/@gdh/cli/dist/migrate.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +24 -22
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +10 -8
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/entries/s2c2_to_s2c3_rules_schema_v2_to_v3.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/migrations/entries/s2c2_to_s2c3_rules_schema_v2_to_v3.js +8 -4
- package/node_modules/@gdh/core/dist/migrations/entries/s2c2_to_s2c3_rules_schema_v2_to_v3.js.map +1 -1
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/agent-contract.d.ts.map +1 -1
- package/node_modules/@gdh/docs/dist/agent-contract.js +1 -2
- package/node_modules/@gdh/docs/dist/agent-contract.js.map +1 -1
- package/node_modules/@gdh/docs/dist/guidance.d.ts.map +1 -1
- package/node_modules/@gdh/docs/dist/guidance.js +8 -100
- package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
- package/node_modules/@gdh/docs/dist/rules.js +3 -3
- package/node_modules/@gdh/docs/dist/rules.js.map +1 -1
- package/node_modules/@gdh/docs/dist/templates/guidance/authoring-and-validation.md.tpl +16 -103
- package/node_modules/@gdh/docs/dist/templates/guidance/project-surfaces.md.tpl +6 -11
- 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 +37 -4
- 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
- package/node_modules/@gdh/docs/dist/templates/guidance/gdh-glossary.md.tpl +0 -34
- package/node_modules/@gdh/docs/dist/templates/guidance/persistence-semantics.md.tpl +0 -24
- package/node_modules/@gdh/docs/dist/templates/guidance/project-migration.md.tpl +0 -19
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GdhAuthoringDiagnostic, GdhDiagnosticsFileCollectionReason, GdhDiagnosticsFileCollectionState } from "@gdh/core";
|
|
2
|
+
export interface BrokerFileEntry {
|
|
3
|
+
readonly uri: string;
|
|
4
|
+
readonly filePath: string;
|
|
5
|
+
readonly contentHash?: string;
|
|
6
|
+
readonly collectionState?: GdhDiagnosticsFileCollectionState;
|
|
7
|
+
readonly collectionReason?: GdhDiagnosticsFileCollectionReason | null;
|
|
8
|
+
readonly lastUpdatedAt: string;
|
|
9
|
+
readonly diagnostics: readonly GdhAuthoringDiagnostic[];
|
|
10
|
+
}
|
|
11
|
+
export interface BrokerSnapshot {
|
|
12
|
+
readonly schemaVersion: 1;
|
|
13
|
+
readonly lspInstanceId: string;
|
|
14
|
+
readonly capturedAt: string;
|
|
15
|
+
readonly requestedFiles: readonly string[];
|
|
16
|
+
readonly files: readonly BrokerFileEntry[];
|
|
17
|
+
}
|
|
18
|
+
export declare function readBrokerSnapshot(targetPath: string): Promise<BrokerSnapshot | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Check whether a broker snapshot can prove diagnostics for the requested
|
|
21
|
+
* current file contents. Legacy snapshots without collection state are rejected
|
|
22
|
+
* instead of treated as clean.
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractBrokerDiagnosticsIfFresh(snapshot: BrokerSnapshot, currentInstanceId: string, requestedUris: readonly string[], currentContentHashesByUri: ReadonlyMap<string, string>): {
|
|
25
|
+
readonly diagnostics: readonly GdhAuthoringDiagnostic[];
|
|
26
|
+
readonly fileUris: readonly string[];
|
|
27
|
+
} | null;
|
|
28
|
+
//# sourceMappingURL=lsp-broker-snapshot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-broker-snapshot.d.ts","sourceRoot":"","sources":["../src/lsp-broker-snapshot.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,kCAAkC,EAClC,iCAAiC,EAClC,MAAM,WAAW,CAAC;AAQnB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,CAAC,EAAE,iCAAiC,CAAC;IAC7D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kCAAkC,GAAG,IAAI,CAAC;IACtE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACzD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;CAC5C;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAY3F;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,cAAc,EACxB,iBAAiB,EAAE,MAAM,EACzB,aAAa,EAAE,SAAS,MAAM,EAAE,EAChC,yBAAyB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GACrD;IAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CA8C1G"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { classifyDiagnosticsFreshness, DIAGNOSTICS_BROKER_DEFAULT_FRESHNESS_STALE_AFTER_MS, resolveDiagnosticsBrokerPaths, } from "./diagnostics-broker-contract.js";
|
|
4
|
+
export async function readBrokerSnapshot(targetPath) {
|
|
5
|
+
const paths = resolveDiagnosticsBrokerPaths(path.resolve(targetPath));
|
|
6
|
+
try {
|
|
7
|
+
const raw = await fs.readFile(paths.snapshotPath, "utf8");
|
|
8
|
+
const parsed = JSON.parse(raw);
|
|
9
|
+
if (typeof parsed !== "object" || parsed === null || parsed.schemaVersion !== 1) {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
return parsed;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check whether a broker snapshot can prove diagnostics for the requested
|
|
20
|
+
* current file contents. Legacy snapshots without collection state are rejected
|
|
21
|
+
* instead of treated as clean.
|
|
22
|
+
*/
|
|
23
|
+
export function extractBrokerDiagnosticsIfFresh(snapshot, currentInstanceId, requestedUris, currentContentHashesByUri) {
|
|
24
|
+
if (snapshot.lspInstanceId !== currentInstanceId) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const fileByUri = new Map(snapshot.files.map((f) => [f.uri, f]));
|
|
28
|
+
const nowMs = Date.now();
|
|
29
|
+
const coveredDiagnostics = [];
|
|
30
|
+
const coveredUris = [];
|
|
31
|
+
for (const uri of requestedUris) {
|
|
32
|
+
const file = fileByUri.get(uri);
|
|
33
|
+
if (file === undefined) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
if (typeof file.contentHash !== "string" || file.contentHash.length === 0) {
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
if (currentContentHashesByUri.get(uri) !== file.contentHash) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
if (file.collectionState !== "checked") {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const freshness = classifyDiagnosticsFreshness({
|
|
46
|
+
fileSnapshot: {
|
|
47
|
+
uri: file.uri,
|
|
48
|
+
filePath: file.filePath,
|
|
49
|
+
collectionState: file.collectionState,
|
|
50
|
+
collectionReason: file.collectionReason ?? null,
|
|
51
|
+
diagnostics: file.diagnostics,
|
|
52
|
+
freshness: "fresh",
|
|
53
|
+
lastUpdatedAt: file.lastUpdatedAt,
|
|
54
|
+
lspInstanceId: snapshot.lspInstanceId,
|
|
55
|
+
},
|
|
56
|
+
nowMs,
|
|
57
|
+
staleAfterMs: DIAGNOSTICS_BROKER_DEFAULT_FRESHNESS_STALE_AFTER_MS,
|
|
58
|
+
});
|
|
59
|
+
if (freshness !== "fresh") {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
coveredDiagnostics.push(...file.diagnostics);
|
|
63
|
+
coveredUris.push(uri);
|
|
64
|
+
}
|
|
65
|
+
return { diagnostics: coveredDiagnostics, fileUris: coveredUris };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=lsp-broker-snapshot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-broker-snapshot.js","sourceRoot":"","sources":["../src/lsp-broker-snapshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export interface FakeLspServerScenario {
|
|
|
18
18
|
readonly diagnostics?: readonly FakeLspDiagnostic[];
|
|
19
19
|
readonly publishDelayMs?: number;
|
|
20
20
|
readonly publishUri?: string;
|
|
21
|
+
readonly suppressDiagnostics?: boolean;
|
|
21
22
|
readonly malformedPayload?: boolean;
|
|
22
23
|
readonly closeAfterInitialize?: boolean;
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-test-server.test-utils.d.ts","sourceRoot":"","sources":["../src/lsp-test-server.test-utils.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,KAAK,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,QAAQ,CAAC,GAAG,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KACrE,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC/D,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAUD,wBAAsB,kBAAkB,CACtC,QAAQ,GAAE,qBAA0B,GACnC,OAAO,CAAC,aAAa,CAAC,CAgIxB"}
|
|
1
|
+
{"version":3,"file":"lsp-test-server.test-utils.d.ts","sourceRoot":"","sources":["../src/lsp-test-server.test-utils.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,KAAK,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;QACtE,QAAQ,CAAC,GAAG,EAAE;YAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;SAAE,CAAC;KACrE,CAAC;IACF,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,CAAC,EAAE,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACpD,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;IACxE,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,CACtB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KAC/D,OAAO,CAAC,IAAI,CAAC,CAAC;CACpB;AAUD,wBAAsB,kBAAkB,CACtC,QAAQ,GAAE,qBAA0B,GACnC,OAAO,CAAC,aAAa,CAAC,CAgIxB"}
|
|
@@ -131,6 +131,9 @@ function handleMessage(socket, message, scenario) {
|
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
133
133
|
if (method === "textDocument/didOpen") {
|
|
134
|
+
if (scenario.suppressDiagnostics) {
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
134
137
|
const publish = () => {
|
|
135
138
|
if (scenario.malformedPayload) {
|
|
136
139
|
writeRawFrame(socket, Buffer.from("{bad-json", "utf8"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-test-server.test-utils.js","sourceRoot":"","sources":["../src/lsp-test-server.test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-test-server.test-utils.js","sourceRoot":"","sources":["../src/lsp-test-server.test-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-warmup.d.ts","sourceRoot":"","sources":["../src/lsp-warmup.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-warmup.d.ts","sourceRoot":"","sources":["../src/lsp-warmup.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EACV,2BAA2B,EAC3B,wBAAwB,EACxB,gBAAgB,EACjB,MAAM,WAAW,CAAC;AAkKnB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE;IAC5C,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,KAAK,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,2BAA2B,CAAC,CA+CvC"}
|
|
@@ -23,6 +23,7 @@ import { randomUUID } from "node:crypto";
|
|
|
23
23
|
import fs from "node:fs/promises";
|
|
24
24
|
import path from "node:path";
|
|
25
25
|
import { getManagedLspStatus } from "./lsp.js";
|
|
26
|
+
import { writeJsonFileAtomically } from "./authoring-state-store.js";
|
|
26
27
|
// ─── Lock metadata schema ────────────────────────────────────────────────────
|
|
27
28
|
// Matches the lifecycle-lock schema in lsp.ts so a single inspector can read
|
|
28
29
|
// either lock without branching on placement.
|
|
@@ -101,7 +102,7 @@ async function tryAcquireManagedLspStateLockOnce(stateRootPath, owner) {
|
|
|
101
102
|
};
|
|
102
103
|
try {
|
|
103
104
|
await fs.mkdir(lockPath);
|
|
104
|
-
await
|
|
105
|
+
await writeJsonFileAtomically(metadataPath, record);
|
|
105
106
|
return { lockId: record.lockId, stateRootPath };
|
|
106
107
|
}
|
|
107
108
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp-warmup.js","sourceRoot":"","sources":["../src/lsp-warmup.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,EAAE;AACF,0EAA0E;AAC1E,oFAAoF;AACpF,0EAA0E;AAC1E,8DAA8D;AAC9D,4EAA4E;AAC5E,uEAAuE;AACvE,mEAAmE;AACnE,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,2EAA2E;AAC3E,uEAAuE;AACvE,uEAAuE;AACvE,wEAAwE;AACxE,8EAA8E;AAC9E,yEAAyE;AAEzE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp-warmup.js","sourceRoot":"","sources":["../src/lsp-warmup.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,uBAAuB,EAEvB,2BAA2B,EAC3B,0BAA0B,EAC1B,wBAAwB,EAExB,kBAAkB,EAKlB,yBAAyB,EACzB,gBAAgB,EAEhB,mBAAmB,EACpB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,8 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
8
8
|
import { GDH_MANAGED_LSP_MIN_GODOT_VERSION, GDH_MANAGED_LSP_SURFACE_VERSION, resolveConfiguredGodotEditorBin, } from "@gdh/core";
|
|
9
9
|
import { connectGodotLspClient, GdhLspClientError, } from "./lsp-client.js";
|
|
10
10
|
import { summarizeBlockingDiagnostics } from "./diagnostics-summary.js";
|
|
11
|
-
import {
|
|
11
|
+
import { readBrokerSnapshot, extractBrokerDiagnosticsIfFresh } from "./lsp-broker-snapshot.js";
|
|
12
|
+
import { writeJsonFileAtomically } from "./authoring-state-store.js";
|
|
12
13
|
const LSP_INSTANCE_SCHEMA_VERSION = 2;
|
|
13
14
|
const LSP_LEASE_SCHEMA_VERSION = 1;
|
|
14
15
|
const LSP_STATE_LOCK_SCHEMA_VERSION = 1;
|
|
@@ -36,70 +37,7 @@ class GdhManagedLspStateLockError extends Error {
|
|
|
36
37
|
}
|
|
37
38
|
}
|
|
38
39
|
const testFakeRegistry = new Map();
|
|
39
|
-
|
|
40
|
-
const paths = resolveDiagnosticsBrokerPaths(path.resolve(targetPath));
|
|
41
|
-
try {
|
|
42
|
-
const raw = await fs.readFile(paths.snapshotPath, "utf8");
|
|
43
|
-
const parsed = JSON.parse(raw);
|
|
44
|
-
if (typeof parsed !== "object" || parsed === null || parsed.schemaVersion !== 1) {
|
|
45
|
-
return null;
|
|
46
|
-
}
|
|
47
|
-
return parsed;
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return null;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Check if the broker snapshot is fresh enough to use for a post_edit check
|
|
55
|
-
* on the requested changed files.
|
|
56
|
-
*
|
|
57
|
-
* Returns the matching diagnostics if all conditions are met:
|
|
58
|
-
* - schemaVersion is 1
|
|
59
|
-
* - lspInstanceId matches the current instance
|
|
60
|
-
* - All requested file URIs are covered and individually fresh
|
|
61
|
-
*
|
|
62
|
-
* Returns null otherwise (fall through to direct LSP check).
|
|
63
|
-
*/
|
|
64
|
-
function extractBrokerDiagnosticsIfFresh(snapshot, currentInstanceId, requestedUris, currentContentHashesByUri) {
|
|
65
|
-
if (snapshot.lspInstanceId !== currentInstanceId) {
|
|
66
|
-
return null;
|
|
67
|
-
}
|
|
68
|
-
const fileByUri = new Map(snapshot.files.map((f) => [f.uri, f]));
|
|
69
|
-
const nowMs = Date.now();
|
|
70
|
-
const coveredDiagnostics = [];
|
|
71
|
-
const coveredUris = [];
|
|
72
|
-
for (const uri of requestedUris) {
|
|
73
|
-
const file = fileByUri.get(uri);
|
|
74
|
-
if (file === undefined) {
|
|
75
|
-
return null; // Requested URI not in broker — fall through.
|
|
76
|
-
}
|
|
77
|
-
if (typeof file.contentHash !== "string" || file.contentHash.length === 0) {
|
|
78
|
-
return null; // Pre-content-hash snapshots cannot prove current file content.
|
|
79
|
-
}
|
|
80
|
-
if (currentContentHashesByUri.get(uri) !== file.contentHash) {
|
|
81
|
-
return null; // Snapshot was captured for different file content.
|
|
82
|
-
}
|
|
83
|
-
const freshness = classifyDiagnosticsFreshness({
|
|
84
|
-
fileSnapshot: {
|
|
85
|
-
uri: file.uri,
|
|
86
|
-
filePath: file.filePath,
|
|
87
|
-
diagnostics: file.diagnostics,
|
|
88
|
-
freshness: "fresh", // will be recomputed
|
|
89
|
-
lastUpdatedAt: file.lastUpdatedAt,
|
|
90
|
-
lspInstanceId: snapshot.lspInstanceId,
|
|
91
|
-
},
|
|
92
|
-
nowMs,
|
|
93
|
-
staleAfterMs: DIAGNOSTICS_BROKER_DEFAULT_FRESHNESS_STALE_AFTER_MS,
|
|
94
|
-
});
|
|
95
|
-
if (freshness !== "fresh") {
|
|
96
|
-
return null; // Any stale file causes fallthrough.
|
|
97
|
-
}
|
|
98
|
-
coveredDiagnostics.push(...file.diagnostics);
|
|
99
|
-
coveredUris.push(uri);
|
|
100
|
-
}
|
|
101
|
-
return { diagnostics: coveredDiagnostics, fileUris: coveredUris };
|
|
102
|
-
}
|
|
40
|
+
// ─── Broker Snapshot (lightweight, no circular import) ────────────────────────
|
|
103
41
|
export async function getManagedLspStatus(input) {
|
|
104
42
|
const worktree = resolveWorktreeIdentity(input.targetPath, input.status, input.projectConfig);
|
|
105
43
|
const lspCapability = input.status.capabilities.find((capability) => capability.id === "authoring.lsp");
|
|
@@ -1388,7 +1326,7 @@ async function acquireManagedLspStateLock(worktree, owner) {
|
|
|
1388
1326
|
};
|
|
1389
1327
|
try {
|
|
1390
1328
|
await fs.mkdir(lockPath);
|
|
1391
|
-
await
|
|
1329
|
+
await writeJsonFileAtomically(metadataPath, record);
|
|
1392
1330
|
return {
|
|
1393
1331
|
lockId: record.lockId,
|
|
1394
1332
|
owner,
|
|
@@ -1463,10 +1401,10 @@ async function withLease(worktree, owner, callback) {
|
|
|
1463
1401
|
acquiredAt: new Date().toISOString(),
|
|
1464
1402
|
};
|
|
1465
1403
|
const nextLeases = [...activeLeases, lease];
|
|
1466
|
-
await
|
|
1404
|
+
await writeJsonFileAtomically(leasesPath, {
|
|
1467
1405
|
schemaVersion: LSP_LEASE_SCHEMA_VERSION,
|
|
1468
1406
|
activeLeases: nextLeases,
|
|
1469
|
-
}
|
|
1407
|
+
});
|
|
1470
1408
|
try {
|
|
1471
1409
|
return await callback(lease, nextLeases.length);
|
|
1472
1410
|
}
|
|
@@ -1476,10 +1414,10 @@ async function withLease(worktree, owner, callback) {
|
|
|
1476
1414
|
await fs.rm(leasesPath, { force: true });
|
|
1477
1415
|
}
|
|
1478
1416
|
else {
|
|
1479
|
-
await
|
|
1417
|
+
await writeJsonFileAtomically(leasesPath, {
|
|
1480
1418
|
schemaVersion: LSP_LEASE_SCHEMA_VERSION,
|
|
1481
1419
|
activeLeases: remainingLeases,
|
|
1482
|
-
}
|
|
1420
|
+
});
|
|
1483
1421
|
}
|
|
1484
1422
|
}
|
|
1485
1423
|
}
|
|
@@ -1512,7 +1450,7 @@ async function readPersistedInstance(worktree) {
|
|
|
1512
1450
|
}
|
|
1513
1451
|
async function persistInstance(worktree, record) {
|
|
1514
1452
|
await fs.mkdir(worktree.stateRootPath, { recursive: true });
|
|
1515
|
-
await
|
|
1453
|
+
await writeJsonFileAtomically(path.join(worktree.stateRootPath, "lsp-instance.json"), record);
|
|
1516
1454
|
}
|
|
1517
1455
|
function validatePersistedInstanceIdentity(instance, expectedIdentity) {
|
|
1518
1456
|
const identity = instance.identity;
|
|
@@ -1685,13 +1623,13 @@ async function cleanupPersistedInstance(worktree, instance, reason, options = {}
|
|
|
1685
1623
|
await fs.rm(path.join(worktree.stateRootPath, "lsp-instance.json"), {
|
|
1686
1624
|
force: true,
|
|
1687
1625
|
});
|
|
1688
|
-
await
|
|
1626
|
+
await writeJsonFileAtomically(path.join(worktree.stateRootPath, "lsp-cleanup.json"), {
|
|
1689
1627
|
cleanedAt: new Date().toISOString(),
|
|
1690
1628
|
reason,
|
|
1691
1629
|
instanceId: instance.instanceId,
|
|
1692
1630
|
killedPid,
|
|
1693
1631
|
killReason,
|
|
1694
|
-
}
|
|
1632
|
+
});
|
|
1695
1633
|
return { killedPid, killReason };
|
|
1696
1634
|
}
|
|
1697
1635
|
async function launchManagedInstance(worktree, projectPath) {
|