@skillcap/gdh 4.0.0 → 4.2.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.
Files changed (72) hide show
  1. package/INSTALL-BUNDLE.json +1 -1
  2. package/RELEASE-SPAN-UPDATE-CONTRACTS.json +138 -0
  3. package/node_modules/@gdh/adapters/dist/skill-rendering.js +3 -3
  4. package/node_modules/@gdh/adapters/dist/skill-rendering.js.map +1 -1
  5. package/node_modules/@gdh/adapters/package.json +7 -7
  6. package/node_modules/@gdh/authoring/dist/index.d.ts +1 -0
  7. package/node_modules/@gdh/authoring/dist/index.d.ts.map +1 -1
  8. package/node_modules/@gdh/authoring/dist/index.js +1 -0
  9. package/node_modules/@gdh/authoring/dist/index.js.map +1 -1
  10. package/node_modules/@gdh/authoring/dist/lsp-client.d.ts +5 -2
  11. package/node_modules/@gdh/authoring/dist/lsp-client.d.ts.map +1 -1
  12. package/node_modules/@gdh/authoring/dist/lsp-client.js +6 -1
  13. package/node_modules/@gdh/authoring/dist/lsp-client.js.map +1 -1
  14. package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.d.ts +3 -0
  15. package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.d.ts.map +1 -1
  16. package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.js +22 -0
  17. package/node_modules/@gdh/authoring/dist/lsp-test-server.test-utils.js.map +1 -1
  18. package/node_modules/@gdh/authoring/dist/lsp.d.ts +12 -0
  19. package/node_modules/@gdh/authoring/dist/lsp.d.ts.map +1 -1
  20. package/node_modules/@gdh/authoring/dist/lsp.js +128 -3
  21. package/node_modules/@gdh/authoring/dist/lsp.js.map +1 -1
  22. package/node_modules/@gdh/authoring/dist/prepare.d.ts.map +1 -1
  23. package/node_modules/@gdh/authoring/dist/prepare.js +104 -12
  24. package/node_modules/@gdh/authoring/dist/prepare.js.map +1 -1
  25. package/node_modules/@gdh/authoring/dist/symbol-navigation.d.ts +23 -0
  26. package/node_modules/@gdh/authoring/dist/symbol-navigation.d.ts.map +1 -0
  27. package/node_modules/@gdh/authoring/dist/symbol-navigation.js +557 -0
  28. package/node_modules/@gdh/authoring/dist/symbol-navigation.js.map +1 -0
  29. package/node_modules/@gdh/authoring/package.json +2 -2
  30. package/node_modules/@gdh/cli/dist/index.d.ts.map +1 -1
  31. package/node_modules/@gdh/cli/dist/index.js +4 -2
  32. package/node_modules/@gdh/cli/dist/index.js.map +1 -1
  33. package/node_modules/@gdh/cli/package.json +11 -11
  34. package/node_modules/@gdh/core/dist/editor-operation-runner.d.ts.map +1 -1
  35. package/node_modules/@gdh/core/dist/editor-operation-runner.js +530 -1
  36. package/node_modules/@gdh/core/dist/editor-operation-runner.js.map +1 -1
  37. package/node_modules/@gdh/core/dist/index.d.ts +90 -9
  38. package/node_modules/@gdh/core/dist/index.d.ts.map +1 -1
  39. package/node_modules/@gdh/core/dist/index.js +17 -6
  40. package/node_modules/@gdh/core/dist/index.js.map +1 -1
  41. package/node_modules/@gdh/core/package.json +1 -1
  42. package/node_modules/@gdh/docs/dist/templates/guidance/authoring-and-validation.md.tpl +2 -0
  43. package/node_modules/@gdh/docs/dist/templates/guidance/editor-bridge.md.tpl +4 -1
  44. package/node_modules/@gdh/docs/package.json +2 -2
  45. package/node_modules/@gdh/editor/dist/index.d.ts +101 -0
  46. package/node_modules/@gdh/editor/dist/index.d.ts.map +1 -1
  47. package/node_modules/@gdh/editor/dist/index.js +166 -5
  48. package/node_modules/@gdh/editor/dist/index.js.map +1 -1
  49. package/node_modules/@gdh/editor/package.json +2 -2
  50. package/node_modules/@gdh/mcp/dist/bridge-tools.d.ts +4 -3
  51. package/node_modules/@gdh/mcp/dist/bridge-tools.d.ts.map +1 -1
  52. package/node_modules/@gdh/mcp/dist/bridge-tools.js +26 -1
  53. package/node_modules/@gdh/mcp/dist/bridge-tools.js.map +1 -1
  54. package/node_modules/@gdh/mcp/dist/index.d.ts.map +1 -1
  55. package/node_modules/@gdh/mcp/dist/index.js +969 -80
  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/dist/bridge-broker-client.d.ts +4 -1
  60. package/node_modules/@gdh/runtime/dist/bridge-broker-client.d.ts.map +1 -1
  61. package/node_modules/@gdh/runtime/dist/bridge-broker-client.js +5 -0
  62. package/node_modules/@gdh/runtime/dist/bridge-broker-client.js.map +1 -1
  63. package/node_modules/@gdh/runtime/dist/bridge-broker.d.ts +10 -1
  64. package/node_modules/@gdh/runtime/dist/bridge-broker.d.ts.map +1 -1
  65. package/node_modules/@gdh/runtime/dist/bridge-broker.js +270 -53
  66. package/node_modules/@gdh/runtime/dist/bridge-broker.js.map +1 -1
  67. package/node_modules/@gdh/runtime/dist/bridge-surface.js +11 -3
  68. package/node_modules/@gdh/runtime/dist/bridge-surface.js.map +1 -1
  69. package/node_modules/@gdh/runtime/package.json +2 -2
  70. package/node_modules/@gdh/scan/package.json +3 -3
  71. package/node_modules/@gdh/verify/package.json +6 -6
  72. package/package.json +12 -12
@@ -0,0 +1,557 @@
1
+ import { createHash } from "node:crypto";
2
+ import { realpathSync } from "node:fs";
3
+ import fs from "node:fs/promises";
4
+ import path from "node:path";
5
+ import { fileURLToPath, pathToFileURL } from "node:url";
6
+ import { connectGodotLspClient, GdhLspClientError } from "./lsp-client.js";
7
+ import { getManagedLspStatus } from "./lsp.js";
8
+ const SYMBOL_CONNECT_TIMEOUT_MS = 1_000;
9
+ const SYMBOL_REQUEST_TIMEOUT_MS = 5_000;
10
+ const UNKNOWN_CAPABILITIES = {
11
+ documentSymbol: "unknown",
12
+ definition: "unknown",
13
+ declaration: "unknown",
14
+ references: "unknown",
15
+ hover: "unknown",
16
+ workspaceSymbol: "unknown",
17
+ };
18
+ export async function getAuthoringSymbolStatus(input) {
19
+ const lspStatus = await getManagedLspStatus({
20
+ targetPath: input.targetPath,
21
+ status: input.status,
22
+ projectConfig: input.projectConfig,
23
+ owner: "gdh authoring symbols status",
24
+ launchPolicy: "launch_if_needed",
25
+ });
26
+ const capabilities = capabilitiesFromLspStatus(lspStatus);
27
+ const status = lspStatus.status === "ready"
28
+ ? "resolved"
29
+ : lspStatus.status === "unavailable"
30
+ ? "unavailable"
31
+ : "degraded";
32
+ return {
33
+ targetPath: input.targetPath,
34
+ capability: "authoring.symbols",
35
+ status,
36
+ summary: status === "resolved"
37
+ ? "Managed Godot LSP symbol capabilities are available."
38
+ : `Managed Godot LSP symbol capabilities are ${lspStatus.status}.`,
39
+ reasons: lspStatus.reasons,
40
+ lsp: {
41
+ status: lspStatus.status,
42
+ instanceId: lspStatus.instance?.instanceId ?? null,
43
+ port: lspStatus.instance?.port ?? null,
44
+ },
45
+ capabilities,
46
+ provenance: buildProvenance(input, lspStatus, "initialize", capabilities, null, {
47
+ rawLspStatus: lspStatus.provenance.rawPayload,
48
+ }),
49
+ };
50
+ }
51
+ export async function getAuthoringDocumentSymbols(input) {
52
+ const prepared = await prepareSymbolRequest(input, "textDocument/documentSymbol");
53
+ if (prepared.kind === "result") {
54
+ return { ...prepared.result, filePath: null, symbols: [] };
55
+ }
56
+ const { lspStatus, capabilities, file } = prepared;
57
+ if (capabilities.documentSymbol === "unsupported") {
58
+ return emptyDocumentResult(input, lspStatus, capabilities, file, "symbol_capability_unsupported");
59
+ }
60
+ try {
61
+ return await withInitializedSymbolClient(prepared, async (client) => {
62
+ await client.didOpen({ uri: file.uri, languageId: "gdscript", version: 1, text: file.text });
63
+ const raw = await client.request("textDocument/documentSymbol", { textDocument: { uri: file.uri } }, { timeoutMs: SYMBOL_REQUEST_TIMEOUT_MS });
64
+ const symbols = normalizeDocumentSymbols(raw);
65
+ return {
66
+ targetPath: input.targetPath,
67
+ capability: "authoring.symbols",
68
+ status: symbols.length > 0 ? "resolved" : "empty",
69
+ summary: symbols.length > 0
70
+ ? "Resolved document symbols from Godot LSP."
71
+ : "Godot LSP returned no document symbols.",
72
+ reasons: symbols.length > 0 ? [] : ["symbol_result_empty"],
73
+ filePath: file.projectRelativePath,
74
+ symbols,
75
+ provenance: buildProvenance(input, lspStatus, "textDocument/documentSymbol", capabilities, file, {
76
+ result: raw,
77
+ }),
78
+ };
79
+ });
80
+ }
81
+ catch (error) {
82
+ if (error instanceof GdhLspClientError) {
83
+ return {
84
+ ...emptyBaseResult(input, lspStatus, capabilities, file, "textDocument/documentSymbol", [
85
+ error.reason,
86
+ ]),
87
+ filePath: file.projectRelativePath,
88
+ symbols: [],
89
+ };
90
+ }
91
+ throw error;
92
+ }
93
+ }
94
+ export async function getAuthoringSymbolDefinition(input) {
95
+ return await getPositionLocations(input, "textDocument/definition", "definition");
96
+ }
97
+ export async function getAuthoringSymbolDeclaration(input) {
98
+ return await getPositionLocations(input, "textDocument/declaration", "declaration");
99
+ }
100
+ export async function getAuthoringSymbolReferences(input) {
101
+ const prepared = await preparePositionSymbolRequest(input, "textDocument/references");
102
+ if (prepared.kind === "result") {
103
+ return { ...prepared.result, filePath: null, line: input.line, column: input.column, locations: [] };
104
+ }
105
+ const { lspStatus, capabilities, file, position } = prepared;
106
+ if (capabilities.references === "unsupported") {
107
+ return emptyLocationsResult(input, lspStatus, capabilities, file, "textDocument/references", [
108
+ "symbol_capability_unsupported",
109
+ ]);
110
+ }
111
+ try {
112
+ return await withInitializedSymbolClient(prepared, async (client) => {
113
+ await client.didOpen({ uri: file.uri, languageId: "gdscript", version: 1, text: file.text });
114
+ const raw = await client.request("textDocument/references", {
115
+ textDocument: { uri: file.uri },
116
+ position,
117
+ context: { includeDeclaration: input.includeDeclaration ?? true },
118
+ }, { timeoutMs: SYMBOL_REQUEST_TIMEOUT_MS });
119
+ return locationsResult(input, lspStatus, capabilities, file, "textDocument/references", raw);
120
+ });
121
+ }
122
+ catch (error) {
123
+ if (error instanceof GdhLspClientError) {
124
+ return emptyLocationsResult(input, lspStatus, capabilities, file, "textDocument/references", [
125
+ error.reason,
126
+ ]);
127
+ }
128
+ throw error;
129
+ }
130
+ }
131
+ export async function getAuthoringSymbolHover(input) {
132
+ const prepared = await preparePositionSymbolRequest(input, "textDocument/hover");
133
+ if (prepared.kind === "result") {
134
+ return {
135
+ ...prepared.result,
136
+ filePath: null,
137
+ line: input.line,
138
+ column: input.column,
139
+ contents: null,
140
+ range: null,
141
+ };
142
+ }
143
+ const { lspStatus, capabilities, file, position } = prepared;
144
+ if (capabilities.hover === "unsupported") {
145
+ return {
146
+ ...emptyBaseResult(input, lspStatus, capabilities, file, "textDocument/hover", [
147
+ "symbol_capability_unsupported",
148
+ ]),
149
+ filePath: file.projectRelativePath,
150
+ line: input.line,
151
+ column: input.column,
152
+ contents: null,
153
+ range: null,
154
+ };
155
+ }
156
+ try {
157
+ return await withInitializedSymbolClient(prepared, async (client) => {
158
+ await client.didOpen({ uri: file.uri, languageId: "gdscript", version: 1, text: file.text });
159
+ const raw = await client.request("textDocument/hover", { textDocument: { uri: file.uri }, position }, { timeoutMs: SYMBOL_REQUEST_TIMEOUT_MS });
160
+ const hover = normalizeHover(raw);
161
+ return {
162
+ targetPath: input.targetPath,
163
+ capability: "authoring.symbols",
164
+ status: hover.contents === null ? "empty" : "resolved",
165
+ summary: hover.contents === null
166
+ ? "Godot LSP returned no hover information."
167
+ : "Resolved hover information from Godot LSP.",
168
+ reasons: hover.contents === null ? ["symbol_result_empty"] : [],
169
+ filePath: file.projectRelativePath,
170
+ line: input.line,
171
+ column: input.column,
172
+ contents: hover.contents,
173
+ range: hover.range,
174
+ provenance: buildProvenance(input, lspStatus, "textDocument/hover", capabilities, file, {
175
+ result: raw,
176
+ }),
177
+ };
178
+ });
179
+ }
180
+ catch (error) {
181
+ if (error instanceof GdhLspClientError) {
182
+ return {
183
+ ...emptyBaseResult(input, lspStatus, capabilities, file, "textDocument/hover", [error.reason]),
184
+ filePath: file.projectRelativePath,
185
+ line: input.line,
186
+ column: input.column,
187
+ contents: null,
188
+ range: null,
189
+ };
190
+ }
191
+ throw error;
192
+ }
193
+ }
194
+ async function getPositionLocations(input, method, capability) {
195
+ const prepared = await preparePositionSymbolRequest(input, method);
196
+ if (prepared.kind === "result") {
197
+ return { ...prepared.result, filePath: null, line: input.line, column: input.column, locations: [] };
198
+ }
199
+ const { lspStatus, capabilities, file, position } = prepared;
200
+ if (capabilities[capability] === "unsupported") {
201
+ return emptyLocationsResult(input, lspStatus, capabilities, file, method, [
202
+ "symbol_capability_unsupported",
203
+ ]);
204
+ }
205
+ try {
206
+ return await withInitializedSymbolClient(prepared, async (client) => {
207
+ await client.didOpen({ uri: file.uri, languageId: "gdscript", version: 1, text: file.text });
208
+ const raw = await client.request(method, { textDocument: { uri: file.uri }, position }, { timeoutMs: SYMBOL_REQUEST_TIMEOUT_MS });
209
+ return locationsResult(input, lspStatus, capabilities, file, method, raw);
210
+ });
211
+ }
212
+ catch (error) {
213
+ if (error instanceof GdhLspClientError) {
214
+ return emptyLocationsResult(input, lspStatus, capabilities, file, method, [error.reason]);
215
+ }
216
+ throw error;
217
+ }
218
+ }
219
+ async function preparePositionSymbolRequest(input, method) {
220
+ const prepared = await prepareSymbolRequest(input, method);
221
+ if (prepared.kind === "result") {
222
+ return {
223
+ kind: "result",
224
+ result: { ...prepared.result, filePath: null, line: input.line, column: input.column, locations: [] },
225
+ };
226
+ }
227
+ const position = normalizeRequestedPosition(input.line, input.column, prepared.file.text);
228
+ if (position === null) {
229
+ return {
230
+ kind: "result",
231
+ result: {
232
+ ...emptyBaseResult(input, prepared.lspStatus, prepared.capabilities, prepared.file, method, [
233
+ "symbol_position_out_of_range",
234
+ ]),
235
+ filePath: prepared.file.projectRelativePath,
236
+ line: input.line,
237
+ column: input.column,
238
+ locations: [],
239
+ },
240
+ };
241
+ }
242
+ return { ...prepared, position };
243
+ }
244
+ async function prepareSymbolRequest(input, method) {
245
+ const projectPath = resolveProjectPath(input);
246
+ const file = await resolveSymbolFile(projectPath, input.targetPath, input.filePath);
247
+ if (file === null) {
248
+ return {
249
+ kind: "result",
250
+ result: {
251
+ ...emptyBaseResult(input, null, UNKNOWN_CAPABILITIES, null, method, [
252
+ "symbol_file_unavailable",
253
+ ]),
254
+ filePath: null,
255
+ symbols: [],
256
+ },
257
+ };
258
+ }
259
+ const lspStatus = await getManagedLspStatus({
260
+ targetPath: input.targetPath,
261
+ status: input.status,
262
+ projectConfig: input.projectConfig,
263
+ owner: "gdh authoring symbols",
264
+ launchPolicy: "launch_if_needed",
265
+ });
266
+ const capabilities = capabilitiesFromLspStatus(lspStatus);
267
+ if (lspStatus.status !== "ready" || lspStatus.instance === null) {
268
+ return {
269
+ kind: "result",
270
+ result: {
271
+ ...emptyBaseResult(input, lspStatus, capabilities, file, method, [
272
+ lspStatus.status === "unavailable" ? "symbol_lsp_unavailable" : "symbol_lsp_degraded",
273
+ ]),
274
+ filePath: file.projectRelativePath,
275
+ symbols: [],
276
+ },
277
+ };
278
+ }
279
+ return { kind: "ready", projectPath, lspStatus, capabilities, file };
280
+ }
281
+ async function withInitializedSymbolClient(prepared, fn) {
282
+ const instance = prepared.lspStatus.instance;
283
+ if (instance === null) {
284
+ throw new Error("Managed LSP instance was unexpectedly absent.");
285
+ }
286
+ const client = await connectGodotLspClient({
287
+ port: instance.port,
288
+ connectTimeoutMs: SYMBOL_CONNECT_TIMEOUT_MS,
289
+ requestTimeoutMs: SYMBOL_REQUEST_TIMEOUT_MS,
290
+ });
291
+ try {
292
+ await client.initialize({ rootUri: pathToFileURL(prepared.projectPath).href });
293
+ await client.initialized();
294
+ return await fn(client);
295
+ }
296
+ catch (error) {
297
+ if (error instanceof GdhLspClientError) {
298
+ throw error;
299
+ }
300
+ throw error;
301
+ }
302
+ finally {
303
+ await client.close();
304
+ }
305
+ }
306
+ function locationsResult(input, lspStatus, capabilities, file, method, raw) {
307
+ const locations = normalizeLocations(raw, file.projectPath);
308
+ return {
309
+ targetPath: input.targetPath,
310
+ capability: "authoring.symbols",
311
+ status: locations.length > 0 ? "resolved" : "empty",
312
+ summary: locations.length > 0
313
+ ? "Resolved symbol locations from Godot LSP."
314
+ : "Godot LSP returned no symbol locations.",
315
+ reasons: locations.length > 0 ? [] : ["symbol_result_empty"],
316
+ filePath: file.projectRelativePath,
317
+ line: input.line,
318
+ column: input.column,
319
+ locations,
320
+ provenance: buildProvenance(input, lspStatus, method, capabilities, file, { result: raw }),
321
+ };
322
+ }
323
+ function emptyDocumentResult(input, lspStatus, capabilities, file, reason) {
324
+ return {
325
+ ...emptyBaseResult(input, lspStatus, capabilities, file, "textDocument/documentSymbol", [reason]),
326
+ filePath: file.projectRelativePath,
327
+ symbols: [],
328
+ };
329
+ }
330
+ function emptyLocationsResult(input, lspStatus, capabilities, file, method, reasons) {
331
+ return {
332
+ ...emptyBaseResult(input, lspStatus, capabilities, file, method, reasons),
333
+ filePath: file.projectRelativePath,
334
+ line: input.line,
335
+ column: input.column,
336
+ locations: [],
337
+ };
338
+ }
339
+ function emptyBaseResult(input, lspStatus, capabilities, file, method, reasons) {
340
+ const unavailable = reasons.some((reason) => reason.includes("unavailable"));
341
+ return {
342
+ targetPath: input.targetPath,
343
+ capability: "authoring.symbols",
344
+ status: unavailable ? "unavailable" : "degraded",
345
+ summary: `Godot LSP symbol navigation could not run: ${reasons.join(", ")}.`,
346
+ reasons,
347
+ provenance: buildProvenance(input, lspStatus, method, capabilities, file, null),
348
+ };
349
+ }
350
+ function buildProvenance(input, lspStatus, method, capabilities, file, rawPayload) {
351
+ return {
352
+ source: "authoring.symbols",
353
+ method,
354
+ inventoryObservedAt: input.status.inventoryObservedAt,
355
+ projectConfigPresent: input.projectConfig !== null,
356
+ lspInstanceId: lspStatus?.instance?.instanceId ?? null,
357
+ lspStatus: lspStatus?.status ?? "unavailable",
358
+ godotVersion: lspStatus?.instance?.identity.editorVersion ?? null,
359
+ capabilities,
360
+ openedFile: file === null
361
+ ? null
362
+ : {
363
+ path: file.projectRelativePath,
364
+ uri: file.uri,
365
+ contentHash: file.contentHash,
366
+ freshness: "opened_current_disk_text",
367
+ },
368
+ rawPayload,
369
+ };
370
+ }
371
+ function capabilitiesFromLspStatus(lspStatus) {
372
+ const rawPayload = lspStatus.provenance.rawPayload;
373
+ const protocolHealth = typeof rawPayload?.["protocolHealth"] === "object" && rawPayload["protocolHealth"] !== null
374
+ ? rawPayload["protocolHealth"]
375
+ : null;
376
+ const rawCapabilities = rawPayload?.["capabilities"] ?? protocolHealth?.["capabilities"];
377
+ const capabilities = typeof rawCapabilities === "object" && rawCapabilities !== null
378
+ ? rawCapabilities
379
+ : {};
380
+ return {
381
+ documentSymbol: capabilityState(capabilities["documentSymbolProvider"]),
382
+ definition: capabilityState(capabilities["definitionProvider"]),
383
+ declaration: capabilityState(capabilities["declarationProvider"]),
384
+ references: capabilityState(capabilities["referencesProvider"]),
385
+ hover: capabilityState(capabilities["hoverProvider"]),
386
+ workspaceSymbol: capabilityState(capabilities["workspaceSymbolProvider"]),
387
+ };
388
+ }
389
+ function capabilityState(value) {
390
+ if (value === true || (typeof value === "object" && value !== null)) {
391
+ return "supported";
392
+ }
393
+ if (value === false) {
394
+ return "unsupported";
395
+ }
396
+ return "unknown";
397
+ }
398
+ async function resolveSymbolFile(projectPath, targetPath, requestedFilePath) {
399
+ const candidates = path.isAbsolute(requestedFilePath)
400
+ ? [requestedFilePath]
401
+ : [path.resolve(targetPath, requestedFilePath), path.resolve(projectPath, requestedFilePath)];
402
+ const uniqueCandidates = [...new Set(candidates)];
403
+ for (const candidate of uniqueCandidates) {
404
+ if (path.extname(candidate) !== ".gd") {
405
+ continue;
406
+ }
407
+ const text = await fs.readFile(candidate, "utf8").catch(() => null);
408
+ if (text === null) {
409
+ continue;
410
+ }
411
+ const projectRelativePath = toProjectRelativePath(projectPath, candidate);
412
+ if (projectRelativePath === null) {
413
+ continue;
414
+ }
415
+ return {
416
+ projectPath,
417
+ filePath: candidate,
418
+ projectRelativePath,
419
+ uri: pathToFileURL(candidate).href,
420
+ text,
421
+ contentHash: hashText(text),
422
+ };
423
+ }
424
+ return null;
425
+ }
426
+ function resolveProjectPath(input) {
427
+ return path.resolve(input.targetPath, input.status.primaryProjectPath ?? input.projectConfig?.primaryGodotProjectPath ?? ".");
428
+ }
429
+ function toProjectRelativePath(projectPath, filePath) {
430
+ const normalizedProjectPath = realpathOrOriginal(projectPath);
431
+ const normalizedFilePath = realpathOrOriginal(filePath);
432
+ const relative = path.relative(normalizedProjectPath, normalizedFilePath);
433
+ if (relative === "" || relative.startsWith("..") || path.isAbsolute(relative)) {
434
+ return null;
435
+ }
436
+ return relative.split(path.sep).join("/");
437
+ }
438
+ function normalizeRequestedPosition(line, column, text) {
439
+ if (!Number.isInteger(line) || !Number.isInteger(column) || line < 1 || column < 1) {
440
+ return null;
441
+ }
442
+ const lines = text.split(/\r\n|\n|\r/);
443
+ const lineText = lines[line - 1];
444
+ if (lineText === undefined || column > lineText.length + 1) {
445
+ return null;
446
+ }
447
+ return { line: line - 1, character: column - 1 };
448
+ }
449
+ function normalizeDocumentSymbols(raw) {
450
+ if (!Array.isArray(raw)) {
451
+ return [];
452
+ }
453
+ return raw.flatMap((entry) => normalizeDocumentSymbol(entry));
454
+ }
455
+ function normalizeDocumentSymbol(raw) {
456
+ if (typeof raw !== "object" || raw === null) {
457
+ return [];
458
+ }
459
+ const candidate = raw;
460
+ const name = typeof candidate["name"] === "string" ? candidate["name"] : null;
461
+ if (name === null) {
462
+ return [];
463
+ }
464
+ return [
465
+ {
466
+ name,
467
+ detail: typeof candidate["detail"] === "string" ? candidate["detail"] : null,
468
+ kind: typeof candidate["kind"] === "number" ? candidate["kind"] : null,
469
+ range: normalizeRange(candidate["range"]),
470
+ selectionRange: normalizeRange(candidate["selectionRange"]),
471
+ children: normalizeDocumentSymbols(candidate["children"]),
472
+ },
473
+ ];
474
+ }
475
+ function normalizeLocations(raw, projectPath) {
476
+ const values = raw === null || raw === undefined ? [] : Array.isArray(raw) ? raw : [raw];
477
+ return values.flatMap((entry) => normalizeLocation(entry, projectPath));
478
+ }
479
+ function normalizeLocation(raw, projectPath) {
480
+ if (typeof raw !== "object" || raw === null) {
481
+ return [];
482
+ }
483
+ const candidate = raw;
484
+ const uri = typeof candidate["uri"] === "string" ? candidate["uri"] : null;
485
+ const range = normalizeRange(candidate["range"]);
486
+ const pathFromUri = uri === null ? null : projectPathFromUri(projectPath, uri);
487
+ return [{ path: pathFromUri, uri, ...range }];
488
+ }
489
+ function normalizeHover(raw) {
490
+ if (typeof raw !== "object" || raw === null) {
491
+ return { contents: null, range: null };
492
+ }
493
+ const candidate = raw;
494
+ const contents = candidate["contents"] === undefined ? null : normalizeJsonValue(candidate["contents"]);
495
+ return {
496
+ contents,
497
+ range: candidate["range"] === undefined ? null : normalizeRange(candidate["range"]),
498
+ };
499
+ }
500
+ function normalizeRange(range) {
501
+ if (typeof range !== "object" || range === null) {
502
+ return { line: null, column: null, endLine: null, endColumn: null };
503
+ }
504
+ const candidate = range;
505
+ const startLine = typeof candidate.start?.line === "number" ? candidate.start.line : null;
506
+ const startCharacter = typeof candidate.start?.character === "number" ? candidate.start.character : null;
507
+ const endLine = typeof candidate.end?.line === "number" ? candidate.end.line : null;
508
+ const endCharacter = typeof candidate.end?.character === "number" ? candidate.end.character : null;
509
+ return {
510
+ line: startLine === null ? null : startLine + 1,
511
+ column: startCharacter === null ? null : startCharacter + 1,
512
+ endLine: endLine === null ? null : endLine + 1,
513
+ endColumn: endCharacter === null ? null : endCharacter + 1,
514
+ };
515
+ }
516
+ function projectPathFromUri(projectPath, uri) {
517
+ if (!uri.startsWith("file://")) {
518
+ return null;
519
+ }
520
+ try {
521
+ return toProjectRelativePath(projectPath, fileURLToPath(uri));
522
+ }
523
+ catch {
524
+ return null;
525
+ }
526
+ }
527
+ function realpathOrOriginal(filePath) {
528
+ try {
529
+ return realpathSync.native(filePath);
530
+ }
531
+ catch {
532
+ return filePath;
533
+ }
534
+ }
535
+ function normalizeJsonValue(value) {
536
+ if (value === null ||
537
+ typeof value === "string" ||
538
+ typeof value === "number" ||
539
+ typeof value === "boolean") {
540
+ return value;
541
+ }
542
+ if (Array.isArray(value)) {
543
+ return value.map((entry) => normalizeJsonValue(entry));
544
+ }
545
+ if (typeof value === "object") {
546
+ const next = {};
547
+ for (const [key, entry] of Object.entries(value)) {
548
+ next[key] = normalizeJsonValue(entry);
549
+ }
550
+ return next;
551
+ }
552
+ return null;
553
+ }
554
+ function hashText(text) {
555
+ return createHash("sha256").update(text).digest("hex");
556
+ }
557
+ //# sourceMappingURL=symbol-navigation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-navigation.js","sourceRoot":"","sources":["../src/symbol-navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAmBxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,yBAAyB,GAAG,KAAK,CAAC;AACxC,MAAM,oBAAoB,GAAmC;IAC3D,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,SAAS;IACrB,WAAW,EAAE,SAAS;IACtB,UAAU,EAAE,SAAS;IACrB,KAAK,EAAE,SAAS;IAChB,eAAe,EAAE,SAAS;CAC3B,CAAC;AAgCF,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,KAAwC;IAExC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,KAAK,EAAE,8BAA8B;QACrC,YAAY,EAAE,kBAAkB;KACjC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,MAAM,GACV,SAAS,CAAC,MAAM,KAAK,OAAO;QAC1B,CAAC,CAAC,UAAU;QACZ,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,aAAa;YAClC,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,UAAU,CAAC;IAEnB,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,MAAM;QACN,OAAO,EACL,MAAM,KAAK,UAAU;YACnB,CAAC,CAAC,sDAAsD;YACxD,CAAC,CAAC,6CAA6C,SAAS,CAAC,MAAM,GAAG;QACtE,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,GAAG,EAAE;YACH,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,UAAU,EAAE,SAAS,CAAC,QAAQ,EAAE,UAAU,IAAI,IAAI;YAClD,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI;SACvC;QACD,YAAY;QACZ,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE;YAC9E,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,UAAU;SAC9C,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,KAAuC;IAEvC,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,6BAA6B,CAAC,CAAC;IAClF,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC7D,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC;IACnD,IAAI,YAAY,CAAC,cAAc,KAAK,aAAa,EAAE,CAAC;QAClD,OAAO,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAC;IACpG,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,2BAA2B,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAC9B,6BAA6B,EAC7B,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EACnC,EAAE,SAAS,EAAE,yBAAyB,EAAE,CACzC,CAAC;YACF,MAAM,OAAO,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC9C,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,mBAAmB;gBAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;gBACjD,OAAO,EACL,OAAO,CAAC,MAAM,GAAG,CAAC;oBAChB,CAAC,CAAC,2CAA2C;oBAC7C,CAAC,CAAC,yCAAyC;gBAC/C,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBAC1D,QAAQ,EAAE,IAAI,CAAC,mBAAmB;gBAClC,OAAO;gBACP,UAAU,EAAE,eAAe,CACzB,KAAK,EACL,SAAS,EACT,6BAA6B,EAC7B,YAAY,EACZ,IAAI,EACJ;oBACE,MAAM,EAAE,GAAG;iBACZ,CACF;aACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,OAAO;gBACL,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,6BAA6B,EAAE;oBACtF,KAAK,CAAC,MAAM;iBACb,CAAC;gBACF,QAAQ,EAAE,IAAI,CAAC,mBAAmB;gBAClC,OAAO,EAAE,EAAE;aACZ,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAAsC;IAEtC,OAAO,MAAM,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,EAAE,YAAY,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,KAAsC;IAEtC,OAAO,MAAM,oBAAoB,CAAC,KAAK,EAAE,0BAA0B,EAAE,aAAa,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAAkC;IAElC,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;IACtF,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC7D,IAAI,YAAY,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;QAC9C,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE;YAC3F,+BAA+B;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,2BAA2B,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAC9B,yBAAyB,EACzB;gBACE,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE;gBAC/B,QAAQ;gBACR,OAAO,EAAE,EAAE,kBAAkB,EAAE,KAAK,CAAC,kBAAkB,IAAI,IAAI,EAAE;aAClE,EACD,EAAE,SAAS,EAAE,yBAAyB,EAAE,CACzC,CAAC;YACF,OAAO,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC/F,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,yBAAyB,EAAE;gBAC3F,KAAK,CAAC,MAAM;aACb,CAAC,CAAC;QACL,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAsC;IAEtC,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;IACjF,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,GAAG,QAAQ,CAAC,MAAM;YAClB,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC7D,IAAI,YAAY,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;QACzC,OAAO;YACL,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE;gBAC7E,+BAA+B;aAChC,CAAC;YACF,QAAQ,EAAE,IAAI,CAAC,mBAAmB;YAClC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE,IAAI;SACZ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,2BAA2B,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAC9B,oBAAoB,EACpB,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAC7C,EAAE,SAAS,EAAE,yBAAyB,EAAE,CACzC,CAAC;YACF,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;YAClC,OAAO;gBACL,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,UAAU,EAAE,mBAAmB;gBAC/B,MAAM,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU;gBACtD,OAAO,EACL,KAAK,CAAC,QAAQ,KAAK,IAAI;oBACrB,CAAC,CAAC,0CAA0C;oBAC5C,CAAC,CAAC,4CAA4C;gBAClD,OAAO,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC/D,QAAQ,EAAE,IAAI,CAAC,mBAAmB;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,YAAY,EAAE,IAAI,EAAE;oBACtF,MAAM,EAAE,GAAG;iBACZ,CAAC;aACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,OAAO;gBACL,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC9F,QAAQ,EAAE,IAAI,CAAC,mBAAmB;gBAClC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,IAAI;aACZ,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,KAAsC,EACtC,MAAsB,EACtB,UAAwC;IAExC,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACvG,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC7D,IAAI,YAAY,CAAC,UAAU,CAAC,KAAK,aAAa,EAAE,CAAC;QAC/C,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;YACxE,+BAA+B;SAChC,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,2BAA2B,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAClE,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAC9B,MAAM,EACN,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,EAC7C,EAAE,SAAS,EAAE,yBAAyB,EAAE,CACzC,CAAC;YACF,OAAO,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC5E,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,KAAsC,EACtC,MAAc;IAYd,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,EAAE,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE;SACtG,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACN,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE;oBAC1F,8BAA8B;iBAC/B,CAAC;gBACF,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB;gBAC3C,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,EAAE;aACd;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACnC,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,KAAuC,EACvC,MAAc;IAWd,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,MAAM,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACN,GAAG,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE;oBAClE,yBAAyB;iBAC1B,CAAC;gBACF,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC;QAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,KAAK,EAAE,uBAAuB;QAC9B,YAAY,EAAE,kBAAkB;KACjC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,yBAAyB,CAAC,SAAS,CAAC,CAAC;IAC1D,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;QAChE,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE;gBACN,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE;oBAC/D,SAAS,CAAC,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,qBAAqB;iBACtF,CAAC;gBACF,QAAQ,EAAE,IAAI,CAAC,mBAAmB;gBAClC,OAAO,EAAE,EAAE;aACZ;SACF,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;AACvE,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,QAKC,EACD,EAA6E;IAE7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC7C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC;QACzC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,gBAAgB,EAAE,yBAAyB;QAC3C,gBAAgB,EAAE,yBAAyB;KAC5C,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/E,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC3B,OAAO,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;YACvC,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,KAAsC,EACtC,SAAoC,EACpC,YAA4C,EAC5C,IAAwB,EACxB,MAAc,EACd,GAAY;IAEZ,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5D,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;QACnD,OAAO,EACL,SAAS,CAAC,MAAM,GAAG,CAAC;YAClB,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,yCAAyC;QAC/C,OAAO,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC;QAC5D,QAAQ,EAAE,IAAI,CAAC,mBAAmB;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS;QACT,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;KAC3F,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAuC,EACvC,SAAoC,EACpC,YAA4C,EAC5C,IAAwB,EACxB,MAAc;IAEd,OAAO;QACL,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,MAAM,CAAC,CAAC;QACjG,QAAQ,EAAE,IAAI,CAAC,mBAAmB;QAClC,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAC3B,KAAsC,EACtC,SAAoC,EACpC,YAA4C,EAC5C,IAAwB,EACxB,MAAc,EACd,OAA0B;IAE1B,OAAO;QACL,GAAG,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;QACzE,QAAQ,EAAE,IAAI,CAAC,mBAAmB;QAClC,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,KAAwC,EACxC,SAA2C,EAC3C,YAA4C,EAC5C,IAA+B,EAC/B,MAAc,EACd,OAA0B;IAE1B,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;IAC7E,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,UAAU,EAAE,mBAA4B;QACxC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAE,aAAuB,CAAC,CAAC,CAAE,UAAoB;QACtE,OAAO,EAAE,8CAA8C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QAC5E,OAAO;QACP,UAAU,EAAE,eAAe,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CACtB,KAAwC,EACxC,SAA2C,EAC3C,MAAc,EACd,YAA4C,EAC5C,IAA+B,EAC/B,UAAoD;IAEpD,OAAO;QACL,MAAM,EAAE,mBAAmB;QAC3B,MAAM;QACN,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,mBAAmB;QACrD,oBAAoB,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI;QAClD,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,IAAI,IAAI;QACtD,SAAS,EAAE,SAAS,EAAE,MAAM,IAAI,aAAa;QAC7C,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,aAAa,IAAI,IAAI;QACjE,YAAY;QACZ,UAAU,EACR,IAAI,KAAK,IAAI;YACX,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,IAAI,EAAE,IAAI,CAAC,mBAAmB;gBAC9B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,SAAS,EAAE,0BAA0B;aACtC;QACP,UAAU;KACX,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,SAAoC;IAEpC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC;IACnD,MAAM,cAAc,GAClB,OAAO,UAAU,EAAE,CAAC,gBAAgB,CAAC,KAAK,QAAQ,IAAI,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI;QACzF,CAAC,CAAE,UAAU,CAAC,gBAAgB,CAAuC;QACrE,CAAC,CAAC,IAAI,CAAC;IACX,MAAM,eAAe,GAAG,UAAU,EAAE,CAAC,cAAc,CAAC,IAAI,cAAc,EAAE,CAAC,cAAc,CAAC,CAAC;IACzF,MAAM,YAAY,GAChB,OAAO,eAAe,KAAK,QAAQ,IAAI,eAAe,KAAK,IAAI;QAC7D,CAAC,CAAE,eAAqD;QACxD,CAAC,CAAC,EAAE,CAAC;IAET,OAAO;QACL,cAAc,EAAE,eAAe,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC;QACvE,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC/D,WAAW,EAAE,eAAe,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC;QACjE,UAAU,EAAE,eAAe,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC;QAC/D,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;QACrD,eAAe,EAAE,eAAe,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,WAAmB,EACnB,UAAkB,EAClB,iBAAyB;IAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;QACnD,CAAC,CAAC,CAAC,iBAAiB,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAChG,MAAM,gBAAgB,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;IAElD,KAAK,MAAM,SAAS,IAAI,gBAAgB,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,SAAS;QACX,CAAC;QACD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC1E,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;YACjC,SAAS;QACX,CAAC;QACD,OAAO;YACL,WAAW;YACX,QAAQ,EAAE,SAAS;YACnB,mBAAmB;YACnB,GAAG,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,IAAI;YAClC,IAAI;YACJ,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC;SAC5B,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAwC;IAClE,OAAO,IAAI,CAAC,OAAO,CACjB,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,MAAM,CAAC,kBAAkB,IAAI,KAAK,CAAC,aAAa,EAAE,uBAAuB,IAAI,GAAG,CACvF,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAAC,WAAmB,EAAE,QAAgB;IAClE,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,kBAAkB,CAAC,CAAC;IAC1E,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,0BAA0B,CACjC,IAAY,EACZ,MAAc,EACd,IAAY;IAEZ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACnF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACjC,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AACnD,CAAC;AAED,SAAS,wBAAwB,CAAC,GAAY;IAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAY;IAC3C,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAG,GAAwC,CAAC;IAC3D,MAAM,IAAI,GAAG,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9E,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL;YACE,IAAI;YACJ,MAAM,EAAE,OAAO,SAAS,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;YAC5E,IAAI,EAAE,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI;YACtE,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,cAAc,EAAE,cAAc,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;YAC3D,QAAQ,EAAE,wBAAwB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;SAC1D;KACF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,WAAmB;IAC3D,MAAM,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAY,EAAE,WAAmB;IAC1D,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,SAAS,GAAG,GAAwC,CAAC;IAC3D,MAAM,GAAG,GAAG,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC/E,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAIlC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IACD,MAAM,SAAS,GAAG,GAAwC,CAAC;IAC3D,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;IACxG,OAAO;QACL,QAAQ;QACR,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KACpF,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACtE,CAAC;IACD,MAAM,SAAS,GAAG,KAGjB,CAAC;IACF,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,cAAc,GAClB,OAAO,SAAS,CAAC,KAAK,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,OAAO,GAAG,OAAO,SAAS,CAAC,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,MAAM,YAAY,GAAG,OAAO,SAAS,CAAC,GAAG,EAAE,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnG,OAAO;QACL,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC;QAC/C,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,GAAG,CAAC;QAC3D,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC;QAC9C,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC;KAC3D,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB,EAAE,GAAW;IAC1D,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,OAAO,qBAAqB,CAAC,WAAW,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IACE,KAAK,KAAK,IAAI;QACd,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,KAAK,KAAK,SAAS,EAC1B,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,GAAiC,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,CAAC"}
@@ -14,7 +14,7 @@
14
14
  "test": "vitest run"
15
15
  },
16
16
  "dependencies": {
17
- "@gdh/core": "4.0.0"
17
+ "@gdh/core": "4.2.0"
18
18
  },
19
- "version": "4.0.0"
19
+ "version": "4.2.0"
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqFA,OAAO,EAIL,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAgC5B,OAAO,EAAE,KAAK,KAAK,EAAmC,MAAM,SAAS,CAAC;AAWtE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9F;AAaD,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iCAAiC,EACjC,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,UAAU,wCAgBrB,CAAC;AAEH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAA0D,GAC7D,OAAO,CAAC,MAAM,CAAC,CAwIjB;AA22ED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC7F;AAyhFD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CAoBf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqFA,OAAO,EAIL,2BAA2B,EAC5B,MAAM,oBAAoB,CAAC;AAgC5B,OAAO,EAAE,KAAK,KAAK,EAAmC,MAAM,SAAS,CAAC;AAWtE;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAE9F;AAaD,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,iCAAiC,EACjC,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,UAAU,wCAgBrB,CAAC;AAEH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,EAAE,GAAE,KAA0D,GAC7D,OAAO,CAAC,MAAM,CAAC,CAwIjB;AA42ED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC7F;AA0hFD,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,2BAA2B,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACtC,GACA,OAAO,CAAC,IAAI,CAAC,CAoBf"}
@@ -1370,7 +1370,8 @@ async function runTargetPrepareCommand(args, io) {
1370
1370
  io.stdout.write([
1371
1371
  "Usage: gdh target prepare [target] [--source-target <path>] [--dry-run] [--no-refresh-imports]",
1372
1372
  "",
1373
- "Prepare a target for editor/import-sensitive work by composing GDH warmup, optional .godot hydration from a configured source target, and optional import refresh.",
1373
+ "Prepare a target for editor/import-sensitive work by composing GDH warmup, optional .godot hydration from a source target, and optional import refresh.",
1374
+ "Secondary git worktree checkouts infer the main checkout as a hydration source automatically when it has reusable .godot state.",
1374
1375
  ].join("\n") + "\n");
1375
1376
  return 0;
1376
1377
  }
@@ -2195,7 +2196,8 @@ async function runMigrationClearBackupsCommand(args, io) {
2195
2196
  return 1;
2196
2197
  }
2197
2198
  try {
2198
- const result = await clearMigrationBackups({ targetPath });
2199
+ const effectiveTargetPath = await resolveEffectiveTargetPath(targetPath);
2200
+ const result = await clearMigrationBackups({ targetPath: effectiveTargetPath });
2199
2201
  writeJsonResult(io, result);
2200
2202
  return result.state === "blocked_by_pending_probes" ? 1 : 0;
2201
2203
  }