@skillcap/gdh 0.16.0 → 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/RELEASE-SPAN-UPDATE-CONTRACTS.json +87 -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 +143 -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/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 +116 -18
- package/node_modules/@gdh/cli/dist/index.js.map +1 -1
- package/node_modules/@gdh/cli/package.json +10 -10
- package/node_modules/@gdh/core/dist/index.d.ts +48 -13
- package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
- package/node_modules/@gdh/core/dist/index.js +14 -17
- 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 +12 -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/package.json +2 -2
- 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
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import net from "node:net";
|
|
2
|
+
export async function startFakeLspServer(scenario = {}) {
|
|
3
|
+
const sockets = new Set();
|
|
4
|
+
const receivedMethods = [];
|
|
5
|
+
const receivedMessages = [];
|
|
6
|
+
const waiters = new Set();
|
|
7
|
+
const notifyWaiters = () => {
|
|
8
|
+
for (const waiter of [...waiters]) {
|
|
9
|
+
if (receivedMethods.filter((method) => method === waiter.method).length >= waiter.count) {
|
|
10
|
+
clearTimeout(waiter.timer);
|
|
11
|
+
waiters.delete(waiter);
|
|
12
|
+
waiter.resolve();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const serverState = {
|
|
17
|
+
port: 0,
|
|
18
|
+
receivedMethods,
|
|
19
|
+
receivedMessages,
|
|
20
|
+
close: async () => {
|
|
21
|
+
for (const waiter of [...waiters]) {
|
|
22
|
+
clearTimeout(waiter.timer);
|
|
23
|
+
waiters.delete(waiter);
|
|
24
|
+
waiter.reject(new Error("Fake LSP server closed before method was observed."));
|
|
25
|
+
}
|
|
26
|
+
await Promise.all([...sockets].map((socket) => new Promise((resolve) => {
|
|
27
|
+
socket.once("close", () => resolve());
|
|
28
|
+
socket.destroy();
|
|
29
|
+
})));
|
|
30
|
+
await new Promise((resolve, reject) => {
|
|
31
|
+
if (!server.listening) {
|
|
32
|
+
resolve();
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
server.close((error) => {
|
|
36
|
+
if (error) {
|
|
37
|
+
reject(error);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
resolve();
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
},
|
|
44
|
+
waitForMethod: async (method, options = {}) => {
|
|
45
|
+
const count = options.count ?? 1;
|
|
46
|
+
if (receivedMethods.filter((entry) => entry === method).length >= count) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
await new Promise((resolve, reject) => {
|
|
50
|
+
const timeoutMs = options.timeoutMs ?? 500;
|
|
51
|
+
const timer = setTimeout(() => {
|
|
52
|
+
waiters.delete(waiter);
|
|
53
|
+
reject(new Error(`Timed out waiting for fake LSP method: ${method}`));
|
|
54
|
+
}, timeoutMs);
|
|
55
|
+
const waiter = { method, count, resolve, reject, timer };
|
|
56
|
+
waiters.add(waiter);
|
|
57
|
+
});
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const server = net.createServer((socket) => {
|
|
61
|
+
sockets.add(socket);
|
|
62
|
+
socket.on("close", () => sockets.delete(socket));
|
|
63
|
+
let buffer = Buffer.alloc(0);
|
|
64
|
+
socket.on("data", (chunk) => {
|
|
65
|
+
buffer = Buffer.concat([buffer, chunk]);
|
|
66
|
+
while (true) {
|
|
67
|
+
const parsed = readFrame(buffer);
|
|
68
|
+
if (parsed === null) {
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
buffer = parsed.rest;
|
|
72
|
+
let message;
|
|
73
|
+
try {
|
|
74
|
+
message = JSON.parse(parsed.body.toString("utf8"));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
receivedMessages.push(message);
|
|
80
|
+
const method = typeof message["method"] === "string" ? message["method"] : null;
|
|
81
|
+
if (method !== null) {
|
|
82
|
+
receivedMethods.push(method);
|
|
83
|
+
notifyWaiters();
|
|
84
|
+
}
|
|
85
|
+
handleMessage(socket, message, scenario);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
await new Promise((resolve, reject) => {
|
|
90
|
+
server.once("error", reject);
|
|
91
|
+
server.listen(0, "127.0.0.1", () => {
|
|
92
|
+
server.off("error", reject);
|
|
93
|
+
const address = server.address();
|
|
94
|
+
if (typeof address === "object" && address !== null) {
|
|
95
|
+
serverState.port = address.port;
|
|
96
|
+
resolve();
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
reject(new Error("Fake LSP server did not bind to a TCP port."));
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
return serverState;
|
|
103
|
+
}
|
|
104
|
+
function handleMessage(socket, message, scenario) {
|
|
105
|
+
const method = typeof message["method"] === "string" ? message["method"] : null;
|
|
106
|
+
if (method === "initialize") {
|
|
107
|
+
if (scenario.initialize === "hang") {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
const id = isJsonRpcId(message["id"]) ? message["id"] : null;
|
|
111
|
+
if (scenario.initialize === "error") {
|
|
112
|
+
writeJsonRpc(socket, {
|
|
113
|
+
jsonrpc: "2.0",
|
|
114
|
+
id,
|
|
115
|
+
error: { code: -32002, message: "Fake initialize failure" },
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
writeJsonRpc(socket, {
|
|
120
|
+
jsonrpc: "2.0",
|
|
121
|
+
id,
|
|
122
|
+
result: {
|
|
123
|
+
capabilities: { textDocumentSync: 1 },
|
|
124
|
+
serverInfo: { name: "gdh-fake-lsp", version: "test" },
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
if (scenario.closeAfterInitialize) {
|
|
129
|
+
socket.end();
|
|
130
|
+
}
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (method === "textDocument/didOpen") {
|
|
134
|
+
const publish = () => {
|
|
135
|
+
if (scenario.malformedPayload) {
|
|
136
|
+
writeRawFrame(socket, Buffer.from("{bad-json", "utf8"));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
writeJsonRpc(socket, {
|
|
140
|
+
jsonrpc: "2.0",
|
|
141
|
+
method: "textDocument/publishDiagnostics",
|
|
142
|
+
params: {
|
|
143
|
+
uri: scenario.publishUri ?? readDidOpenUri(message),
|
|
144
|
+
diagnostics: scenario.diagnostics ?? [],
|
|
145
|
+
},
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
setTimeout(publish, scenario.publishDelayMs ?? 0);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
function readDidOpenUri(message) {
|
|
152
|
+
const params = message["params"];
|
|
153
|
+
if (typeof params !== "object" || params === null) {
|
|
154
|
+
return "file:///unknown.gd";
|
|
155
|
+
}
|
|
156
|
+
const textDocument = params.textDocument;
|
|
157
|
+
if (typeof textDocument !== "object" || textDocument === null) {
|
|
158
|
+
return "file:///unknown.gd";
|
|
159
|
+
}
|
|
160
|
+
const uri = textDocument.uri;
|
|
161
|
+
return typeof uri === "string" ? uri : "file:///unknown.gd";
|
|
162
|
+
}
|
|
163
|
+
function readFrame(buffer) {
|
|
164
|
+
const headerEnd = buffer.indexOf("\r\n\r\n");
|
|
165
|
+
if (headerEnd === -1) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const header = buffer.subarray(0, headerEnd).toString("ascii");
|
|
169
|
+
const lengthMatch = header.match(/^Content-Length:\s*(\d+)$/im);
|
|
170
|
+
if (!lengthMatch) {
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
const contentLength = Number(lengthMatch[1]);
|
|
174
|
+
const bodyStart = headerEnd + 4;
|
|
175
|
+
const bodyEnd = bodyStart + contentLength;
|
|
176
|
+
if (buffer.length < bodyEnd) {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
body: buffer.subarray(bodyStart, bodyEnd),
|
|
181
|
+
rest: buffer.subarray(bodyEnd),
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
function writeJsonRpc(socket, payload) {
|
|
185
|
+
writeRawFrame(socket, Buffer.from(JSON.stringify(payload), "utf8"));
|
|
186
|
+
}
|
|
187
|
+
function writeRawFrame(socket, body) {
|
|
188
|
+
socket.write(`Content-Length: ${body.byteLength}\r\n\r\n`);
|
|
189
|
+
socket.write(body);
|
|
190
|
+
}
|
|
191
|
+
function isJsonRpcId(value) {
|
|
192
|
+
return value === null || typeof value === "number" || typeof value === "string";
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=lsp-test-server.test-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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,10 +1,70 @@
|
|
|
1
|
-
import type { GdhAuthoringCheckResult, GdhAuthoringStatusResult, GdhManagedLspStatusResult, GdhProjectConfig } from "@gdh/core";
|
|
1
|
+
import type { GdhAuthoringCheckResult, GdhAuthoringStatusResult, GdhLspLauncherKind, GdhManagedLspStatusResult, GdhProjectConfig, GdhWorktreeIdentity } from "@gdh/core";
|
|
2
|
+
type GdhManagedLspLifecycleCommand = "check" | "stop" | "restart" | "prune" | "doctor";
|
|
3
|
+
type GdhManagedLspLifecycleCommandStatus = "ready" | "degraded" | "unavailable" | "stopped" | "pruned" | "not_found";
|
|
4
|
+
export interface GdhManagedLspLifecycleCommandResult {
|
|
5
|
+
readonly targetPath: string;
|
|
6
|
+
readonly capability: "authoring.lsp";
|
|
7
|
+
readonly command: GdhManagedLspLifecycleCommand;
|
|
8
|
+
readonly status: GdhManagedLspLifecycleCommandStatus;
|
|
9
|
+
readonly summary: string;
|
|
10
|
+
readonly reasons: readonly string[];
|
|
11
|
+
readonly worktree: GdhWorktreeIdentity;
|
|
12
|
+
readonly lifecycle: {
|
|
13
|
+
readonly status: GdhManagedLspLifecycleCommandStatus;
|
|
14
|
+
readonly instanceId: string | null;
|
|
15
|
+
readonly launcher: GdhLspLauncherKind | null;
|
|
16
|
+
readonly pid: number | null;
|
|
17
|
+
readonly port: number | null;
|
|
18
|
+
};
|
|
19
|
+
readonly transport: {
|
|
20
|
+
readonly status: "healthy" | "unhealthy" | "unknown";
|
|
21
|
+
readonly reasons: readonly string[];
|
|
22
|
+
readonly rawPayload: Readonly<Record<string, unknown>> | null;
|
|
23
|
+
};
|
|
24
|
+
readonly diagnostics: {
|
|
25
|
+
readonly status: "unimplemented";
|
|
26
|
+
readonly summary: string;
|
|
27
|
+
};
|
|
28
|
+
readonly cleanup: {
|
|
29
|
+
readonly status: "none" | "recommended" | "stopped" | "pruned" | "not_needed";
|
|
30
|
+
readonly reason: string | null;
|
|
31
|
+
readonly killedPid: boolean;
|
|
32
|
+
};
|
|
33
|
+
readonly recommendations: readonly string[];
|
|
34
|
+
readonly statusResult: GdhManagedLspStatusResult | null;
|
|
35
|
+
}
|
|
2
36
|
export declare function getManagedLspStatus(input: {
|
|
3
37
|
readonly targetPath: string;
|
|
4
38
|
readonly status: GdhAuthoringStatusResult;
|
|
5
39
|
readonly projectConfig: GdhProjectConfig | null;
|
|
6
40
|
readonly owner?: string;
|
|
7
41
|
}): Promise<GdhManagedLspStatusResult>;
|
|
42
|
+
export declare function checkManagedLsp(input: {
|
|
43
|
+
readonly targetPath: string;
|
|
44
|
+
readonly status: GdhAuthoringStatusResult;
|
|
45
|
+
readonly projectConfig: GdhProjectConfig | null;
|
|
46
|
+
}): Promise<GdhManagedLspLifecycleCommandResult>;
|
|
47
|
+
export declare function stopManagedLsp(input: {
|
|
48
|
+
readonly targetPath: string;
|
|
49
|
+
readonly status: GdhAuthoringStatusResult;
|
|
50
|
+
readonly projectConfig: GdhProjectConfig | null;
|
|
51
|
+
}): Promise<GdhManagedLspLifecycleCommandResult>;
|
|
52
|
+
export declare function restartManagedLsp(input: {
|
|
53
|
+
readonly targetPath: string;
|
|
54
|
+
readonly status: GdhAuthoringStatusResult;
|
|
55
|
+
readonly projectConfig: GdhProjectConfig | null;
|
|
56
|
+
readonly owner?: string;
|
|
57
|
+
}): Promise<GdhManagedLspLifecycleCommandResult>;
|
|
58
|
+
export declare function pruneManagedLsp(input: {
|
|
59
|
+
readonly targetPath: string;
|
|
60
|
+
readonly status: GdhAuthoringStatusResult;
|
|
61
|
+
readonly projectConfig: GdhProjectConfig | null;
|
|
62
|
+
}): Promise<GdhManagedLspLifecycleCommandResult>;
|
|
63
|
+
export declare function doctorManagedLsp(input: {
|
|
64
|
+
readonly targetPath: string;
|
|
65
|
+
readonly status: GdhAuthoringStatusResult;
|
|
66
|
+
readonly projectConfig: GdhProjectConfig | null;
|
|
67
|
+
}): Promise<GdhManagedLspLifecycleCommandResult>;
|
|
8
68
|
export declare function runManagedAuthoringCheck(input: {
|
|
9
69
|
readonly targetPath: string;
|
|
10
70
|
readonly status: GdhAuthoringStatusResult;
|
|
@@ -12,4 +72,5 @@ export declare function runManagedAuthoringCheck(input: {
|
|
|
12
72
|
readonly lspStatus: GdhManagedLspStatusResult;
|
|
13
73
|
}): Promise<GdhAuthoringCheckResult>;
|
|
14
74
|
export declare function resetManagedLspTestState(): Promise<void>;
|
|
75
|
+
export {};
|
|
15
76
|
//# sourceMappingURL=lsp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lsp.d.ts","sourceRoot":"","sources":["../src/lsp.ts"],"names":[],"mappings":"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"}
|