@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 +1 -1
- package/out/auth/feature-gate.d.ts +27 -0
- package/out/auth/feature-gate.js +247 -0
- package/out/auth/feature-gate.js.map +1 -0
- package/out/auth/feature-policy.d.ts +14 -0
- package/out/auth/feature-policy.js +47 -0
- package/out/auth/feature-policy.js.map +1 -0
- package/out/cli.js +79 -18
- package/out/cli.js.map +1 -1
- package/out/index.d.ts +1 -0
- package/out/index.js +1 -0
- package/out/index.js.map +1 -1
- package/out/lsp/language-server.d.ts +3 -1
- package/out/lsp/language-server.js +54 -0
- package/out/lsp/language-server.js.map +1 -1
- package/out/lsp/protocol/reasoner-protocol.d.ts +14 -0
- package/out/lsp/protocol/reasoner-protocol.js +1 -0
- package/out/lsp/protocol/reasoner-protocol.js.map +1 -1
- package/out/rest/routes.d.ts +2 -9
- package/out/rest/routes.js +406 -15
- package/out/rest/routes.js.map +1 -1
- package/out/rest/server.d.ts +3 -1
- package/out/rest/server.js +465 -66
- package/out/rest/server.js.map +1 -1
- package/package.json +11 -8
package/README.md
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
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
|
|
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;
|