@oml/server 0.14.0 → 0.14.2

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 (48) hide show
  1. package/out/auth/feature-gate.d.ts +23 -0
  2. package/out/auth/feature-gate.js +172 -0
  3. package/out/auth/feature-gate.js.map +1 -0
  4. package/out/auth/feature-policy.d.ts +13 -0
  5. package/out/auth/feature-policy.js +38 -0
  6. package/out/auth/feature-policy.js.map +1 -0
  7. package/out/cli.d.ts +1 -0
  8. package/{src/cli.ts → out/cli.js} +45 -55
  9. package/out/cli.js.map +1 -0
  10. package/out/index.d.ts +7 -0
  11. package/{src/index.ts → out/index.js} +1 -1
  12. package/out/index.js.map +1 -0
  13. package/out/lsp/diagram-server.d.ts +6 -0
  14. package/out/lsp/diagram-server.js +36 -0
  15. package/out/lsp/diagram-server.js.map +1 -0
  16. package/out/lsp/language-server.d.ts +15 -0
  17. package/{src/lsp/language-server.ts → out/lsp/language-server.js} +95 -120
  18. package/out/lsp/language-server.js.map +1 -0
  19. package/out/lsp/protocol/browser-fs-protocol.d.ts +14 -0
  20. package/{src/lsp/protocol/browser-fs-protocol.ts → out/lsp/protocol/browser-fs-protocol.js} +2 -14
  21. package/out/lsp/protocol/browser-fs-protocol.js.map +1 -0
  22. package/{src/lsp/protocol/reasoner-protocol.ts → out/lsp/protocol/reasoner-protocol.d.ts} +10 -24
  23. package/out/lsp/protocol/reasoner-protocol.js +12 -0
  24. package/out/lsp/protocol/reasoner-protocol.js.map +1 -0
  25. package/out/lsp/providers/browser-fs-provider.d.ts +21 -0
  26. package/{src/lsp/providers/browser-fs-provider.ts → out/lsp/providers/browser-fs-provider.js} +22 -34
  27. package/out/lsp/providers/browser-fs-provider.js.map +1 -0
  28. package/out/lsp/providers/hybrid-fs-provider.d.ts +28 -0
  29. package/{src/lsp/providers/hybrid-fs-provider.ts → out/lsp/providers/hybrid-fs-provider.js} +22 -44
  30. package/out/lsp/providers/hybrid-fs-provider.js.map +1 -0
  31. package/out/rest/export.d.ts +16 -0
  32. package/{src/rest/export.ts → out/rest/export.js} +14 -35
  33. package/out/rest/export.js.map +1 -0
  34. package/out/rest/routes.d.ts +47 -0
  35. package/{src/rest/routes.ts → out/rest/routes.js} +40 -35
  36. package/out/rest/routes.js.map +1 -0
  37. package/out/rest/server.d.ts +17 -0
  38. package/{src/rest/server.ts → out/rest/server.js} +232 -485
  39. package/out/rest/server.js.map +1 -0
  40. package/out/rest/template.d.ts +18 -0
  41. package/{src/rest/template.ts → out/rest/template.js} +21 -80
  42. package/out/rest/template.js.map +1 -0
  43. package/out/rest/validation.d.ts +49 -0
  44. package/{src/rest/validation.ts → out/rest/validation.js} +59 -163
  45. package/out/rest/validation.js.map +1 -0
  46. package/package.json +9 -4
  47. package/src/lsp/diagram-server.ts +0 -48
  48. package/tsconfig.json +0 -22
@@ -1,78 +1,30 @@
1
1
  // Copyright (c) 2026 Modelware. All rights reserved.
2
-
3
2
  import { DocumentState, URI } from 'langium';
4
3
  import { startLanguageServer } from 'langium/lsp';
5
- import type { DefaultSharedModuleContext } from 'langium/lsp';
6
- import type { Connection } from 'vscode-languageserver';
7
- import {
8
- collectOntologyMembers,
9
- getIriForNode,
10
- getOntologyModelIndex,
11
- iriFragment,
12
- isDescription,
13
- isOntology,
14
- type OmlFuzzyIndexedEntry,
15
- isVocabulary,
16
- registerOmlCandidatesRequests,
17
- registerOmlEditRequests,
18
- tokenizeForFuzzy,
19
- } from '@oml/language';
4
+ import { collectOntologyMembers, getIriForNode, getOntologyModelIndex, iriFragment, isDescription, isOntology, isVocabulary, registerOmlCandidatesRequests, registerOmlEditRequests, tokenizeForFuzzy, } from '@oml/language';
20
5
  import { createOwlServices, detectSparqlKind, registerShaclValidationRequests } from '@oml/owl';
21
6
  import uFuzzy from '@leeoniya/ufuzzy';
22
- import {
23
- MarkdownExecutionRequest,
24
- MarkdownExecutor,
25
- type MdExecuteBlocksParams,
26
- type MdExecuteBlocksResult
27
- } from '@oml/markdown';
7
+ import { MarkdownExecutionRequest, MarkdownExecutor } from '@oml/markdown';
28
8
  import { registerDiagramRequests } from './diagram-server.js';
29
- import {
30
- ReasoningNotifications,
31
- ReasoningRequests,
32
- type ActiveDocumentParams,
33
- type FuzzySearchParams,
34
- type FuzzySearchResult,
35
- type ResolveModelUriParams,
36
- type ResolveModelUriResult,
37
- type SemanticChangedParams,
38
- type SparqlQueryParams,
39
- type SparqlQueryResult,
40
- type SparqlTermDto,
41
- } from './protocol/reasoner-protocol.js';
42
-
43
- export interface OmlLanguageServerStartOptions {
44
- fileSystem: Omit<DefaultSharedModuleContext, 'connection'>;
45
- registerDiagramHandlers?: boolean;
46
- suppressTransientDiagnostics?: boolean;
47
- installNodeProcessHandlers?: boolean;
48
- }
49
-
50
- export interface OmlLanguageServerRuntime {
51
- shared: any;
52
- Oml: any;
53
- }
54
-
55
- const workspacePreloadState = new WeakMap<object, { completed: boolean; promise?: Promise<void> }>();
56
-
57
- function formatError(error: unknown, depth = 0): string {
9
+ import { ReasoningNotifications, ReasoningRequests, } from './protocol/reasoner-protocol.js';
10
+ import { OmlAccessError, requiredFeatureForLspMethod } from '../auth/feature-policy.js';
11
+ const workspacePreloadState = new WeakMap();
12
+ function formatError(error, depth = 0) {
58
13
  if (!(error instanceof Error)) {
59
14
  return String(error);
60
15
  }
61
-
62
16
  const indent = depth > 0 ? '\n' + ' '.repeat(depth) : '';
63
17
  const stack = error.stack ? `${indent}${error.stack}` : `${indent}${error.message}`;
64
- const cause = (error as any).cause;
18
+ const cause = error.cause;
65
19
  if (cause === undefined) {
66
20
  return stack;
67
21
  }
68
22
  return `${stack}\n${' '.repeat(depth)}cause: ${formatError(cause, depth + 1)}`;
69
23
  }
70
-
71
- export function startOmlLanguageServer(connection: Connection, options: OmlLanguageServerStartOptions): OmlLanguageServerRuntime {
72
- const logServerError = (scope: string, error: unknown): void => {
24
+ export function startOmlLanguageServer(connection, options) {
25
+ const logServerError = (scope, error) => {
73
26
  connection.console.error(`[oml] ${scope}: ${formatError(error)}`);
74
27
  };
75
-
76
28
  if (options.installNodeProcessHandlers) {
77
29
  process.on('unhandledRejection', (reason) => {
78
30
  logServerError('Unhandled rejection', reason);
@@ -81,9 +33,8 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
81
33
  logServerError('Uncaught exception', error);
82
34
  });
83
35
  }
84
-
85
36
  const sendDiagnostics = connection.sendDiagnostics.bind(connection);
86
- connection.sendDiagnostics = ((params: any): Promise<void> => {
37
+ connection.sendDiagnostics = ((params) => {
87
38
  if (!params?.uri) {
88
39
  return sendDiagnostics(params);
89
40
  }
@@ -91,38 +42,67 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
91
42
  return sendDiagnostics({ ...params, diagnostics: [] });
92
43
  }
93
44
  return sendDiagnostics(params);
94
- }) as any;
95
-
45
+ });
46
+ if (options.featureGate) {
47
+ const baseOnRequest = connection.onRequest.bind(connection);
48
+ connection.onRequest = ((typeOrMethod, handler) => {
49
+ const method = typeof typeOrMethod === 'string'
50
+ ? typeOrMethod
51
+ : (typeof typeOrMethod?.method === 'string' ? typeOrMethod.method : '');
52
+ const featureId = requiredFeatureForLspMethod(method);
53
+ if (!featureId) {
54
+ return baseOnRequest(typeOrMethod, handler);
55
+ }
56
+ return baseOnRequest(typeOrMethod, async (...args) => {
57
+ try {
58
+ return await options.featureGate.runWithFeature(featureId, async () => await handler(...args), { transport: 'lsp', method });
59
+ }
60
+ catch (error) {
61
+ if (error instanceof OmlAccessError) {
62
+ throw new Error(error.message);
63
+ }
64
+ throw error;
65
+ }
66
+ });
67
+ });
68
+ }
96
69
  const { shared, Oml } = createOwlServices({ connection, ...options.fileSystem });
97
-
98
70
  if (options.registerDiagramHandlers !== false) {
99
- registerDiagramRequests(connection as any, shared, Oml);
71
+ registerDiagramRequests(connection, shared, Oml);
100
72
  }
101
- registerOmlCandidatesRequests(connection as any, shared);
102
- registerOmlEditRequests(connection as any, shared);
103
- registerShaclValidationRequests(connection as any, Oml);
104
-
73
+ registerOmlCandidatesRequests(connection, shared);
74
+ registerOmlEditRequests(connection, shared);
75
+ registerShaclValidationRequests(connection, Oml);
105
76
  {
106
- const reasoningService = Oml.reasoning.ReasoningService as any;
107
- reasoningService.onSemanticChanged((modelUris: string[]) => {
108
- const params: SemanticChangedParams = { modelUris };
77
+ const reasoningService = Oml.reasoning.ReasoningService;
78
+ reasoningService.onSemanticChanged((modelUris) => {
79
+ const params = { modelUris };
109
80
  connection.sendNotification(ReasoningNotifications.semanticChanged, params);
110
81
  });
111
82
  }
112
- connection.onNotification(ReasoningNotifications.markDocumentActive, ({ modelUri }: ActiveDocumentParams) => {
113
- const reasoningService = Oml.reasoning.ReasoningService as any;
83
+ connection.onNotification(ReasoningNotifications.markDocumentActive, ({ modelUri }) => {
84
+ const reasoningService = Oml.reasoning.ReasoningService;
114
85
  reasoningService.markDocumentActive(modelUri);
115
86
  });
116
- connection.onNotification(ReasoningNotifications.markDocumentInactive, ({ modelUri }: ActiveDocumentParams) => {
117
- const reasoningService = Oml.reasoning.ReasoningService as any;
87
+ connection.onNotification(ReasoningNotifications.markDocumentInactive, ({ modelUri }) => {
88
+ const reasoningService = Oml.reasoning.ReasoningService;
118
89
  reasoningService.markDocumentInactive(modelUri);
119
90
  });
120
- connection.onRequest(MarkdownExecutionRequest, async (params: MdExecuteBlocksParams): Promise<MdExecuteBlocksResult> => {
91
+ connection.onNotification('$/tokenRefreshed', (params) => {
92
+ if (!options.featureGate) {
93
+ return;
94
+ }
95
+ options.featureGate.setAccessToken(params?.accessToken);
96
+ void options.featureGate.primeEntitlements().catch((error) => {
97
+ logServerError('token refresh entitlement sync failed', error);
98
+ });
99
+ });
100
+ connection.onRequest(MarkdownExecutionRequest, async (params) => {
121
101
  try {
122
- const reasoningService = Oml.reasoning.ReasoningService as any;
123
- const ontologyIndex = getOntologyModelIndex(shared as any);
124
- const knownNamespaceCache = new Map<string, boolean>();
125
- const isKnownOntologyIriNamespace = (ontologyIri: string): boolean => {
102
+ const reasoningService = Oml.reasoning.ReasoningService;
103
+ const ontologyIndex = getOntologyModelIndex(shared);
104
+ const knownNamespaceCache = new Map();
105
+ const isKnownOntologyIriNamespace = (ontologyIri) => {
126
106
  const normalized = ontologyIri.trim().replace(/[\/#]+$/, '');
127
107
  if (!normalized) {
128
108
  return false;
@@ -148,7 +128,8 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
148
128
  isKnownOntologyIriNamespace,
149
129
  });
150
130
  return await executor.executeBlocks(params);
151
- } catch (error) {
131
+ }
132
+ catch (error) {
152
133
  logServerError('MarkdownExecutionRequest failed', error);
153
134
  return {
154
135
  results: params.blocks.map((block) => ({
@@ -161,9 +142,9 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
161
142
  };
162
143
  }
163
144
  });
164
- connection.onRequest(ReasoningRequests.sparqlQuery, async (params: SparqlQueryParams): Promise<SparqlQueryResult> => {
145
+ connection.onRequest(ReasoningRequests.sparqlQuery, async (params) => {
165
146
  try {
166
- const reasoningService = Oml.reasoning.ReasoningService as any;
147
+ const reasoningService = Oml.reasoning.ReasoningService;
167
148
  const kind = detectSparqlKind(params.sparql);
168
149
  await reasoningService.ensureQueryContext(params.modelUri);
169
150
  const sparqlService = reasoningService.getSparqlService();
@@ -173,7 +154,7 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
173
154
  success: result.success,
174
155
  kind,
175
156
  warnings: result.warnings ?? [],
176
- rows: result.rows.map((row: Map<string, any>) => toRowDto(row)),
157
+ rows: result.rows.map((row) => toRowDto(row)),
177
158
  error: result.error,
178
159
  };
179
160
  }
@@ -193,7 +174,7 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
193
174
  success: result.success,
194
175
  kind,
195
176
  warnings: result.warnings ?? [],
196
- quads: result.quads.map((quad: any) => ({
177
+ quads: result.quads.map((quad) => ({
197
178
  subject: quad.subject.value,
198
179
  predicate: quad.predicate.value,
199
180
  object: quad.object.value,
@@ -208,7 +189,8 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
208
189
  warnings: [],
209
190
  error: 'Unsupported or unknown SPARQL query kind.',
210
191
  };
211
- } catch (error) {
192
+ }
193
+ catch (error) {
212
194
  logServerError('oml/query failed', error);
213
195
  return {
214
196
  success: false,
@@ -218,22 +200,21 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
218
200
  };
219
201
  }
220
202
  });
221
-
222
- connection.onRequest(ReasoningRequests.fuzzySearch, async (params: FuzzySearchParams): Promise<FuzzySearchResult> => {
203
+ connection.onRequest(ReasoningRequests.fuzzySearch, async (params) => {
223
204
  try {
224
205
  const text = (params.text ?? '').trim();
225
206
  if (!text) {
226
207
  return { success: true, candidates: [] };
227
208
  }
228
209
  const limit = Math.max(1, Math.min(50, params.limit ?? 12));
229
- const ontologyIndex = getOntologyModelIndex(shared as any);
230
- const langiumDocuments: any = shared.workspace.LangiumDocuments;
210
+ const ontologyIndex = getOntologyModelIndex(shared);
211
+ const langiumDocuments = shared.workspace.LangiumDocuments;
231
212
  const allDocs = langiumDocuments.all ?? [];
232
- const iterable: any[] = Array.isArray(allDocs)
213
+ const iterable = Array.isArray(allDocs)
233
214
  ? allDocs
234
- : (typeof allDocs?.toArray === 'function' ? allDocs.toArray() : Array.from(allDocs as Iterable<any>));
235
- const modelUris: string[] = [];
236
- const candidateByIri = new Map<string, { iri: string; label?: string }>();
215
+ : (typeof allDocs?.toArray === 'function' ? allDocs.toArray() : Array.from(allDocs));
216
+ const modelUris = [];
217
+ const candidateByIri = new Map();
237
218
  for (const doc of iterable) {
238
219
  const root = doc?.parseResult?.value;
239
220
  if (!root || !isOntology(root) || (!isVocabulary(root) && !isDescription(root))) {
@@ -254,8 +235,7 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
254
235
  entry.label = label;
255
236
  candidateByIri.set(iri, entry);
256
237
  }
257
-
258
- const indexedEntries: OmlFuzzyIndexedEntry[] = [...candidateByIri.values()].map((entry) => ({
238
+ const indexedEntries = [...candidateByIri.values()].map((entry) => ({
259
239
  iri: entry.iri,
260
240
  label: entry.label,
261
241
  fragment: iriFragment(entry.iri),
@@ -271,11 +251,11 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
271
251
  const info = uf.info(filtered, haystack, text);
272
252
  const order = info ? uf.sort(info, haystack, text) : null;
273
253
  const ranked = (order ?? filtered.map((_, index) => index))
274
- .map((index) => filtered[index]!)
254
+ .map((index) => filtered[index])
275
255
  .slice(0, limit);
276
256
  const queryTokens = tokenizeForFuzzy(text).slice(0, 6);
277
257
  const candidates = ranked.map((entryIndex, index) => {
278
- const entry = indexedEntries[entryIndex]!;
258
+ const entry = indexedEntries[entryIndex];
279
259
  const fragment = entry.fragment.toLowerCase();
280
260
  const lowerLabel = (entry.label ?? '').toLowerCase();
281
261
  const lowerInput = text.toLowerCase();
@@ -308,13 +288,13 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
308
288
  };
309
289
  });
310
290
  return { success: true, candidates };
311
- } catch (error) {
291
+ }
292
+ catch (error) {
312
293
  logServerError('oml/fuzzysearch failed', error);
313
294
  return { success: false, candidates: [], error: error instanceof Error ? error.message : String(error) };
314
295
  }
315
296
  });
316
-
317
- connection.onRequest(ReasoningRequests.resolveModelUri, async (params: ResolveModelUriParams): Promise<ResolveModelUriResult> => {
297
+ connection.onRequest(ReasoningRequests.resolveModelUri, async (params) => {
318
298
  await ensureWorkspaceIndexed(shared);
319
299
  const ontologyIri = typeof params?.ontologyIri === 'string' ? params.ontologyIri.trim() : '';
320
300
  if (!ontologyIri) {
@@ -324,38 +304,35 @@ export function startOmlLanguageServer(connection: Connection, options: OmlLangu
324
304
  ? params.referencingUri.trim()
325
305
  : undefined;
326
306
  const normalized = normalizeOntologyIri(ontologyIri);
327
- const ontologyIndex = getOntologyModelIndex(shared as any);
307
+ const ontologyIndex = getOntologyModelIndex(shared);
328
308
  const modelUri = ontologyIndex.resolveModelUri(normalized, referencingUri);
329
309
  if (modelUri) {
330
310
  await ensureResolvedModelDocumentLoaded(shared, modelUri);
331
311
  }
332
312
  return modelUri ? { modelUri } : {};
333
313
  });
334
-
335
314
  startLanguageServer(shared, {
336
315
  CodeActionProvider: DocumentState.IndexedReferences
337
316
  });
338
317
  return { shared, Oml };
339
318
  }
340
-
341
- function normalizeOntologyIri(value: string): string {
319
+ function normalizeOntologyIri(value) {
342
320
  return value.replace(/^<|>$/g, '').replace(/[\/#]+$/, '');
343
321
  }
344
-
345
- function isTransientDiagnosticsUri(uri: string): boolean {
322
+ function isTransientDiagnosticsUri(uri) {
346
323
  try {
347
324
  const scheme = URI.parse(uri).scheme;
348
325
  return scheme === 'git'
349
326
  || scheme === 'chat-editing-text-model'
350
327
  || scheme === 'chat-editing-snapshot-text-model'
351
328
  || scheme === 'vscode-chat-code-block';
352
- } catch {
329
+ }
330
+ catch {
353
331
  return false;
354
332
  }
355
333
  }
356
-
357
- async function ensureWorkspaceIndexed(sharedServices: any): Promise<void> {
358
- const key = sharedServices as object;
334
+ async function ensureWorkspaceIndexed(sharedServices) {
335
+ const key = sharedServices;
359
336
  const existing = workspacePreloadState.get(key);
360
337
  if (existing?.completed) {
361
338
  return;
@@ -371,7 +348,7 @@ async function ensureWorkspaceIndexed(sharedServices: any): Promise<void> {
371
348
  const builder = sharedServices.workspace.DocumentBuilder;
372
349
  await workspace.ready;
373
350
  const folderUris = workspace.workspaceFolders ?? [];
374
- const omlUris = new Set<string>();
351
+ const omlUris = new Set();
375
352
  for (const folder of folderUris) {
376
353
  const entries = await workspace.searchFolder(URI.parse(folder.uri));
377
354
  for (const entry of entries) {
@@ -382,9 +359,7 @@ async function ensureWorkspaceIndexed(sharedServices: any): Promise<void> {
382
359
  }
383
360
  }
384
361
  if (omlUris.size > 0) {
385
- const docs = await Promise.all(
386
- [...omlUris].map((uri) => documents.getOrCreateDocument(URI.parse(uri)))
387
- );
362
+ const docs = await Promise.all([...omlUris].map((uri) => documents.getOrCreateDocument(URI.parse(uri))));
388
363
  await builder.build(docs, { validation: { categories: ['built-in', 'fast'] } });
389
364
  }
390
365
  state.completed = true;
@@ -395,22 +370,21 @@ async function ensureWorkspaceIndexed(sharedServices: any): Promise<void> {
395
370
  workspacePreloadState.set(key, state);
396
371
  await promise;
397
372
  }
398
-
399
- async function ensureResolvedModelDocumentLoaded(sharedServices: any, modelUri: string): Promise<void> {
373
+ async function ensureResolvedModelDocumentLoaded(sharedServices, modelUri) {
400
374
  try {
401
375
  const documents = sharedServices.workspace.LangiumDocuments;
402
376
  const uri = URI.parse(modelUri);
403
377
  if (!documents.getDocument(uri)) {
404
378
  await documents.getOrCreateDocument(uri);
405
379
  }
406
- } catch {
380
+ }
381
+ catch {
407
382
  // Resolution must stay deterministic and non-throwing;
408
383
  // loading failures are surfaced later by query/edit operations.
409
384
  }
410
385
  }
411
-
412
- function toRowDto(row: Map<string, any>): Record<string, SparqlTermDto> {
413
- const result: Record<string, SparqlTermDto> = {};
386
+ function toRowDto(row) {
387
+ const result = {};
414
388
  for (const [name, term] of row.entries()) {
415
389
  result[name] = {
416
390
  termType: term.termType,
@@ -421,3 +395,4 @@ function toRowDto(row: Map<string, any>): Record<string, SparqlTermDto> {
421
395
  }
422
396
  return result;
423
397
  }
398
+ //# sourceMappingURL=language-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-server.js","sourceRoot":"","sources":["../../src/lsp/language-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare const FsRequests: {
2
+ readonly readFile: "oml/fs/readFile";
3
+ readonly stat: "oml/fs/stat";
4
+ readonly readDirectory: "oml/fs/readDirectory";
5
+ readonly getWorkspaceFolders: "oml/fs/getWorkspaceFolders";
6
+ };
7
+ export type FsNodeType = 'file' | 'directory' | 'unknown';
8
+ export interface FsStatResult {
9
+ type: FsNodeType;
10
+ }
11
+ export interface FsDirectoryEntry {
12
+ uri: string;
13
+ type: FsNodeType;
14
+ }
@@ -1,21 +1,9 @@
1
1
  // Copyright (c) 2026 Modelware. All rights reserved.
2
-
3
2
  export const FsRequests = {
4
3
  readFile: 'oml/fs/readFile',
5
4
  stat: 'oml/fs/stat',
6
5
  readDirectory: 'oml/fs/readDirectory',
7
6
  // Must match GET_WORKSPACE_FOLDERS_REQUEST in oml-workspace.ts
8
7
  getWorkspaceFolders: 'oml/fs/getWorkspaceFolders'
9
- } as const;
10
-
11
- export type FsNodeType = 'file' | 'directory' | 'unknown';
12
-
13
- export interface FsStatResult {
14
- type: FsNodeType;
15
- }
16
-
17
- export interface FsDirectoryEntry {
18
- uri: string;
19
- type: FsNodeType;
20
- }
21
-
8
+ };
9
+ //# sourceMappingURL=browser-fs-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-fs-protocol.js","sourceRoot":"","sources":["../../../src/lsp/protocol/browser-fs-protocol.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,QAAQ,EAAE,iBAAiB;IAC3B,IAAI,EAAE,aAAa;IACnB,aAAa,EAAE,sBAAsB;IACrC,+DAA+D;IAC/D,mBAAmB,EAAE,4BAA4B;CAC3C,CAAC"}
@@ -1,44 +1,34 @@
1
- // Copyright (c) 2026 Modelware. All rights reserved.
2
-
3
- export const ReasoningNotifications = {
4
- markDocumentActive: 'oml/reasoning/markDocumentActive',
5
- markDocumentInactive: 'oml/reasoning/markDocumentInactive',
6
- semanticChanged: 'oml/reasoning/semanticChanged',
7
- } as const;
8
-
9
- export const ReasoningRequests = {
10
- sparqlQuery: 'oml/query',
11
- fuzzySearch: 'oml/fuzzysearch',
12
- resolveModelUri: 'oml/resolveModelUri',
13
- } as const;
14
-
1
+ export declare const ReasoningNotifications: {
2
+ readonly markDocumentActive: "oml/reasoning/markDocumentActive";
3
+ readonly markDocumentInactive: "oml/reasoning/markDocumentInactive";
4
+ readonly semanticChanged: "oml/reasoning/semanticChanged";
5
+ };
6
+ export declare const ReasoningRequests: {
7
+ readonly sparqlQuery: "oml/query";
8
+ readonly fuzzySearch: "oml/fuzzysearch";
9
+ readonly resolveModelUri: "oml/resolveModelUri";
10
+ };
15
11
  export interface ActiveDocumentParams {
16
12
  modelUri: string;
17
13
  }
18
-
19
14
  export interface SemanticChangedParams {
20
15
  modelUris: string[];
21
16
  }
22
-
23
17
  export interface ResolveModelUriParams {
24
18
  ontologyIri: string;
25
19
  referencingUri?: string;
26
20
  }
27
-
28
21
  export interface ResolveModelUriResult {
29
22
  modelUri?: string;
30
23
  }
31
-
32
24
  export interface SparqlQueryParams {
33
25
  modelUri: string;
34
26
  sparql: string;
35
27
  }
36
-
37
28
  export interface FuzzySearchParams {
38
29
  text: string;
39
30
  limit?: number;
40
31
  }
41
-
42
32
  export interface FuzzySearchCandidate {
43
33
  iri: string;
44
34
  label?: string;
@@ -54,22 +44,18 @@ export interface FuzzySearchCandidate {
54
44
  labelTokenHits: number;
55
45
  };
56
46
  }
57
-
58
47
  export interface FuzzySearchResult {
59
48
  success: boolean;
60
49
  candidates: FuzzySearchCandidate[];
61
50
  error?: string;
62
51
  }
63
-
64
52
  export interface SparqlTermDto {
65
53
  termType: 'NamedNode' | 'Literal' | 'BlankNode';
66
54
  value: string;
67
55
  datatype?: string;
68
56
  language?: string;
69
57
  }
70
-
71
58
  export type SparqlRowDto = Record<string, SparqlTermDto>;
72
-
73
59
  export interface SparqlQueryResult {
74
60
  success: boolean;
75
61
  kind: 'select' | 'ask' | 'construct' | 'describe' | 'unknown';
@@ -0,0 +1,12 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ export const ReasoningNotifications = {
3
+ markDocumentActive: 'oml/reasoning/markDocumentActive',
4
+ markDocumentInactive: 'oml/reasoning/markDocumentInactive',
5
+ semanticChanged: 'oml/reasoning/semanticChanged',
6
+ };
7
+ export const ReasoningRequests = {
8
+ sparqlQuery: 'oml/query',
9
+ fuzzySearch: 'oml/fuzzysearch',
10
+ resolveModelUri: 'oml/resolveModelUri',
11
+ };
12
+ //# sourceMappingURL=reasoner-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoner-protocol.js","sourceRoot":"","sources":["../../../src/lsp/protocol/reasoner-protocol.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC,kBAAkB,EAAE,kCAAkC;IACtD,oBAAoB,EAAE,oCAAoC;IAC1D,eAAe,EAAE,+BAA+B;CAC1C,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC7B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,iBAAiB;IAC9B,eAAe,EAAE,qBAAqB;CAChC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { FileSystemNode, FileSystemProvider } from 'langium';
2
+ import { URI } from 'langium';
3
+ import type { Connection } from 'vscode-languageserver';
4
+ declare class BrowserFileSystemProvider implements FileSystemProvider {
5
+ private readonly connection;
6
+ constructor(connection: Connection);
7
+ stat(uri: URI): Promise<FileSystemNode>;
8
+ statSync(): FileSystemNode;
9
+ exists(uri: URI): Promise<boolean>;
10
+ existsSync(): boolean;
11
+ readBinary(uri: URI): Promise<Uint8Array>;
12
+ readBinarySync(): Uint8Array;
13
+ readFile(uri: URI): Promise<string>;
14
+ readFileSync(): string;
15
+ readDirectory(uri: URI): Promise<FileSystemNode[]>;
16
+ readDirectorySync(): FileSystemNode[];
17
+ }
18
+ export declare const BrowserFileSystem: (connection: Connection) => {
19
+ fileSystemProvider: () => BrowserFileSystemProvider;
20
+ };
21
+ export {};