@gizmodata/gizmosql-mcp 0.3.7 → 0.4.1

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/oauth.js ADDED
@@ -0,0 +1,209 @@
1
+ // OAuth 2.1 resource-server support for the Streamable HTTP transport.
2
+ //
3
+ // The MCP server never issues tokens itself. An OpenID Connect provider
4
+ // (Microsoft Entra ID, Okta, Auth0, Keycloak, Cognito, Clerk, ...) is the
5
+ // authorization server; this module
6
+ // - discovers the provider's JWKS from its issuer URL,
7
+ // - verifies the bearer token on every request (signature, issuer,
8
+ // audience, expiry) and derives the caller's identity from its claims,
9
+ // - optionally restricts callers to an email allowlist, and
10
+ // - renders the RFC 9728 protected-resource metadata and the
11
+ // WWW-Authenticate challenge that let MCP clients such as Claude.ai
12
+ // find the authorization server on their own.
13
+ //
14
+ // The GizmoSQL connection itself keeps using the configured service
15
+ // credentials: the caller's token is validated here and never forwarded.
16
+ import { createRemoteJWKSet, jwtVerify } from "jose";
17
+ export class OAuthError extends Error {
18
+ code;
19
+ constructor(code, message) {
20
+ super(message);
21
+ this.code = code;
22
+ this.name = "OAuthError";
23
+ }
24
+ /** HTTP status the transport should answer with. */
25
+ get status() {
26
+ return this.code === "forbidden" ? 403 : 401;
27
+ }
28
+ }
29
+ /** Asymmetric algorithms only: a symmetric alg would let the JWKS-hosted public key act as a secret. */
30
+ export const ALLOWED_ALGORITHMS = ["RS256", "RS384", "RS512", "PS256", "PS384", "PS512", "ES256", "ES384", "ES512", "EdDSA"];
31
+ /** Tolerated clock skew between the provider and this host, in seconds. */
32
+ export const CLOCK_TOLERANCE_SECONDS = 60;
33
+ /** Well-known path of the protected-resource metadata, without and with the endpoint path (RFC 9728 §3.1). */
34
+ export function protectedResourceMetadataPaths(publicUrl) {
35
+ const path = new URL(publicUrl).pathname.replace(/\/+$/u, "");
36
+ const base = "/.well-known/oauth-protected-resource";
37
+ return path && path !== "/" ? [base, `${base}${path}`] : [base];
38
+ }
39
+ /** URL of the protected-resource metadata document (the path-suffixed form, which clients try first). */
40
+ export function protectedResourceMetadataUrl(publicUrl) {
41
+ const u = new URL(publicUrl);
42
+ const paths = protectedResourceMetadataPaths(publicUrl);
43
+ return `${u.origin}${paths[paths.length - 1]}`;
44
+ }
45
+ /** Candidate discovery documents for an issuer: OpenID Connect first, then RFC 8414 (both path placements). */
46
+ export function discoveryUrls(issuer) {
47
+ const u = new URL(issuer);
48
+ const path = u.pathname.replace(/\/+$/u, "");
49
+ const urls = [`${u.origin}${path}/.well-known/openid-configuration`];
50
+ if (path) {
51
+ urls.push(`${u.origin}/.well-known/oauth-authorization-server${path}`);
52
+ urls.push(`${u.origin}${path}/.well-known/oauth-authorization-server`);
53
+ }
54
+ else {
55
+ urls.push(`${u.origin}/.well-known/oauth-authorization-server`);
56
+ }
57
+ return urls;
58
+ }
59
+ /** Case-insensitive glob match where `*` matches any run of characters. */
60
+ export function emailMatches(email, pattern) {
61
+ const re = new RegExp("^" +
62
+ pattern
63
+ .trim()
64
+ .toLowerCase()
65
+ .split("*")
66
+ .map((s) => s.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"))
67
+ .join(".*") +
68
+ "$", "u");
69
+ return re.test(email.trim().toLowerCase());
70
+ }
71
+ const EMAIL_CLAIMS = ["email", "preferred_username", "upn"];
72
+ function firstString(claims, names) {
73
+ for (const n of names) {
74
+ const v = claims[n];
75
+ if (typeof v === "string" && v.trim() !== "")
76
+ return v.trim();
77
+ }
78
+ return undefined;
79
+ }
80
+ /** Builds the identity for a verified token payload. */
81
+ export function userFromClaims(claims, userClaims) {
82
+ const subject = typeof claims.sub === "string" ? claims.sub : "";
83
+ const emailish = EMAIL_CLAIMS.map((n) => claims[n]).find((v) => typeof v === "string" && v.includes("@"));
84
+ return {
85
+ subject,
86
+ name: firstString(claims, userClaims) ?? subject ?? "unknown",
87
+ email: emailish?.trim(),
88
+ claims,
89
+ };
90
+ }
91
+ /** Verifies bearer tokens against one OpenID Connect provider. */
92
+ export class OAuthVerifier {
93
+ config;
94
+ keyResolver;
95
+ discovering;
96
+ fetchImpl;
97
+ log;
98
+ constructor(config, options = {}) {
99
+ this.config = config;
100
+ this.fetchImpl = options.fetch ?? fetch;
101
+ this.log = options.log ?? ((m) => console.error(m));
102
+ if (options.getKey)
103
+ this.keyResolver = options.getKey;
104
+ }
105
+ /** RFC 9728 protected-resource metadata document. */
106
+ protectedResourceMetadata() {
107
+ const doc = {
108
+ resource: this.config.publicUrl,
109
+ authorization_servers: [this.config.issuer],
110
+ bearer_methods_supported: ["header"],
111
+ };
112
+ if (this.config.scopes.length > 0)
113
+ doc.scopes_supported = this.config.scopes;
114
+ return doc;
115
+ }
116
+ /** `WWW-Authenticate` value for a 401 (RFC 6750 §3 + RFC 9728 §5.1). */
117
+ challenge(error, description) {
118
+ const parts = [];
119
+ if (error)
120
+ parts.push(`error="${error}"`);
121
+ if (description)
122
+ parts.push(`error_description="${description.replace(/["\\\r\n]/gu, " ")}"`);
123
+ parts.push(`resource_metadata="${protectedResourceMetadataUrl(this.config.publicUrl)}"`);
124
+ if (this.config.scopes.length > 0)
125
+ parts.push(`scope="${this.config.scopes.join(" ")}"`);
126
+ return `Bearer ${parts.join(", ")}`;
127
+ }
128
+ /**
129
+ * Validates a bearer token and returns the caller. Throws OAuthError with
130
+ * code `invalid_token` (401) for a missing, malformed, expired or
131
+ * mis-issued token and `forbidden` (403) when the caller is not on the
132
+ * email allowlist.
133
+ */
134
+ async verify(authorization) {
135
+ const m = authorization ? /^Bearer\s+(.+)$/iu.exec(authorization.trim()) : null;
136
+ if (!m)
137
+ throw new OAuthError("invalid_token", "Bearer token required");
138
+ const token = m[1].trim();
139
+ const getKey = await this.resolveKeys();
140
+ let claims;
141
+ try {
142
+ const result = await jwtVerify(token, getKey, {
143
+ issuer: this.config.issuer,
144
+ audience: this.config.audiences,
145
+ algorithms: ALLOWED_ALGORITHMS,
146
+ clockTolerance: CLOCK_TOLERANCE_SECONDS,
147
+ });
148
+ claims = result.payload;
149
+ }
150
+ catch (err) {
151
+ throw new OAuthError("invalid_token", err instanceof Error ? err.message : String(err));
152
+ }
153
+ const user = userFromClaims(claims, this.config.userClaims);
154
+ if (this.config.authorizedEmails.length > 0) {
155
+ const email = user.email;
156
+ const allowed = email !== undefined && this.config.authorizedEmails.some((p) => emailMatches(email, p));
157
+ if (!allowed) {
158
+ throw new OAuthError("forbidden", `${email ?? user.name} is not authorized to use this server`);
159
+ }
160
+ }
161
+ return user;
162
+ }
163
+ resolveKeys() {
164
+ if (this.keyResolver)
165
+ return Promise.resolve(this.keyResolver);
166
+ if (!this.discovering) {
167
+ this.discovering = this.discoverJwks()
168
+ .then((uri) => {
169
+ this.keyResolver = createRemoteJWKSet(new URL(uri));
170
+ this.log(`[gizmosql-mcp] OAuth: verifying tokens from ${this.config.issuer} with keys at ${uri}`);
171
+ return this.keyResolver;
172
+ })
173
+ .finally(() => {
174
+ this.discovering = undefined;
175
+ });
176
+ }
177
+ return this.discovering;
178
+ }
179
+ /** Returns the JWKS URI: configured, or read from the provider's discovery document. */
180
+ async discoverJwks() {
181
+ if (this.config.jwksUri)
182
+ return this.config.jwksUri;
183
+ const errors = [];
184
+ for (const url of discoveryUrls(this.config.issuer)) {
185
+ try {
186
+ const res = await this.fetchImpl(url, { headers: { accept: "application/json" }, signal: AbortSignal.timeout(10000) });
187
+ if (!res.ok) {
188
+ errors.push(`${url}: HTTP ${res.status}`);
189
+ continue;
190
+ }
191
+ const doc = (await res.json());
192
+ if (typeof doc.jwks_uri !== "string" || doc.jwks_uri === "") {
193
+ errors.push(`${url}: no jwks_uri`);
194
+ continue;
195
+ }
196
+ if (typeof doc.issuer === "string" && doc.issuer.replace(/\/+$/u, "") !== this.config.issuer.replace(/\/+$/u, "")) {
197
+ errors.push(`${url}: issuer ${doc.issuer} does not match ${this.config.issuer}`);
198
+ continue;
199
+ }
200
+ return doc.jwks_uri;
201
+ }
202
+ catch (err) {
203
+ errors.push(`${url}: ${err instanceof Error ? err.message : String(err)}`);
204
+ }
205
+ }
206
+ throw new OAuthError("invalid_token", `OAuth discovery failed for ${this.config.issuer} (${errors.join("; ")}); set GIZMOSQL_MCP_OAUTH_JWKS_URI to skip discovery`);
207
+ }
208
+ }
209
+ //# sourceMappingURL=oauth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
package/dist/params.d.ts CHANGED
@@ -8,8 +8,8 @@ export declare const typedParamSchema: z.ZodObject<{
8
8
  number: "number";
9
9
  bigint: "bigint";
10
10
  boolean: "boolean";
11
- binary: "binary";
12
11
  date: "date";
12
+ binary: "binary";
13
13
  timestamp: "timestamp";
14
14
  null: "null";
15
15
  }>;
@@ -21,8 +21,8 @@ export declare const paramValueSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNu
21
21
  number: "number";
22
22
  bigint: "bigint";
23
23
  boolean: "boolean";
24
- binary: "binary";
25
24
  date: "date";
25
+ binary: "binary";
26
26
  timestamp: "timestamp";
27
27
  null: "null";
28
28
  }>;
@@ -34,8 +34,8 @@ export declare const paramsSchema: z.ZodArray<z.ZodUnion<readonly [z.ZodString,
34
34
  number: "number";
35
35
  bigint: "bigint";
36
36
  boolean: "boolean";
37
- binary: "binary";
38
37
  date: "date";
38
+ binary: "binary";
39
39
  timestamp: "timestamp";
40
40
  null: "null";
41
41
  }>;
package/dist/server.d.ts CHANGED
@@ -1,13 +1,27 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { type McpConfig } from "./connection.js";
3
+ import type { AuthenticatedUser } from "./oauth.js";
4
+ import type { SessionInfo } from "./sessions.js";
3
5
  import { ConnectionRegistry } from "./registry.js";
4
6
  export interface ServerContext {
5
7
  registry: ConnectionRegistry;
6
8
  config: McpConfig;
7
9
  transport: "stdio" | "http";
10
+ /** Caller verified by the HTTP transport's OAuth layer (absent on stdio or with a static bearer token). */
11
+ user?: AuthenticatedUser;
12
+ /** The caller's per-user session (HTTP transport with OAuth). */
13
+ session?: SessionInfo;
8
14
  }
9
15
  /** Converts a thrown error into a redacted, user-facing message. */
10
16
  export declare function describeError(err: unknown, redact: (text: string) => string): string;
17
+ /**
18
+ * Peels the client/driver/Flight SQL wrappers off a server error so the
19
+ * DuckDB message is front and center, e.g.
20
+ * "Arrow Error: C Data interface error: [FlightSQL] An execution error has
21
+ * occurred: Invalid Input Error: ... (Unknown; DoGet: endpoint 0: [])"
22
+ * becomes "Invalid Input Error: ...".
23
+ */
24
+ export declare function stripTransportNoise(message: string): string;
11
25
  /**
12
26
  * Schemas DuckDB and the Postgres-compatibility layer create in every
13
27
  * catalog. Attached Postgres databases also expose one `pg_temp_N` /
package/dist/server.js CHANGED
@@ -6,10 +6,11 @@ import { cellToJson, cellToText, escapeMarkdownCell, formatTable, resultFooter,
6
6
  import { convertParams, paramsSchema, PARAMS_DESCRIPTION, ParameterError } from "./params.js";
7
7
  import { ConnectionRegistry, UnknownConnectionError } from "./registry.js";
8
8
  import { runSsoLogin } from "./sso.js";
9
- import { guardStatement, normalizeStatement, SqlGuardError, WRAPPER_ALIAS, wrapWithLimit, } from "./sql-guard.js";
9
+ import { countPlaceholders, guardStatement, normalizeStatement, SqlGuardError, WRAPPER_ALIAS, wrapWithLimit, } from "./sql-guard.js";
10
10
  import { PACKAGE_NAME, PACKAGE_VERSION } from "./version.js";
11
- function instructions(registry) {
11
+ function instructions(registry, transport, perUser) {
12
12
  const multi = registry.names().length > 1;
13
+ const scope = transport === "http" && !perUser ? " Session state (USE, use_connection) is shared by every client of this server." : "";
13
14
  return ("GizmoSQL is an Arrow Flight SQL server built on DuckDB, so DuckDB SQL syntax and functions apply. " +
14
15
  "Start with list_catalogs / list_schemas / list_tables / describe_table to discover the schema, then " +
15
16
  "use run_query for SELECT queries. Results are capped at a configurable number of rows; use LIMIT, " +
@@ -17,6 +18,7 @@ function instructions(registry) {
17
18
  "and the params argument instead of interpolating them into SQL. Unless GIZMOSQL_ALLOW_WRITES is " +
18
19
  "enabled the server is read-only. Unqualified table names resolve against the session's current " +
19
20
  "catalog and schema (see server_info); use use_schema or fully qualified names to work elsewhere." +
21
+ scope +
20
22
  (multi
21
23
  ? ` Several GizmoSQL servers are configured (${registry.names().join(", ")}; current: ${registry.current()}). ` +
22
24
  "Every tool accepts an optional connection argument, or call use_connection to switch the default; " +
@@ -52,10 +54,50 @@ export function describeError(err, redact) {
52
54
  return redact(err.message);
53
55
  }
54
56
  const raw = err instanceof Error ? err.message : String(err);
55
- // Surface the server's message verbatim (minus credentials); strip the
56
- // client's generic prefix so the DuckDB error is front and center.
57
- const cleaned = raw.replace(/^Failed to execute (?:query|update): /u, "");
58
- return redact(cleaned);
57
+ return redact(stripTransportNoise(raw));
58
+ }
59
+ /**
60
+ * Peels the client/driver/Flight SQL wrappers off a server error so the
61
+ * DuckDB message is front and center, e.g.
62
+ * "Arrow Error: C Data interface error: [FlightSQL] An execution error has
63
+ * occurred: Invalid Input Error: ... (Unknown; DoGet: endpoint 0: [])"
64
+ * becomes "Invalid Input Error: ...".
65
+ */
66
+ export function stripTransportNoise(message) {
67
+ let m = message.trim();
68
+ const prefixes = [
69
+ /^Failed to execute (?:query|update): /u,
70
+ /^Arrow Error: /u,
71
+ /^C Data interface error: /u,
72
+ /^\[FlightSQL\] /u,
73
+ /^An execution error has occurred: /u,
74
+ /^(?:ADBC|Flight SQL|gRPC) error: /iu,
75
+ ];
76
+ let changed = true;
77
+ while (changed) {
78
+ changed = false;
79
+ for (const p of prefixes) {
80
+ const next = m.replace(p, "");
81
+ if (next !== m) {
82
+ m = next;
83
+ changed = true;
84
+ }
85
+ }
86
+ }
87
+ // Trailing Flight transport context such as "(Unknown; DoGet: endpoint 0: [])".
88
+ m = m.replace(/\s*\((?:Unknown|Internal|Invalid argument|Unavailable|Unauthenticated|Permission denied)(?:; [^()]*)?\)\s*$/u, "");
89
+ return m.trim();
90
+ }
91
+ /** Rejects a call whose parameter count does not match the statement's placeholders. */
92
+ function assertParameterCount(sql, bound) {
93
+ const expected = countPlaceholders(sql);
94
+ const supplied = bound?.length ?? 0;
95
+ if (expected === supplied)
96
+ return;
97
+ const ph = (n) => `${n} placeholder${n === 1 ? "" : "s"}`;
98
+ const pv = (n) => `${n} parameter${n === 1 ? "" : "s"}`;
99
+ throw new ParameterError(`The statement has ${ph(expected)} (? or $n) but ${pv(supplied)} ${supplied === 1 ? "was" : "were"} supplied in params. ` +
100
+ "Pass exactly one value per placeholder, in order.");
59
101
  }
60
102
  /**
61
103
  * Wraps a raw Zod shape so the SDK advertises it as JSON Schema 2020-12.
@@ -121,7 +163,7 @@ async function fetchDdl(connection, ref) {
121
163
  export function createServer(ctx) {
122
164
  const { registry, config } = ctx;
123
165
  const redact = (t) => registry.redact(t);
124
- const server = new McpServer({ name: PACKAGE_NAME, version: PACKAGE_VERSION }, { instructions: instructions(registry) });
166
+ const server = new McpServer({ name: PACKAGE_NAME, version: PACKAGE_VERSION }, { instructions: instructions(registry, ctx.transport, ctx.session !== undefined) });
125
167
  /** Wraps a tool body so every failure becomes a redacted isError result. */
126
168
  const tool = (fn) => {
127
169
  return async (args) => {
@@ -185,7 +227,9 @@ export function createServer(ctx) {
185
227
  server.registerTool("list_schemas", {
186
228
  title: "List schemas",
187
229
  description: "Lists schemas, optionally filtered to one catalog. System schemas (information_schema, " +
188
- "pg_catalog, pg_toast, pg_temp_*, pg_toast_temp_*) are hidden unless include_system is true.",
230
+ "pg_catalog, pg_toast, pg_temp_*, pg_toast_temp_*) are hidden unless include_system is true. " +
231
+ "DuckDB keeps information_schema and pg_catalog in the `system` catalog only, so a user catalog " +
232
+ "normally lists just its own schemas even with include_system.",
189
233
  inputSchema: jsonSchema2020({
190
234
  catalog: z.string().optional().describe("Catalog name to filter by (exact match)."),
191
235
  include_system: z
@@ -397,6 +441,7 @@ export function createServer(ctx) {
397
441
  const guarded = guardStatement(sql, config.allowWrites);
398
442
  const maxRows = Math.min(max_rows ?? config.maxRows, config.maxRows);
399
443
  const bound = convertParams(params);
444
+ assertParameterCount(guarded.sql, bound);
400
445
  const effectiveSql = guarded.classification.wrappable
401
446
  ? wrapWithLimit(guarded.sql, maxRows + 1)
402
447
  : guarded.sql;
@@ -406,8 +451,10 @@ export function createServer(ctx) {
406
451
  capped = await connection.queryCapped(effectiveSql, bound, maxRows);
407
452
  }
408
453
  catch (err) {
409
- if (guarded.classification.wrappable && !(err instanceof QueryTimeoutError)) {
410
- throw new Error(`${describeError(err, redact)}\n(Note: to enforce max_rows the query was executed as ` +
454
+ // Only errors that cite a position need the wrapper explained.
455
+ const described = describeError(err, redact);
456
+ if (guarded.classification.wrappable && !(err instanceof QueryTimeoutError) && /\bLINE \d+\b/u.test(described)) {
457
+ throw new Error(`${described}\n(Note: to enforce max_rows the query was executed as ` +
411
458
  `SELECT * FROM (<your query>) AS ${WRAPPER_ALIAS} LIMIT ${maxRows + 1}, so line numbers in the ` +
412
459
  "server's message are offset by one.)");
413
460
  }
@@ -478,6 +525,7 @@ export function createServer(ctx) {
478
525
  const connection = conn(connectionName);
479
526
  const guarded = guardStatement(sql, true);
480
527
  const bound = convertParams(params);
528
+ assertParameterCount(guarded.sql, bound);
481
529
  const started = Date.now();
482
530
  const affected = await connection.update(guarded.sql, bound);
483
531
  const elapsedMs = Date.now() - started;
@@ -542,6 +590,10 @@ export function createServer(ctx) {
542
590
  default_catalog: connection.currentSearchPath().catalog ?? null,
543
591
  default_schema: connection.currentSearchPath().schema ?? null,
544
592
  transport: ctx.transport,
593
+ authenticated_user: ctx.user ? ctx.user.name : null,
594
+ session_scope: ctx.transport === "stdio" ? "process" : ctx.session ? "per-user" : "shared",
595
+ session_started: ctx.session ? ctx.session.createdAt.toISOString() : null,
596
+ session_idle_timeout_seconds: ctx.session ? config.mcpSessionIdleSeconds : null,
545
597
  mcp_server: `${PACKAGE_NAME} ${PACKAGE_VERSION}`,
546
598
  session_warnings: connection.sessionWarnings(),
547
599
  connections: registry.summaries(),
@@ -555,7 +607,9 @@ export function createServer(ctx) {
555
607
  }
556
608
  return text(lines.join("\n"), info);
557
609
  }));
558
- if (config.enableSso) {
610
+ // login_sso opens a browser on the machine running the server, which only
611
+ // makes sense for the local stdio transport.
612
+ if (config.enableSso && ctx.transport === "stdio") {
559
613
  server.registerTool("login_sso", {
560
614
  title: "Sign in with SSO",
561
615
  description: "Signs in to GizmoSQL with the server's OAuth/SSO identity provider: opens the provider's " +
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { McpConfig } from "./connection.js";
2
+ import { ConnectionRegistry } from "./registry.js";
3
+ export interface SessionInfo {
4
+ key: string;
5
+ label: string;
6
+ createdAt: Date;
7
+ lastUsedAt: Date;
8
+ }
9
+ export interface SessionStoreOptions {
10
+ /** Seconds without a request after which a session is closed. */
11
+ idleSeconds: number;
12
+ /** Upper bound on concurrent sessions; the least recently used is closed to make room. */
13
+ maxSessions: number;
14
+ log?: (message: string) => void;
15
+ /** Test hook: clock. */
16
+ now?: () => number;
17
+ /** Sweep period; defaults to half the idle time, at most one minute. Zero disables the timer. */
18
+ sweepIntervalMs?: number;
19
+ }
20
+ export declare class SessionStore {
21
+ private readonly config;
22
+ readonly options: SessionStoreOptions;
23
+ private readonly entries;
24
+ private readonly log;
25
+ private readonly now;
26
+ private timer;
27
+ private closed;
28
+ constructor(config: McpConfig, options: SessionStoreOptions);
29
+ /** Returns the caller's registry, creating it on first use and marking it as used now. */
30
+ acquire(key: string, label: string): {
31
+ registry: ConnectionRegistry;
32
+ info: SessionInfo;
33
+ };
34
+ size(): number;
35
+ sessions(): SessionInfo[];
36
+ /** Closes sessions idle for longer than the configured period. */
37
+ sweep(): Promise<void>;
38
+ /** Closes every session (shutdown). */
39
+ close(): Promise<void>;
40
+ private evictToFit;
41
+ private evict;
42
+ }