@oml/cli 0.14.2 → 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/out/auth/auth.d.ts +3 -3
- package/out/auth/auth.js +232 -97
- package/out/auth/auth.js.map +1 -1
- package/out/auth/platform.d.ts +1 -1
- package/out/auth/platform.js +4 -26
- package/out/auth/platform.js.map +1 -1
- package/out/cli.js +59 -81
- package/out/cli.js.map +1 -1
- package/out/commands/server/actions.d.ts +3 -3
- package/out/commands/server/actions.js +87 -22
- package/out/commands/server/actions.js.map +1 -1
- package/out/commands/server/require.js +1 -1
- package/out/commands/server/require.js.map +1 -1
- package/out/commands/server/rest.js +103 -28
- package/out/commands/server/rest.js.map +1 -1
- package/package.json +4 -3
- package/src/auth/auth.ts +261 -115
- package/src/auth/platform.ts +4 -30
- package/src/cli.ts +62 -87
- package/src/commands/server/actions.ts +107 -26
- package/src/commands/server/require.ts +1 -1
- package/src/commands/server/rest.ts +119 -29
package/out/auth/auth.d.ts
CHANGED
|
@@ -5,14 +5,14 @@ export type OmlCliServerAuthSnapshot = {
|
|
|
5
5
|
expiresAtMs?: number;
|
|
6
6
|
};
|
|
7
7
|
export declare class OmlCliAuthService {
|
|
8
|
-
login(
|
|
8
|
+
login(_options: LoginOptions): Promise<void>;
|
|
9
9
|
logout(): Promise<void>;
|
|
10
10
|
whoami(): Promise<void>;
|
|
11
11
|
ensureAuthenticated(operationName: string): Promise<void>;
|
|
12
12
|
getAccessToken(): Promise<string>;
|
|
13
13
|
refreshAccessToken(): Promise<string>;
|
|
14
14
|
getServerAuthSnapshot(): Promise<OmlCliServerAuthSnapshot>;
|
|
15
|
-
|
|
16
|
-
private
|
|
15
|
+
private tryGetValidSnapshot;
|
|
16
|
+
private refreshCredential;
|
|
17
17
|
}
|
|
18
18
|
export {};
|
package/out/auth/auth.js
CHANGED
|
@@ -4,6 +4,7 @@ import chalk from 'chalk';
|
|
|
4
4
|
import * as fs from 'node:fs/promises';
|
|
5
5
|
import * as os from 'node:os';
|
|
6
6
|
import * as path from 'node:path';
|
|
7
|
+
import keytar from 'keytar';
|
|
7
8
|
import { DEFAULT_API_BASE_URL, DEFAULT_SUPABASE_ANON_KEY, DEFAULT_SUPABASE_URL } from './constants.js';
|
|
8
9
|
const GITHUB_DEVICE_CODE_URL = 'https://github.com/login/device/code';
|
|
9
10
|
const GITHUB_TOKEN_URL = 'https://github.com/login/oauth/access_token';
|
|
@@ -12,119 +13,209 @@ const DEFAULT_GITHUB_CLIENT_ID = 'Ov23liQkHYczdOAvHp5P';
|
|
|
12
13
|
const API_BASE_URL_ENV = 'OML_PLATFORM_API_URL';
|
|
13
14
|
const SUPABASE_URL_ENV = 'OML_SUPABASE_URL';
|
|
14
15
|
const SUPABASE_ANON_KEY_ENV = 'OML_SUPABASE_ANON_KEY';
|
|
16
|
+
const API_KEY_ENV = 'OML_PLATFORM_API_KEY';
|
|
17
|
+
const KEYCHAIN_SERVICE = 'oml-code';
|
|
18
|
+
const ACCESS_TOKEN_KEY = 'oml.cli.access_token';
|
|
19
|
+
const REFRESH_TOKEN_KEY = 'oml.cli.refresh_token';
|
|
20
|
+
const EXPIRES_AT_KEY = 'oml.cli.expires_at';
|
|
21
|
+
const PROFILE_PATH = path.join(os.homedir(), '.oml', 'cli-profile.json');
|
|
22
|
+
const LOCK_PATH = path.join(os.homedir(), '.oml', 'credentials.lock');
|
|
23
|
+
const SESSION_EXPIRATION_LEEWAY_MS = 20000;
|
|
24
|
+
const LOCK_TIMEOUT_MS = 5000;
|
|
25
|
+
const LOCK_POLL_INTERVAL_MS = 200;
|
|
15
26
|
export class OmlCliAuthService {
|
|
16
|
-
async login(
|
|
17
|
-
const
|
|
18
|
-
|
|
27
|
+
async login(_options) {
|
|
28
|
+
const apiKey = process.env[API_KEY_ENV]?.trim();
|
|
29
|
+
if (apiKey) {
|
|
30
|
+
console.error(chalk.yellow('OML_PLATFORM_API_KEY is set and will take precedence over stored OAuth credentials. ' +
|
|
31
|
+
'Unset it to use interactive CLI login.'));
|
|
32
|
+
console.error('Run `oml whoami` to inspect the currently effective authentication mode.');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const existing = await this.tryGetValidSnapshot();
|
|
36
|
+
if (existing) {
|
|
37
|
+
const profile = await readProfile();
|
|
38
|
+
console.error(chalk.green(`Already signed in as ${profile?.userLabel ?? profile?.email ?? profile?.userId ?? 'current user'}.`));
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const session = await authenticateWithGitHub();
|
|
42
|
+
await writeCredential({
|
|
43
|
+
accessToken: session.accessToken,
|
|
44
|
+
refreshToken: session.refreshToken,
|
|
45
|
+
expiresAtMs: session.expiresAtMs,
|
|
46
|
+
});
|
|
47
|
+
await writeProfile({
|
|
48
|
+
provider: session.provider,
|
|
49
|
+
userId: session.userId,
|
|
50
|
+
userLabel: session.userLabel,
|
|
51
|
+
email: session.email,
|
|
52
|
+
tier: session.tier,
|
|
53
|
+
signedInAt: new Date().toISOString(),
|
|
54
|
+
});
|
|
19
55
|
const summary = session.userLabel ?? session.email ?? 'signed-in user';
|
|
20
56
|
console.error(chalk.green(`Signed in as ${summary} via ${session.provider}.`));
|
|
21
57
|
}
|
|
22
58
|
async logout() {
|
|
23
|
-
await
|
|
24
|
-
|
|
59
|
+
const activeServers = await listActiveServers();
|
|
60
|
+
await deleteCredential();
|
|
61
|
+
await deleteProfile();
|
|
62
|
+
if (activeServers.length > 0) {
|
|
63
|
+
console.error(chalk.yellow('Stored OAuth credentials were cleared. Running servers were not stopped:'));
|
|
64
|
+
for (const server of activeServers) {
|
|
65
|
+
console.error(`- ${server.workspaceRoot ?? '(unknown workspace)'} on port ${server.port} (pid ${server.pid})`);
|
|
66
|
+
}
|
|
67
|
+
if (process.env[API_KEY_ENV]?.trim()) {
|
|
68
|
+
console.error(chalk.yellow('OML_PLATFORM_API_KEY is still set, so future starts may use API-key auth.'));
|
|
69
|
+
}
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
console.error(chalk.green('Stored OAuth credentials were cleared.'));
|
|
73
|
+
if (process.env[API_KEY_ENV]?.trim()) {
|
|
74
|
+
console.error(chalk.yellow('OML_PLATFORM_API_KEY is still set, so future starts may use API-key auth.'));
|
|
75
|
+
}
|
|
25
76
|
}
|
|
26
77
|
async whoami() {
|
|
27
|
-
const
|
|
28
|
-
if (
|
|
78
|
+
const apiKey = process.env[API_KEY_ENV]?.trim();
|
|
79
|
+
if (apiKey) {
|
|
80
|
+
console.error('Auth mode: api_key');
|
|
81
|
+
console.error('Account: resolved by OML Platform from OML_PLATFORM_API_KEY');
|
|
82
|
+
const profile = await readProfile();
|
|
83
|
+
if (profile) {
|
|
84
|
+
console.error(`Stored OAuth user: ${profile.userLabel ?? profile.email ?? profile.userId}`);
|
|
85
|
+
}
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
const credential = await readCredential();
|
|
89
|
+
const profile = await readProfile();
|
|
90
|
+
if (!credential || !profile) {
|
|
29
91
|
console.error(chalk.yellow('Not signed in.'));
|
|
30
92
|
return;
|
|
31
93
|
}
|
|
32
|
-
console.error(
|
|
33
|
-
console.error(`
|
|
34
|
-
console.error(`User
|
|
35
|
-
console.error(`
|
|
36
|
-
console.error(`
|
|
37
|
-
console.error(`
|
|
94
|
+
console.error('Auth mode: oauth');
|
|
95
|
+
console.error(`Provider: ${profile.provider}`);
|
|
96
|
+
console.error(`User ID: ${profile.userId}`);
|
|
97
|
+
console.error(`User label: ${profile.userLabel ?? '(not set)'}`);
|
|
98
|
+
console.error(`Email: ${profile.email ?? '(not set)'}`);
|
|
99
|
+
console.error(`Tier: ${profile.tier ?? '(not set)'}`);
|
|
100
|
+
console.error(`Signed in at: ${profile.signedInAt}`);
|
|
101
|
+
console.error(`Access token expires at: ${new Date(credential.expiresAtMs).toISOString()}`);
|
|
38
102
|
}
|
|
39
103
|
async ensureAuthenticated(operationName) {
|
|
40
|
-
|
|
104
|
+
if (process.env[API_KEY_ENV]?.trim()) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
const session = await readCredential();
|
|
41
108
|
if (!session) {
|
|
42
109
|
throw new Error(`${operationName} requires authentication. Run 'oml login' first.`);
|
|
43
110
|
}
|
|
44
111
|
}
|
|
45
112
|
async getAccessToken() {
|
|
46
|
-
const session = await
|
|
47
|
-
if (!session?.accessToken) {
|
|
48
|
-
throw new Error('OML CLI authentication is required. Run \'oml login\' first.');
|
|
49
|
-
}
|
|
113
|
+
const session = await this.getServerAuthSnapshot();
|
|
50
114
|
return session.accessToken;
|
|
51
115
|
}
|
|
52
116
|
async refreshAccessToken() {
|
|
53
|
-
const
|
|
54
|
-
|
|
55
|
-
throw new Error('OML CLI authentication is required. Run \'oml login\' first.');
|
|
56
|
-
}
|
|
57
|
-
let refreshed;
|
|
58
|
-
try {
|
|
59
|
-
refreshed = await refreshSupabaseAccessToken(resolveSupabaseUrl(), resolveSupabaseAnonKey(), session.refreshToken);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
throw new Error('Authentication refresh failed. Check your network connection or sign in again with \'oml login\'.');
|
|
63
|
-
}
|
|
64
|
-
const updatedSession = {
|
|
65
|
-
...session,
|
|
66
|
-
accessToken: refreshed.access_token,
|
|
67
|
-
refreshToken: refreshed.refresh_token,
|
|
68
|
-
tokenType: refreshed.token_type,
|
|
69
|
-
expiresIn: refreshed.expires_in,
|
|
70
|
-
email: refreshed.email ?? session.email,
|
|
71
|
-
signedInAt: new Date().toISOString(),
|
|
72
|
-
};
|
|
73
|
-
await writeSession(updatedSession);
|
|
74
|
-
return updatedSession.accessToken;
|
|
117
|
+
const refreshed = await this.refreshCredential();
|
|
118
|
+
return refreshed.accessToken;
|
|
75
119
|
}
|
|
76
120
|
async getServerAuthSnapshot() {
|
|
77
|
-
const session = await
|
|
121
|
+
const session = await readCredential();
|
|
78
122
|
if (!session?.accessToken) {
|
|
79
123
|
throw new Error('OML CLI authentication is required. Run \'oml login\' first.');
|
|
80
124
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
125
|
+
if (Date.now() + SESSION_EXPIRATION_LEEWAY_MS >= session.expiresAtMs) {
|
|
126
|
+
const refreshed = await this.refreshCredential();
|
|
127
|
+
return {
|
|
128
|
+
accessToken: refreshed.accessToken,
|
|
129
|
+
refreshToken: refreshed.refreshToken,
|
|
130
|
+
expiresAtMs: refreshed.expiresAtMs,
|
|
131
|
+
};
|
|
88
132
|
}
|
|
89
133
|
return {
|
|
90
134
|
accessToken: session.accessToken,
|
|
91
135
|
refreshToken: session.refreshToken,
|
|
92
|
-
expiresAtMs,
|
|
136
|
+
expiresAtMs: session.expiresAtMs,
|
|
93
137
|
};
|
|
94
138
|
}
|
|
95
|
-
async
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
139
|
+
async tryGetValidSnapshot() {
|
|
140
|
+
try {
|
|
141
|
+
return await this.getServerAuthSnapshot();
|
|
142
|
+
}
|
|
143
|
+
catch {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async refreshCredential() {
|
|
148
|
+
const session = await readCredential();
|
|
149
|
+
if (!session?.refreshToken) {
|
|
150
|
+
throw new Error('OML CLI authentication is required. Run \'oml login\' first.');
|
|
151
|
+
}
|
|
152
|
+
const lock = await acquireCredentialLock();
|
|
153
|
+
try {
|
|
154
|
+
const latest = await readCredential();
|
|
155
|
+
if (latest && Date.now() + SESSION_EXPIRATION_LEEWAY_MS < latest.expiresAtMs) {
|
|
156
|
+
return latest;
|
|
157
|
+
}
|
|
158
|
+
const source = latest ?? session;
|
|
159
|
+
const refreshed = await refreshSupabaseAccessToken(resolveSupabaseUrl(), resolveSupabaseAnonKey(), source.refreshToken);
|
|
160
|
+
const updatedSession = {
|
|
161
|
+
accessToken: refreshed.access_token,
|
|
162
|
+
refreshToken: refreshed.refresh_token,
|
|
163
|
+
expiresAtMs: Date.now() + (refreshed.expires_in * 1000),
|
|
164
|
+
};
|
|
165
|
+
await writeCredential(updatedSession);
|
|
166
|
+
const profile = await readProfile();
|
|
167
|
+
if (profile) {
|
|
168
|
+
await writeProfile({
|
|
169
|
+
...profile,
|
|
170
|
+
email: refreshed.email ?? profile.email,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
return updatedSession;
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
if (isUnauthorizedError(error)) {
|
|
177
|
+
await deleteCredential();
|
|
178
|
+
await deleteProfile();
|
|
179
|
+
throw new Error('Authentication refresh failed because the stored credential was revoked. Run \'oml login\' again.');
|
|
180
|
+
}
|
|
181
|
+
throw new Error('Authentication refresh failed. Check your network connection or sign in again with \'oml login\'.');
|
|
182
|
+
}
|
|
183
|
+
finally {
|
|
184
|
+
await lock.release();
|
|
99
185
|
}
|
|
100
|
-
const expiresIn = Math.max(0, Math.round((expiresAtMs - Date.now()) / 1000));
|
|
101
|
-
const updatedSession = {
|
|
102
|
-
...session,
|
|
103
|
-
accessToken,
|
|
104
|
-
refreshToken,
|
|
105
|
-
expiresIn,
|
|
106
|
-
signedInAt: new Date().toISOString(),
|
|
107
|
-
};
|
|
108
|
-
await writeSession(updatedSession);
|
|
109
186
|
}
|
|
110
|
-
|
|
111
|
-
|
|
187
|
+
}
|
|
188
|
+
async function readCredential() {
|
|
189
|
+
const [accessToken, refreshToken, expiresAtRaw] = await Promise.all([
|
|
190
|
+
keytar.getPassword(KEYCHAIN_SERVICE, ACCESS_TOKEN_KEY),
|
|
191
|
+
keytar.getPassword(KEYCHAIN_SERVICE, REFRESH_TOKEN_KEY),
|
|
192
|
+
keytar.getPassword(KEYCHAIN_SERVICE, EXPIRES_AT_KEY),
|
|
193
|
+
]);
|
|
194
|
+
const expiresAtMs = Number(expiresAtRaw ?? NaN);
|
|
195
|
+
if (!accessToken || !refreshToken || !Number.isFinite(expiresAtMs)) {
|
|
196
|
+
return undefined;
|
|
112
197
|
}
|
|
198
|
+
return { accessToken, refreshToken, expiresAtMs };
|
|
113
199
|
}
|
|
114
|
-
async function
|
|
200
|
+
async function writeCredential(credential) {
|
|
201
|
+
await Promise.all([
|
|
202
|
+
keytar.setPassword(KEYCHAIN_SERVICE, ACCESS_TOKEN_KEY, credential.accessToken),
|
|
203
|
+
keytar.setPassword(KEYCHAIN_SERVICE, REFRESH_TOKEN_KEY, credential.refreshToken),
|
|
204
|
+
keytar.setPassword(KEYCHAIN_SERVICE, EXPIRES_AT_KEY, String(credential.expiresAtMs)),
|
|
205
|
+
]);
|
|
206
|
+
}
|
|
207
|
+
async function deleteCredential() {
|
|
208
|
+
await Promise.all([
|
|
209
|
+
keytar.deletePassword(KEYCHAIN_SERVICE, ACCESS_TOKEN_KEY),
|
|
210
|
+
keytar.deletePassword(KEYCHAIN_SERVICE, REFRESH_TOKEN_KEY),
|
|
211
|
+
keytar.deletePassword(KEYCHAIN_SERVICE, EXPIRES_AT_KEY),
|
|
212
|
+
]);
|
|
213
|
+
}
|
|
214
|
+
async function readProfile() {
|
|
115
215
|
try {
|
|
116
|
-
const content = await fs.readFile(
|
|
216
|
+
const content = await fs.readFile(PROFILE_PATH, 'utf-8');
|
|
117
217
|
const data = JSON.parse(content);
|
|
118
|
-
if (!data.
|
|
119
|
-
return undefined;
|
|
120
|
-
}
|
|
121
|
-
if (!data.accessToken) {
|
|
122
|
-
return undefined;
|
|
123
|
-
}
|
|
124
|
-
if (!data.refreshToken || !data.tokenType || typeof data.expiresIn !== 'number') {
|
|
125
|
-
return undefined;
|
|
126
|
-
}
|
|
127
|
-
if (data.provider !== 'github') {
|
|
218
|
+
if (!data.provider || !data.userId || !data.signedInAt) {
|
|
128
219
|
return undefined;
|
|
129
220
|
}
|
|
130
221
|
return {
|
|
@@ -133,29 +224,20 @@ async function readSession() {
|
|
|
133
224
|
userLabel: data.userLabel,
|
|
134
225
|
email: data.email ?? null,
|
|
135
226
|
tier: data.tier,
|
|
136
|
-
|
|
137
|
-
refreshToken: data.refreshToken,
|
|
138
|
-
tokenType: data.tokenType,
|
|
139
|
-
expiresIn: data.expiresIn,
|
|
140
|
-
signedInAt: data.signedInAt
|
|
227
|
+
signedInAt: data.signedInAt,
|
|
141
228
|
};
|
|
142
229
|
}
|
|
143
230
|
catch {
|
|
144
231
|
return undefined;
|
|
145
232
|
}
|
|
146
233
|
}
|
|
147
|
-
async function
|
|
148
|
-
|
|
149
|
-
await fs.
|
|
150
|
-
await fs.writeFile(sessionPath, `${JSON.stringify(session, null, 2)}\n`, 'utf-8');
|
|
151
|
-
if (warnAboutPlaintext) {
|
|
152
|
-
process.stderr.write(chalk.yellow(`[oml] Warning: credentials stored in plaintext at ${sessionPath}. ` +
|
|
153
|
-
`A system keychain is not available in this environment.\n`));
|
|
154
|
-
}
|
|
234
|
+
async function writeProfile(profile) {
|
|
235
|
+
await fs.mkdir(path.dirname(PROFILE_PATH), { recursive: true });
|
|
236
|
+
await fs.writeFile(PROFILE_PATH, `${JSON.stringify(profile, null, 2)}\n`, 'utf-8');
|
|
155
237
|
}
|
|
156
|
-
async function
|
|
238
|
+
async function deleteProfile() {
|
|
157
239
|
try {
|
|
158
|
-
await fs.unlink(
|
|
240
|
+
await fs.unlink(PROFILE_PATH);
|
|
159
241
|
}
|
|
160
242
|
catch (error) {
|
|
161
243
|
if (error.code !== 'ENOENT') {
|
|
@@ -163,9 +245,6 @@ async function deleteSession() {
|
|
|
163
245
|
}
|
|
164
246
|
}
|
|
165
247
|
}
|
|
166
|
-
function getSessionPath() {
|
|
167
|
-
return path.join(os.homedir(), '.oml', 'auth.json');
|
|
168
|
-
}
|
|
169
248
|
async function authenticateWithGitHub() {
|
|
170
249
|
const clientId = resolveClientId();
|
|
171
250
|
const params = new URLSearchParams({
|
|
@@ -211,9 +290,7 @@ async function authenticateWithGitHub() {
|
|
|
211
290
|
tier: platformSession.tier,
|
|
212
291
|
accessToken: platformSession.access_token,
|
|
213
292
|
refreshToken: platformSession.refresh_token,
|
|
214
|
-
|
|
215
|
-
expiresIn: platformSession.expires_in,
|
|
216
|
-
signedInAt: new Date().toISOString()
|
|
293
|
+
expiresAtMs: Date.now() + platformSession.expires_in * 1000,
|
|
217
294
|
};
|
|
218
295
|
}
|
|
219
296
|
function printDeviceFlowInstructions(providerName, verificationUri, userCode) {
|
|
@@ -265,6 +342,60 @@ async function pollForGitHubAccessToken(clientId, device) {
|
|
|
265
342
|
throw new Error(token.error_description ?? token.error ?? 'GitHub sign-in failed.');
|
|
266
343
|
}
|
|
267
344
|
}
|
|
345
|
+
async function acquireCredentialLock() {
|
|
346
|
+
await fs.mkdir(path.dirname(LOCK_PATH), { recursive: true });
|
|
347
|
+
const startedAt = Date.now();
|
|
348
|
+
while (Date.now() - startedAt < LOCK_TIMEOUT_MS) {
|
|
349
|
+
try {
|
|
350
|
+
const handle = await fs.open(LOCK_PATH, 'wx');
|
|
351
|
+
return {
|
|
352
|
+
release: async () => {
|
|
353
|
+
await handle.close();
|
|
354
|
+
await fs.rm(LOCK_PATH, { force: true });
|
|
355
|
+
},
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
if (error.code !== 'EEXIST') {
|
|
360
|
+
throw error;
|
|
361
|
+
}
|
|
362
|
+
await delay(LOCK_POLL_INTERVAL_MS);
|
|
363
|
+
}
|
|
364
|
+
}
|
|
365
|
+
throw new Error('Timed out waiting for the CLI credential lock.');
|
|
366
|
+
}
|
|
367
|
+
async function listActiveServers() {
|
|
368
|
+
const baseDir = path.join(os.homedir(), '.oml', 'workspaces');
|
|
369
|
+
try {
|
|
370
|
+
const workspaceDirs = await fs.readdir(baseDir);
|
|
371
|
+
const active = [];
|
|
372
|
+
for (const workspaceDir of workspaceDirs) {
|
|
373
|
+
const lockFile = path.join(baseDir, workspaceDir, 'server.lock');
|
|
374
|
+
try {
|
|
375
|
+
const raw = await fs.readFile(lockFile, 'utf-8');
|
|
376
|
+
const parsed = JSON.parse(raw);
|
|
377
|
+
const pid = Number(parsed.pid);
|
|
378
|
+
const port = Number(parsed.port);
|
|
379
|
+
if (!Number.isFinite(pid) || !Number.isFinite(port)) {
|
|
380
|
+
continue;
|
|
381
|
+
}
|
|
382
|
+
process.kill(Math.trunc(pid), 0);
|
|
383
|
+
active.push({
|
|
384
|
+
pid: Math.trunc(pid),
|
|
385
|
+
port: Math.trunc(port),
|
|
386
|
+
workspaceRoot: typeof parsed.workspaceRoot === 'string' ? parsed.workspaceRoot : undefined,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
catch {
|
|
390
|
+
// ignore malformed or stale lock entries
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
return active;
|
|
394
|
+
}
|
|
395
|
+
catch {
|
|
396
|
+
return [];
|
|
397
|
+
}
|
|
398
|
+
}
|
|
268
399
|
function resolveClientId() {
|
|
269
400
|
const configured = process.env.OML_AUTH_GITHUB_CLIENT_ID?.trim() || DEFAULT_GITHUB_CLIENT_ID;
|
|
270
401
|
if (configured) {
|
|
@@ -284,4 +415,8 @@ function resolveSupabaseAnonKey() {
|
|
|
284
415
|
function delay(ms) {
|
|
285
416
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
286
417
|
}
|
|
418
|
+
function isUnauthorizedError(error) {
|
|
419
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
420
|
+
return /\b401\b/.test(message);
|
|
421
|
+
}
|
|
287
422
|
//# sourceMappingURL=auth.js.map
|
package/out/auth/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/auth/auth.ts"],"names":[],"mappings":"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"}
|
package/out/auth/platform.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export type CommandInvocationTracker = ReturnType<OmlClient['trackInvocation']>;
|
|
|
16
16
|
export declare function initializePlatform(authService: OmlCliAuthService, apiBaseUrl?: string): Promise<void>;
|
|
17
17
|
/**
|
|
18
18
|
* Dispose the platform client. Flushes any buffered telemetry
|
|
19
|
-
* and
|
|
19
|
+
* and flushes buffered telemetry. Call at the end of CLI execution.
|
|
20
20
|
*/
|
|
21
21
|
export declare function disposePlatform(): Promise<void>;
|
|
22
22
|
/**
|
package/out/auth/platform.js
CHANGED
|
@@ -6,12 +6,11 @@
|
|
|
6
6
|
* authenticated via oml login and the platform must be reachable for
|
|
7
7
|
* commands to execute.
|
|
8
8
|
*/
|
|
9
|
-
import { OmlClient, FileStorageAdapter, installNodeShutdownHandlers
|
|
9
|
+
import { OmlClient, FileStorageAdapter, installNodeShutdownHandlers } from '@oml/platform';
|
|
10
10
|
import chalk from 'chalk';
|
|
11
11
|
import { DEFAULT_API_BASE_URL } from './constants.js';
|
|
12
12
|
const API_BASE_URL_ENV = 'OML_PLATFORM_API_URL';
|
|
13
13
|
const API_KEY_ENV = 'OML_PLATFORM_API_KEY';
|
|
14
|
-
const OIDC_TOKEN_ENV = 'OML_CI_TOKEN';
|
|
15
14
|
let client = null;
|
|
16
15
|
let shutdownHandle = null;
|
|
17
16
|
/**
|
|
@@ -23,22 +22,6 @@ export async function initializePlatform(authService, apiBaseUrl = DEFAULT_API_B
|
|
|
23
22
|
await disposePlatform();
|
|
24
23
|
const resolvedApiBaseUrl = process.env[API_BASE_URL_ENV]?.trim() || apiBaseUrl;
|
|
25
24
|
const apiKey = process.env[API_KEY_ENV]?.trim();
|
|
26
|
-
let apiKeyAccessToken;
|
|
27
|
-
let apiKeyAccessTokenExpiresAtMs = 0;
|
|
28
|
-
const getApiKeyAccessToken = async () => {
|
|
29
|
-
const refreshLeewayMs = 20000;
|
|
30
|
-
if (apiKeyAccessToken && Date.now() + refreshLeewayMs < apiKeyAccessTokenExpiresAtMs) {
|
|
31
|
-
return apiKeyAccessToken;
|
|
32
|
-
}
|
|
33
|
-
if (!apiKey) {
|
|
34
|
-
throw new Error('OML API key is missing.');
|
|
35
|
-
}
|
|
36
|
-
const oidcToken = process.env[OIDC_TOKEN_ENV]?.trim() || undefined;
|
|
37
|
-
const exchanged = await exchangeApiToken(resolvedApiBaseUrl, apiKey, oidcToken);
|
|
38
|
-
apiKeyAccessToken = exchanged.accessToken;
|
|
39
|
-
apiKeyAccessTokenExpiresAtMs = Date.now() + (Math.max(1, exchanged.expiresIn) * 1000);
|
|
40
|
-
return apiKeyAccessToken;
|
|
41
|
-
};
|
|
42
25
|
const config = {
|
|
43
26
|
apiBaseUrl: resolvedApiBaseUrl,
|
|
44
27
|
tool: 'oml-cli',
|
|
@@ -46,19 +29,14 @@ export async function initializePlatform(authService, apiBaseUrl = DEFAULT_API_B
|
|
|
46
29
|
auth: apiKey
|
|
47
30
|
? {
|
|
48
31
|
method: 'oauth',
|
|
49
|
-
getToken: () =>
|
|
50
|
-
refreshToken: () =>
|
|
32
|
+
getToken: async () => apiKey,
|
|
33
|
+
refreshToken: async () => apiKey,
|
|
51
34
|
}
|
|
52
35
|
: {
|
|
53
36
|
method: 'oauth',
|
|
54
37
|
getToken: () => authService.getAccessToken(),
|
|
55
38
|
refreshToken: () => authService.refreshAccessToken(),
|
|
56
39
|
},
|
|
57
|
-
onConcurrencyLimit: (info) => {
|
|
58
|
-
console.error(chalk.yellow(`OML Platform: concurrent session limit reached `
|
|
59
|
-
+ `(${info.active_sessions}/${info.max_sessions}). `
|
|
60
|
-
+ `Close another instance or upgrade your plan.`));
|
|
61
|
-
},
|
|
62
40
|
onAuthError: (error) => {
|
|
63
41
|
console.error(chalk.red(`OML Platform: authentication error — ${toGenericPlatformErrorMessage(error)}`));
|
|
64
42
|
},
|
|
@@ -76,7 +54,7 @@ export async function initializePlatform(authService, apiBaseUrl = DEFAULT_API_B
|
|
|
76
54
|
}
|
|
77
55
|
/**
|
|
78
56
|
* Dispose the platform client. Flushes any buffered telemetry
|
|
79
|
-
* and
|
|
57
|
+
* and flushes buffered telemetry. Call at the end of CLI execution.
|
|
80
58
|
*/
|
|
81
59
|
export async function disposePlatform() {
|
|
82
60
|
if (shutdownHandle) {
|
package/out/auth/platform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/auth/platform.ts"],"names":[],"mappings":"AAAA,qDAAqD;AAErD;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/auth/platform.ts"],"names":[],"mappings":"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"}
|