@antasphere/chassis-server 1.3.0 → 1.5.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.
Files changed (55) hide show
  1. package/dist/api/create-api.d.ts.map +1 -1
  2. package/dist/api/create-api.js +17 -0
  3. package/dist/api/create-api.js.map +1 -1
  4. package/dist/apps/index.d.ts +11 -0
  5. package/dist/apps/index.d.ts.map +1 -0
  6. package/dist/apps/index.js +11 -0
  7. package/dist/apps/index.js.map +1 -0
  8. package/dist/apps/routes.d.ts +14 -0
  9. package/dist/apps/routes.d.ts.map +1 -0
  10. package/dist/apps/routes.js +23 -0
  11. package/dist/apps/routes.js.map +1 -0
  12. package/dist/apps/select.d.ts +64 -0
  13. package/dist/apps/select.d.ts.map +1 -0
  14. package/dist/apps/select.js +168 -0
  15. package/dist/apps/select.js.map +1 -0
  16. package/dist/apps/service.d.ts +74 -0
  17. package/dist/apps/service.d.ts.map +1 -0
  18. package/dist/apps/service.js +165 -0
  19. package/dist/apps/service.js.map +1 -0
  20. package/dist/boot.d.ts.map +1 -1
  21. package/dist/boot.js +5 -0
  22. package/dist/boot.js.map +1 -1
  23. package/dist/env.d.ts +2 -0
  24. package/dist/env.d.ts.map +1 -1
  25. package/dist/env.js +2 -0
  26. package/dist/env.js.map +1 -1
  27. package/dist/identity/hub-grant.d.ts +70 -0
  28. package/dist/identity/hub-grant.d.ts.map +1 -1
  29. package/dist/identity/hub-grant.js +119 -14
  30. package/dist/identity/hub-grant.js.map +1 -1
  31. package/dist/identity/index.d.ts +1 -1
  32. package/dist/identity/index.d.ts.map +1 -1
  33. package/dist/identity/index.js +1 -1
  34. package/dist/identity/index.js.map +1 -1
  35. package/dist/testing/fake-hub.d.ts +20 -0
  36. package/dist/testing/fake-hub.d.ts.map +1 -1
  37. package/dist/testing/fake-hub.js +73 -1
  38. package/dist/testing/fake-hub.js.map +1 -1
  39. package/package.json +7 -3
  40. package/src/api/create-api.ts +21 -0
  41. package/src/apps/index.ts +17 -0
  42. package/src/apps/routes.ts +30 -0
  43. package/src/apps/select.ts +175 -0
  44. package/src/apps/service.ts +198 -0
  45. package/src/boot.ts +5 -0
  46. package/src/env.ts +2 -0
  47. package/src/identity/hub-grant.ts +187 -15
  48. package/src/identity/index.ts +6 -1
  49. package/src/testing/fake-hub.ts +83 -1
  50. package/test/integration/apps-route.test.ts +235 -0
  51. package/test/integration/hub-grant.test.ts +97 -0
  52. package/test/unit/apps.test.ts +544 -0
  53. package/test/unit/fake-hub-me-apps.test.ts +71 -0
  54. package/test/unit/hub-grant-refusal.test.ts +29 -0
  55. package/test/unit/hub-grant-sweep.test.ts +151 -0
@@ -1 +1 @@
1
- {"version":3,"file":"hub-grant.d.ts","sourceRoot":"","sources":["../../src/identity/hub-grant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub-grant.d.ts","sourceRoot":"","sources":["../../src/identity/hub-grant.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,OAAO,EAAoB,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAkC,KAAK,EAAE,EAAE,MAAM,wBAAwB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA6E3C,qGAAqG;AACrG,eAAO,MAAM,yBAAyB,OAAQ,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,mBAAmB,EAAE,aAOjC,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,eAAe;IAC9B,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,yBAAyB,EAAE,eAIvC,CAAC;AAEF,6FAA6F;AAC7F,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,IAAI,IAAI,IAAI,CAAC;CACd;AAKD;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,GACtB;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,CAAC;AAE7B,2EAA2E;AAC3E,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,EAAE,CAAC;IACP,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,GAAG,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtC,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,kBAAkB;IAClB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAeD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAQD,2FAA2F;AAC3F,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAGlE;AAaD,qBAAa,eAAe;IAgBd,OAAO,CAAC,QAAQ,CAAC,IAAI;IAfjC,kFAAkF;IAClF,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6D;IACnF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2C;IACpE,sFAAsF;IACtF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAE9B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;gBAEP,IAAI,EAAE,sBAAsB;IAgCzD;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBhF;;;;;OAKG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKtD;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAOxE,mEAAmE;IACnE,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAItC,mEAAmE;IAC7D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IASvD;;;;OAIG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOnD,OAAO,CAAC,QAAQ;IAWhB;;;;;;OAMG;IACG,aAAa,CACjB,KAAK,GAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAA6B,GACrE,OAAO,CAAC,MAAM,CAAC;IA2BlB;;;OAGG;IACH,UAAU,CACR,OAAO,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;KAAO,GAC7E,gBAAgB;IAenB;;;;;;OAMG;IACG,KAAK,CACT,MAAM,EAAE,MAAM,EACd,SAAS,GAAE,MAA+C,GACzD,OAAO,CAAC,WAAW,CAAC;IAIvB,OAAO,CAAC,OAAO;YAWD,SAAS;IAkIvB,0EAA0E;IAC1E;;;;OAIG;YACW,QAAQ;IAatB,8EAA8E;YAChE,yBAAyB;YAWzB,kBAAkB;YAUlB,iBAAiB;IAI/B;;;;;;;OAOG;YACW,UAAU;YA+CV,OAAO;IAcrB,uEAAuE;YACzD,YAAY;IAkB1B;;;;;;OAMG;YACW,aAAa;YAoBb,OAAO;IAKrB,yEAAyE;YAC3D,WAAW;IA2DzB;;;;;OAKG;YACW,WAAW;IAsBzB,+EAA+E;YACjE,WAAW;CAM1B"}
@@ -87,6 +87,13 @@ export const DEFAULT_GRANT_DIALS = {
87
87
  // constructor clamps anything smaller (see there).
88
88
  lockWatchdogMs: 12_000
89
89
  };
90
+ export const DEFAULT_GRANT_SWEEP_DIALS = {
91
+ intervalMs: 60_000,
92
+ renewAheadMs: 3 * 60_000,
93
+ activeWithinMs: 60 * 60_000
94
+ };
95
+ /** Bound the seen-map — a user-id flood must never balloon memory. */
96
+ const MAX_SEEN_USERS = 10_000;
90
97
  /**
91
98
  * Mirror of Better Auth 1.6.15's `isLikelyEncrypted` (dist/oauth2/utils.mjs):
92
99
  * its decrypt path passes LEGACY PLAINTEXT tokens through untouched, and so
@@ -99,11 +106,18 @@ export function isLikelyEncrypted(token) {
99
106
  return true;
100
107
  return token.length % 2 === 0 && /^[0-9a-f]+$/i.test(token);
101
108
  }
109
+ /** The `error_description` of an RFC 6749 error payload, when it is a non-empty string. */
110
+ export function refusalDescription(payload) {
111
+ const d = payload?.error_description;
112
+ return typeof d === 'string' && d.trim() ? d.trim().slice(0, 300) : null;
113
+ }
102
114
  export class HubGrantService {
103
115
  opts;
104
116
  /** userId → fresh access token (in-memory only; the row is the durable store). */
105
117
  cache = new Map();
106
118
  inFlight = new Map();
119
+ /** userId → when this replica last read a token for them (the sweep's population). */
120
+ lastSeen = new Map();
107
121
  tokenUrl;
108
122
  introspectUrl;
109
123
  fetchImpl;
@@ -209,11 +223,12 @@ export class HubGrantService {
209
223
  }
210
224
  /** A hub-callable access token for the user, refresh-on-demand. */
211
225
  async accessToken(userId) {
226
+ this.markSeen(userId);
212
227
  const cached = this.cache.get(userId);
213
228
  if (cached && cached.expiresAtMs - this.now() > this.dials.accessSkewMs) {
214
229
  return { kind: 'ok', accessToken: cached.token };
215
230
  }
216
- return this.acquire(userId, false);
231
+ return this.acquire(userId, 'demand');
217
232
  }
218
233
  /**
219
234
  * Force a refresh (the caller saw the hub refuse the current token).
@@ -225,12 +240,85 @@ export class HubGrantService {
225
240
  const existing = this.inFlight.get(userId);
226
241
  if (existing)
227
242
  await existing.catch(() => { });
228
- return this.acquire(userId, true);
243
+ return this.acquire(userId, 'force');
244
+ }
245
+ markSeen(userId) {
246
+ if (!this.lastSeen.has(userId) && this.lastSeen.size >= MAX_SEEN_USERS) {
247
+ // Drop the oldest entry (Map keeps insertion order); a re-seen user is
248
+ // re-inserted at the end below.
249
+ const oldest = this.lastSeen.keys().next().value;
250
+ if (oldest !== undefined)
251
+ this.lastSeen.delete(oldest);
252
+ }
253
+ this.lastSeen.delete(userId);
254
+ this.lastSeen.set(userId, this.now());
255
+ }
256
+ /**
257
+ * One pass of the background renewal (GrantSweepDials): renew the cached
258
+ * token of every recently seen person whose token expires within the
259
+ * window, one at a time, through `renew()`. Answers how many renewals
260
+ * were attempted. Never throws: a failed renewal is the next request's
261
+ * on-demand refresh, exactly as before the sweep existed.
262
+ */
263
+ async sweepExpiring(dials = DEFAULT_GRANT_SWEEP_DIALS) {
264
+ const now = this.now();
265
+ let attempted = 0;
266
+ for (const [userId, seenAt] of [...this.lastSeen]) {
267
+ if (now - seenAt > dials.activeWithinMs) {
268
+ this.lastSeen.delete(userId);
269
+ continue;
270
+ }
271
+ const cached = this.cache.get(userId);
272
+ if (!cached || cached.expiresAtMs - now > dials.renewAheadMs)
273
+ continue;
274
+ if (this.inFlight.has(userId))
275
+ continue;
276
+ attempted += 1;
277
+ try {
278
+ const out = await this.renew(userId, dials.renewAheadMs);
279
+ if (out.kind !== 'ok') {
280
+ this.opts.logger.info({ userId, outcome: out.kind }, 'hub grant: background renewal did not renew');
281
+ }
282
+ }
283
+ catch (err) {
284
+ this.opts.logger.warn({ err, userId }, 'hub grant: background renewal failed — the next request refreshes on demand');
285
+ }
286
+ }
287
+ return attempted;
229
288
  }
230
- acquire(userId, force) {
289
+ /**
290
+ * Run the sweep on a timer that never holds the process open and skips
291
+ * while the replica drains. Returns the function that stops it.
292
+ */
293
+ startSweep(options = {}) {
294
+ const dials = { ...DEFAULT_GRANT_SWEEP_DIALS, ...options.dials };
295
+ let running = false;
296
+ const timer = setInterval(() => {
297
+ // One pass at a time: a slow hub must never stack passes.
298
+ if (running || options.isDraining?.())
299
+ return;
300
+ running = true;
301
+ void this.sweepExpiring(dials).finally(() => {
302
+ running = false;
303
+ });
304
+ }, dials.intervalMs);
305
+ timer.unref();
306
+ return { timer, stop: () => clearInterval(timer) };
307
+ }
308
+ /**
309
+ * Renew the grant in the background (the sweep's path, PRDCT-3584): the
310
+ * cached token keeps being served until the rotation's result is known
311
+ * (nothing is evicted up front, unlike `refresh()`), and a token a sibling
312
+ * replica stored with at least `minLeftMs` of life left is adopted instead
313
+ * of rotating a second time. Joins an acquisition already in flight.
314
+ */
315
+ async renew(userId, minLeftMs = DEFAULT_GRANT_SWEEP_DIALS.renewAheadMs) {
316
+ return this.acquire(userId, 'renew', minLeftMs);
317
+ }
318
+ acquire(userId, mode, minLeftMs) {
231
319
  let flight = this.inFlight.get(userId);
232
320
  if (!flight) {
233
- flight = this.doAcquire(userId, force).finally(() => {
321
+ flight = this.doAcquire(userId, mode, minLeftMs).finally(() => {
234
322
  if (this.inFlight.get(userId) === flight)
235
323
  this.inFlight.delete(userId);
236
324
  });
@@ -238,18 +326,26 @@ export class HubGrantService {
238
326
  }
239
327
  return flight;
240
328
  }
241
- async doAcquire(userId, force) {
329
+ async doAcquire(userId, mode, minLeftMs) {
242
330
  try {
243
331
  const first = await this.readRow(userId);
244
332
  if (!first)
245
333
  return { kind: 'no_link' };
246
334
  if (!first.refreshToken)
247
335
  return { kind: 'grant_dead' };
248
- if (!force) {
336
+ if (mode === 'demand') {
249
337
  const stored = await this.storedAccess(userId, first);
250
338
  if (stored)
251
339
  return { kind: 'ok', accessToken: stored };
252
340
  }
341
+ else if (mode === 'renew') {
342
+ // A sibling replica (or a login) already renewed: adopt its token
343
+ // without taking the lock (verifier round 6: the common case on
344
+ // several replicas was paying a dedicated connection for nothing).
345
+ const stored = await this.storedAccess(userId, first, minLeftMs);
346
+ if (stored)
347
+ return { kind: 'ok', accessToken: stored };
348
+ }
253
349
  // Slow path: rotate under the cross-replica lock.
254
350
  const lock = await this.acquireLock(userId);
255
351
  try {
@@ -263,11 +359,19 @@ export class HubGrantService {
263
359
  return { kind: 'no_link' };
264
360
  if (!row.refreshToken)
265
361
  return { kind: 'grant_dead' };
266
- if (!force || row.refreshToken !== first.refreshToken) {
362
+ if (mode === 'demand' || row.refreshToken !== first.refreshToken) {
267
363
  const stored = await this.storedAccess(userId, row);
268
364
  if (stored)
269
365
  return { kind: 'ok', accessToken: stored };
270
366
  }
367
+ else if (mode === 'renew') {
368
+ // A renewal rotates only what is about to expire: a stored token
369
+ // with more life than the renewal window is a sibling replica's
370
+ // fresh one (or a login's), adopted rather than rotated again.
371
+ const stored = await this.storedAccess(userId, row, minLeftMs);
372
+ if (stored)
373
+ return { kind: 'ok', accessToken: stored };
374
+ }
271
375
  let refreshToken;
272
376
  try {
273
377
  refreshToken = await this.decrypt(row.refreshToken);
@@ -317,7 +421,7 @@ export class HubGrantService {
317
421
  await this.clearPresentation(row.id);
318
422
  this.cache.delete(userId);
319
423
  this.refreshes.inc({ outcome: 'invalid_grant' });
320
- this.opts.logger.warn({ userId }, 'hub grant: token endpoint answered invalid_grant — grant marked dead; a browser SSO login heals it');
424
+ this.opts.logger.warn({ userId, status: outcome.status, reason: outcome.description }, 'hub grant: token endpoint answered invalid_grant — grant marked dead; a browser SSO login heals it');
321
425
  return { kind: 'grant_dead' };
322
426
  }
323
427
  if (outcome.kind === 'invalid_client') {
@@ -327,7 +431,7 @@ export class HubGrantService {
327
431
  // is cleared, not kept.
328
432
  await this.clearPresentation(row.id);
329
433
  this.refreshes.inc({ outcome: 'invalid_client' });
330
- this.opts.logger.error('hub grant: token endpoint answered invalid_client — HUB_CLIENT_ID/HUB_CLIENT_SECRET are broken; ' +
434
+ this.opts.logger.error({ status: outcome.status, reason: outcome.description }, 'hub grant: token endpoint answered invalid_client — HUB_CLIENT_ID/HUB_CLIENT_SECRET are broken; ' +
331
435
  'refreshes are failing transient (grants are NOT being killed); fix the client credentials');
332
436
  return { kind: 'inconclusive' };
333
437
  }
@@ -453,11 +557,11 @@ export class HubGrantService {
453
557
  return row ?? null;
454
558
  }
455
559
  /** Decrypt-and-cache the row's access token when it is still fresh. */
456
- async storedAccess(userId, row) {
560
+ async storedAccess(userId, row, minLeftMs = this.dials.accessSkewMs) {
457
561
  if (!row.accessToken || !row.accessTokenExpiresAt)
458
562
  return null;
459
563
  const expiresAtMs = row.accessTokenExpiresAt.getTime();
460
- if (expiresAtMs - this.now() <= this.dials.accessSkewMs)
564
+ if (expiresAtMs - this.now() <= minLeftMs)
461
565
  return null;
462
566
  try {
463
567
  const token = await this.decrypt(row.accessToken);
@@ -546,11 +650,12 @@ export class HubGrantService {
546
650
  // RFC 6749 errors ride 400/401; anything else (5xx…) is transient.
547
651
  if (res.status === 400 || res.status === 401) {
548
652
  const error = payload?.error;
653
+ const description = refusalDescription(payload);
549
654
  if (error === 'invalid_grant')
550
- return { kind: 'invalid_grant' };
655
+ return { kind: 'invalid_grant', status: res.status, description };
551
656
  if (error === 'invalid_client')
552
- return { kind: 'invalid_client' };
553
- this.opts.logger.warn({ status: res.status, error }, 'hub grant: unrecognized token-endpoint error');
657
+ return { kind: 'invalid_client', status: res.status, description };
658
+ this.opts.logger.warn({ status: res.status, error, description }, 'hub grant: unrecognized token-endpoint error');
554
659
  return { kind: 'transient' };
555
660
  }
556
661
  this.opts.logger.warn({ status: res.status }, 'hub grant: token endpoint answered non-2xx');
@@ -1 +1 @@
1
- {"version":3,"file":"hub-grant.js","sourceRoot":"","sources":["../../src/identity/hub-grant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hub-grant.js","sourceRoot":"","sources":["../../src/identity/hub-grant.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { type AccountEvent, type Auth, createAuth, mcpResourceUrl, signInOriginRefused, trustedOriginsFor } from './better-auth.js';
2
2
  export { DEMO_PASS_DEFAULT_MINUTES, DEMO_PASS_MAX_MINUTES, DEMO_PASS_MAX_PATH_LENGTH, DEMO_SESSION_REFUSED_API_ROUTES, DEMO_SESSION_REFUSED_AUTH_PATHS, type DemoSessionRefusedApiRoute, demoSessionApiRefusalMessage, demoSessionAuthRefusal, isDemoAddress, isDemoSignInHost, isSafeDemoPath, parseDemoEmailDomains, parseDemoHosts } from './demo-pass-rules.js';
3
- export { DEFAULT_GRANT_DIALS, type GrantAccess, HubGrantService, LOCK_WATCHDOG_HEADROOM_MS } from './hub-grant.js';
3
+ export { DEFAULT_GRANT_DIALS, DEFAULT_GRANT_SWEEP_DIALS, type GrantAccess, type GrantSweepDials, type GrantSweepHandle, HubGrantService, LOCK_WATCHDOG_HEADROOM_MS, type RefusalReason, refusalDescription } from './hub-grant.js';
4
4
  export { HubJwtVerifier } from './hub-jwt.js';
5
5
  export { HubLogoutService, hintCookieClearHeader } from './hub-logout.js';
6
6
  export { projectOrgMembership } from './hub-projection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,KAAK,WAAW,EAChB,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,IAAI,EACT,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAC/B,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,eAAe,EACf,yBAAyB,EACzB,KAAK,aAAa,EAClB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,wBAAwB,EACxB,KAAK,kBAAkB,EACvB,gBAAgB,EAChB,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,KAAK,mBAAmB,EACxB,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,KAAK,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { createAuth, mcpResourceUrl, signInOriginRefused, trustedOriginsFor } from './better-auth.js';
2
2
  export { DEMO_PASS_DEFAULT_MINUTES, DEMO_PASS_MAX_MINUTES, DEMO_PASS_MAX_PATH_LENGTH, DEMO_SESSION_REFUSED_API_ROUTES, DEMO_SESSION_REFUSED_AUTH_PATHS, demoSessionApiRefusalMessage, demoSessionAuthRefusal, isDemoAddress, isDemoSignInHost, isSafeDemoPath, parseDemoEmailDomains, parseDemoHosts } from './demo-pass-rules.js';
3
- export { DEFAULT_GRANT_DIALS, HubGrantService, LOCK_WATCHDOG_HEADROOM_MS } from './hub-grant.js';
3
+ export { DEFAULT_GRANT_DIALS, DEFAULT_GRANT_SWEEP_DIALS, HubGrantService, LOCK_WATCHDOG_HEADROOM_MS, refusalDescription } from './hub-grant.js';
4
4
  export { HubJwtVerifier } from './hub-jwt.js';
5
5
  export { HubLogoutService, hintCookieClearHeader } from './hub-logout.js';
6
6
  export { projectOrgMembership } from './hub-projection.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAE/B,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EAEnB,eAAe,EACf,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,wBAAwB,EAExB,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAwB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/identity/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,+BAA+B,EAE/B,4BAA4B,EAC5B,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAIzB,eAAe,EACf,yBAAyB,EAEzB,kBAAkB,EACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,wBAAwB,EAExB,gBAAgB,EAEjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,mBAAmB,EACnB,cAAc,EAEd,gBAAgB,EAChB,aAAa,EACb,yBAAyB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAGL,aAAa,EACb,0BAA0B,EAC1B,cAAc,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAwB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -95,6 +95,13 @@ export interface HubUserFixture {
95
95
  workspaceName?: string | null | undefined;
96
96
  overrides?: HubTokenOverrides | undefined;
97
97
  }
98
+ /** One tool of the fake's catalogue (what GET /me/apps serves, PRDCT-3493). */
99
+ export interface FakeHubTool {
100
+ slug: string;
101
+ name: string;
102
+ launchUrl: string;
103
+ descriptor?: Record<string, unknown> | undefined;
104
+ }
98
105
  /** One entry of a user's org registry (what GET /orgs serves). */
99
106
  export interface HubOrgEntry {
100
107
  name: string | null;
@@ -141,6 +148,14 @@ export declare class FakeHub {
141
148
  private readonly orgTeamRegistry;
142
149
  /** sub → the orgs that do NOT open the tool to them (GET /orgs' top-level `denied`). */
143
150
  private readonly userDenied;
151
+ /** The catalogue GET /me/apps serves (PRDCT-3493): the registry's tools, in order, with their descriptor. */
152
+ private tools;
153
+ /** Per user and tool, the organizations that do NOT open the tool to them (absent = open everywhere). */
154
+ private readonly userToolClosed;
155
+ readonly meAppsRequests: Array<{
156
+ auth: string | null;
157
+ orgId: string | null;
158
+ }>;
144
159
  /** Every JWT access token this fake minted (bearer lookup for /api/v1). */
145
160
  private readonly accessTokens;
146
161
  /** Live + rotated-out refresh tokens (rotation families). */
@@ -407,6 +422,11 @@ export declare class FakeHub {
407
422
  private handleUsageEvents;
408
423
  private handleUsageEntitlements;
409
424
  private handleUsageCheck;
425
+ /** The tools GET /me/apps lists, in this order. */
426
+ setTools(tools: FakeHubTool[]): void;
427
+ /** Close one tool to one user in one organization (the real hub's teams rule, reduced to its verdict). */
428
+ setToolClosed(sub: string, slug: string, orgId: string, closed?: boolean): void;
429
+ private handleMeApps;
410
430
  private handleOrgs;
411
431
  private handleTeams;
412
432
  private handleOrgCreate;
@@ -1 +1 @@
1
- {"version":3,"file":"fake-hub.d.ts","sourceRoot":"","sources":["../../src/testing/fake-hub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fake-hub.d.ts","sourceRoot":"","sources":["../../src/testing/fake-hub.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { createServer } from 'node:http';
2
- import { entitlementProfileSchema, usageCheckRequestSchema, usageCheckSchema, usageEventSchema, usageEventsBatchSchema, usageIngestResultSchema } from '@antasphere/chassis-contract';
2
+ import { entitlementProfileSchema, usageCheckRequestSchema, usageCheckSchema, usageEventSchema, usageEventsBatchSchema, usageIngestResultSchema, meAppsSchema } from '@antasphere/chassis-contract';
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { exportJWK, generateKeyPair, SignJWT } from 'jose';
5
5
  /** What the tool requested before PRDCT-2443 — and what the hub's H3 connect grant carries. */
@@ -34,6 +34,11 @@ export class FakeHub {
34
34
  orgTeamRegistry = new Map();
35
35
  /** sub → the orgs that do NOT open the tool to them (GET /orgs' top-level `denied`). */
36
36
  userDenied = new Map();
37
+ /** The catalogue GET /me/apps serves (PRDCT-3493): the registry's tools, in order, with their descriptor. */
38
+ tools = [];
39
+ /** Per user and tool, the organizations that do NOT open the tool to them (absent = open everywhere). */
40
+ userToolClosed = new Map();
41
+ meAppsRequests = [];
37
42
  /** Every JWT access token this fake minted (bearer lookup for /api/v1). */
38
43
  accessTokens = new Map();
39
44
  /** Live + rotated-out refresh tokens (rotation families). */
@@ -331,6 +336,9 @@ export class FakeHub {
331
336
  if (req.method === 'GET' && url.pathname === '/api/v1/teams') {
332
337
  return this.handleTeams(req, res, url);
333
338
  }
339
+ if (req.method === 'GET' && url.pathname === '/api/v1/me/apps') {
340
+ return this.handleMeApps(req, res);
341
+ }
334
342
  if (req.method === 'POST' && url.pathname === '/api/v1/orgs') {
335
343
  return this.handleOrgCreate(req, res);
336
344
  }
@@ -643,6 +651,70 @@ export class FakeHub {
643
651
  }));
644
652
  }
645
653
  // ── GET /api/v1/orgs: the caller-scoped org list ──────────────────────
654
+ /** The tools GET /me/apps lists, in this order. */
655
+ setTools(tools) {
656
+ this.tools = tools;
657
+ }
658
+ /** Close one tool to one user in one organization (the real hub's teams rule, reduced to its verdict). */
659
+ setToolClosed(sub, slug, orgId, closed = true) {
660
+ const key = `${sub}:${slug}`;
661
+ const set = this.userToolClosed.get(key) ?? new Set();
662
+ if (closed)
663
+ set.add(orgId);
664
+ else
665
+ set.delete(orgId);
666
+ this.userToolClosed.set(key, set);
667
+ }
668
+ // ── GET /api/v1/me/apps: the catalogue as one person sees it (PRDCT-3493) ─
669
+ // Mirrors the hub's api/me-apps.ts: the same bearer rule as /orgs, the
670
+ // organization the `X-Workspace-Id` header names (else the user's first org,
671
+ // the real hub's default), every registered tool with `open` from the
672
+ // per-user closures, `connected` false (the fake keeps no connection facts).
673
+ handleMeApps(req, res) {
674
+ const header = req.headers['x-workspace-id'];
675
+ const orgId = (Array.isArray(header) ? header[0] : header) ?? null;
676
+ this.meAppsRequests.push({ auth: req.headers.authorization ?? null, orgId });
677
+ const bearer = /^Bearer\s+(.+)$/i.exec(req.headers.authorization ?? '')?.[1] ?? null;
678
+ const record = bearer ? this.accessTokens.get(bearer) : undefined;
679
+ if (!record || record.expMs <= Date.now() || !record.aud.includes(this.apiResource)) {
680
+ return sendJson(res, 401, { error: { code: 'invalid_token', message: 'Unauthorized' } });
681
+ }
682
+ const orgs = this.userOrgs.get(record.sub) ?? new Map();
683
+ const resolved = orgId ?? orgs.keys().next().value ?? null;
684
+ if (!resolved || !orgs.has(resolved)) {
685
+ return sendJson(res, 401, { error: { code: 'unauthenticated', message: 'Authentication required' } });
686
+ }
687
+ const tools = this.tools.map((tool) => ({
688
+ slug: tool.slug,
689
+ clientId: `tool-${tool.slug}`,
690
+ name: tool.name,
691
+ launchUrl: tool.launchUrl,
692
+ returnOrigins: [new URL(tool.launchUrl).origin],
693
+ connected: false,
694
+ connectedAt: null,
695
+ lastUsedAt: null,
696
+ ...(tool.descriptor ? { descriptor: tool.descriptor } : {}),
697
+ open: !(this.userToolClosed.get(`${record.sub}:${tool.slug}`)?.has(resolved) ?? false)
698
+ }));
699
+ const entry = orgs.get(resolved);
700
+ const body = {
701
+ organization: { id: resolved, name: entry?.name ?? '', status: entry?.status ?? 'active' },
702
+ tools
703
+ };
704
+ // The fake answers the hub's published shape and nothing else: a body the
705
+ // real hub would never send is a test proving nothing, so it is refused
706
+ // here, as a 500 naming the drift (a thrown error would only hang the socket).
707
+ const checked = meAppsSchema.safeParse(body);
708
+ if (!checked.success) {
709
+ return sendJson(res, 500, {
710
+ error: {
711
+ code: 'fake_hub_drift',
712
+ message: `/me/apps body is off the hub contract: ${checked.error.message}`
713
+ }
714
+ });
715
+ }
716
+ return sendJson(res, 200, body);
717
+ }
646
718
  async handleOrgs(req, res) {
647
719
  this.orgsRequests.push({ auth: req.headers.authorization ?? null });
648
720
  if (this.orgsDelayMs > 0)