@oml/server 0.14.17 → 0.16.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/README.md +8 -1
- package/out/auth/feature-gate.d.ts +20 -5
- package/out/auth/feature-gate.js +80 -24
- package/out/auth/feature-gate.js.map +1 -1
- package/out/auth/feature-policy.js +1 -0
- package/out/auth/feature-policy.js.map +1 -1
- package/out/lsp/language-server.js +3 -47
- package/out/lsp/language-server.js.map +1 -1
- package/out/lsp/protocol/reasoner-protocol.d.ts +8 -0
- package/out/lsp/protocol/reasoner-protocol.js +3 -0
- package/out/lsp/protocol/reasoner-protocol.js.map +1 -1
- package/out/rest/export.js +1 -3
- package/out/rest/export.js.map +1 -1
- package/out/rest/routes.d.ts +5 -0
- package/out/rest/routes.js +165 -91
- package/out/rest/routes.js.map +1 -1
- package/out/rest/server.d.ts +0 -2
- package/out/rest/server.js +760 -474
- package/out/rest/server.js.map +1 -1
- package/out/rest/shacl-index.d.ts +19 -0
- package/out/rest/shacl-index.js +166 -0
- package/out/rest/shacl-index.js.map +1 -0
- package/out/rest/template.js +54 -38
- package/out/rest/template.js.map +1 -1
- package/out/rest/validation.d.ts +2 -1
- package/out/rest/validation.js +198 -136
- package/out/rest/validation.js.map +1 -1
- package/out/server.js +99 -8
- package/out/server.js.map +1 -1
- package/out/workspace-settings.d.ts +19 -0
- package/out/workspace-settings.js +27 -0
- package/out/workspace-settings.js.map +1 -0
- package/package.json +9 -6
package/out/rest/validation.js
CHANGED
|
@@ -1,13 +1,94 @@
|
|
|
1
1
|
// Copyright (c) 2026 Modelware. All rights reserved.
|
|
2
|
-
import * as fs from 'node:fs/promises';
|
|
3
|
-
import * as path from 'node:path';
|
|
4
|
-
import { pathToFileURL } from 'node:url';
|
|
5
2
|
import { createHash } from 'node:crypto';
|
|
6
|
-
import { extractLeadingFrontMatter, MarkdownHandlerRegistry, MarkdownPreviewRuntime } from '@oml/markdown';
|
|
7
3
|
import { createDefaultShaclService } from '@oml/owl';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
4
|
+
import { normalizeNamespace } from '@oml/language';
|
|
5
|
+
import { getIndexedShaclBlocks } from './shacl-index.js';
|
|
10
6
|
const validationRuntimeCaches = new WeakMap();
|
|
7
|
+
function collectDocumentVersions(client) {
|
|
8
|
+
const versions = new Map();
|
|
9
|
+
for (const doc of client.getWorkspaceOmlDocuments()) {
|
|
10
|
+
const uri = String(doc?.uri ?? '').trim();
|
|
11
|
+
if (!uri) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
versions.set(uri, Number(doc?.textDocument?.version ?? -1));
|
|
15
|
+
}
|
|
16
|
+
return versions;
|
|
17
|
+
}
|
|
18
|
+
function areDocumentVersionsEqual(left, right) {
|
|
19
|
+
if (left.size !== right.size) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
for (const [uri, version] of left.entries()) {
|
|
23
|
+
if ((right.get(uri) ?? Number.NaN) !== version) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
function diagnosticsFingerprint(doc) {
|
|
30
|
+
const diagnostics = Array.isArray(doc?.diagnostics) ? doc.diagnostics : [];
|
|
31
|
+
return diagnostics
|
|
32
|
+
.map((diagnostic) => [
|
|
33
|
+
Number(diagnostic?.severity ?? 0),
|
|
34
|
+
Number(diagnostic?.range?.start?.line ?? -1),
|
|
35
|
+
Number(diagnostic?.range?.start?.character ?? -1),
|
|
36
|
+
String(diagnostic?.message ?? ''),
|
|
37
|
+
String(diagnostic?.source ?? ''),
|
|
38
|
+
String(diagnostic?.code ?? ''),
|
|
39
|
+
].join('|'))
|
|
40
|
+
.sort()
|
|
41
|
+
.join('\n');
|
|
42
|
+
}
|
|
43
|
+
function collectDiagnosticsSnapshot(client) {
|
|
44
|
+
const snapshot = new Map();
|
|
45
|
+
for (const doc of client.getWorkspaceOmlDocuments()) {
|
|
46
|
+
const uri = String(doc?.uri ?? '').trim();
|
|
47
|
+
if (!uri) {
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
const version = Number(doc?.textDocument?.version ?? -1);
|
|
51
|
+
snapshot.set(uri, `${version}::${diagnosticsFingerprint(doc)}`);
|
|
52
|
+
}
|
|
53
|
+
return snapshot;
|
|
54
|
+
}
|
|
55
|
+
function areSnapshotsEqual(left, right) {
|
|
56
|
+
if (left.size !== right.size) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
for (const [uri, fingerprint] of left.entries()) {
|
|
60
|
+
if ((right.get(uri) ?? '') !== fingerprint) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
66
|
+
async function waitForStableValidatedSnapshot(client) {
|
|
67
|
+
await client.waitForValidated();
|
|
68
|
+
let previous = collectDocumentVersions(client);
|
|
69
|
+
for (let i = 0; i < 3; i += 1) {
|
|
70
|
+
await Promise.resolve();
|
|
71
|
+
await client.waitForValidated();
|
|
72
|
+
const current = collectDocumentVersions(client);
|
|
73
|
+
if (areDocumentVersionsEqual(previous, current)) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
previous = current;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async function waitForStableDiagnosticsSnapshot(client) {
|
|
80
|
+
await client.waitForValidated();
|
|
81
|
+
let previous = collectDiagnosticsSnapshot(client);
|
|
82
|
+
for (let i = 0; i < 4; i += 1) {
|
|
83
|
+
await Promise.resolve();
|
|
84
|
+
await client.waitForValidated();
|
|
85
|
+
const current = collectDiagnosticsSnapshot(client);
|
|
86
|
+
if (areSnapshotsEqual(previous, current)) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
previous = current;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
11
92
|
function diagnosticKindFromSeverity(severity) {
|
|
12
93
|
if (severity === 1)
|
|
13
94
|
return 'error';
|
|
@@ -49,11 +130,54 @@ function getModelContentFingerprints(client) {
|
|
|
49
130
|
}
|
|
50
131
|
return fingerprints;
|
|
51
132
|
}
|
|
52
|
-
|
|
133
|
+
function resolveFilterModelUris(client, ontologies) {
|
|
134
|
+
if (!Array.isArray(ontologies))
|
|
135
|
+
return new Set();
|
|
136
|
+
const ontologyIndex = client.runtime.shared.indexes?.OntologyModelIndex;
|
|
137
|
+
if (!ontologyIndex)
|
|
138
|
+
return new Set();
|
|
139
|
+
const modelUris = new Set();
|
|
140
|
+
for (const ontology of ontologies) {
|
|
141
|
+
const trimmed = String(ontology ?? '').trim();
|
|
142
|
+
if (!trimmed.startsWith('http://') && !trimmed.startsWith('https://'))
|
|
143
|
+
continue;
|
|
144
|
+
const modelUri = ontologyIndex.resolveModelUri?.(trimmed);
|
|
145
|
+
if (modelUri)
|
|
146
|
+
modelUris.add(modelUri);
|
|
147
|
+
}
|
|
148
|
+
return modelUris;
|
|
149
|
+
}
|
|
150
|
+
function resolveFilterOntologyIris(_client, ontologies) {
|
|
151
|
+
if (!Array.isArray(ontologies))
|
|
152
|
+
return new Set();
|
|
153
|
+
const ontologyIris = new Set();
|
|
154
|
+
for (const ontology of ontologies) {
|
|
155
|
+
const trimmed = String(ontology ?? '').trim();
|
|
156
|
+
if (trimmed.startsWith('http://') || trimmed.startsWith('https://')) {
|
|
157
|
+
ontologyIris.add(trimmed);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return ontologyIris;
|
|
161
|
+
}
|
|
162
|
+
function resolveIndexedShaclBlockModelUri(client, block) {
|
|
163
|
+
if (block.modelUri) {
|
|
164
|
+
return block.modelUri;
|
|
165
|
+
}
|
|
166
|
+
const ontologyIndex = client.runtime.shared.indexes?.OntologyModelIndex;
|
|
167
|
+
return ontologyIndex?.resolveModelUri?.(block.ontologyIri, block.markdownUri);
|
|
168
|
+
}
|
|
169
|
+
export async function lintWorkspace(client, params = {}) {
|
|
53
170
|
const startedAt = Date.now();
|
|
54
171
|
await client.ensureInitialized();
|
|
55
172
|
await client.ensureWorkspaceCurrent();
|
|
56
|
-
|
|
173
|
+
await waitForStableValidatedSnapshot(client);
|
|
174
|
+
await waitForStableDiagnosticsSnapshot(client);
|
|
175
|
+
const allDocs = client.getWorkspaceOmlDocuments();
|
|
176
|
+
// Filter by ontologies if specified
|
|
177
|
+
const filterUris = resolveFilterModelUris(client, params.ontologies);
|
|
178
|
+
const docs = filterUris.size > 0
|
|
179
|
+
? allDocs.filter((doc) => filterUris.has(String(doc?.uri ?? '')))
|
|
180
|
+
: allDocs;
|
|
57
181
|
const allProblems = [];
|
|
58
182
|
let errors = 0;
|
|
59
183
|
let warnings = 0;
|
|
@@ -100,7 +224,8 @@ export async function validateWorkspace(client, params) {
|
|
|
100
224
|
const startedAt = Date.now();
|
|
101
225
|
await client.ensureInitialized();
|
|
102
226
|
await client.ensureWorkspaceCurrent();
|
|
103
|
-
|
|
227
|
+
await waitForStableValidatedSnapshot(client);
|
|
228
|
+
const lint = await lintWorkspace(client, params);
|
|
104
229
|
if (lint.errors > 0 || lint.warnings > 0) {
|
|
105
230
|
return {
|
|
106
231
|
success: false,
|
|
@@ -112,15 +237,16 @@ export async function validateWorkspace(client, params) {
|
|
|
112
237
|
error: `lint failed with ${lint.errors} error(s) and ${lint.warnings} warning(s)`,
|
|
113
238
|
};
|
|
114
239
|
}
|
|
115
|
-
const workspaceRoot = path.resolve(client.workspaceRoot);
|
|
116
|
-
const markdownFiles = await findFilesByExtension(workspaceRoot, '.md');
|
|
117
|
-
const templateCatalog = await buildTemplateCatalog(workspaceRoot);
|
|
118
|
-
const runtime = new MarkdownPreviewRuntime(new MarkdownHandlerRegistry());
|
|
119
|
-
const ontologyIndex = getOntologyModelIndex(client.runtime.shared);
|
|
120
240
|
const reasoningService = client.runtime.Oml.reasoning.ReasoningService;
|
|
121
241
|
const shaclService = createDefaultShaclService(reasoningService.getSparqlService(), (uri) => reasoningService.ensureQueryContext(uri), (uri) => reasoningService.getContextIri(uri));
|
|
122
242
|
const runtimeCache = getValidationRuntimeCache(client);
|
|
123
243
|
const modelFingerprints = getModelContentFingerprints(client);
|
|
244
|
+
const allBlocks = getIndexedShaclBlocks(client.runtime.shared);
|
|
245
|
+
// Filter by ontologies if specified
|
|
246
|
+
const filterOntologyIris = resolveFilterOntologyIris(client, params.ontologies);
|
|
247
|
+
const indexedShaclBlocks = filterOntologyIris.size > 0
|
|
248
|
+
? allBlocks.filter((block) => filterOntologyIris.has(block.ontologyIri))
|
|
249
|
+
: allBlocks;
|
|
124
250
|
const seenValidateKeys = new Set();
|
|
125
251
|
let filesChecked = 0;
|
|
126
252
|
let errors = 0;
|
|
@@ -128,144 +254,80 @@ export async function validateWorkspace(client, params) {
|
|
|
128
254
|
let failingItems = 0;
|
|
129
255
|
const details = [];
|
|
130
256
|
const validationProblems = [];
|
|
131
|
-
for (const
|
|
132
|
-
const
|
|
133
|
-
if (
|
|
257
|
+
for (const block of indexedShaclBlocks) {
|
|
258
|
+
const modelUri = resolveIndexedShaclBlockModelUri(client, block);
|
|
259
|
+
if (!modelUri) {
|
|
134
260
|
continue;
|
|
135
261
|
}
|
|
136
|
-
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const
|
|
141
|
-
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
const expanded = await expandTemplateComposeBlocks(markdown, templateCatalog, {
|
|
147
|
-
workspaceRoot,
|
|
148
|
-
sourceMarkdownPath: markdownPath,
|
|
149
|
-
contextOntologyIri,
|
|
150
|
-
contextModelUri: modelUri,
|
|
151
|
-
contextMemberIri,
|
|
152
|
-
});
|
|
153
|
-
const prepared = runtime.prepare(expanded);
|
|
154
|
-
const executableBlocks = prepared.codeBlocks
|
|
155
|
-
.filter((block) => block.language === 'table-editor')
|
|
156
|
-
.map((block) => ({ id: block.id, source: block.content, lineStart: block.lineStart, lineEnd: block.lineEnd }));
|
|
157
|
-
if (executableBlocks.length === 0) {
|
|
262
|
+
filesChecked += 1;
|
|
263
|
+
const blockLocation = `${block.markdownPath}:${Math.max(1, block.lineStart)}`;
|
|
264
|
+
const cacheKey = `${block.markdownUri}::${block.blockId}`;
|
|
265
|
+
const modelFingerprint = modelFingerprints.get(modelUri) ?? '';
|
|
266
|
+
const validateFingerprint = hashText([modelUri, modelFingerprint, block.sourceHash].join('\n'));
|
|
267
|
+
seenValidateKeys.add(cacheKey);
|
|
268
|
+
const cached = runtimeCache.validateBlockCache.get(cacheKey);
|
|
269
|
+
if (cached?.fingerprint === validateFingerprint) {
|
|
270
|
+
errors += cached.result.errors;
|
|
271
|
+
warnings += cached.result.warnings;
|
|
158
272
|
continue;
|
|
159
273
|
}
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
187
|
-
continue;
|
|
188
|
-
}
|
|
189
|
-
if (!shacl) {
|
|
190
|
-
errors += 1;
|
|
191
|
-
failingItems += 1;
|
|
192
|
-
details.push(`Violation: ${blockLocation}: empty table-editor block.`);
|
|
274
|
+
const result = await shaclService.validateShacl(modelUri, block.source);
|
|
275
|
+
let blockErrors = 0;
|
|
276
|
+
let blockWarnings = 0;
|
|
277
|
+
if (result.error) {
|
|
278
|
+
blockErrors += 1;
|
|
279
|
+
details.push(`Violation: ${blockLocation}: ${result.error}`);
|
|
280
|
+
validationProblems.push({
|
|
281
|
+
modelUri,
|
|
282
|
+
element: '-',
|
|
283
|
+
property: '-',
|
|
284
|
+
message: String(result.error),
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
else if (!result.conforms) {
|
|
288
|
+
for (const issue of result.issues) {
|
|
289
|
+
const severityText = String(issue.severity ?? '').toLowerCase();
|
|
290
|
+
const focusNode = issue.focusNode ? shortIri(issue.focusNode) : '-';
|
|
291
|
+
const propertyName = issue.propertyName ?? (issue.path ? shortIri(issue.path) : '-');
|
|
292
|
+
const severityLabel = shortIri(issue.severity || 'Violation');
|
|
293
|
+
if (severityText.includes('warning')) {
|
|
294
|
+
blockWarnings += 1;
|
|
295
|
+
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
296
|
+
}
|
|
297
|
+
else {
|
|
298
|
+
blockErrors += 1;
|
|
299
|
+
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
300
|
+
}
|
|
193
301
|
validationProblems.push({
|
|
194
302
|
modelUri,
|
|
195
|
-
element:
|
|
196
|
-
property:
|
|
197
|
-
message:
|
|
303
|
+
element: focusNode,
|
|
304
|
+
property: propertyName,
|
|
305
|
+
message: describeIssue(issue),
|
|
198
306
|
});
|
|
199
|
-
continue;
|
|
200
307
|
}
|
|
201
|
-
|
|
202
|
-
const cacheKey = `${markdownUri}::${block.id}`;
|
|
203
|
-
const validateFingerprint = hashText([modelUri, modelFingerprint, shacl].join('\n'));
|
|
204
|
-
seenValidateKeys.add(cacheKey);
|
|
205
|
-
const cached = runtimeCache.validateBlockCache.get(cacheKey);
|
|
206
|
-
if (cached?.fingerprint === validateFingerprint) {
|
|
207
|
-
errors += cached.result.errors;
|
|
208
|
-
warnings += cached.result.warnings;
|
|
209
|
-
continue;
|
|
210
|
-
}
|
|
211
|
-
const result = await shaclService.validateShacl(modelUri, shacl);
|
|
212
|
-
let blockErrors = 0;
|
|
213
|
-
let blockWarnings = 0;
|
|
214
|
-
if (result.error) {
|
|
308
|
+
if (result.issues.length === 0) {
|
|
215
309
|
blockErrors += 1;
|
|
216
|
-
details.push(`Violation: ${blockLocation}:
|
|
310
|
+
details.push(`Violation: ${blockLocation}: SHACL validation failed without detailed issues.`);
|
|
217
311
|
validationProblems.push({
|
|
218
312
|
modelUri,
|
|
219
313
|
element: '-',
|
|
220
314
|
property: '-',
|
|
221
|
-
message:
|
|
315
|
+
message: 'SHACL validation failed without detailed issues.',
|
|
222
316
|
});
|
|
223
317
|
}
|
|
224
|
-
else if (!result.conforms) {
|
|
225
|
-
for (const issue of result.issues) {
|
|
226
|
-
const severityText = String(issue.severity ?? '').toLowerCase();
|
|
227
|
-
const focusNode = issue.focusNode ? shortIri(issue.focusNode) : '-';
|
|
228
|
-
const propertyName = issue.propertyName ?? (issue.path ? shortIri(issue.path) : '-');
|
|
229
|
-
const severityLabel = shortIri(issue.severity || 'Violation');
|
|
230
|
-
if (severityText.includes('warning')) {
|
|
231
|
-
blockWarnings += 1;
|
|
232
|
-
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
233
|
-
}
|
|
234
|
-
else {
|
|
235
|
-
blockErrors += 1;
|
|
236
|
-
details.push(`${severityLabel}: ${blockLocation} element=${focusNode} property=${propertyName}: ${describeIssue(issue)}`);
|
|
237
|
-
}
|
|
238
|
-
validationProblems.push({
|
|
239
|
-
modelUri,
|
|
240
|
-
element: focusNode,
|
|
241
|
-
property: propertyName,
|
|
242
|
-
message: describeIssue(issue),
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
if (result.issues.length === 0) {
|
|
246
|
-
blockErrors += 1;
|
|
247
|
-
details.push(`Violation: ${blockLocation}: SHACL validation failed without detailed issues.`);
|
|
248
|
-
validationProblems.push({
|
|
249
|
-
modelUri,
|
|
250
|
-
element: '-',
|
|
251
|
-
property: '-',
|
|
252
|
-
message: 'SHACL validation failed without detailed issues.',
|
|
253
|
-
});
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
errors += blockErrors;
|
|
257
|
-
warnings += blockWarnings;
|
|
258
|
-
if (blockErrors > 0 || blockWarnings > 0) {
|
|
259
|
-
failingItems += 1;
|
|
260
|
-
}
|
|
261
|
-
runtimeCache.validateBlockCache.set(cacheKey, {
|
|
262
|
-
fingerprint: validateFingerprint,
|
|
263
|
-
result: {
|
|
264
|
-
errors: blockErrors,
|
|
265
|
-
warnings: blockWarnings,
|
|
266
|
-
},
|
|
267
|
-
});
|
|
268
318
|
}
|
|
319
|
+
errors += blockErrors;
|
|
320
|
+
warnings += blockWarnings;
|
|
321
|
+
if (blockErrors > 0 || blockWarnings > 0) {
|
|
322
|
+
failingItems += 1;
|
|
323
|
+
}
|
|
324
|
+
runtimeCache.validateBlockCache.set(cacheKey, {
|
|
325
|
+
fingerprint: validateFingerprint,
|
|
326
|
+
result: {
|
|
327
|
+
errors: blockErrors,
|
|
328
|
+
warnings: blockWarnings,
|
|
329
|
+
},
|
|
330
|
+
});
|
|
269
331
|
}
|
|
270
332
|
for (const key of runtimeCache.validateBlockCache.keys()) {
|
|
271
333
|
if (!seenValidateKeys.has(key)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/rest/validation.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/rest/validation.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAA0B,MAAM,kBAAkB,CAAC;AAoCjF,MAAM,uBAAuB,GAAG,IAAI,OAAO,EAAkC,CAAC;AAW9E,SAAS,uBAAuB,CAAC,MAA6B;IAC1D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,SAAS;QACb,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAiC,EAAE,KAAkC;IACnG,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAQ;IACpC,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3E,OAAO,WAAW;SACb,GAAG,CAAC,CAAC,UAAe,EAAE,EAAE,CAAC;QACtB,MAAM,CAAC,UAAU,EAAE,QAAQ,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;QACjC,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,EAAE,CAAC;QAChC,MAAM,CAAC,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC;KACjC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACX,IAAI,EAAE;SACN,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC;AAED,SAAS,0BAA0B,CAAC,MAA6B;IAC7D,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,GAAG,EAAE,CAAC;YACP,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,KAAK,sBAAsB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAiC,EAAE,KAAkC;IAC5F,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,WAAW,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC;QACjB,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAAC,MAA6B;IACvE,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YAC9C,OAAO;QACX,CAAC;QACD,QAAQ,GAAG,OAAO,CAAC;IACvB,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gCAAgC,CAAC,MAA6B;IACzE,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACxB,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC;YACvC,OAAO;QACX,CAAC;QACD,QAAQ,GAAG,OAAO,CAAC;IACvB,CAAC;AACL,CAAC;AAED,SAAS,0BAA0B,CAAC,QAAiB;IACjD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACnC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACrC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,aAAa,CAAC;IACzC,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAClC,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,yBAAyB,CAAC,MAA6B;IAC5D,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAgB,CAAC;IAC5C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,IAAI,QAAQ,EAAE,CAAC;QACX,OAAO,QAAQ,CAAC;IACpB,CAAC;IACD,MAAM,OAAO,GAA2B;QACpC,kBAAkB,EAAE,IAAI,GAAG,EAAE;KAChC,CAAC;IACF,uBAAuB,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACnB,CAAC;AAED,SAAS,2BAA2B,CAAC,MAA6B;IAC9D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,SAAS;QACb,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,GAAG,EAAE,YAAY,EAAE,OAAO,KAAK,UAAU;YACzD,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACpC,CAAC,CAAC,EAAE,CAAC;QACT,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA6B,EAAE,UAAmB;IAC9E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,aAAa,GAAI,MAAM,CAAC,OAAO,CAAC,MAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACjF,IAAI,CAAC,aAAa;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,SAAS;QAChF,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,QAAQ;YAAE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,yBAAyB,CAAC,OAA8B,EAAE,UAAmB;IAClF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9C,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAClE,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACL,CAAC;IACD,OAAO,YAAY,CAAC;AACxB,CAAC;AAED,SAAS,gCAAgC,CAAC,MAA6B,EAAE,KAAwB;IAC7F,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,QAAQ,CAAC;IAC1B,CAAC;IACD,MAAM,aAAa,GAAI,MAAM,CAAC,OAAO,CAAC,MAAc,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACjF,OAAO,aAAa,EAAE,eAAe,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;AAClF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAA6B,EAAE,SAAkC,EAAE;IACnG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;IACtC,MAAM,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,gCAAgC,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,wBAAwB,EAAE,CAAC;IAElD,oCAAoC;IACpC,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,GAAG,CAAC;QAC5B,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC,CAAC,OAAO,CAAC;IACd,MAAM,WAAW,GAAsB,EAAE,CAAC;IAC1C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,OAAO,UAAU,EAAE,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,IAAI,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,CAAC,CAAC;YAChB,CAAC;iBAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,QAAQ,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,WAAW,CAAC,IAAI,CAAC;gBACb,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC;gBACrD,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC;gBAC5D,IAAI;gBACJ,QAAQ;gBACR,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,IAAI,EAAE,CAAC;gBAC1C,MAAM,EAAE,OAAO,UAAU,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;gBAC9E,IAAI,EAAE,OAAO,UAAU,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,UAAU,EAAE,IAAI,KAAK,QAAQ;oBAC9E,CAAC,CAAC,UAAU,CAAC,IAAI;oBACjB,CAAC,CAAC,SAAS;aAClB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IACD,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC7B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;WAC9B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;WACzC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;WACtB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAChC,CAAC;IAEF,OAAO;QACH,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC;QACvC,YAAY,EAAE,IAAI,CAAC,MAAM;QACzB,MAAM;QACN,QAAQ;QACR,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QAC9C,QAAQ,EAAE,WAAW;KACxB,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAA6B,EAAE,MAA+B;IAClG,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,CAAC,sBAAsB,EAAE,CAAC;IACtC,MAAM,8BAA8B,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO;YACH,OAAO,EAAE,KAAK;YACd,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC9C,KAAK,EAAE,oBAAoB,IAAI,CAAC,MAAM,iBAAiB,IAAI,CAAC,QAAQ,aAAa;SACpF,CAAC;IACN,CAAC;IACD,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAuB,CAAC;IAC9E,MAAM,YAAY,GAAG,yBAAyB,CAC1C,gBAAgB,CAAC,gBAAgB,EAAE,EACnC,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,GAAG,CAAC,EACjD,CAAC,GAAG,EAAE,EAAE,CAAC,gBAAgB,CAAC,aAAa,CAAC,GAAG,CAAC,CAC/C,CAAC;IACF,MAAM,YAAY,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,iBAAiB,GAAG,2BAA2B,CAAC,MAAM,CAAC,CAAC;IAC9D,MAAM,SAAS,GAAG,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAgB,CAAC,CAAC;IAEzE,oCAAoC;IACpC,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAChF,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,IAAI,GAAG,CAAC;QAClD,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxE,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAC;IAC3C,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,kBAAkB,GAKnB,EAAE,CAAC;IAER,KAAK,MAAM,KAAK,IAAI,kBAAkB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,gCAAgC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,SAAS;QACb,CAAC;QACD,YAAY,IAAI,CAAC,CAAC;QAClB,MAAM,aAAa,GAAG,GAAG,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9E,MAAM,QAAQ,GAAG,GAAG,KAAK,CAAC,WAAW,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1D,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAChG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,MAAM,EAAE,WAAW,KAAK,mBAAmB,EAAE,CAAC;YAC9C,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC/B,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC;YACnC,SAAS;QACb,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACxE,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,WAAW,IAAI,CAAC,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,cAAc,aAAa,KAAK,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7D,kBAAkB,CAAC,IAAI,CAAC;gBACpB,QAAQ;gBACR,OAAO,EAAE,GAAG;gBACZ,QAAQ,EAAE,GAAG;gBACb,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;aAChC,CAAC,CAAC;QACP,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC1B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChE,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBACpE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACrF,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;gBAC9D,IAAI,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBACnC,aAAa,IAAI,CAAC,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,KAAK,aAAa,YAAY,SAAS,aAAa,YAAY,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9H,CAAC;qBAAM,CAAC;oBACJ,WAAW,IAAI,CAAC,CAAC;oBACjB,OAAO,CAAC,IAAI,CAAC,GAAG,aAAa,KAAK,aAAa,YAAY,SAAS,aAAa,YAAY,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAC9H,CAAC;gBACD,kBAAkB,CAAC,IAAI,CAAC;oBACpB,QAAQ;oBACR,OAAO,EAAE,SAAS;oBAClB,QAAQ,EAAE,YAAY;oBACtB,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC;iBAChC,CAAC,CAAC;YACP,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,WAAW,IAAI,CAAC,CAAC;gBACjB,OAAO,CAAC,IAAI,CAAC,cAAc,aAAa,oDAAoD,CAAC,CAAC;gBAC9F,kBAAkB,CAAC,IAAI,CAAC;oBACpB,QAAQ;oBACR,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,GAAG;oBACb,OAAO,EAAE,kDAAkD;iBAC9D,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,MAAM,IAAI,WAAW,CAAC;QACtB,QAAQ,IAAI,aAAa,CAAC;QAC1B,IAAI,WAAW,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;YACvC,YAAY,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC1C,WAAW,EAAE,mBAAmB;YAChC,MAAM,EAAE;gBACJ,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,aAAa;aAC1B;SACJ,CAAC,CAAC;IACP,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC;QACvD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,YAAY,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChD,CAAC;IACL,CAAC;IACD,OAAO;QACH,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC;QACvC,YAAY;QACZ,MAAM;QACN,QAAQ;QACR,YAAY;QACZ,OAAO;QACP,kBAAkB;QAClB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;KACjD,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,IAAI,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxD,OAAO,UAAU,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,SAAS,aAAa,CAAC,KAA4C;IAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnD,IAAI,OAAO,IAAI,OAAO,KAAK,mBAAmB,EAAE,CAAC;QAC7C,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,OAAO,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC/B,CAAC"}
|
package/out/server.js
CHANGED
|
@@ -9,6 +9,7 @@ import { createConnection } from 'vscode-languageserver/node.js';
|
|
|
9
9
|
import { startOmlLanguageServer } from './lsp/language-server.js';
|
|
10
10
|
import { startOmlRestServer } from './rest/server.js';
|
|
11
11
|
import { OmlFeatureGate } from './auth/feature-gate.js';
|
|
12
|
+
import { ReasoningServerNotifications } from './lsp/protocol/reasoner-protocol.js';
|
|
12
13
|
const SERVER_DEBUG_ENABLED = false;
|
|
13
14
|
function debugServerStartup(event, details = {}) {
|
|
14
15
|
if (!SERVER_DEBUG_ENABLED) {
|
|
@@ -62,9 +63,15 @@ function parseRemoteOptions(argv) {
|
|
|
62
63
|
let portValue;
|
|
63
64
|
let workspaceValue;
|
|
64
65
|
let tokenValue;
|
|
66
|
+
let entitlementExpiryValue;
|
|
67
|
+
let entitlementFeaturesValue;
|
|
68
|
+
let entitlementTokenValue;
|
|
69
|
+
let deviceIdValue;
|
|
70
|
+
let nodeIpc = false;
|
|
65
71
|
for (let index = 0; index < argv.length; index += 1) {
|
|
66
72
|
const arg = argv[index];
|
|
67
73
|
if (arg === '--node-ipc' || arg.startsWith('--clientProcessId=')) {
|
|
74
|
+
nodeIpc = true;
|
|
68
75
|
continue;
|
|
69
76
|
}
|
|
70
77
|
if (arg === '--port' || arg === '-p' || arg.startsWith('--port=')) {
|
|
@@ -88,6 +95,22 @@ function parseRemoteOptions(argv) {
|
|
|
88
95
|
}
|
|
89
96
|
continue;
|
|
90
97
|
}
|
|
98
|
+
if (arg.startsWith('--entitlement-expiry=')) {
|
|
99
|
+
entitlementExpiryValue = readOptionValue(argv, index, ['--entitlement-expiry']).trim();
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (arg.startsWith('--entitlement-features=')) {
|
|
103
|
+
entitlementFeaturesValue = readOptionValue(argv, index, ['--entitlement-features']).trim();
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
if (arg.startsWith('--entitlement-token=')) {
|
|
107
|
+
entitlementTokenValue = readOptionValue(argv, index, ['--entitlement-token']).trim();
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (arg.startsWith('--device-id=')) {
|
|
111
|
+
deviceIdValue = readOptionValue(argv, index, ['--device-id']).trim();
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
91
114
|
if (arg.startsWith('-')) {
|
|
92
115
|
throw new Error(`Unknown option '${arg}'.`);
|
|
93
116
|
}
|
|
@@ -97,10 +120,31 @@ function parseRemoteOptions(argv) {
|
|
|
97
120
|
const port = Number.isFinite(rawPort) ? Math.max(0, Math.min(65535, Math.trunc(rawPort))) : 8080;
|
|
98
121
|
const workspaceRoot = workspaceValue && workspaceValue.length > 0 ? workspaceValue : process.cwd();
|
|
99
122
|
const token = tokenValue && tokenValue.length > 0 ? tokenValue : undefined;
|
|
100
|
-
|
|
123
|
+
let entitlementExpiry;
|
|
124
|
+
let entitlementFeatureIds;
|
|
125
|
+
if (entitlementExpiryValue) {
|
|
126
|
+
const parsed = Number(entitlementExpiryValue);
|
|
127
|
+
if (Number.isFinite(parsed) && parsed > Date.now()) {
|
|
128
|
+
entitlementExpiry = parsed;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (entitlementFeaturesValue) {
|
|
132
|
+
try {
|
|
133
|
+
const parsed = JSON.parse(entitlementFeaturesValue);
|
|
134
|
+
if (Array.isArray(parsed) && parsed.every((x) => typeof x === 'string')) {
|
|
135
|
+
entitlementFeatureIds = parsed;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
// Malformed — ignore.
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const entitlementToken = entitlementTokenValue && entitlementTokenValue.length > 0 ? entitlementTokenValue : undefined;
|
|
143
|
+
const deviceId = deviceIdValue && deviceIdValue.length > 0 ? deviceIdValue : undefined;
|
|
144
|
+
return { host, port, workspaceRoot, token, nodeIpc, entitlementExpiry, entitlementFeatureIds, entitlementToken, deviceId };
|
|
101
145
|
}
|
|
102
|
-
function startIpcLanguageServerIfAvailable(featureGate) {
|
|
103
|
-
if (typeof process.send !== 'function') {
|
|
146
|
+
function startIpcLanguageServerIfAvailable(featureGate, nodeIpc) {
|
|
147
|
+
if (!nodeIpc || typeof process.send !== 'function') {
|
|
104
148
|
return undefined;
|
|
105
149
|
}
|
|
106
150
|
const connection = createConnection();
|
|
@@ -139,6 +183,9 @@ async function removeServerLock(lockFile) {
|
|
|
139
183
|
debugServerStartup('lock.remove.begin', { lockFile });
|
|
140
184
|
try {
|
|
141
185
|
await fs.rm(lockFile, { force: true });
|
|
186
|
+
// Remove the workspace folder if it is now empty.
|
|
187
|
+
const workspaceDir = path.dirname(lockFile);
|
|
188
|
+
await fs.rm(workspaceDir, { recursive: true, force: true });
|
|
142
189
|
debugServerStartup('lock.remove.success', { lockFile });
|
|
143
190
|
}
|
|
144
191
|
catch (error) {
|
|
@@ -176,9 +223,41 @@ export function runServerCli(argv = process.argv.slice(2)) {
|
|
|
176
223
|
return;
|
|
177
224
|
}
|
|
178
225
|
void (async () => {
|
|
179
|
-
const
|
|
226
|
+
const inExtensionMode = options.nodeIpc;
|
|
227
|
+
const runtimeTool = inExtensionMode ? 'oml-code' : 'oml-cli';
|
|
180
228
|
debugServerStartup('featureGate.create', { tool: runtimeTool });
|
|
181
|
-
|
|
229
|
+
// Both extension and CLI pass cached entitlements as startup args.
|
|
230
|
+
// The extension manages persistence via globalState; the CLI manages it
|
|
231
|
+
// via its own credential store. The server never writes to any store itself.
|
|
232
|
+
const initialCachedExpiry = options.entitlementExpiry;
|
|
233
|
+
const initialCachedFeatureIds = options.entitlementFeatureIds;
|
|
234
|
+
const deviceId = options.deviceId;
|
|
235
|
+
// Use a mutable reference so the onEntitlementsCached callback can reach the
|
|
236
|
+
// IPC connection that is set up just after featureGate is constructed.
|
|
237
|
+
let ipcConnection;
|
|
238
|
+
const featureGate = new OmlFeatureGate({
|
|
239
|
+
initialAccessToken: options.token,
|
|
240
|
+
tool: runtimeTool,
|
|
241
|
+
deviceId,
|
|
242
|
+
initialCachedExpiry,
|
|
243
|
+
initialCachedFeatureIds,
|
|
244
|
+
onEntitlementsCached: (expiry, featureIds, entitlementsToken) => {
|
|
245
|
+
if (ipcConnection) {
|
|
246
|
+
// Extension mode — notify the extension to persist in globalState.
|
|
247
|
+
const params = { expiry, featureIds, entitlementsToken };
|
|
248
|
+
void ipcConnection.sendNotification(ReasoningServerNotifications.entitlementsCached, params);
|
|
249
|
+
}
|
|
250
|
+
else if (typeof process.send === 'function') {
|
|
251
|
+
// CLI mode — send over the private IPC channel so the CLI can persist it.
|
|
252
|
+
process.send({ type: 'entitlementsCached', expiry, featureIds, entitlementsToken });
|
|
253
|
+
}
|
|
254
|
+
},
|
|
255
|
+
});
|
|
256
|
+
// IPC server is started before primeEntitlements so ipcConnection is set
|
|
257
|
+
// when onEntitlementsCached fires during the initial network sync.
|
|
258
|
+
const ipcServer = startIpcLanguageServerIfAvailable(featureGate, options.nodeIpc);
|
|
259
|
+
const owner = ipcServer ? 'extension' : 'cli';
|
|
260
|
+
ipcConnection = ipcServer?.connection;
|
|
182
261
|
if (options.token) {
|
|
183
262
|
try {
|
|
184
263
|
debugServerStartup('entitlements.prime.begin');
|
|
@@ -191,14 +270,11 @@ export function runServerCli(argv = process.argv.slice(2)) {
|
|
|
191
270
|
process.stderr.write(`[oml-server] initial entitlement sync failed: ${message}\n`);
|
|
192
271
|
}
|
|
193
272
|
}
|
|
194
|
-
const ipcServer = startIpcLanguageServerIfAvailable(featureGate);
|
|
195
|
-
const owner = ipcServer ? 'extension' : 'cli';
|
|
196
273
|
debugServerStartup('rest.start.begin', { owner });
|
|
197
274
|
const { server, updateToken } = await startOmlRestServer({
|
|
198
275
|
host: options.host,
|
|
199
276
|
port: options.port,
|
|
200
277
|
workspaceRoot: options.workspaceRoot,
|
|
201
|
-
watchWorkspace: true,
|
|
202
278
|
authToken: options.token,
|
|
203
279
|
runtime: ipcServer?.runtime,
|
|
204
280
|
featureGate,
|
|
@@ -215,6 +291,21 @@ export function runServerCli(argv = process.argv.slice(2)) {
|
|
|
215
291
|
}
|
|
216
292
|
});
|
|
217
293
|
}
|
|
294
|
+
else if (typeof process.send === 'function') {
|
|
295
|
+
process.on('message', (msg) => {
|
|
296
|
+
if (msg && typeof msg === 'object' && msg.type === 'tokenRefreshed') {
|
|
297
|
+
const accessToken = msg.accessToken;
|
|
298
|
+
if (typeof accessToken === 'string' && accessToken) {
|
|
299
|
+
debugServerStartup('token.refresh.notification', { received: 'yes' });
|
|
300
|
+
void updateToken(accessToken).then(() => debugServerStartup('token.refresh.sync.success'), (error) => {
|
|
301
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
302
|
+
debugServerStartup('token.refresh.sync.error', { error: message });
|
|
303
|
+
process.stderr.write(`[oml-server] token refresh entitlement sync failed: ${message}\n`);
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
});
|
|
308
|
+
}
|
|
218
309
|
const listeningPort = resolveListeningPort(server);
|
|
219
310
|
debugServerStartup('rest.start.success', { host: options.host, requestedPort: options.port, listeningPort });
|
|
220
311
|
const lockFile = await writeServerLock(options.workspaceRoot, listeningPort, owner);
|