@selleragent/sa-admin 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/auth.js CHANGED
@@ -14,6 +14,7 @@ const node_path_1 = require("node:path");
14
14
  const api_contract_1 = require("@selleragent/api-contract");
15
15
  const client_sdk_1 = require("@selleragent/client-sdk");
16
16
  const SESSION_COOKIE_NAME = 'selleragent_operator_session';
17
+ const AUTH_REGISTRY_VERSION = 1;
17
18
  function normalizeBaseUrl(baseUrl) {
18
19
  return baseUrl.replace(/\/+$/, '');
19
20
  }
@@ -29,6 +30,20 @@ function normalizeEnvValue(value) {
29
30
  .trim();
30
31
  return trimmed.length > 0 ? trimmed : null;
31
32
  }
33
+ function normalizeEmail(email) {
34
+ const value = normalizeEnvValue(email);
35
+ return value ? value.toLowerCase() : null;
36
+ }
37
+ function buildSessionKey(input) {
38
+ return [input.environment, normalizeBaseUrl(input.baseUrl)].join('|');
39
+ }
40
+ function createEmptyRegistry() {
41
+ return {
42
+ version: AUTH_REGISTRY_VERSION,
43
+ activeSessionKey: null,
44
+ sessions: {}
45
+ };
46
+ }
32
47
  function deriveBootstrapDefaults() {
33
48
  const email = normalizeEnvValue(process.env.SA_ADMIN_OPERATOR_EMAIL) ||
34
49
  normalizeEnvValue(process.env.SCENARIO_BETA_OPERATOR_EMAIL) ||
@@ -97,35 +112,111 @@ async function exchangeScenarioToken(input) {
97
112
  accessContext: parsed.accessContext
98
113
  };
99
114
  }
100
- async function loadSessionState(context) {
115
+ async function loadAuthRegistry(context) {
101
116
  try {
102
- const raw = await (0, promises_1.readFile)(context.sessionFilePath, 'utf8');
117
+ const raw = await (0, promises_1.readFile)(context.authFilePath, 'utf8');
103
118
  const parsed = JSON.parse(raw);
104
- if (normalizeBaseUrl(parsed.baseUrl) !== normalizeBaseUrl(context.baseUrl) ||
105
- parsed.environment !== context.environment) {
106
- return null;
107
- }
108
- return parsed;
119
+ const sessions = parsed.sessions && typeof parsed.sessions === 'object' ? parsed.sessions : createEmptyRegistry().sessions;
120
+ return {
121
+ version: typeof parsed.version === 'number' ? parsed.version : AUTH_REGISTRY_VERSION,
122
+ activeSessionKey: typeof parsed.activeSessionKey === 'string' ? parsed.activeSessionKey : null,
123
+ sessions
124
+ };
109
125
  }
110
126
  catch {
127
+ return createEmptyRegistry();
128
+ }
129
+ }
130
+ async function persistAuthRegistry(context, registry) {
131
+ await (0, promises_1.mkdir)((0, node_path_1.dirname)(context.authFilePath), { recursive: true });
132
+ await (0, promises_1.writeFile)(context.authFilePath, `${JSON.stringify(registry, null, 2)}\n`, 'utf8');
133
+ }
134
+ function candidateEntries(registry, context) {
135
+ const targetBaseUrl = normalizeBaseUrl(context.baseUrl);
136
+ const targetEnvironment = context.environment;
137
+ return Object.entries(registry.sessions).filter(([, state]) => {
138
+ if (normalizeBaseUrl(state.baseUrl) !== targetBaseUrl ||
139
+ state.environment !== targetEnvironment) {
140
+ return false;
141
+ }
142
+ return true;
143
+ });
144
+ }
145
+ function activeEntry(registry) {
146
+ if (!registry.activeSessionKey) {
111
147
  return null;
112
148
  }
149
+ const state = registry.sessions[registry.activeSessionKey];
150
+ return state ? [registry.activeSessionKey, state] : null;
151
+ }
152
+ function selectSessionEntry(registry, context, options = {}) {
153
+ const candidates = candidateEntries(registry, context);
154
+ if (candidates.length === 1) {
155
+ return candidates[0];
156
+ }
157
+ const active = activeEntry(registry);
158
+ if (candidates.length > 1) {
159
+ if (active && candidates.some(([key]) => key === active[0])) {
160
+ return active;
161
+ }
162
+ throw new Error(`Multiple stored sa-admin sessions match ${context.environment} at ${normalizeBaseUrl(context.baseUrl)}. Logout the old session or use a separate SELLERAGENT_HOME for another account.`);
163
+ }
164
+ if ((options.preferActive ?? false) && active) {
165
+ if (options.allowAnyActiveFallback) {
166
+ return active;
167
+ }
168
+ if (normalizeBaseUrl(active[1].baseUrl) === normalizeBaseUrl(context.baseUrl) &&
169
+ active[1].environment === context.environment) {
170
+ return active;
171
+ }
172
+ }
173
+ return null;
174
+ }
175
+ async function selectedSessionEntry(context, options = {}) {
176
+ const registry = await loadAuthRegistry(context);
177
+ return {
178
+ registry,
179
+ entry: selectSessionEntry(registry, context, options)
180
+ };
181
+ }
182
+ async function loadSessionState(context, options = {}) {
183
+ const selected = await selectedSessionEntry(context, options);
184
+ return selected.entry?.[1] ?? null;
113
185
  }
114
186
  async function persistSessionState(context, input) {
187
+ const registry = await loadAuthRegistry(context);
188
+ const now = new Date().toISOString();
115
189
  const state = {
116
- baseUrl: context.baseUrl,
190
+ baseUrl: normalizeBaseUrl(context.baseUrl),
117
191
  environment: context.environment,
118
192
  sessionToken: input.sessionToken,
119
193
  operatorEmail: input.accessContext.operator?.email ?? null,
120
194
  ...(input.storedAuthMode ? { storedAuthMode: input.storedAuthMode } : {}),
121
195
  issuedAt: input.accessContext.session?.issuedAt ?? null,
122
196
  expiresAt: input.accessContext.session?.expiresAt ?? null,
123
- storedAt: new Date().toISOString()
197
+ storedAt: now,
198
+ lastUsedAt: now
124
199
  };
125
- await (0, promises_1.mkdir)((0, node_path_1.dirname)(context.sessionFilePath), { recursive: true });
126
- await (0, promises_1.writeFile)(context.sessionFilePath, `${JSON.stringify(state, null, 2)}\n`, 'utf8');
200
+ const sessionKey = buildSessionKey({
201
+ environment: state.environment,
202
+ baseUrl: state.baseUrl
203
+ });
204
+ registry.sessions[sessionKey] = state;
205
+ registry.activeSessionKey = sessionKey;
206
+ await persistAuthRegistry(context, registry);
127
207
  return state;
128
208
  }
209
+ async function markSessionUsed(context, registry, entry) {
210
+ const [sessionKey, state] = entry;
211
+ const updated = {
212
+ ...state,
213
+ lastUsedAt: new Date().toISOString()
214
+ };
215
+ registry.sessions[sessionKey] = updated;
216
+ registry.activeSessionKey = sessionKey;
217
+ await persistAuthRegistry(context, registry);
218
+ return updated;
219
+ }
129
220
  async function bootstrapAdminSession(context, explicitOptions) {
130
221
  const defaults = deriveBootstrapDefaults();
131
222
  const merged = {
@@ -174,8 +265,9 @@ async function bootstrapAdminSession(context, explicitOptions) {
174
265
  }
175
266
  async function resolveAuthenticatedClient(input) {
176
267
  const { context } = input;
177
- const existing = await loadSessionState(context);
178
- if (existing) {
268
+ const selected = await selectedSessionEntry(context);
269
+ if (selected.entry) {
270
+ const [sessionKey, existing] = selected.entry;
179
271
  const sessionInfoClient = (0, client_sdk_1.createPlatformClient)({
180
272
  baseUrl: context.baseUrl
181
273
  });
@@ -184,10 +276,11 @@ async function resolveAuthenticatedClient(input) {
184
276
  sessionToken: existing.sessionToken
185
277
  });
186
278
  if (sessionInfo.accessContext.authenticated) {
279
+ const updatedState = await markSessionUsed(context, selected.registry, [sessionKey, existing]);
187
280
  return {
188
- client: createClientForSession(context.baseUrl, existing.sessionToken),
189
- authMode: 'session_file',
190
- session: existing,
281
+ client: createClientForSession(context.baseUrl, updatedState.sessionToken),
282
+ authMode: 'auth_registry',
283
+ session: updatedState,
191
284
  accessContext: sessionInfo.accessContext
192
285
  };
193
286
  }
@@ -203,26 +296,34 @@ async function resolveAuthenticatedClient(input) {
203
296
  accessContext: null
204
297
  };
205
298
  }
206
- async function resolveWhoAmI(context) {
207
- const existing = await loadSessionState(context);
208
- if (!existing) {
299
+ async function resolveWhoAmI(context, options = {}) {
300
+ const selected = await selectedSessionEntry(context, options);
301
+ if (!selected.entry) {
209
302
  return {
210
303
  session: null,
211
304
  accessContext: null,
212
- stale: false
305
+ stale: false,
306
+ sessionKey: null,
307
+ activeSessionKey: selected.registry.activeSessionKey,
308
+ sessionCount: Object.keys(selected.registry.sessions).length
213
309
  };
214
310
  }
311
+ const [sessionKey, existing] = selected.entry;
215
312
  try {
216
313
  const client = (0, client_sdk_1.createPlatformClient)({
217
- baseUrl: context.baseUrl
314
+ baseUrl: existing.baseUrl
218
315
  });
219
316
  const sessionInfo = await client.auth.getSession({
220
317
  sessionToken: existing.sessionToken
221
318
  });
319
+ const updatedState = await markSessionUsed(context, selected.registry, [sessionKey, existing]);
222
320
  return {
223
- session: existing,
321
+ session: updatedState,
224
322
  accessContext: sessionInfo.accessContext,
225
- stale: false
323
+ stale: false,
324
+ sessionKey,
325
+ activeSessionKey: selected.registry.activeSessionKey,
326
+ sessionCount: Object.keys(selected.registry.sessions).length
226
327
  };
227
328
  }
228
329
  catch (error) {
@@ -231,7 +332,10 @@ async function resolveWhoAmI(context) {
231
332
  return {
232
333
  session: existing,
233
334
  accessContext: null,
234
- stale: true
335
+ stale: true,
336
+ sessionKey,
337
+ activeSessionKey: selected.registry.activeSessionKey,
338
+ sessionCount: Object.keys(selected.registry.sessions).length
235
339
  };
236
340
  }
237
341
  throw error;
@@ -239,75 +343,123 @@ async function resolveWhoAmI(context) {
239
343
  throw error;
240
344
  }
241
345
  }
242
- async function inspectSessionState(context) {
243
- const resolved = await resolveWhoAmI(context);
346
+ async function inspectSessionState(context, options = {}) {
347
+ const resolved = await resolveWhoAmI(context, options);
244
348
  return {
245
- ...resolved,
246
- sessionFilePath: context.sessionFilePath
349
+ session: resolved.session,
350
+ accessContext: resolved.accessContext,
351
+ stale: resolved.stale,
352
+ authFilePath: context.authFilePath,
353
+ sessionKey: resolved.sessionKey,
354
+ activeSessionKey: resolved.activeSessionKey,
355
+ sessionCount: resolved.sessionCount
247
356
  };
248
357
  }
249
- async function logoutAdminSession(context) {
250
- try {
251
- await (0, promises_1.rm)(context.sessionFilePath);
358
+ async function logoutAdminSession(context, options = {}) {
359
+ const selected = await selectedSessionEntry(context, options);
360
+ if (!selected.entry) {
252
361
  return {
253
- removed: true,
254
- sessionFilePath: context.sessionFilePath
362
+ removed: false,
363
+ authFilePath: context.authFilePath,
364
+ sessionKey: null,
365
+ remainingSessionCount: Object.keys(selected.registry.sessions).length
255
366
  };
256
367
  }
257
- catch (error) {
258
- if (error?.code === 'ENOENT') {
259
- return {
260
- removed: false,
261
- sessionFilePath: context.sessionFilePath
262
- };
368
+ const [sessionKey] = selected.entry;
369
+ delete selected.registry.sessions[sessionKey];
370
+ if (selected.registry.activeSessionKey === sessionKey) {
371
+ selected.registry.activeSessionKey = Object.keys(selected.registry.sessions)[0] ?? null;
372
+ }
373
+ if (Object.keys(selected.registry.sessions).length === 0) {
374
+ try {
375
+ await (0, promises_1.rm)(context.authFilePath);
376
+ }
377
+ catch (error) {
378
+ if (error?.code !== 'ENOENT') {
379
+ throw error;
380
+ }
263
381
  }
264
- throw error;
265
382
  }
383
+ else {
384
+ await persistAuthRegistry(context, selected.registry);
385
+ }
386
+ return {
387
+ removed: true,
388
+ authFilePath: context.authFilePath,
389
+ sessionKey,
390
+ remainingSessionCount: Object.keys(selected.registry.sessions).length
391
+ };
266
392
  }
267
393
  async function loginAdminSession(input) {
268
394
  const client = (0, client_sdk_1.createPlatformClient)({
269
395
  baseUrl: input.context.baseUrl
270
396
  });
271
397
  const started = await client.auth.startCliLoginIntent({
272
- email: input.email,
398
+ email: normalizeEmail(input.email),
273
399
  nextPath: input.nextPath ?? '/app'
274
400
  });
275
- const browserOpened = input.openBrowser === false ? false : await tryOpenBrowser(started.verificationUriComplete);
401
+ const browserOpened = input.openBrowser === false ? false : await tryOpenBrowser(started.authorizationUrl);
276
402
  const timeoutMs = Math.max(5, input.timeoutSeconds ?? 60) * 1000;
277
403
  const startedAt = Date.now();
278
404
  let pollCount = 0;
279
405
  let currentIntent = started.intent;
280
- while (currentIntent.status === 'pending') {
281
- if (Date.now() - startedAt >= timeoutMs) {
282
- throw new Error(`Timed out waiting for CLI login intent ${currentIntent.intentId}.`);
406
+ let abandoned = false;
407
+ const abandon = async () => {
408
+ if (abandoned || currentIntent.status !== 'pending') {
409
+ return;
283
410
  }
284
- const waitMs = Math.max(1, started.pollAfterSeconds) * 1000;
285
- await new Promise((resolvePromise) => setTimeout(resolvePromise, waitMs));
286
- const polled = await client.auth.getCliLoginIntent({
287
- intentId: currentIntent.intentId
411
+ abandoned = true;
412
+ try {
413
+ await client.auth.abandonCliLoginIntent({
414
+ intentId: currentIntent.intentId
415
+ });
416
+ }
417
+ catch { }
418
+ };
419
+ const handleSigint = () => {
420
+ void abandon().finally(() => process.exit(130));
421
+ };
422
+ const handleSigterm = () => {
423
+ void abandon().finally(() => process.exit(143));
424
+ };
425
+ process.once('SIGINT', handleSigint);
426
+ process.once('SIGTERM', handleSigterm);
427
+ try {
428
+ while (currentIntent.status === 'pending') {
429
+ if (Date.now() - startedAt >= timeoutMs) {
430
+ throw new Error(`Timed out waiting for CLI login intent ${currentIntent.intentId}.`);
431
+ }
432
+ const waitMs = Math.max(1, started.pollAfterSeconds) * 1000;
433
+ await new Promise((resolvePromise) => setTimeout(resolvePromise, waitMs));
434
+ const polled = await client.auth.getCliLoginIntent({
435
+ intentId: currentIntent.intentId,
436
+ markActive: true
437
+ });
438
+ currentIntent = polled.intent;
439
+ pollCount += 1;
440
+ }
441
+ if (currentIntent.status !== 'completed' || !currentIntent.sessionToken || !currentIntent.accessContext) {
442
+ throw new Error(currentIntent.status === 'expired' || currentIntent.status === 'abandoned'
443
+ ? `CLI login intent ${currentIntent.intentId} is ${currentIntent.status}. Start sa-admin auth login again.`
444
+ : `CLI login intent ${currentIntent.intentId} did not produce a session.`);
445
+ }
446
+ const state = await persistSessionState(input.context, {
447
+ sessionToken: currentIntent.sessionToken,
448
+ accessContext: currentIntent.accessContext,
449
+ storedAuthMode: 'employee_login'
288
450
  });
289
- currentIntent = polled.intent;
290
- pollCount += 1;
451
+ return {
452
+ state,
453
+ accessContext: currentIntent.accessContext,
454
+ intent: currentIntent,
455
+ authorizationUrl: started.authorizationUrl,
456
+ browserOpened,
457
+ pollCount
458
+ };
291
459
  }
292
- if (currentIntent.status !== 'completed' || !currentIntent.sessionToken || !currentIntent.accessContext) {
293
- throw new Error(currentIntent.status === 'expired'
294
- ? `CLI login intent ${currentIntent.intentId} expired before completion.`
295
- : `CLI login intent ${currentIntent.intentId} did not produce a session.`);
460
+ finally {
461
+ process.off('SIGINT', handleSigint);
462
+ process.off('SIGTERM', handleSigterm);
296
463
  }
297
- const state = await persistSessionState(input.context, {
298
- sessionToken: currentIntent.sessionToken,
299
- accessContext: currentIntent.accessContext,
300
- storedAuthMode: 'employee_login'
301
- });
302
- return {
303
- state,
304
- accessContext: currentIntent.accessContext,
305
- intent: currentIntent,
306
- userCode: started.userCode,
307
- verificationUri: started.verificationUri,
308
- verificationUriComplete: started.verificationUriComplete,
309
- browserOpened,
310
- pollCount
311
- };
312
464
  }
313
465
  //# sourceMappingURL=auth.js.map
package/dist/auth.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}