@skillcap/gdh 0.15.1 → 0.17.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/README.md +37 -108
- package/RELEASE-SPAN-UPDATE-CONTRACTS.json +184 -0
- package/node_modules/@gdh/adapters/dist/index.d.ts +2 -2
- package/node_modules/@gdh/adapters/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/adapters/dist/index.js +148 -110
- package/node_modules/@gdh/adapters/dist/index.js.map +1 -1
- package/node_modules/@gdh/adapters/package.json +8 -8
- package/node_modules/@gdh/authoring/dist/index.d.ts +4 -3
- package/node_modules/@gdh/authoring/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/index.js +80 -9
- package/node_modules/@gdh/authoring/dist/index.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp-client.d.ts +47 -0
- package/node_modules/@gdh/authoring/dist/lsp-client.d.ts.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-client.js +371 -0
- package/node_modules/@gdh/authoring/dist/lsp-client.js.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.d.ts +35 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.d.ts.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.js +194 -0
- package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.js.map +1 -0
- package/node_modules/@gdh/authoring/dist/lsp.d.ts +62 -1
- package/node_modules/@gdh/authoring/dist/lsp.d.ts.map +1 -1
- package/node_modules/@gdh/authoring/dist/lsp.js +1207 -109
- 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 +28 -1
- package/node_modules/@gdh/authoring/dist/project.js.map +1 -1
- package/node_modules/@gdh/authoring/dist/scene-resource.d.ts +39 -0
- package/node_modules/@gdh/authoring/dist/scene-resource.d.ts.map +1 -0
- package/node_modules/@gdh/authoring/dist/scene-resource.js +544 -0
- package/node_modules/@gdh/authoring/dist/scene-resource.js.map +1 -0
- 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 +121 -35
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.d.ts +1 -0
- package/node_modules/@gdh/cli/dist/migrate.d.ts.map +1 -1
- package/node_modules/@gdh/cli/dist/migrate.js +140 -13
- 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 +109 -14
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +16 -18
- package/node_modules/@gdh/core/dist/index.js.map +1 -1
- package/node_modules/@gdh/core/package.json +1 -1
- package/node_modules/@gdh/docs/dist/guidance.d.ts.map +1 -1
- package/node_modules/@gdh/docs/dist/guidance.js +34 -2
- package/node_modules/@gdh/docs/dist/guidance.js.map +1 -1
- package/node_modules/@gdh/docs/dist/rules.d.ts.map +1 -1
- package/node_modules/@gdh/docs/dist/rules.js +2 -2
- package/node_modules/@gdh/docs/dist/rules.js.map +1 -1
- package/node_modules/@gdh/docs/package.json +2 -2
- package/node_modules/@gdh/mcp/package.json +8 -8
- package/node_modules/@gdh/observability/package.json +2 -2
- package/node_modules/@gdh/runtime/dist/bridge-surface.d.ts.map +1 -1
- package/node_modules/@gdh/runtime/dist/bridge-surface.js +128 -16
- package/node_modules/@gdh/runtime/dist/bridge-surface.js.map +1 -1
- package/node_modules/@gdh/runtime/dist/index.d.ts +1 -0
- package/node_modules/@gdh/runtime/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/runtime/dist/index.js +189 -0
- package/node_modules/@gdh/runtime/dist/index.js.map +1 -1
- package/node_modules/@gdh/runtime/dist/knowledge-surface.d.ts +6 -0
- package/node_modules/@gdh/runtime/dist/knowledge-surface.d.ts.map +1 -0
- package/node_modules/@gdh/runtime/dist/knowledge-surface.js +216 -0
- package/node_modules/@gdh/runtime/dist/knowledge-surface.js.map +1 -0
- package/node_modules/@gdh/runtime/package.json +2 -2
- package/node_modules/@gdh/scan/dist/onboard.d.ts.map +1 -1
- package/node_modules/@gdh/scan/dist/onboard.js +13 -0
- package/node_modules/@gdh/scan/dist/onboard.js.map +1 -1
- package/node_modules/@gdh/scan/package.json +3 -3
- package/node_modules/@gdh/verify/dist/policy.d.ts.map +1 -1
- package/node_modules/@gdh/verify/dist/policy.js +157 -29
- package/node_modules/@gdh/verify/dist/policy.js.map +1 -1
- package/node_modules/@gdh/verify/package.json +7 -7
- package/package.json +11 -11
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { definePackageBoundary, } from "@gdh/core";
|
|
2
|
-
import { getManagedLspStatus,
|
|
3
|
-
import { inspectCacheState, pruneCacheState, resolveCacheNamespace } from "./cache.js";
|
|
4
|
-
import { runImportRefresh, runTargetPrepare } from "./prepare.js";
|
|
2
|
+
import { getManagedLspStatus, runManagedAuthoringCheck } from "./lsp.js";
|
|
5
3
|
import { enrichAuthoringCheckResult } from "./report.js";
|
|
4
|
+
import { runSceneResourceValidation } from "./scene-resource.js";
|
|
6
5
|
export const authoringPackage = definePackageBoundary({
|
|
7
6
|
name: "@gdh/authoring",
|
|
8
7
|
layer: "capability",
|
|
@@ -16,23 +15,95 @@ export async function runAuthoringCheck(input) {
|
|
|
16
15
|
projectConfig: input.projectConfig,
|
|
17
16
|
owner: "gdh authoring check",
|
|
18
17
|
});
|
|
19
|
-
const
|
|
18
|
+
const lspResult = await runManagedAuthoringCheck({
|
|
20
19
|
targetPath: input.targetPath,
|
|
21
20
|
status: input.status,
|
|
22
21
|
projectConfig: input.projectConfig,
|
|
23
22
|
lspStatus,
|
|
24
23
|
});
|
|
25
|
-
|
|
24
|
+
const enrichedLspResult = await enrichAuthoringCheckResult({
|
|
26
25
|
targetPath: input.targetPath,
|
|
27
26
|
status: input.status,
|
|
28
27
|
projectConfig: input.projectConfig,
|
|
29
|
-
result:
|
|
28
|
+
result: lspResult,
|
|
30
29
|
});
|
|
30
|
+
if (input.projectConfig === null || input.status.readiness !== "authorable") {
|
|
31
|
+
return enrichedLspResult;
|
|
32
|
+
}
|
|
33
|
+
const sceneResourceResult = await runSceneResourceValidation({
|
|
34
|
+
targetPath: input.targetPath,
|
|
35
|
+
status: input.status,
|
|
36
|
+
projectConfig: input.projectConfig,
|
|
37
|
+
importState: enrichedLspResult.importState,
|
|
38
|
+
});
|
|
39
|
+
return composeAuthoringCheckResult(enrichedLspResult, sceneResourceResult);
|
|
40
|
+
}
|
|
41
|
+
function composeAuthoringCheckResult(lspResult, sceneResourceResult) {
|
|
42
|
+
const diagnostics = [...lspResult.diagnostics, ...sceneResourceResult.diagnostics];
|
|
43
|
+
const reasons = dedupe([...lspResult.reasons, ...sceneResourceResult.reasons]);
|
|
44
|
+
const status = diagnostics.length > 0
|
|
45
|
+
? "diagnostics"
|
|
46
|
+
: lspResult.status === "degraded" || sceneResourceResult.status === "degraded"
|
|
47
|
+
? "degraded"
|
|
48
|
+
: lspResult.status === "unavailable"
|
|
49
|
+
? "unavailable"
|
|
50
|
+
: sceneResourceResult.status === "unavailable"
|
|
51
|
+
? "degraded"
|
|
52
|
+
: "passed";
|
|
53
|
+
return {
|
|
54
|
+
...lspResult,
|
|
55
|
+
status,
|
|
56
|
+
summary: summarizeCompositeAuthoringStatus(status, lspResult, sceneResourceResult),
|
|
57
|
+
diagnostics,
|
|
58
|
+
reasons,
|
|
59
|
+
provenance: {
|
|
60
|
+
...lspResult.provenance,
|
|
61
|
+
source: "authoring.check",
|
|
62
|
+
validators: [
|
|
63
|
+
{
|
|
64
|
+
id: "gdscript_lsp",
|
|
65
|
+
status: lspResult.status,
|
|
66
|
+
summary: lspResult.summary,
|
|
67
|
+
reasons: lspResult.reasons,
|
|
68
|
+
diagnosticsCount: lspResult.diagnostics.length,
|
|
69
|
+
provenance: lspResult.provenance.rawPayload,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
id: "godot_scene_resource",
|
|
73
|
+
status: sceneResourceResult.status,
|
|
74
|
+
summary: sceneResourceResult.summary,
|
|
75
|
+
reasons: sceneResourceResult.reasons,
|
|
76
|
+
diagnosticsCount: sceneResourceResult.diagnostics.length,
|
|
77
|
+
provenance: sceneResourceResult.provenance.rawPayload,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
rawPayload: {
|
|
81
|
+
lsp: lspResult.provenance.rawPayload,
|
|
82
|
+
sceneResource: sceneResourceResult.provenance.rawPayload,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function summarizeCompositeAuthoringStatus(status, lspResult, sceneResourceResult) {
|
|
88
|
+
if (status === "diagnostics") {
|
|
89
|
+
return "Authoring validation completed and returned diagnostics across configured validator families.";
|
|
90
|
+
}
|
|
91
|
+
if (status === "degraded") {
|
|
92
|
+
return `Authoring validation is degraded. LSP: ${lspResult.summary} Scene/resource: ${sceneResourceResult.summary}`;
|
|
93
|
+
}
|
|
94
|
+
if (status === "unavailable") {
|
|
95
|
+
return lspResult.summary;
|
|
96
|
+
}
|
|
97
|
+
return "Authoring validation completed without diagnostics across configured validator families.";
|
|
98
|
+
}
|
|
99
|
+
function dedupe(values) {
|
|
100
|
+
return [...new Set(values.filter((value) => value.length > 0))];
|
|
31
101
|
}
|
|
32
|
-
export { hasCompleteOnboardingSurface, parseProjectConfigYaml, readProjectConfig, resolvePinnedVersion, resolvePinnedVersionOrNull, resolveProjectRoot, readWorktreeState, resolveAuthoringStatus, resolveConfiguredCapabilities, resolveTargetGodotDocsVersion, } from "./project.js";
|
|
33
|
-
export { writePinnedVersion } from "./writePinnedVersion.js";
|
|
34
|
-
export { getManagedLspStatus, resetManagedLspTestState, runManagedAuthoringCheck, } from "./lsp.js";
|
|
35
102
|
export { inspectCacheState, pruneCacheState, resolveCacheNamespace } from "./cache.js";
|
|
103
|
+
export { checkManagedLsp, doctorManagedLsp, getManagedLspStatus, pruneManagedLsp, resetManagedLspTestState, restartManagedLsp, runManagedAuthoringCheck, stopManagedLsp, } from "./lsp.js";
|
|
36
104
|
export { runImportRefresh, runTargetPrepare } from "./prepare.js";
|
|
105
|
+
export { hasCompleteOnboardingSurface, parseProjectConfigYaml, readProjectConfig, readWorktreeState, resolveAuthoringStatus, resolveConfiguredCapabilities, resolvePinnedVersion, resolvePinnedVersionOrNull, resolveProjectRoot, resolveTargetGodotDocsVersion, } from "./project.js";
|
|
106
|
+
export { runSceneResourceValidation } from "./scene-resource.js";
|
|
37
107
|
export { runWarmup } from "./warmup.js";
|
|
108
|
+
export { writePinnedVersion } from "./writePinnedVersion.js";
|
|
38
109
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,GAItB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export type GdhLspClientFailureReason = "lsp_tcp_connection_failed" | "lsp_tcp_timeout" | "lsp_initialize_timeout" | "lsp_initialize_error" | "lsp_request_timeout" | "lsp_malformed_payload" | "lsp_connection_closed";
|
|
2
|
+
export declare const GDH_LSP_CLIENT_FAILURE_REASONS: readonly ["lsp_tcp_connection_failed", "lsp_tcp_timeout", "lsp_initialize_timeout", "lsp_initialize_error", "lsp_request_timeout", "lsp_malformed_payload", "lsp_connection_closed"];
|
|
3
|
+
export interface GdhLspInitializeResult {
|
|
4
|
+
readonly capabilities: Readonly<Record<string, unknown>>;
|
|
5
|
+
readonly serverInfo?: Readonly<Record<string, unknown>>;
|
|
6
|
+
}
|
|
7
|
+
export interface GdhLspDiagnostic {
|
|
8
|
+
readonly range?: unknown;
|
|
9
|
+
readonly severity?: number;
|
|
10
|
+
readonly source?: string;
|
|
11
|
+
readonly message: string;
|
|
12
|
+
readonly raw: Readonly<Record<string, unknown>> | null;
|
|
13
|
+
}
|
|
14
|
+
export interface GdhLspPublishDiagnosticsParams {
|
|
15
|
+
readonly uri: string;
|
|
16
|
+
readonly diagnostics: readonly GdhLspDiagnostic[];
|
|
17
|
+
}
|
|
18
|
+
export interface GdhGodotLspClient {
|
|
19
|
+
readonly port: number;
|
|
20
|
+
readonly initialize: (params?: Readonly<Record<string, unknown>>, options?: {
|
|
21
|
+
readonly timeoutMs?: number;
|
|
22
|
+
}) => Promise<GdhLspInitializeResult>;
|
|
23
|
+
readonly initialized: () => Promise<void>;
|
|
24
|
+
readonly didOpen: (input: {
|
|
25
|
+
readonly uri: string;
|
|
26
|
+
readonly languageId?: string;
|
|
27
|
+
readonly version?: number;
|
|
28
|
+
readonly text: string;
|
|
29
|
+
}) => Promise<void>;
|
|
30
|
+
readonly waitForDiagnostics: (options?: {
|
|
31
|
+
readonly uri?: string;
|
|
32
|
+
readonly timeoutMs?: number;
|
|
33
|
+
}) => Promise<GdhLspPublishDiagnosticsParams>;
|
|
34
|
+
readonly close: () => Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
export declare class GdhLspClientError extends Error {
|
|
37
|
+
readonly reason: GdhLspClientFailureReason;
|
|
38
|
+
readonly details: Readonly<Record<string, unknown>>;
|
|
39
|
+
constructor(reason: GdhLspClientFailureReason, message: string, details?: Readonly<Record<string, unknown>>);
|
|
40
|
+
}
|
|
41
|
+
export declare function connectGodotLspClient(input: {
|
|
42
|
+
readonly port: number;
|
|
43
|
+
readonly host?: string;
|
|
44
|
+
readonly connectTimeoutMs?: number;
|
|
45
|
+
readonly requestTimeoutMs?: number;
|
|
46
|
+
}): Promise<GdhGodotLspClient>;
|
|
47
|
+
//# sourceMappingURL=lsp-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-client.d.ts","sourceRoot":"","sources":["../src/lsp-client.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,yBAAyB,GACjC,2BAA2B,GAC3B,iBAAiB,GACjB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,uBAAuB,GACvB,uBAAuB,CAAC;AAE5B,eAAO,MAAM,8BAA8B,sLAQc,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,CACnB,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC1C,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,KACtC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE;QACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpB,QAAQ,CAAC,kBAAkB,EAAE,CAAC,OAAO,CAAC,EAAE;QACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;KAC7B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC9C,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AA6BD,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAGlD,MAAM,EAAE,yBAAyB,EACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM;CAOlD;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgR7B"}
|
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
import { realpathSync } from "node:fs";
|
|
2
|
+
import net from "node:net";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
export const GDH_LSP_CLIENT_FAILURE_REASONS = [
|
|
5
|
+
"lsp_tcp_connection_failed",
|
|
6
|
+
"lsp_tcp_timeout",
|
|
7
|
+
"lsp_initialize_timeout",
|
|
8
|
+
"lsp_initialize_error",
|
|
9
|
+
"lsp_request_timeout",
|
|
10
|
+
"lsp_malformed_payload",
|
|
11
|
+
"lsp_connection_closed",
|
|
12
|
+
];
|
|
13
|
+
export class GdhLspClientError extends Error {
|
|
14
|
+
reason;
|
|
15
|
+
details;
|
|
16
|
+
constructor(reason, message, details = {}) {
|
|
17
|
+
super(message);
|
|
18
|
+
this.name = "GdhLspClientError";
|
|
19
|
+
this.reason = reason;
|
|
20
|
+
this.details = details;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function connectGodotLspClient(input) {
|
|
24
|
+
const host = input.host ?? "127.0.0.1";
|
|
25
|
+
const requestTimeoutMs = input.requestTimeoutMs ?? 1_000;
|
|
26
|
+
const socket = await connectSocket({
|
|
27
|
+
host,
|
|
28
|
+
port: input.port,
|
|
29
|
+
timeoutMs: input.connectTimeoutMs ?? 1_000,
|
|
30
|
+
});
|
|
31
|
+
let nextId = 1;
|
|
32
|
+
let buffer = Buffer.alloc(0);
|
|
33
|
+
let closed = false;
|
|
34
|
+
let closePromise = null;
|
|
35
|
+
const pendingRequests = new Map();
|
|
36
|
+
const diagnosticsWaiters = new Set();
|
|
37
|
+
const failPending = (error) => {
|
|
38
|
+
for (const [id, pending] of pendingRequests) {
|
|
39
|
+
clearTimeout(pending.timer);
|
|
40
|
+
pending.reject(error);
|
|
41
|
+
pendingRequests.delete(id);
|
|
42
|
+
}
|
|
43
|
+
for (const waiter of diagnosticsWaiters) {
|
|
44
|
+
clearTimeout(waiter.timer);
|
|
45
|
+
waiter.reject(error);
|
|
46
|
+
diagnosticsWaiters.delete(waiter);
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
const handleMessage = (message) => {
|
|
50
|
+
if (isJsonRpcId(message.id)) {
|
|
51
|
+
const pending = pendingRequests.get(message.id);
|
|
52
|
+
if (pending) {
|
|
53
|
+
clearTimeout(pending.timer);
|
|
54
|
+
pendingRequests.delete(message.id);
|
|
55
|
+
if (message.error) {
|
|
56
|
+
pending.reject(new GdhLspClientError(pending.method === "initialize" ? "lsp_initialize_error" : "lsp_request_timeout", message.error.message ?? `${pending.method} failed.`, {
|
|
57
|
+
method: pending.method,
|
|
58
|
+
code: message.error.code ?? null,
|
|
59
|
+
data: message.error.data ?? null,
|
|
60
|
+
}));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
pending.resolve(message);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
if (message.method === "textDocument/publishDiagnostics") {
|
|
67
|
+
const diagnostics = coerceDiagnostics(message.params);
|
|
68
|
+
for (const waiter of [...diagnosticsWaiters]) {
|
|
69
|
+
if (waiter.uri !== null && !areEquivalentDiagnosticUris(waiter.uri, diagnostics.uri)) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
clearTimeout(waiter.timer);
|
|
73
|
+
diagnosticsWaiters.delete(waiter);
|
|
74
|
+
waiter.resolve(diagnostics);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
socket.on("data", (chunk) => {
|
|
79
|
+
buffer = Buffer.concat([buffer, chunk]);
|
|
80
|
+
while (true) {
|
|
81
|
+
let frame;
|
|
82
|
+
try {
|
|
83
|
+
frame = readFrame(buffer);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
failPending(coerceClientError(error));
|
|
87
|
+
socket.destroy();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (frame === null) {
|
|
91
|
+
break;
|
|
92
|
+
}
|
|
93
|
+
buffer = frame.rest;
|
|
94
|
+
let message;
|
|
95
|
+
try {
|
|
96
|
+
message = JSON.parse(frame.body.toString("utf8"));
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
failPending(new GdhLspClientError("lsp_malformed_payload", "LSP server sent malformed JSON payload."));
|
|
100
|
+
socket.destroy();
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
try {
|
|
104
|
+
handleMessage(message);
|
|
105
|
+
}
|
|
106
|
+
catch (error) {
|
|
107
|
+
failPending(coerceClientError(error));
|
|
108
|
+
socket.destroy();
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
socket.once("error", (error) => {
|
|
114
|
+
if (closed) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
failPending(new GdhLspClientError("lsp_connection_closed", error.message, {
|
|
118
|
+
code: error.code ?? null,
|
|
119
|
+
}));
|
|
120
|
+
});
|
|
121
|
+
socket.once("close", () => {
|
|
122
|
+
if (closed) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
failPending(new GdhLspClientError("lsp_connection_closed", "LSP server closed the socket."));
|
|
126
|
+
});
|
|
127
|
+
const request = async (method, params, options = {}) => {
|
|
128
|
+
const id = nextId;
|
|
129
|
+
nextId += 1;
|
|
130
|
+
const timeoutMs = options.timeoutMs ?? requestTimeoutMs;
|
|
131
|
+
const timeoutReason = options.timeoutReason ?? "lsp_request_timeout";
|
|
132
|
+
const responsePromise = new Promise((resolve, reject) => {
|
|
133
|
+
const timer = setTimeout(() => {
|
|
134
|
+
pendingRequests.delete(id);
|
|
135
|
+
reject(new GdhLspClientError(timeoutReason, `Timed out waiting for LSP ${method} response.`, {
|
|
136
|
+
method,
|
|
137
|
+
timeoutMs,
|
|
138
|
+
}));
|
|
139
|
+
}, timeoutMs);
|
|
140
|
+
pendingRequests.set(id, { method, resolve, reject, timer });
|
|
141
|
+
});
|
|
142
|
+
writeJsonRpc(socket, {
|
|
143
|
+
jsonrpc: "2.0",
|
|
144
|
+
id,
|
|
145
|
+
method,
|
|
146
|
+
params,
|
|
147
|
+
});
|
|
148
|
+
return await responsePromise;
|
|
149
|
+
};
|
|
150
|
+
const notify = async (method, params) => {
|
|
151
|
+
writeJsonRpc(socket, {
|
|
152
|
+
jsonrpc: "2.0",
|
|
153
|
+
method,
|
|
154
|
+
params,
|
|
155
|
+
});
|
|
156
|
+
};
|
|
157
|
+
return {
|
|
158
|
+
port: input.port,
|
|
159
|
+
initialize: async (params = {}, options = {}) => {
|
|
160
|
+
const requestOptions = options.timeoutMs === undefined
|
|
161
|
+
? { timeoutReason: "lsp_initialize_timeout" }
|
|
162
|
+
: {
|
|
163
|
+
timeoutMs: options.timeoutMs,
|
|
164
|
+
timeoutReason: "lsp_initialize_timeout",
|
|
165
|
+
};
|
|
166
|
+
const response = await request("initialize", {
|
|
167
|
+
processId: null,
|
|
168
|
+
capabilities: {},
|
|
169
|
+
...params,
|
|
170
|
+
}, requestOptions);
|
|
171
|
+
if (typeof response.result !== "object" || response.result === null) {
|
|
172
|
+
throw new GdhLspClientError("lsp_malformed_payload", "LSP initialize response did not contain an object result.");
|
|
173
|
+
}
|
|
174
|
+
const result = response.result;
|
|
175
|
+
const capabilities = typeof result.capabilities === "object" && result.capabilities !== null
|
|
176
|
+
? result.capabilities
|
|
177
|
+
: {};
|
|
178
|
+
if (typeof result.serverInfo === "object" && result.serverInfo !== null) {
|
|
179
|
+
return {
|
|
180
|
+
capabilities,
|
|
181
|
+
serverInfo: result.serverInfo,
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
return { capabilities };
|
|
185
|
+
},
|
|
186
|
+
initialized: async () => {
|
|
187
|
+
await notify("initialized", {});
|
|
188
|
+
},
|
|
189
|
+
didOpen: async (input) => {
|
|
190
|
+
await notify("textDocument/didOpen", {
|
|
191
|
+
textDocument: {
|
|
192
|
+
uri: input.uri,
|
|
193
|
+
languageId: input.languageId ?? "gdscript",
|
|
194
|
+
version: input.version ?? 1,
|
|
195
|
+
text: input.text,
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
},
|
|
199
|
+
waitForDiagnostics: async (options = {}) => {
|
|
200
|
+
const alreadyTimedOutAfterMs = options.timeoutMs ?? requestTimeoutMs;
|
|
201
|
+
return await new Promise((resolve, reject) => {
|
|
202
|
+
const waiter = {
|
|
203
|
+
uri: options.uri ?? null,
|
|
204
|
+
resolve,
|
|
205
|
+
reject,
|
|
206
|
+
timer: setTimeout(() => {
|
|
207
|
+
diagnosticsWaiters.delete(waiter);
|
|
208
|
+
reject(new GdhLspClientError("lsp_request_timeout", "Timed out waiting for LSP diagnostics.", { timeoutMs: alreadyTimedOutAfterMs, uri: options.uri ?? null }));
|
|
209
|
+
}, alreadyTimedOutAfterMs),
|
|
210
|
+
};
|
|
211
|
+
diagnosticsWaiters.add(waiter);
|
|
212
|
+
});
|
|
213
|
+
},
|
|
214
|
+
close: async () => {
|
|
215
|
+
closed = true;
|
|
216
|
+
failPending(new GdhLspClientError("lsp_connection_closed", "LSP client closed before operation completed."));
|
|
217
|
+
if (closePromise !== null) {
|
|
218
|
+
return await closePromise;
|
|
219
|
+
}
|
|
220
|
+
closePromise = new Promise((resolve) => {
|
|
221
|
+
if (socket.destroyed || socket.closed) {
|
|
222
|
+
resolve();
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
socket.once("close", () => resolve());
|
|
226
|
+
socket.destroy();
|
|
227
|
+
});
|
|
228
|
+
await closePromise;
|
|
229
|
+
},
|
|
230
|
+
};
|
|
231
|
+
}
|
|
232
|
+
function areEquivalentDiagnosticUris(expected, actual) {
|
|
233
|
+
if (expected === actual) {
|
|
234
|
+
return true;
|
|
235
|
+
}
|
|
236
|
+
const expectedPath = canonicalFileUriPath(expected);
|
|
237
|
+
const actualPath = canonicalFileUriPath(actual);
|
|
238
|
+
return expectedPath !== null && actualPath !== null && expectedPath === actualPath;
|
|
239
|
+
}
|
|
240
|
+
function canonicalFileUriPath(uri) {
|
|
241
|
+
if (!uri.startsWith("file://")) {
|
|
242
|
+
return null;
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
return realpathSync.native(fileURLToPath(uri));
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
try {
|
|
249
|
+
return fileURLToPath(uri);
|
|
250
|
+
}
|
|
251
|
+
catch {
|
|
252
|
+
return null;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async function connectSocket(input) {
|
|
257
|
+
return await new Promise((resolve, reject) => {
|
|
258
|
+
const socket = net.createConnection({ host: input.host, port: input.port });
|
|
259
|
+
let settled = false;
|
|
260
|
+
const cleanup = () => {
|
|
261
|
+
clearTimeout(timer);
|
|
262
|
+
socket.off("connect", onConnect);
|
|
263
|
+
socket.off("error", onError);
|
|
264
|
+
};
|
|
265
|
+
const settle = (callback) => {
|
|
266
|
+
if (settled) {
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
settled = true;
|
|
270
|
+
cleanup();
|
|
271
|
+
callback();
|
|
272
|
+
};
|
|
273
|
+
const timer = setTimeout(() => {
|
|
274
|
+
settle(() => {
|
|
275
|
+
socket.destroy();
|
|
276
|
+
reject(new GdhLspClientError("lsp_tcp_timeout", "Timed out connecting to LSP TCP endpoint.", {
|
|
277
|
+
host: input.host,
|
|
278
|
+
port: input.port,
|
|
279
|
+
timeoutMs: input.timeoutMs,
|
|
280
|
+
}));
|
|
281
|
+
});
|
|
282
|
+
}, input.timeoutMs);
|
|
283
|
+
const onConnect = () => {
|
|
284
|
+
settle(() => resolve(socket));
|
|
285
|
+
};
|
|
286
|
+
const onError = (error) => {
|
|
287
|
+
settle(() => {
|
|
288
|
+
socket.destroy();
|
|
289
|
+
reject(new GdhLspClientError("lsp_tcp_connection_failed", error.message, {
|
|
290
|
+
host: input.host,
|
|
291
|
+
port: input.port,
|
|
292
|
+
code: error.code ?? null,
|
|
293
|
+
}));
|
|
294
|
+
});
|
|
295
|
+
};
|
|
296
|
+
socket.once("connect", onConnect);
|
|
297
|
+
socket.once("error", onError);
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
function coerceClientError(error) {
|
|
301
|
+
if (error instanceof GdhLspClientError) {
|
|
302
|
+
return error;
|
|
303
|
+
}
|
|
304
|
+
return new GdhLspClientError("lsp_malformed_payload", error instanceof Error ? error.message : "Malformed LSP payload.");
|
|
305
|
+
}
|
|
306
|
+
function coerceDiagnostics(params) {
|
|
307
|
+
if (typeof params !== "object" || params === null) {
|
|
308
|
+
throw new GdhLspClientError("lsp_malformed_payload", "LSP diagnostics notification did not contain params.");
|
|
309
|
+
}
|
|
310
|
+
const candidate = params;
|
|
311
|
+
if (typeof candidate.uri !== "string" || !Array.isArray(candidate.diagnostics)) {
|
|
312
|
+
throw new GdhLspClientError("lsp_malformed_payload", "LSP diagnostics notification had invalid shape.");
|
|
313
|
+
}
|
|
314
|
+
return {
|
|
315
|
+
uri: candidate.uri,
|
|
316
|
+
diagnostics: candidate.diagnostics
|
|
317
|
+
.filter((entry) => {
|
|
318
|
+
return (typeof entry === "object" &&
|
|
319
|
+
entry !== null &&
|
|
320
|
+
typeof entry.message === "string");
|
|
321
|
+
})
|
|
322
|
+
.map((entry) => {
|
|
323
|
+
const diagnostic = {
|
|
324
|
+
message: entry.message,
|
|
325
|
+
raw: { ...entry },
|
|
326
|
+
};
|
|
327
|
+
if (entry.range !== undefined) {
|
|
328
|
+
return {
|
|
329
|
+
...diagnostic,
|
|
330
|
+
range: entry.range,
|
|
331
|
+
...(entry.severity === undefined ? {} : { severity: entry.severity }),
|
|
332
|
+
...(entry.source === undefined ? {} : { source: entry.source }),
|
|
333
|
+
};
|
|
334
|
+
}
|
|
335
|
+
return {
|
|
336
|
+
...diagnostic,
|
|
337
|
+
...(entry.severity === undefined ? {} : { severity: entry.severity }),
|
|
338
|
+
...(entry.source === undefined ? {} : { source: entry.source }),
|
|
339
|
+
};
|
|
340
|
+
}),
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
function readFrame(buffer) {
|
|
344
|
+
const headerEnd = buffer.indexOf("\r\n\r\n");
|
|
345
|
+
if (headerEnd === -1) {
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
const header = buffer.subarray(0, headerEnd).toString("ascii");
|
|
349
|
+
const lengthMatch = header.match(/^Content-Length:\s*(\d+)$/im);
|
|
350
|
+
if (!lengthMatch) {
|
|
351
|
+
throw new GdhLspClientError("lsp_malformed_payload", "LSP frame did not include Content-Length.");
|
|
352
|
+
}
|
|
353
|
+
const bodyStart = headerEnd + 4;
|
|
354
|
+
const bodyEnd = bodyStart + Number(lengthMatch[1]);
|
|
355
|
+
if (buffer.length < bodyEnd) {
|
|
356
|
+
return null;
|
|
357
|
+
}
|
|
358
|
+
return {
|
|
359
|
+
body: buffer.subarray(bodyStart, bodyEnd),
|
|
360
|
+
rest: buffer.subarray(bodyEnd),
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
function writeJsonRpc(socket, message) {
|
|
364
|
+
const body = Buffer.from(JSON.stringify(message), "utf8");
|
|
365
|
+
socket.write(`Content-Length: ${body.byteLength}\r\n\r\n`);
|
|
366
|
+
socket.write(body);
|
|
367
|
+
}
|
|
368
|
+
function isJsonRpcId(value) {
|
|
369
|
+
return value === null || typeof value === "number" || typeof value === "string";
|
|
370
|
+
}
|
|
371
|
+
//# sourceMappingURL=lsp-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lsp-client.js","sourceRoot":"","sources":["../src/lsp-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface FakeLspDiagnostic {
|
|
2
|
+
readonly range: {
|
|
3
|
+
readonly start: {
|
|
4
|
+
readonly line: number;
|
|
5
|
+
readonly character: number;
|
|
6
|
+
};
|
|
7
|
+
readonly end: {
|
|
8
|
+
readonly line: number;
|
|
9
|
+
readonly character: number;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
readonly severity?: number;
|
|
13
|
+
readonly source?: string;
|
|
14
|
+
readonly message: string;
|
|
15
|
+
}
|
|
16
|
+
export interface FakeLspServerScenario {
|
|
17
|
+
readonly initialize?: "ok" | "error" | "hang";
|
|
18
|
+
readonly diagnostics?: readonly FakeLspDiagnostic[];
|
|
19
|
+
readonly publishDelayMs?: number;
|
|
20
|
+
readonly publishUri?: string;
|
|
21
|
+
readonly malformedPayload?: boolean;
|
|
22
|
+
readonly closeAfterInitialize?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface FakeLspServer {
|
|
25
|
+
readonly port: number;
|
|
26
|
+
readonly receivedMethods: readonly string[];
|
|
27
|
+
readonly receivedMessages: readonly Readonly<Record<string, unknown>>[];
|
|
28
|
+
readonly close: () => Promise<void>;
|
|
29
|
+
readonly waitForMethod: (method: string, options?: {
|
|
30
|
+
readonly count?: number;
|
|
31
|
+
readonly timeoutMs?: number;
|
|
32
|
+
}) => Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export declare function startFakeLspServer(scenario?: FakeLspServerScenario): Promise<FakeLspServer>;
|
|
35
|
+
//# sourceMappingURL=lsp-test-server.test-utils.d.ts.map
|
|
@@ -0,0 +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"}
|