@enbox/dwn-server 0.0.6 → 0.0.8

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 (92) hide show
  1. package/dist/esm/src/admin/admin-api.d.ts +5 -1
  2. package/dist/esm/src/admin/admin-api.d.ts.map +1 -1
  3. package/dist/esm/src/admin/admin-api.js +327 -7
  4. package/dist/esm/src/admin/admin-api.js.map +1 -1
  5. package/dist/esm/src/admin/admin-auth.d.ts +21 -3
  6. package/dist/esm/src/admin/admin-auth.d.ts.map +1 -1
  7. package/dist/esm/src/admin/admin-auth.js +17 -9
  8. package/dist/esm/src/admin/admin-auth.js.map +1 -1
  9. package/dist/esm/src/admin/admin-passkey-store.d.ts +68 -0
  10. package/dist/esm/src/admin/admin-passkey-store.d.ts.map +1 -0
  11. package/dist/esm/src/admin/admin-passkey-store.js +132 -0
  12. package/dist/esm/src/admin/admin-passkey-store.js.map +1 -0
  13. package/dist/esm/src/admin/admin-session.d.ts +35 -0
  14. package/dist/esm/src/admin/admin-session.d.ts.map +1 -0
  15. package/dist/esm/src/admin/admin-session.js +91 -0
  16. package/dist/esm/src/admin/admin-session.js.map +1 -0
  17. package/dist/esm/src/admin/audit-log.d.ts.map +1 -1
  18. package/dist/esm/src/admin/audit-log.js +5 -43
  19. package/dist/esm/src/admin/audit-log.js.map +1 -1
  20. package/dist/esm/src/admin/index.d.ts +5 -1
  21. package/dist/esm/src/admin/index.d.ts.map +1 -1
  22. package/dist/esm/src/admin/index.js +2 -0
  23. package/dist/esm/src/admin/index.js.map +1 -1
  24. package/dist/esm/src/admin/types.d.ts +22 -0
  25. package/dist/esm/src/admin/types.d.ts.map +1 -1
  26. package/dist/esm/src/admin/webhook-manager.d.ts.map +1 -1
  27. package/dist/esm/src/admin/webhook-manager.js +11 -10
  28. package/dist/esm/src/admin/webhook-manager.js.map +1 -1
  29. package/dist/esm/src/config.d.ts +18 -0
  30. package/dist/esm/src/config.d.ts.map +1 -1
  31. package/dist/esm/src/config.js +18 -0
  32. package/dist/esm/src/config.js.map +1 -1
  33. package/dist/esm/src/dwn-server.d.ts +20 -1
  34. package/dist/esm/src/dwn-server.d.ts.map +1 -1
  35. package/dist/esm/src/dwn-server.js +111 -52
  36. package/dist/esm/src/dwn-server.js.map +1 -1
  37. package/dist/esm/src/http-api.d.ts +4 -0
  38. package/dist/esm/src/http-api.d.ts.map +1 -1
  39. package/dist/esm/src/http-api.js +14 -4
  40. package/dist/esm/src/http-api.js.map +1 -1
  41. package/dist/esm/src/index.d.ts +2 -0
  42. package/dist/esm/src/index.d.ts.map +1 -1
  43. package/dist/esm/src/index.js +2 -0
  44. package/dist/esm/src/index.js.map +1 -1
  45. package/dist/esm/src/migrations/001-initial-server-schema.d.ts +21 -0
  46. package/dist/esm/src/migrations/001-initial-server-schema.d.ts.map +1 -0
  47. package/dist/esm/src/migrations/001-initial-server-schema.js +97 -0
  48. package/dist/esm/src/migrations/001-initial-server-schema.js.map +1 -0
  49. package/dist/esm/src/migrations/index.d.ts +13 -0
  50. package/dist/esm/src/migrations/index.d.ts.map +1 -0
  51. package/dist/esm/src/migrations/index.js +5 -0
  52. package/dist/esm/src/migrations/index.js.map +1 -0
  53. package/dist/esm/src/registration/registration-store.d.ts +4 -0
  54. package/dist/esm/src/registration/registration-store.d.ts.map +1 -1
  55. package/dist/esm/src/registration/registration-store.js +11 -34
  56. package/dist/esm/src/registration/registration-store.js.map +1 -1
  57. package/dist/esm/src/server-migration-runner.d.ts +23 -0
  58. package/dist/esm/src/server-migration-runner.d.ts.map +1 -0
  59. package/dist/esm/src/server-migration-runner.js +57 -0
  60. package/dist/esm/src/server-migration-runner.js.map +1 -0
  61. package/dist/esm/src/storage.d.ts +15 -0
  62. package/dist/esm/src/storage.d.ts.map +1 -1
  63. package/dist/esm/src/storage.js +135 -17
  64. package/dist/esm/src/storage.js.map +1 -1
  65. package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts +11 -1
  66. package/dist/esm/src/web5-connect/sql-ttl-cache.d.ts.map +1 -1
  67. package/dist/esm/src/web5-connect/sql-ttl-cache.js +19 -20
  68. package/dist/esm/src/web5-connect/sql-ttl-cache.js.map +1 -1
  69. package/dist/esm/src/web5-connect/web5-connect-server.d.ts +10 -3
  70. package/dist/esm/src/web5-connect/web5-connect-server.d.ts.map +1 -1
  71. package/dist/esm/src/web5-connect/web5-connect-server.js +10 -4
  72. package/dist/esm/src/web5-connect/web5-connect-server.js.map +1 -1
  73. package/package.json +3 -2
  74. package/src/admin/admin-api.ts +403 -10
  75. package/src/admin/admin-auth.ts +38 -9
  76. package/src/admin/admin-passkey-store.ts +190 -0
  77. package/src/admin/admin-session.ts +116 -0
  78. package/src/admin/audit-log.ts +7 -44
  79. package/src/admin/index.ts +5 -0
  80. package/src/admin/types.ts +28 -0
  81. package/src/admin/webhook-manager.ts +12 -10
  82. package/src/config.ts +21 -0
  83. package/src/dwn-server.ts +137 -55
  84. package/src/http-api.ts +20 -5
  85. package/src/index.ts +2 -0
  86. package/src/migrations/001-initial-server-schema.ts +114 -0
  87. package/src/migrations/index.ts +18 -0
  88. package/src/registration/registration-store.ts +13 -36
  89. package/src/server-migration-runner.ts +74 -0
  90. package/src/storage.ts +145 -17
  91. package/src/web5-connect/sql-ttl-cache.ts +21 -22
  92. package/src/web5-connect/web5-connect-server.ts +14 -5
@@ -1,7 +1,7 @@
1
1
  import { createHmac } from 'crypto';
2
- import { Kysely } from 'kysely';
3
2
  import log from 'loglevel';
4
3
  import { v4 as uuidv4 } from 'uuid';
4
+ import { Kysely, sql } from 'kysely';
5
5
  /**
6
6
  * Manages webhook registrations and event delivery.
7
7
  *
@@ -26,16 +26,17 @@ export class WebhookManager {
26
26
  await manager.#initialize();
27
27
  return manager;
28
28
  }
29
+ /**
30
+ * Verifies that the required table exists. Throws a clear error directing
31
+ * the caller to run server migrations first.
32
+ */
29
33
  async #initialize() {
30
- await this.#db.schema
31
- .createTable(WebhookManager.#tableName)
32
- .ifNotExists()
33
- .addColumn('id', 'text', (col) => col.primaryKey())
34
- .addColumn('url', 'text', (col) => col.notNull())
35
- .addColumn('events', 'text', (col) => col.notNull()) // JSON array
36
- .addColumn('secret', 'text')
37
- .addColumn('createdAt', 'text', (col) => col.notNull())
38
- .execute();
34
+ try {
35
+ await sql `SELECT 1 FROM ${sql.table(WebhookManager.#tableName)} LIMIT 0`.execute(this.#db);
36
+ }
37
+ catch {
38
+ throw new Error(`WebhookManager: table '${WebhookManager.#tableName}' does not exist. Run server migrations before starting.`);
39
+ }
39
40
  }
40
41
  // ---------------------------------------------------------------------------
41
42
  // CRUD
@@ -1 +1 @@
1
- {"version":3,"file":"webhook-manager.js","sourceRoot":"","sources":["../../../../src/admin/webhook-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webhook-manager.js","sourceRoot":"","sources":["../../../../src/admin/webhook-manager.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,24 @@ export declare const config: {
92
92
  * the admin store. Defaults to 30 seconds.
93
93
  */
94
94
  adminMetricsUpdateIntervalSeconds: number;
95
+ /**
96
+ * WebAuthn Relying Party ID for admin passkey authentication. Typically
97
+ * the hostname of the DWN server (e.g. `dev.aws.dwn.enbox.id`). When not
98
+ * set, the hostname is extracted from `DWN_BASE_URL` at runtime.
99
+ *
100
+ * @see https://github.com/enboxorg/enbox/issues/546
101
+ */
102
+ adminWebAuthnRpId: string;
103
+ /**
104
+ * Human-readable Relying Party name shown during passkey registration.
105
+ * Defaults to `"DWN Admin"`.
106
+ */
107
+ adminWebAuthnRpName: string;
108
+ /**
109
+ * Session time-to-live (in seconds) for passkey-authenticated sessions.
110
+ * Defaults to 86400 (24 hours).
111
+ */
112
+ adminSessionTtlSeconds: number;
95
113
  /**
96
114
  * Default maximum number of messages a tenant may store. 0 = unlimited (default).
97
115
  * Per-tenant overrides are managed via the admin API.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,OAAO,MAAM,CAAC;AAE5C,eAAO,MAAM,MAAM;IACjB;;OAEG;;IAGH;;;;OAIG;;IAGH;;OAEG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAEH;;;;;;OAMG;;IAGH;;;;OAIG;;;IAMH;;;OAGG;;;;;;IASH;;;;OAIG;;;;;;;;;;;;;;;;;;IAyBH;;;OAGG;;IAOH;;;OAGG;;IAGH;;;OAGG;;IAOH;;;OAGG;;IAGH;;;OAGG;;IAOH;;;;;OAKG;;IAGH;;;;;OAKG;;IAOH;;;;OAIG;;IAGH;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;IAOH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;OAGG;;IAGH;;;;OAIG;;CAEJ,CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,eAAe,GAAG,OAAO,MAAM,CAAC;AAE5C,eAAO,MAAM,MAAM;IACjB;;OAEG;;IAGH;;;;OAIG;;IAGH;;OAEG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAEH;;;;;;OAMG;;IAGH;;;;OAIG;;;IAMH;;;OAGG;;;;;;IASH;;;;OAIG;;;;;;;;;;;;;;;;;;IAyBH;;;OAGG;;IAOH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAOH;;;OAGG;;IAGH;;;OAGG;;IAOH;;;;;OAKG;;IAGH;;;;;OAKG;;IAOH;;;;OAIG;;IAGH;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;IAOH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;OAGG;;IAGH;;;;OAIG;;CAEJ,CAAC"}
@@ -100,6 +100,24 @@ export const config = {
100
100
  * the admin store. Defaults to 30 seconds.
101
101
  */
102
102
  adminMetricsUpdateIntervalSeconds: parseInt(process.env.DWN_ADMIN_METRICS_UPDATE_INTERVAL || '30'),
103
+ /**
104
+ * WebAuthn Relying Party ID for admin passkey authentication. Typically
105
+ * the hostname of the DWN server (e.g. `dev.aws.dwn.enbox.id`). When not
106
+ * set, the hostname is extracted from `DWN_BASE_URL` at runtime.
107
+ *
108
+ * @see https://github.com/enboxorg/enbox/issues/546
109
+ */
110
+ adminWebAuthnRpId: process.env.DWN_ADMIN_WEBAUTHN_RP_ID || undefined,
111
+ /**
112
+ * Human-readable Relying Party name shown during passkey registration.
113
+ * Defaults to `"DWN Admin"`.
114
+ */
115
+ adminWebAuthnRpName: process.env.DWN_ADMIN_WEBAUTHN_RP_NAME || 'DWN Admin',
116
+ /**
117
+ * Session time-to-live (in seconds) for passkey-authenticated sessions.
118
+ * Defaults to 86400 (24 hours).
119
+ */
120
+ adminSessionTtlSeconds: parseInt(process.env.DWN_ADMIN_SESSION_TTL || '86400'),
103
121
  // ---------------------------------------------------------------------------
104
122
  // Per-tenant storage quotas
105
123
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import type { ProcessHandlers } from './process-handlers.js';
5
5
  import type { Server } from 'bun';
6
6
  import type { WsData } from './http-api.js';
7
7
  import { Dwn } from '@enbox/dwn-sdk-js';
8
+ import { OpenAuthHandler } from './registration/open-auth-handler.js';
8
9
  import { RegistrationManager } from './registration/registration-manager.js';
9
10
  /**
10
11
  * Options for the DwnServer constructor.
@@ -26,6 +27,22 @@ export type DwnServerOptions = {
26
27
  * are appended after the DeliveryService hook.
27
28
  */
28
29
  messageProcessedHooks?: MessageProcessedHook[];
30
+ /**
31
+ * An externally created RegistrationManager to use as the tenant gate and
32
+ * registration endpoint handler. When a pre-built `dwn` is provided, the
33
+ * server cannot create its own RegistrationManager (because it doesn't
34
+ * control the DWN's TenantGate). Pass one here to enable registration
35
+ * endpoints (`POST /registration`, etc.) with a pre-built DWN.
36
+ */
37
+ registrationManager?: RegistrationManager;
38
+ /**
39
+ * An externally created OpenAuthHandler for the built-in provider-auth
40
+ * endpoints (`/provider-auth/authorize`, `/provider-auth/token`,
41
+ * `/provider-auth/refresh`). When a pre-built `dwn` is provided, the
42
+ * server skips creating this handler. Pass one here to enable the
43
+ * open-auth flow with a pre-built DWN.
44
+ */
45
+ openAuthHandler?: OpenAuthHandler;
29
46
  };
30
47
  /**
31
48
  * State of the DwnServer, either Stopped or Started, to help short-circuit start and stop logic.
@@ -46,7 +63,9 @@ export declare class DwnServer {
46
63
  dwn?: Dwn;
47
64
  config: DwnServerConfig;
48
65
  /**
49
- * @param options.dwn - Dwn instance to use as an override. Registration endpoint will not be enabled if this is provided.
66
+ * @param options.dwn - Dwn instance to use as an override.
67
+ * @param options.registrationManager - External RegistrationManager to use with a pre-built DWN.
68
+ * @param options.openAuthHandler - External OpenAuthHandler to use with a pre-built DWN.
50
69
  */
51
70
  constructor(options?: DwnServerOptions);
52
71
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"dwn-server.d.ts","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAgB9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAM7E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;CAChD,CAAC;AAEF;;GAEG;AACH,aAAK,cAAc;IACjB,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,qBAAa,SAAS;;IACpB,WAAW,iBAA0B;IACrC,eAAe,EAAE,eAAe,CAAC;IAEjC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,eAAe,CAAC;IASxB;;OAEG;gBACS,OAAO,GAAE,gBAAqB;IAa1C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA+O5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC3B,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,mBAAmB,CAE7C;CACF"}
1
+ {"version":3,"file":"dwn-server.d.ts","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAK5C,OAAO,EAAE,GAAG,EAAwB,MAAM,mBAAmB,CAAC;AAe9D,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAGtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAM7E;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;;;OAKG;IACH,qBAAqB,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAE/C;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAE1C;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC,CAAC;AAEF;;GAEG;AACH,aAAK,cAAc;IACjB,OAAO,IAAA;IACP,OAAO,IAAA;CACR;AAED,qBAAa,SAAS;;IACpB,WAAW,iBAA0B;IACrC,eAAe,EAAE,eAAe,CAAC;IAEjC;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,eAAe,CAAC;IAaxB;;;;OAIG;gBACS,OAAO,GAAE,gBAAqB;IAe1C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA6R5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B,IAAI,UAAU,IAAI,MAAM,CAAC,MAAM,CAAC,CAE/B;IAED;;OAEG;IACH,IAAI,mBAAmB,IAAI,mBAAmB,CAE7C;CACF"}
@@ -4,6 +4,8 @@ import { DidDht, DidJwk, DidKey, DidResolverCacheMemory, DidWeb, UniversalResolv
4
4
  import { Dwn, EventEmitterEventLog } from '@enbox/dwn-sdk-js';
5
5
  import { ActivityLog } from './admin/activity-log.js';
6
6
  import { AdminApi } from './admin/admin-api.js';
7
+ import { AdminPasskeyStore } from './admin/admin-passkey-store.js';
8
+ import { AdminSessionManager } from './admin/admin-session.js';
7
9
  import { AdminStore } from './admin/admin-store.js';
8
10
  import { AuditLog } from './admin/audit-log.js';
9
11
  import { config as defaultConfig } from './config.js';
@@ -17,7 +19,7 @@ import { RateLimiter } from './rate-limiter.js';
17
19
  import { RegistrationManager } from './registration/registration-manager.js';
18
20
  import { WebhookManager } from './admin/webhook-manager.js';
19
21
  import { WsApi } from './ws-api.js';
20
- import { getDialectFromUrl, getDwnConfig } from './storage.js';
22
+ import { getDialectFromUrl, getDwnConfig, runServerMigrationsIfNeeded } from './storage.js';
21
23
  import { removeProcessHandlers, setProcessHandlers } from './process-handlers.js';
22
24
  /**
23
25
  * State of the DwnServer, either Stopped or Started, to help short-circuit start and stop logic.
@@ -43,15 +45,23 @@ export class DwnServer {
43
45
  #ipRateLimiter;
44
46
  #tenantRateLimiter;
45
47
  #auditLog;
48
+ #passkeyStore;
49
+ #sessionManager;
46
50
  #externalHooks;
51
+ #externalRegistrationManager;
52
+ #externalOpenAuthHandler;
47
53
  /**
48
- * @param options.dwn - Dwn instance to use as an override. Registration endpoint will not be enabled if this is provided.
54
+ * @param options.dwn - Dwn instance to use as an override.
55
+ * @param options.registrationManager - External RegistrationManager to use with a pre-built DWN.
56
+ * @param options.openAuthHandler - External OpenAuthHandler to use with a pre-built DWN.
49
57
  */
50
58
  constructor(options = {}) {
51
59
  this.config = options.config ?? defaultConfig;
52
60
  this.didResolver = options.didResolver;
53
61
  this.dwn = options.dwn;
54
62
  this.#externalHooks = options.messageProcessedHooks ?? [];
63
+ this.#externalRegistrationManager = options.registrationManager;
64
+ this.#externalOpenAuthHandler = options.openAuthHandler;
55
65
  log.setLevel(this.config.logLevel);
56
66
  prefix.reg(log);
57
67
  prefix.apply(log);
@@ -72,46 +82,16 @@ export class DwnServer {
72
82
  * The DWN creation is secondary and only happens if it hasn't already been done.
73
83
  */
74
84
  async #setupServer() {
85
+ // Run server migrations (admin stores, registration, TTL cache) FIRST,
86
+ // before creating any stores that depend on the server schema. The
87
+ // returned dialect is reused for the TTL cache and admin stores so that
88
+ // in-memory SQLite shares a single database instance across migrations
89
+ // and stores.
90
+ const serverDialect = await runServerMigrationsIfNeeded(this.config);
75
91
  let registrationManager;
76
92
  if (!this.dwn) {
77
- // Load provider auth plugin if configured.
78
- let providerAuthPlugin;
79
- if (this.config.providerAuthEnabled) {
80
- if (this.config.providerAuthPluginPath) {
81
- // Custom external plugin.
82
- providerAuthPlugin = await loadProviderAuthPlugin(this.config.providerAuthPluginPath);
83
- log.info('Provider auth plugin loaded from path');
84
- }
85
- else if (this.config.providerAuthJwtSecret || this.config.providerAuthJwtJwksUrl) {
86
- // Built-in JWT plugin.
87
- providerAuthPlugin = await JwtProviderAuthPlugin.create({
88
- secret: this.config.providerAuthJwtSecret,
89
- jwksUrl: this.config.providerAuthJwtJwksUrl,
90
- issuer: this.config.baseUrl,
91
- audience: this.config.baseUrl,
92
- });
93
- log.info('Built-in JWT provider auth plugin created');
94
- }
95
- }
96
- // undefined registrationStoreUrl is used as a signal that there is no need for tenant registration, DWN is open for all.
97
- registrationManager = await RegistrationManager.create({
98
- registrationStoreUrl: this.config.registrationStoreUrl,
99
- termsOfServiceFilePath: this.config.termsOfServiceFilePath,
100
- proofOfWorkChallengeNonceSeed: this.config.registrationProofOfWorkSeed,
101
- proofOfWorkInitialMaximumAllowedHash: this.config.registrationProofOfWorkInitialMaxHash,
102
- providerAuthPlugin,
103
- });
104
- // Warn if the tenant gate is active but no registration method is enabled.
105
- // This is almost certainly a misconfiguration — new tenants will be rejected
106
- // with 401 and have no way to register.
107
- if (this.config.registrationStoreUrl
108
- && !this.config.registrationProofOfWorkEnabled
109
- && !providerAuthPlugin) {
110
- log.warn('*** WARNING: DWN_REGISTRATION_STORE_URL is set (tenant gate active) but neither ' +
111
- 'proof-of-work (DWN_REGISTRATION_PROOF_OF_WORK_ENABLED) nor provider auth ' +
112
- '(DWN_PROVIDER_AUTH_ENABLED + secret/plugin) is configured. ' +
113
- 'New tenants will be unable to register. ***');
114
- }
93
+ // No pre-built DWN create everything from scratch including registration.
94
+ registrationManager = await this.#createRegistrationManager();
115
95
  let eventLog;
116
96
  if (this.config.webSocketSupport) {
117
97
  // If EventLog plugin is not specified, use `EventEmitterEventLog` implementation as default.
@@ -137,6 +117,12 @@ export class DwnServer {
137
117
  });
138
118
  this.dwn = await Dwn.create(dwnConfig);
139
119
  }
120
+ else if (this.#externalRegistrationManager) {
121
+ // Pre-built DWN with an externally-provided RegistrationManager.
122
+ // The caller is responsible for passing this RegistrationManager as the
123
+ // TenantGate when creating the DWN instance.
124
+ registrationManager = this.#externalRegistrationManager;
125
+ }
140
126
  // Assemble message-processed hooks.
141
127
  const messageProcessedHooks = [];
142
128
  // Add the built-in DeliveryService hook when forwarding or delivery is enabled.
@@ -174,16 +160,20 @@ export class DwnServer {
174
160
  let adminStore;
175
161
  let auditLog;
176
162
  let webhookManager;
163
+ let passkeyStore;
164
+ let sessionManager;
177
165
  if (this.config.adminToken) {
178
166
  const storageUrl = this.config.messageStore;
179
167
  adminStore = AdminStore.create(storageUrl);
180
168
  activityLog = new ActivityLog(this.config.adminActivityLogCapacity);
181
- // Create the persistent audit log using the registration store's dialect
182
- // (same DB) or the message store URL as fallback.
169
+ // Reuse the dialect returned by server migrations when available — this
170
+ // is critical for in-memory SQLite where every `getDialectFromUrl` call
171
+ // creates a separate database. For Postgres, `serverDialect` points at
172
+ // the same shared pool, so reusing it also avoids pool proliferation.
183
173
  if (this.config.registrationStoreUrl) {
174
+ const adminDialect = serverDialect ?? getDialectFromUrl(new URL(this.config.registrationStoreUrl));
184
175
  try {
185
- const auditDialect = getDialectFromUrl(new URL(this.config.registrationStoreUrl));
186
- auditLog = await AuditLog.create(auditDialect, {
176
+ auditLog = await AuditLog.create(adminDialect, {
187
177
  maxAgeDays: this.config.auditLogMaxAgeDays,
188
178
  maxRows: this.config.auditLogMaxRows,
189
179
  });
@@ -191,16 +181,22 @@ export class DwnServer {
191
181
  catch (err) {
192
182
  log.warn('Failed to create audit log:', err);
193
183
  }
194
- }
195
- // Create webhook manager using the same dialect as the audit log.
196
- if (this.config.registrationStoreUrl) {
197
184
  try {
198
- const webhookDialect = getDialectFromUrl(new URL(this.config.registrationStoreUrl));
199
- webhookManager = await WebhookManager.create(webhookDialect);
185
+ webhookManager = await WebhookManager.create(adminDialect);
200
186
  }
201
187
  catch (err) {
202
188
  log.warn('Failed to create webhook manager:', err);
203
189
  }
190
+ // Create passkey store and session manager for WebAuthn admin auth.
191
+ // @see https://github.com/enboxorg/enbox/issues/546
192
+ try {
193
+ passkeyStore = await AdminPasskeyStore.create(adminDialect);
194
+ sessionManager = new AdminSessionManager(this.config.adminSessionTtlSeconds);
195
+ log.info('Admin passkey authentication enabled');
196
+ }
197
+ catch (err) {
198
+ log.warn('Failed to create passkey store:', err);
199
+ }
204
200
  }
205
201
  adminApi = AdminApi.create({
206
202
  config: this.config,
@@ -213,6 +209,8 @@ export class DwnServer {
213
209
  ipRateLimiter,
214
210
  tenantRateLimiter,
215
211
  webhookManager,
212
+ passkeyStore,
213
+ sessionManager,
216
214
  });
217
215
  // Record server start event in audit log.
218
216
  if (auditLog) {
@@ -225,12 +223,17 @@ export class DwnServer {
225
223
  this.#ipRateLimiter = ipRateLimiter;
226
224
  this.#tenantRateLimiter = tenantRateLimiter;
227
225
  this.#auditLog = auditLog;
226
+ this.#passkeyStore = passkeyStore;
227
+ this.#sessionManager = sessionManager;
228
228
  // Create open-auth handler if provider auth is enabled with a JWT secret
229
229
  // and authorize/token URLs point to this server (or are not set — defaulting to built-in).
230
- let openAuthHandler;
231
- if (this.config.providerAuthEnabled && this.config.providerAuthJwtSecret && !this.config.providerAuthPluginPath) {
230
+ // An externally-provided handler (e.g. from the relay) takes precedence.
231
+ let openAuthHandler = this.#externalOpenAuthHandler;
232
+ if (!openAuthHandler && this.config.providerAuthEnabled && this.config.providerAuthJwtSecret && !this.config.providerAuthPluginPath) {
232
233
  openAuthHandler = OpenAuthHandler.create(this.config.providerAuthJwtSecret, this.config.baseUrl);
233
234
  log.info('Built-in open-auth endpoints enabled');
235
+ }
236
+ if (openAuthHandler) {
234
237
  // Auto-configure authorize/token/refresh URLs if not explicitly set.
235
238
  if (!this.config.providerAuthAuthorizeUrl) {
236
239
  this.config.providerAuthAuthorizeUrl = `${this.config.baseUrl}/provider-auth/authorize`;
@@ -242,7 +245,11 @@ export class DwnServer {
242
245
  this.config.providerAuthRefreshUrl = `${this.config.baseUrl}/provider-auth/refresh`;
243
246
  }
244
247
  }
245
- this.#httpApi = await HttpApi.create(this.config, this.dwn, registrationManager, adminApi, activityLog, { adminStore, registrationStore, ipRateLimiter, tenantRateLimiter, messageProcessedHooks, openAuthHandler });
248
+ this.#httpApi = await HttpApi.create(this.config, this.dwn, registrationManager, adminApi, activityLog, {
249
+ adminStore, registrationStore, ipRateLimiter, tenantRateLimiter,
250
+ messageProcessedHooks, openAuthHandler, sessionManager,
251
+ ttlCacheDialect: serverDialect,
252
+ });
246
253
  await this.#httpApi.start(this.config.port);
247
254
  log.info(`HttpServer listening on port ${this.config.port}`);
248
255
  if (this.config.webSocketSupport) {
@@ -259,6 +266,51 @@ export class DwnServer {
259
266
  adminApi.startMetricsUpdater();
260
267
  }
261
268
  }
269
+ /**
270
+ * Creates a RegistrationManager based on the server config. Factored out of
271
+ * `#setupServer()` so the same logic can be reused regardless of whether the
272
+ * DWN is created internally or externally.
273
+ */
274
+ async #createRegistrationManager() {
275
+ // Load provider auth plugin if configured.
276
+ let providerAuthPlugin;
277
+ if (this.config.providerAuthEnabled) {
278
+ if (this.config.providerAuthPluginPath) {
279
+ // Custom external plugin.
280
+ providerAuthPlugin = await loadProviderAuthPlugin(this.config.providerAuthPluginPath);
281
+ log.info('Provider auth plugin loaded from path');
282
+ }
283
+ else if (this.config.providerAuthJwtSecret || this.config.providerAuthJwtJwksUrl) {
284
+ // Built-in JWT plugin.
285
+ providerAuthPlugin = await JwtProviderAuthPlugin.create({
286
+ secret: this.config.providerAuthJwtSecret,
287
+ jwksUrl: this.config.providerAuthJwtJwksUrl,
288
+ issuer: this.config.baseUrl,
289
+ audience: this.config.baseUrl,
290
+ });
291
+ log.info('Built-in JWT provider auth plugin created');
292
+ }
293
+ }
294
+ // undefined registrationStoreUrl is used as a signal that there is no need
295
+ // for tenant registration, DWN is open for all.
296
+ const registrationManager = await RegistrationManager.create({
297
+ registrationStoreUrl: this.config.registrationStoreUrl,
298
+ termsOfServiceFilePath: this.config.termsOfServiceFilePath,
299
+ proofOfWorkChallengeNonceSeed: this.config.registrationProofOfWorkSeed,
300
+ proofOfWorkInitialMaximumAllowedHash: this.config.registrationProofOfWorkInitialMaxHash,
301
+ providerAuthPlugin,
302
+ });
303
+ // Warn if the tenant gate is active but no registration method is enabled.
304
+ if (this.config.registrationStoreUrl
305
+ && !this.config.registrationProofOfWorkEnabled
306
+ && !providerAuthPlugin) {
307
+ log.warn('*** WARNING: DWN_REGISTRATION_STORE_URL is set (tenant gate active) but neither ' +
308
+ 'proof-of-work (DWN_REGISTRATION_PROOF_OF_WORK_ENABLED) nor provider auth ' +
309
+ '(DWN_PROVIDER_AUTH_ENABLED + secret/plugin) is configured. ' +
310
+ 'New tenants will be unable to register. ***');
311
+ }
312
+ return registrationManager;
313
+ }
262
314
  /**
263
315
  * Stops the DWN server.
264
316
  */
@@ -274,6 +326,13 @@ export class DwnServer {
274
326
  await this.#auditLog.record({ actor: 'system', action: 'server.stop' });
275
327
  await this.#auditLog.close();
276
328
  }
329
+ // Clean up passkey store and session manager.
330
+ if (this.#passkeyStore) {
331
+ await this.#passkeyStore.close();
332
+ }
333
+ if (this.#sessionManager) {
334
+ this.#sessionManager.destroy();
335
+ }
277
336
  // Clean up rate limiters (stops their interval timers).
278
337
  if (this.#ipRateLimiter) {
279
338
  this.#ipRateLimiter.destroy();
@@ -1 +1 @@
1
- {"version":3,"file":"dwn-server.js","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dwn-server.js","sourceRoot":"","sources":["../../../src/dwn-server.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { Server, ServerWebSocket } from 'bun';
2
+ import type { Dialect } from '@enbox/dwn-sql-store';
2
3
  import type { ActivityLog } from './admin/activity-log.js';
3
4
  import type { AdminApi } from './admin/admin-api.js';
5
+ import type { AdminSessionManager } from './admin/admin-session.js';
4
6
  import type { AdminStore } from './admin/admin-store.js';
5
7
  import type { DwnServerConfig } from './config.js';
6
8
  import type { MessageProcessedHook } from './message-processed-hook.js';
@@ -30,6 +32,8 @@ export declare class HttpApi {
30
32
  tenantRateLimiter?: RateLimiter;
31
33
  messageProcessedHooks?: MessageProcessedHook[];
32
34
  openAuthHandler?: OpenAuthHandler;
35
+ sessionManager?: AdminSessionManager;
36
+ ttlCacheDialect?: Dialect;
33
37
  }): Promise<HttpApi>;
34
38
  get server(): Server<WsData>;
35
39
  get ipRateLimiter(): RateLimiter | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"http-api.d.ts","sourceRoot":"","sources":["../../../src/http-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E,OAAO,EAAwB,KAAK,GAAG,EAA6C,MAAM,mBAAmB,CAAC;AAO9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAgB1E,yDAAyD;AACzD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,qBAAa,OAAO;;IAalB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;IAET,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE9D,OAAO;WAEa,MAAM,CACxB,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAC5E,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,EAC9C,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAG,UAAU,CAAC;QACzB,iBAAiB,CAAC,EAAG,iBAAiB,CAAC;QACvC,aAAa,CAAC,EAAG,WAAW,CAAC;QAC7B,iBAAiB,CAAC,EAAG,WAAW,CAAC;QACjC,qBAAqB,CAAC,EAAG,oBAAoB,EAAE,CAAC;QAChD,eAAe,CAAC,EAAG,eAAe,CAAC;KACpC,GACA,OAAO,CAAC,OAAO,CAAC;IAkDnB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAE3B;IAED,IAAI,aAAa,IAAI,WAAW,GAAG,SAAS,CAE3C;IAED,IAAI,iBAAiB,IAAI,WAAW,GAAG,SAAS,CAE/C;IAED,IAAI,qBAAqB,IAAI,oBAAoB,EAAE,CAElD;IAMK,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA2nB7B"}
1
+ {"version":3,"file":"http-api.d.ts","sourceRoot":"","sources":["../../../src/http-api.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,KAAK,CAAC;AAEnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAQ1E,OAAO,EAAwB,KAAK,GAAG,EAA6C,MAAM,mBAAmB,CAAC;AAQ9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAgB1E,yDAAyD;AACzD,MAAM,WAAW,MAAM;IACrB,UAAU,EAAE,gBAAgB,CAAC;CAC9B;AAED,qBAAa,OAAO;;IAclB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;IAET,iFAAiF;IACjF,qBAAqB,CAAC,EAAE,CAAC,EAAE,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAE9D,OAAO;WAEa,MAAM,CACxB,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,GAAG,EAAE,mBAAmB,CAAC,EAAE,mBAAmB,EAC5E,QAAQ,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,WAAW,EAC9C,OAAO,CAAC,EAAE;QACR,UAAU,CAAC,EAAG,UAAU,CAAC;QACzB,iBAAiB,CAAC,EAAG,iBAAiB,CAAC;QACvC,aAAa,CAAC,EAAG,WAAW,CAAC;QAC7B,iBAAiB,CAAC,EAAG,WAAW,CAAC;QACjC,qBAAqB,CAAC,EAAG,oBAAoB,EAAE,CAAC;QAChD,eAAe,CAAC,EAAG,eAAe,CAAC;QACnC,cAAc,CAAC,EAAG,mBAAmB,CAAC;QACtC,eAAe,CAAC,EAAG,OAAO,CAAC;KAC5B,GACA,OAAO,CAAC,OAAO,CAAC;IAuDnB,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAE3B;IAED,IAAI,aAAa,IAAI,WAAW,GAAG,SAAS,CAE3C;IAED,IAAI,iBAAiB,IAAI,WAAW,GAAG,SAAS,CAE/C;IAED,IAAI,qBAAqB,IAAI,oBAAoB,EAAE,CAElD;IAMK,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqGlC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CA8nB7B"}
@@ -7,6 +7,7 @@ import { DataStream, DateSort, ProtocolsQuery, RecordsQuery, RecordsRead } from
7
7
  import { existsSync, readFileSync } from 'fs';
8
8
  import { join, resolve } from 'path';
9
9
  import { config } from './config.js';
10
+ import { getDialectFromUrl } from './storage.js';
10
11
  import { jsonRpcRouter } from './json-rpc-api.js';
11
12
  import { validateAdminAuth } from './admin/admin-auth.js';
12
13
  import { Web5ConnectServer } from './web5-connect/web5-connect-server.js';
@@ -35,6 +36,7 @@ export class HttpApi {
35
36
  #tenantRateLimiter;
36
37
  #messageProcessedHooks;
37
38
  #openAuthHandler;
39
+ #sessionManager;
38
40
  #adminUiPath;
39
41
  web5ConnectServer;
40
42
  registrationManager;
@@ -75,13 +77,18 @@ export class HttpApi {
75
77
  httpApi.#tenantRateLimiter = options?.tenantRateLimiter;
76
78
  httpApi.#messageProcessedHooks = options?.messageProcessedHooks ?? [];
77
79
  httpApi.#openAuthHandler = options?.openAuthHandler;
80
+ httpApi.#sessionManager = options?.sessionManager;
78
81
  httpApi.#adminUiPath = resolvedAdminUiPath;
79
82
  if (registrationManager !== undefined) {
80
83
  httpApi.registrationManager = registrationManager;
81
84
  }
85
+ // Use an externally provided dialect when available (required for
86
+ // in-memory SQLite so that migrations and the TTL cache share the same
87
+ // database instance). Falls back to creating a dialect from the URL.
88
+ const ttlDialect = options?.ttlCacheDialect ?? getDialectFromUrl(new URL(config.ttlCacheUrl));
82
89
  httpApi.web5ConnectServer = await Web5ConnectServer.create({
83
90
  baseUrl: config.baseUrl,
84
- sqlTtlCacheUrl: config.ttlCacheUrl,
91
+ sqlDialect: ttlDialect,
85
92
  });
86
93
  return httpApi;
87
94
  }
@@ -193,6 +200,9 @@ export class HttpApi {
193
200
  if (this.#openAuthHandler) {
194
201
  this.#openAuthHandler.destroy();
195
202
  }
203
+ if (this.web5ConnectServer) {
204
+ this.web5ConnectServer.close();
205
+ }
196
206
  if (this.#server) {
197
207
  this.#server.stop(true); // close all connections immediately
198
208
  }
@@ -246,9 +256,9 @@ export class HttpApi {
246
256
  if (method === 'GET' && path === '/metrics') {
247
257
  // Metrics require admin authentication when an admin token is configured.
248
258
  if (this.#config.adminToken) {
249
- const authError = validateAdminAuth(req, this.#config);
250
- if (authError) {
251
- return authError;
259
+ const authResult = validateAdminAuth(req, this.#config, this.#sessionManager);
260
+ if (authResult.error) {
261
+ return authResult.error;
252
262
  }
253
263
  }
254
264
  try {