@oml/server 0.14.1 → 0.14.3

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  # @oml/server
4
4
 
5
- Standalone OML REST server runtime package.
5
+ Standalone OML server runtime package.
6
6
 
7
7
  The only user-facing CLI is `oml` from `@oml/cli`. Use `oml server start`, `oml server stop`, and `oml server status` to manage the server.
8
8
 
@@ -0,0 +1,27 @@
1
+ import { type OmlFeatureGateLike } from './feature-policy.js';
2
+ export declare class OmlFeatureGate implements OmlFeatureGateLike {
3
+ private currentAccessToken?;
4
+ private readonly apiBaseUrl;
5
+ private readonly tool;
6
+ private runtimeToken?;
7
+ private client;
8
+ private readonly storage;
9
+ private reinitializePromise?;
10
+ private entitlementSyncPromise?;
11
+ private entitlementState;
12
+ private entitlementsExpireAtMs;
13
+ constructor(options?: {
14
+ apiBaseUrl?: string;
15
+ initialAccessToken?: string;
16
+ tool?: string;
17
+ });
18
+ setAccessToken(token: string | undefined): void;
19
+ primeEntitlements(tokenOverride?: string): Promise<void>;
20
+ runWithFeature<T>(featureId: string, action: () => Promise<T>, metadata?: Record<string, unknown>): Promise<T>;
21
+ dispose(): Promise<void>;
22
+ private ensureClient;
23
+ private reinitializeClient;
24
+ private ensureEntitlementsAvailable;
25
+ private startEntitlementSync;
26
+ private isCredentialRevoked;
27
+ }
@@ -0,0 +1,247 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ import { ApiError, OmlClient } from '@oml/platform';
3
+ import { OmlAccessError } from './feature-policy.js';
4
+ const DEFAULT_API_BASE_URL = 'https://oml-platform-worker.melaasar.workers.dev';
5
+ const ENTITLEMENT_TTL_MS = 8 * 60 * 60 * 1000;
6
+ export class OmlFeatureGate {
7
+ constructor(options) {
8
+ this.client = null;
9
+ this.storage = new InMemoryTokenStorage();
10
+ this.entitlementState = 'idle';
11
+ this.entitlementsExpireAtMs = 0;
12
+ this.apiBaseUrl = normalizeApiBaseUrl(options?.apiBaseUrl);
13
+ this.currentAccessToken = normalizeToken(options?.initialAccessToken);
14
+ this.tool = normalizeTool(options?.tool);
15
+ if (this.currentAccessToken) {
16
+ this.entitlementState = 'pending';
17
+ }
18
+ }
19
+ setAccessToken(token) {
20
+ const normalized = normalizeToken(token);
21
+ const changed = normalized !== this.currentAccessToken;
22
+ this.currentAccessToken = normalized;
23
+ if (!changed) {
24
+ return;
25
+ }
26
+ this.runtimeToken = undefined;
27
+ this.entitlementsExpireAtMs = 0;
28
+ this.entitlementState = normalized ? 'pending' : 'idle';
29
+ }
30
+ async primeEntitlements(tokenOverride) {
31
+ const accessToken = normalizeToken(tokenOverride) ?? this.currentAccessToken;
32
+ if (!accessToken) {
33
+ throw authRequiredError();
34
+ }
35
+ await this.ensureClient(accessToken);
36
+ await this.startEntitlementSync(accessToken, true);
37
+ }
38
+ async runWithFeature(featureId, action, metadata) {
39
+ const accessToken = normalizeToken(this.currentAccessToken);
40
+ if (!accessToken) {
41
+ throw authRequiredError();
42
+ }
43
+ const client = await this.ensureClient(accessToken);
44
+ await this.ensureEntitlementsAvailable(accessToken);
45
+ if (!client.hasFeature(featureId)) {
46
+ throw notEntitledError(featureId);
47
+ }
48
+ const done = client.trackInvocation(featureId, metadata);
49
+ try {
50
+ const result = await action();
51
+ done();
52
+ return result;
53
+ }
54
+ catch (error) {
55
+ done(error);
56
+ throw error;
57
+ }
58
+ }
59
+ async dispose() {
60
+ await this.reinitializePromise?.catch(() => undefined);
61
+ await this.entitlementSyncPromise?.catch(() => undefined);
62
+ const activeClient = this.client;
63
+ this.client = null;
64
+ this.runtimeToken = undefined;
65
+ this.entitlementsExpireAtMs = 0;
66
+ this.entitlementState = this.currentAccessToken ? 'pending' : 'idle';
67
+ if (activeClient) {
68
+ await activeClient.dispose();
69
+ }
70
+ }
71
+ async ensureClient(accessToken) {
72
+ if (this.client && this.runtimeToken === accessToken) {
73
+ return this.client;
74
+ }
75
+ if (this.reinitializePromise) {
76
+ await this.reinitializePromise;
77
+ if (this.client && this.runtimeToken === accessToken) {
78
+ return this.client;
79
+ }
80
+ }
81
+ this.reinitializePromise = this.reinitializeClient(accessToken).finally(() => {
82
+ this.reinitializePromise = undefined;
83
+ });
84
+ await this.reinitializePromise;
85
+ if (!this.client || this.runtimeToken !== accessToken) {
86
+ throw new Error('Failed to initialize OML platform runtime.');
87
+ }
88
+ return this.client;
89
+ }
90
+ async reinitializeClient(token) {
91
+ this.storage.setToken(token);
92
+ const previous = this.client;
93
+ this.client = null;
94
+ this.runtimeToken = undefined;
95
+ this.entitlementsExpireAtMs = 0;
96
+ this.entitlementState = 'pending';
97
+ if (previous) {
98
+ await previous.dispose();
99
+ }
100
+ const config = {
101
+ apiBaseUrl: this.apiBaseUrl,
102
+ tool: this.tool,
103
+ storage: this.storage,
104
+ auth: {
105
+ method: 'oauth',
106
+ getToken: async () => this.storage.getToken(),
107
+ refreshToken: async () => {
108
+ throw authRequiredError('Authentication expired. Run login again and retry.');
109
+ },
110
+ },
111
+ debug: false,
112
+ };
113
+ this.client = new OmlClient(config);
114
+ this.runtimeToken = token;
115
+ }
116
+ async ensureEntitlementsAvailable(accessToken) {
117
+ if (this.entitlementState === 'credential_revoked') {
118
+ throw entitlementsUnavailableError();
119
+ }
120
+ if (this.entitlementState === 'ready' && Date.now() < this.entitlementsExpireAtMs) {
121
+ return;
122
+ }
123
+ if (this.entitlementState === 'pending' && this.entitlementsExpireAtMs === 0) {
124
+ void this.startEntitlementSync(accessToken, true);
125
+ throw entitlementsPendingError();
126
+ }
127
+ if (this.entitlementsExpireAtMs > 0 && Date.now() >= this.entitlementsExpireAtMs) {
128
+ await this.startEntitlementSync(accessToken, false);
129
+ if (this.isCredentialRevoked()) {
130
+ throw entitlementsUnavailableError();
131
+ }
132
+ if (this.entitlementState !== 'ready' || Date.now() >= this.entitlementsExpireAtMs) {
133
+ throw entitlementsPendingError('OML entitlements are unavailable. Retry once connectivity is restored.');
134
+ }
135
+ return;
136
+ }
137
+ await this.startEntitlementSync(accessToken, this.entitlementsExpireAtMs === 0);
138
+ if (this.isCredentialRevoked()) {
139
+ throw entitlementsUnavailableError();
140
+ }
141
+ if (this.entitlementState !== 'ready') {
142
+ throw entitlementsPendingError();
143
+ }
144
+ }
145
+ async startEntitlementSync(accessToken, initial) {
146
+ if (this.entitlementSyncPromise) {
147
+ if (initial && this.entitlementsExpireAtMs === 0) {
148
+ return;
149
+ }
150
+ await this.entitlementSyncPromise;
151
+ return;
152
+ }
153
+ this.entitlementState = 'pending';
154
+ const client = await this.ensureClient(accessToken);
155
+ this.entitlementSyncPromise = (async () => {
156
+ try {
157
+ if (initial) {
158
+ await client.initialize();
159
+ }
160
+ else {
161
+ await client.refreshEntitlements();
162
+ }
163
+ if (this.currentAccessToken !== accessToken) {
164
+ return;
165
+ }
166
+ this.entitlementState = 'ready';
167
+ this.entitlementsExpireAtMs = Date.now() + ENTITLEMENT_TTL_MS;
168
+ }
169
+ catch (error) {
170
+ if (this.currentAccessToken !== accessToken) {
171
+ return;
172
+ }
173
+ if (isUnauthorizedError(error)) {
174
+ this.entitlementState = 'credential_revoked';
175
+ this.entitlementsExpireAtMs = 0;
176
+ throw entitlementsUnavailableError();
177
+ }
178
+ // Fail closed: clear cached entitlements on refresh failure.
179
+ this.entitlementState = 'pending';
180
+ this.entitlementsExpireAtMs = 0;
181
+ throw error;
182
+ }
183
+ })().finally(() => {
184
+ this.entitlementSyncPromise = undefined;
185
+ });
186
+ await this.entitlementSyncPromise;
187
+ }
188
+ isCredentialRevoked() {
189
+ return this.entitlementState === 'credential_revoked';
190
+ }
191
+ }
192
+ function authRequiredError(message = 'OML authentication is required. Run login and retry.') {
193
+ return new OmlAccessError(message, 401, 'AUTH_REQUIRED');
194
+ }
195
+ function entitlementsPendingError(message = 'OML entitlements are still loading. Retry in a moment.') {
196
+ return new OmlAccessError(message, 503, 'ENTITLEMENTS_PENDING', true);
197
+ }
198
+ function entitlementsUnavailableError() {
199
+ return new OmlAccessError('OML entitlements are unavailable because the stored credential was revoked. Sign in again and retry.', 403, 'ENTITLEMENTS_UNAVAILABLE');
200
+ }
201
+ function notEntitledError(featureId) {
202
+ return new OmlAccessError(`Feature '${featureId}' is not enabled for this account.`, 403, 'NOT_ENTITLED');
203
+ }
204
+ function isUnauthorizedError(error) {
205
+ if (error instanceof OmlAccessError) {
206
+ return error.code === 'AUTH_REQUIRED' || error.code === 'ENTITLEMENTS_UNAVAILABLE';
207
+ }
208
+ if (error instanceof ApiError) {
209
+ return error.status === 401;
210
+ }
211
+ return false;
212
+ }
213
+ function normalizeToken(value) {
214
+ const trimmed = typeof value === 'string' ? value.trim() : '';
215
+ return trimmed.length > 0 ? trimmed : undefined;
216
+ }
217
+ function normalizeApiBaseUrl(value) {
218
+ const trimmed = typeof value === 'string' ? value.trim() : '';
219
+ const base = trimmed.length > 0 ? trimmed : DEFAULT_API_BASE_URL;
220
+ return base.replace(/\/+$/, '');
221
+ }
222
+ function normalizeTool(value) {
223
+ const trimmed = typeof value === 'string' ? value.trim() : '';
224
+ return trimmed.length > 0 ? trimmed : 'oml-cli';
225
+ }
226
+ class InMemoryTokenStorage {
227
+ constructor() {
228
+ this.entries = new Map();
229
+ }
230
+ async get(key) {
231
+ return this.entries.get(key) ?? null;
232
+ }
233
+ async set(key, value) {
234
+ this.entries.set(key, value);
235
+ }
236
+ async delete(key) {
237
+ this.entries.delete(key);
238
+ }
239
+ setToken(token) {
240
+ this.entries.set(InMemoryTokenStorage.AccessTokenKey, token);
241
+ }
242
+ getToken() {
243
+ return this.entries.get(InMemoryTokenStorage.AccessTokenKey) ?? '';
244
+ }
245
+ }
246
+ InMemoryTokenStorage.AccessTokenKey = 'access_token';
247
+ //# sourceMappingURL=feature-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-gate.js","sourceRoot":"","sources":["../../src/auth/feature-gate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export declare class OmlAccessError extends Error {
2
+ readonly statusCode: number;
3
+ readonly code: 'AUTH_REQUIRED' | 'ENTITLEMENTS_PENDING' | 'ENTITLEMENTS_UNAVAILABLE' | 'NOT_ENTITLED';
4
+ readonly retryable: boolean;
5
+ constructor(message: string, statusCode: number, code: 'AUTH_REQUIRED' | 'ENTITLEMENTS_PENDING' | 'ENTITLEMENTS_UNAVAILABLE' | 'NOT_ENTITLED', retryable?: boolean);
6
+ }
7
+ export interface OmlFeatureGateLike {
8
+ setAccessToken(token: string | undefined): void;
9
+ primeEntitlements(tokenOverride?: string): Promise<void>;
10
+ runWithFeature<T>(featureId: string, action: () => Promise<T>, metadata?: Record<string, unknown>): Promise<T>;
11
+ dispose(): Promise<void>;
12
+ }
13
+ export declare function requiredFeatureForRestOperation(operationId: string): string | undefined;
14
+ export declare function requiredFeatureForLspMethod(method: string): string | undefined;
@@ -0,0 +1,47 @@
1
+ // Copyright (c) 2026 Modelware. All rights reserved.
2
+ const REST_FEATURES_BY_OPERATION = {
3
+ query: 'oml-query',
4
+ update: 'oml-update',
5
+ fuzzysearch: 'oml-read',
6
+ models: 'oml-read',
7
+ lint: 'oml-lint',
8
+ reason: 'oml-reason',
9
+ validate: 'oml-validate',
10
+ render: 'oml-render',
11
+ export: 'oml-export',
12
+ };
13
+ const LSP_FEATURES_BY_METHOD = {
14
+ 'oml/query': 'oml-query',
15
+ 'oml/fuzzysearch': 'oml-text',
16
+ 'oml/resolveModelUri': 'oml-markdown',
17
+ 'oml/completion': 'oml-text',
18
+ 'oml/update': 'oml-update',
19
+ 'oml/validate': 'oml-validate',
20
+ 'oml/markdown': 'oml-markdown',
21
+ 'oml/diagram/model': 'oml-diagram',
22
+ 'oml/definition': 'oml-text',
23
+ 'oml/labels': 'oml-text',
24
+ 'textDocument/completion': 'oml-text',
25
+ 'textDocument/hover': 'oml-text',
26
+ 'textDocument/definition': 'oml-text',
27
+ 'textDocument/references': 'oml-text',
28
+ 'textDocument/documentSymbol': 'oml-text',
29
+ 'textDocument/codeAction': 'oml-text',
30
+ 'textDocument/rename': 'oml-update',
31
+ };
32
+ export class OmlAccessError extends Error {
33
+ constructor(message, statusCode, code, retryable = false) {
34
+ super(message);
35
+ this.name = 'OmlAccessError';
36
+ this.statusCode = statusCode;
37
+ this.code = code;
38
+ this.retryable = retryable;
39
+ }
40
+ }
41
+ export function requiredFeatureForRestOperation(operationId) {
42
+ return REST_FEATURES_BY_OPERATION[operationId];
43
+ }
44
+ export function requiredFeatureForLspMethod(method) {
45
+ return LSP_FEATURES_BY_METHOD[method];
46
+ }
47
+ //# sourceMappingURL=feature-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feature-policy.js","sourceRoot":"","sources":["../../src/auth/feature-policy.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,MAAM,0BAA0B,GAA2B;IACvD,KAAK,EAAE,WAAW;IAClB,MAAM,EAAE,YAAY;IACpB,WAAW,EAAE,UAAU;IACvB,MAAM,EAAE,UAAU;IAClB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,cAAc;IACxB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;CACvB,CAAC;AAEF,MAAM,sBAAsB,GAA2B;IACnD,WAAW,EAAE,WAAW;IACxB,iBAAiB,EAAE,UAAU;IAC7B,qBAAqB,EAAE,cAAc;IACrC,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,YAAY;IAC1B,cAAc,EAAE,cAAc;IAC9B,cAAc,EAAE,cAAc;IAC9B,mBAAmB,EAAE,aAAa;IAClC,gBAAgB,EAAE,UAAU;IAC5B,YAAY,EAAE,UAAU;IACxB,yBAAyB,EAAE,UAAU;IACrC,oBAAoB,EAAE,UAAU;IAChC,yBAAyB,EAAE,UAAU;IACrC,yBAAyB,EAAE,UAAU;IACrC,6BAA6B,EAAE,UAAU;IACzC,yBAAyB,EAAE,UAAU;IACrC,qBAAqB,EAAE,YAAY;CACtC,CAAC;AAEF,MAAM,OAAO,cAAe,SAAQ,KAAK;IAKrC,YACI,OAAe,EACf,UAAkB,EAClB,IAA4F,EAC5F,SAAS,GAAG,KAAK;QAEjB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;CACJ;AAaD,MAAM,UAAU,+BAA+B,CAAC,WAAmB;IAC/D,OAAO,0BAA0B,CAAC,WAAW,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAc;IACtD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC"}
package/out/cli.js CHANGED
@@ -7,6 +7,18 @@ import { NodeFileSystem } from 'langium/node';
7
7
  import { createConnection } from 'vscode-languageserver/node.js';
8
8
  import { startOmlLanguageServer } from './lsp/language-server.js';
9
9
  import { startOmlRestServer } from './rest/server.js';
10
+ import { OmlFeatureGate } from './auth/feature-gate.js';
11
+ const SERVER_DEBUG_ENABLED = process.env.OML_SERVER_DEBUG_STARTUP === '1';
12
+ function debugServerStartup(event, details = {}) {
13
+ if (!SERVER_DEBUG_ENABLED) {
14
+ return;
15
+ }
16
+ const fields = Object.entries(details)
17
+ .map(([key, value]) => `${key}=${String(value)}`)
18
+ .join(' ');
19
+ const suffix = fields.length > 0 ? ` ${fields}` : '';
20
+ process.stderr.write(`[oml-server][debug] ${new Date().toISOString()} pid=${process.pid} event=${event}${suffix}\n`);
21
+ }
10
22
  function formatStartupError(error, host, port) {
11
23
  if (error && typeof error === 'object' && 'code' in error) {
12
24
  const code = error.code;
@@ -72,7 +84,7 @@ function parseRemoteOptions(argv) {
72
84
  const token = tokenValue && tokenValue.length > 0 ? tokenValue : undefined;
73
85
  return { host, port, workspaceRoot, token };
74
86
  }
75
- function startIpcLanguageServerIfAvailable() {
87
+ function startIpcLanguageServerIfAvailable(featureGate) {
76
88
  if (typeof process.send !== 'function') {
77
89
  return undefined;
78
90
  }
@@ -82,6 +94,7 @@ function startIpcLanguageServerIfAvailable() {
82
94
  registerDiagramHandlers: true,
83
95
  suppressTransientDiagnostics: true,
84
96
  installNodeProcessHandlers: true,
97
+ featureGate,
85
98
  });
86
99
  return { connection, runtime };
87
100
  }
@@ -94,11 +107,21 @@ function lockFilePathForWorkspace(workspaceRoot) {
94
107
  async function writeServerLock(workspaceRoot, port, owner) {
95
108
  const lockFile = lockFilePathForWorkspace(workspaceRoot);
96
109
  await fs.mkdir(path.dirname(lockFile), { recursive: true });
97
- await fs.writeFile(lockFile, JSON.stringify({ port, pid: process.pid, owner }) + '\n', 'utf-8');
110
+ await fs.writeFile(lockFile, JSON.stringify({ port, pid: process.pid, owner, workspaceRoot }) + '\n', 'utf-8');
111
+ debugServerStartup('lock.write', { lockFile, owner, port, workspaceRoot });
98
112
  return lockFile;
99
113
  }
100
114
  async function removeServerLock(lockFile) {
101
- await fs.rm(lockFile, { force: true });
115
+ debugServerStartup('lock.remove.begin', { lockFile });
116
+ try {
117
+ await fs.rm(lockFile, { force: true });
118
+ debugServerStartup('lock.remove.success', { lockFile });
119
+ }
120
+ catch (error) {
121
+ const message = error instanceof Error ? error.message : String(error);
122
+ debugServerStartup('lock.remove.error', { lockFile, error: message });
123
+ throw error;
124
+ }
102
125
  }
103
126
  function resolveListeningPort(server) {
104
127
  const address = server.address();
@@ -108,56 +131,94 @@ function resolveListeningPort(server) {
108
131
  return address.port;
109
132
  }
110
133
  export function runServerCli(argv = process.argv.slice(2)) {
134
+ debugServerStartup('bootstrap.begin', { argv: argv.join(' ') });
111
135
  let options;
112
136
  try {
113
137
  options = parseRemoteOptions(argv);
138
+ debugServerStartup('options.parsed', {
139
+ host: options.host,
140
+ requestedPort: options.port,
141
+ workspaceRoot: path.resolve(options.workspaceRoot),
142
+ tokenProvided: options.token ? 'yes' : 'no',
143
+ mode: typeof process.send === 'function' ? 'extension' : 'daemon',
144
+ });
114
145
  }
115
146
  catch (error) {
116
147
  const message = error instanceof Error ? error.message : String(error);
148
+ debugServerStartup('bootstrap.options.error', { error: message });
117
149
  process.stderr.write(`[oml-server] REST startup failed: ${message}\n`);
118
150
  process.exitCode = 1;
119
151
  process.exit();
120
152
  return;
121
153
  }
122
- const ipcServer = startIpcLanguageServerIfAvailable();
123
- const owner = ipcServer ? 'extension' : 'daemon';
124
- void startOmlRestServer({
125
- host: options.host,
126
- port: options.port,
127
- workspaceRoot: options.workspaceRoot,
128
- watchWorkspace: true,
129
- authToken: options.token,
130
- runtime: ipcServer?.runtime,
131
- }).then(async ({ server, updateToken }) => {
154
+ void (async () => {
155
+ const runtimeTool = typeof process.send === 'function' ? 'oml-code' : 'oml-cli';
156
+ debugServerStartup('featureGate.create', { tool: runtimeTool });
157
+ const featureGate = new OmlFeatureGate({ initialAccessToken: options.token, tool: runtimeTool });
158
+ if (options.token) {
159
+ try {
160
+ debugServerStartup('entitlements.prime.begin');
161
+ await featureGate.primeEntitlements();
162
+ debugServerStartup('entitlements.prime.success');
163
+ }
164
+ catch (error) {
165
+ const message = error instanceof Error ? error.message : String(error);
166
+ debugServerStartup('entitlements.prime.error', { error: message });
167
+ process.stderr.write(`[oml-server] initial entitlement sync failed: ${message}\n`);
168
+ }
169
+ }
170
+ const ipcServer = startIpcLanguageServerIfAvailable(featureGate);
171
+ const owner = ipcServer ? 'extension' : 'daemon';
172
+ debugServerStartup('rest.start.begin', { owner });
173
+ const { server, updateToken } = await startOmlRestServer({
174
+ host: options.host,
175
+ port: options.port,
176
+ workspaceRoot: options.workspaceRoot,
177
+ watchWorkspace: true,
178
+ authToken: options.token,
179
+ runtime: ipcServer?.runtime,
180
+ featureGate,
181
+ });
132
182
  if (ipcServer) {
133
183
  ipcServer.connection.onNotification('$/tokenRefreshed', (params) => {
134
184
  if (params?.accessToken) {
135
- updateToken(params.accessToken);
185
+ debugServerStartup('token.refresh.notification', { received: 'yes' });
186
+ void updateToken(params.accessToken).then(() => debugServerStartup('token.refresh.sync.success'), (error) => {
187
+ const message = error instanceof Error ? error.message : String(error);
188
+ debugServerStartup('token.refresh.sync.error', { error: message });
189
+ process.stderr.write(`[oml-server] token refresh entitlement sync failed: ${message}\n`);
190
+ });
136
191
  }
137
192
  });
138
193
  }
139
194
  const listeningPort = resolveListeningPort(server);
195
+ debugServerStartup('rest.start.success', { host: options.host, requestedPort: options.port, listeningPort });
140
196
  const lockFile = await writeServerLock(options.workspaceRoot, listeningPort, owner);
141
197
  let shuttingDown = false;
142
- const shutdown = (exitCode) => {
198
+ const shutdown = (exitCode, reason) => {
143
199
  if (shuttingDown) {
200
+ debugServerStartup('shutdown.ignored', { reason, exitCode });
144
201
  return;
145
202
  }
146
203
  shuttingDown = true;
204
+ debugServerStartup('shutdown.begin', { reason, exitCode, lockFile });
147
205
  server.close(() => {
148
206
  void removeServerLock(lockFile).finally(() => {
207
+ debugServerStartup('shutdown.exit', { reason, exitCode });
149
208
  process.exit(exitCode);
150
209
  });
151
210
  });
152
211
  };
153
- process.once('SIGINT', () => shutdown(0));
154
- process.once('SIGTERM', () => shutdown(0));
212
+ process.once('SIGINT', () => shutdown(0, 'sigint'));
213
+ process.once('SIGTERM', () => shutdown(0, 'sigterm'));
155
214
  server.once('close', () => {
215
+ debugServerStartup('server.close.event', { lockFile });
156
216
  void removeServerLock(lockFile);
157
217
  });
158
218
  process.stdout.write(`[oml-server] REST listening on http://${options.host}:${listeningPort}\n`);
159
- }).catch((error) => {
219
+ })().catch((error) => {
160
220
  const message = formatStartupError(error, options.host, options.port);
221
+ debugServerStartup('rest.start.error', { error: message, host: options.host, requestedPort: options.port });
161
222
  process.stderr.write(`[oml-server] REST startup failed: ${message}\n`);
162
223
  process.exitCode = 1;
163
224
  process.exit();
package/out/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/out/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './lsp/language-server.js';
2
2
  export * from './lsp/diagram-server.js';
3
3
  export * from './rest/server.js';
4
+ export * from './auth/feature-gate.js';
4
5
  export * from './lsp/providers/browser-fs-provider.js';
5
6
  export * from './lsp/providers/hybrid-fs-provider.js';
6
7
  export * from './lsp/protocol/reasoner-protocol.js';
package/out/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  export * from './lsp/language-server.js';
3
3
  export * from './lsp/diagram-server.js';
4
4
  export * from './rest/server.js';
5
+ export * from './auth/feature-gate.js';
5
6
  export * from './lsp/providers/browser-fs-provider.js';
6
7
  export * from './lsp/providers/hybrid-fs-provider.js';
7
8
  export * from './lsp/protocol/reasoner-protocol.js';
package/out/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wCAAwC,CAAC;AACvD,cAAc,uCAAuC,CAAC;AACtD,cAAc,qCAAqC,CAAC;AACpD,cAAc,uCAAuC,CAAC"}
@@ -1,10 +1,12 @@
1
1
  import type { DefaultSharedModuleContext } from 'langium/lsp';
2
- import type { Connection } from 'vscode-languageserver';
2
+ import { type Connection } from 'vscode-languageserver';
3
+ import { type OmlFeatureGateLike } from '../auth/feature-policy.js';
3
4
  export interface OmlLanguageServerStartOptions {
4
5
  fileSystem: Omit<DefaultSharedModuleContext, 'connection'>;
5
6
  registerDiagramHandlers?: boolean;
6
7
  suppressTransientDiagnostics?: boolean;
7
8
  installNodeProcessHandlers?: boolean;
9
+ featureGate?: OmlFeatureGateLike;
8
10
  }
9
11
  export interface OmlLanguageServerRuntime {
10
12
  shared: any;