mcp-accessibility-scanner 3.1.0 → 3.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.
Files changed (70) hide show
  1. package/README.md +40 -12
  2. package/index.d.ts +1 -1
  3. package/lib/browserContextFactory.js +548 -81
  4. package/lib/browserContextFactory.js.map +1 -1
  5. package/lib/browserServerBackend.js +192 -21
  6. package/lib/browserServerBackend.js.map +1 -1
  7. package/lib/browserSessions.js +172 -0
  8. package/lib/browserSessions.js.map +1 -0
  9. package/lib/config.js +48 -7
  10. package/lib/config.js.map +1 -1
  11. package/lib/context.js +143 -10
  12. package/lib/context.js.map +1 -1
  13. package/lib/extension/cdpRelay.js +5 -0
  14. package/lib/extension/cdpRelay.js.map +1 -1
  15. package/lib/extension/extensionContextFactory.js +9 -1
  16. package/lib/extension/extensionContextFactory.js.map +1 -1
  17. package/lib/index.js +5 -1
  18. package/lib/index.js.map +1 -1
  19. package/lib/mcp/http.js +194 -44
  20. package/lib/mcp/http.js.map +1 -1
  21. package/lib/mcp/inProcessTransport.js.map +1 -1
  22. package/lib/mcp/mdb.js +7 -9
  23. package/lib/mcp/mdb.js.map +1 -1
  24. package/lib/mcp/proxyBackend.js +75 -18
  25. package/lib/mcp/proxyBackend.js.map +1 -1
  26. package/lib/mcp/server.js +70 -41
  27. package/lib/mcp/server.js.map +1 -1
  28. package/lib/mcp/sharedClientSlot.js +134 -0
  29. package/lib/mcp/sharedClientSlot.js.map +1 -0
  30. package/lib/mcp/tool.js +3 -0
  31. package/lib/mcp/tool.js.map +1 -1
  32. package/lib/program.js +70 -9
  33. package/lib/program.js.map +1 -1
  34. package/lib/response.js +8 -0
  35. package/lib/response.js.map +1 -1
  36. package/lib/sessionLog.js +36 -6
  37. package/lib/sessionLog.js.map +1 -1
  38. package/lib/tab.js +32 -2
  39. package/lib/tab.js.map +1 -1
  40. package/lib/tools/auditKeyboard.js +1 -4
  41. package/lib/tools/auditKeyboard.js.map +1 -1
  42. package/lib/tools/auditScreenReader.js +1 -4
  43. package/lib/tools/auditScreenReader.js.map +1 -1
  44. package/lib/tools/auditSite.js +1 -4
  45. package/lib/tools/auditSite.js.map +1 -1
  46. package/lib/tools/network.js +13 -102
  47. package/lib/tools/network.js.map +1 -1
  48. package/lib/tools/pdf.js +5 -2
  49. package/lib/tools/pdf.js.map +1 -1
  50. package/lib/tools/scanPageMatrix.js +1 -4
  51. package/lib/tools/scanPageMatrix.js.map +1 -1
  52. package/lib/tools/screenshot.js +6 -2
  53. package/lib/tools/screenshot.js.map +1 -1
  54. package/lib/tools/session.js +53 -0
  55. package/lib/tools/session.js.map +1 -0
  56. package/lib/tools/snapshot.js +1 -4
  57. package/lib/tools/snapshot.js.map +1 -1
  58. package/lib/tools.js +6 -0
  59. package/lib/tools.js.map +1 -1
  60. package/lib/utils/fileUtils.js +35 -0
  61. package/lib/utils/fileUtils.js.map +1 -1
  62. package/lib/utils/guid.js +8 -0
  63. package/lib/utils/guid.js.map +1 -1
  64. package/lib/vscode/browserContextFactory.js +4 -0
  65. package/lib/vscode/browserContextFactory.js.map +1 -1
  66. package/lib/vscode/host.js +173 -32
  67. package/lib/vscode/host.js.map +1 -1
  68. package/lib/vscode/main.js +2 -2
  69. package/lib/vscode/main.js.map +1 -1
  70. package/package.json +8 -6
@@ -1 +1 @@
1
- {"version":3,"file":"browserContextFactory.js","sourceRoot":"","sources":["../src/browserContextFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserContextFactory.js","sourceRoot":"","sources":["../src/browserContextFactory.ts"],"names":[],"mappings":"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"}
@@ -13,9 +13,9 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
- import { fileURLToPath } from 'node:url';
17
16
  import { z } from 'zod';
18
- import { ErrorCode, McpError } from '@modelcontextprotocol/sdk/types.js';
17
+ import { ProtocolError, ProtocolErrorCode } from '@modelcontextprotocol/server';
18
+ import { BrowserSessionRegistry } from './browserSessions.js';
19
19
  import { Context } from './context.js';
20
20
  import { logUnhandledError } from './utils/log.js';
21
21
  import { Response } from './response.js';
@@ -29,39 +29,130 @@ export class BrowserServerBackend {
29
29
  // whole set and never changes, so it is done once per server.
30
30
  _mcpTools;
31
31
  _context;
32
+ _sessionRegistry;
32
33
  _sessionLog;
33
34
  _config;
34
35
  _browserContextFactory;
35
- constructor(config, factory) {
36
+ _sharedSessionRegistry;
37
+ _ephemeralDefaultContext;
38
+ constructor(config, factory, sharedSessionRegistry, options) {
36
39
  this._config = config;
37
40
  this._browserContextFactory = factory;
41
+ this._sharedSessionRegistry = sharedSessionRegistry;
42
+ this._ephemeralDefaultContext = options?.ephemeralDefaultContext ?? false;
38
43
  this._tools = filteredTools(config);
39
44
  this._toolsByName = new Map(this._tools.map(tool => [tool.schema.name, tool]));
40
45
  }
41
- async initialize(_context, clientVersion, roots) {
42
- let rootPath;
43
- if (roots.length > 0) {
44
- const firstRootUri = roots[0]?.uri;
45
- const url = firstRootUri ? new URL(firstRootUri) : undefined;
46
- rootPath = url ? fileURLToPath(url) : undefined;
47
- }
48
- this._sessionLog = this._config.saveSession ? await SessionLog.create(this._config, rootPath) : undefined;
49
- this._context = new Context({
46
+ async initialize(_context, clientVersion) {
47
+ // A registry shared across the backends of one server factory (stateless
48
+ // HTTP creates a fresh backend per request, and a handle minted in one
49
+ // request must resolve in the next) outlives this backend; an owned one
50
+ // is disposed with it in serverClosed().
51
+ const registry = this._sharedSessionRegistry ?? new BrowserSessionRegistry();
52
+ this._sessionRegistry = registry;
53
+ // Registry contexts are flagged as explicit sessions so the factory can
54
+ // give each its own browser context (e.g. a disposable persistent
55
+ // profile); the default context keeps today's behavior. Factories that
56
+ // cannot separate contexts veto browser_session_open via their reason.
57
+ // The context constructor is handed to the registry per open() call —
58
+ // through this backend's own broker slice — never bound registry-wide: a
59
+ // shared registry serves several live backends at once, and a global
60
+ // rebind would mint sessions with whichever backend initialized last,
61
+ // leaking that client's identity (clientInfo, SessionLog) into sessions
62
+ // other clients open.
63
+ const createContext = (browserSession, browserSessionId) => new Context({
50
64
  tools: this._tools,
51
65
  config: this._config,
52
66
  browserContextFactory: this._browserContextFactory,
53
- sessionLog: this._sessionLog,
54
- clientInfo: { ...clientVersion, rootPath },
67
+ sessionLog: () => this._ensureSessionLog(),
68
+ clientInfo: { ...clientVersion },
69
+ browserSessions: {
70
+ open: async () => {
71
+ // The unsupported-mode veto comes before everything else: it is
72
+ // registry.open()'s own first check, but by then the session-log
73
+ // await below would already have run — in modes that reject
74
+ // sessions outright (extension, VS Code, non-isolated CDP, pinned
75
+ // cdp-launch port, --user-data-dir) every doomed attempt minted
76
+ // and announced an empty session-* directory the rejection never
77
+ // even landed in.
78
+ BrowserSessionRegistry.checkSessionsSupported(this._browserContextFactory.sessionsUnsupportedReason);
79
+ // Resolved BEFORE the handle is minted: the session log is this
80
+ // backend's one fallible piece of open() setup (an uncreatable
81
+ // --output-dir rejects SessionLog.create()), and it used to be
82
+ // awaited only after the tool had already registered the Context —
83
+ // the error result carried no handle to close, so every retry
84
+ // accumulated another live session until TTL reaping. Failing
85
+ // first leaves nothing half-registered, and callTool() would have
86
+ // created this same backend-wide log right after the call anyway.
87
+ await this._ensureSessionLog();
88
+ return registry.open(id => createContext(true, id), this._browserContextFactory.sessionsUnsupportedReason);
89
+ },
90
+ close: id => registry.close(id),
91
+ },
92
+ browserSession,
93
+ browserSessionId,
55
94
  });
95
+ this._context = createContext(this._ephemeralDefaultContext || undefined);
96
+ }
97
+ /**
98
+ * Creates the `--save-session` log on first demand, once per backend.
99
+ * Eager creation at initialize() littered the output directory over
100
+ * stateless HTTP, where every request builds a fresh backend: a tools/list
101
+ * or a call routed to an existing browser session minted (and announced)
102
+ * an empty session-* folder per request. The default context and every
103
+ * session this backend opens share this one lazy log — via the supplier
104
+ * handed to createContext above — so recorder entries and tool responses
105
+ * land in the same folder regardless of which context launches first.
106
+ */
107
+ _ensureSessionLog() {
108
+ if (!this._sessionLog) {
109
+ const creation = this._config.saveSession ? SessionLog.create(this._config) : Promise.resolve(undefined);
110
+ // Memoize success only: a rejected create (e.g. the output volume
111
+ // briefly unavailable) must not be replayed to every later default-
112
+ // context call and browser_session_open for the backend's lifetime —
113
+ // clear the memo so the next call retries. Guarded by identity, like
114
+ // ensureInitialized in mcp/server.ts: a retry may already have stored a
115
+ // fresh in-flight promise by the time this failure handler runs, and
116
+ // that one must not be clobbered. Everyone who awaited the failed
117
+ // attempt still sees its rejection.
118
+ creation.catch(() => {
119
+ if (this._sessionLog === creation)
120
+ this._sessionLog = undefined;
121
+ });
122
+ this._sessionLog = creation;
123
+ }
124
+ return this._sessionLog;
56
125
  }
57
126
  async listTools() {
58
- this._mcpTools ??= this._tools.map(tool => toMcpTool(tool.schema));
127
+ this._mcpTools ??= this._tools.map(tool => {
128
+ const mcpTool = toMcpTool(tool.schema);
129
+ // Advertise the session-routing parameter resolved in callTool(). It is
130
+ // added to the wire schema only: the tools' own zod schemas (all
131
+ // non-strict objects) simply strip it during parsing, so tool
132
+ // implementations never see it. The session tools themselves are
133
+ // excluded — they operate *on* sessions, not *in* them.
134
+ if (tool.schema.name !== 'browser_session_open' && tool.schema.name !== 'browser_session_close') {
135
+ const inputSchema = mcpTool.inputSchema;
136
+ inputSchema.properties = {
137
+ ...inputSchema.properties,
138
+ browserSessionId: {
139
+ type: 'string',
140
+ description: 'Browser session to run this tool in, as returned by browser_session_open. Omit to use the default session.',
141
+ },
142
+ };
143
+ }
144
+ return mcpTool;
145
+ });
59
146
  return this._mcpTools;
60
147
  }
61
148
  async callTool(name, rawArguments, requestContext) {
62
149
  const tool = this._toolsByName.get(name);
63
150
  if (!tool)
64
- throw new McpError(ErrorCode.InvalidParams, `Tool "${name}" not found`);
151
+ throw new ProtocolError(ProtocolErrorCode.InvalidParams, `Tool "${name}" not found`);
152
+ // Resolved before the schema parse so an unknown handle surfaces as a
153
+ // clear execution error, like other input validation failures below.
154
+ const routedSessionId = this._routedSessionId(name, rawArguments);
155
+ const context = routedSessionId !== undefined ? this._sessionRegistry.resolve(routedSessionId) : this._context;
65
156
  let parsedArguments;
66
157
  try {
67
158
  parsedArguments = tool.schema.inputSchema.parse(rawArguments || {});
@@ -73,23 +164,103 @@ export class BrowserServerBackend {
73
164
  throw new Error(`Invalid input for tool "${name}":\n${z.prettifyError(error)}`);
74
165
  throw error;
75
166
  }
76
- const context = this._context;
77
- const response = new Response(context, name, parsedArguments, requestContext);
78
- context.setRunningTool(name);
167
+ // The wire-only browserSessionId never survives the parse above (the
168
+ // tools' non-strict zod schemas strip it), which is right for the tool
169
+ // handler — but Response.toolArgs feeds the --save-session log, and
170
+ // without the handle, calls into different sessions would log identical
171
+ // sessionless args with interleaved snapshots. Re-attach it to the logged
172
+ // view; handlers keep receiving parsedArguments untouched.
173
+ const responseArguments = routedSessionId !== undefined ? { browserSessionId: routedSessionId, ...parsedArguments } : parsedArguments;
174
+ // browser_session_close is deliberately unrouted (see _routedSessionId),
175
+ // so over stateless HTTP it runs on a fresh per-request backend while the
176
+ // session it closes was opened by another. The close entry belongs in the
177
+ // OPENER's --save-session log — the session's Context carries that
178
+ // backend's log supplier — and the Context must be captured before the
179
+ // tool disposes it out of the registry. Awaiting this backend's own lazy
180
+ // log instead minted a second empty session-* directory per stateless
181
+ // close. An unknown handle stays the tool's own error to report.
182
+ let closingSessionContext;
183
+ if (name === 'browser_session_close' && typeof parsedArguments.browserSessionId === 'string') {
184
+ try {
185
+ closingSessionContext = this._sessionRegistry.resolve(parsedArguments.browserSessionId);
186
+ }
187
+ catch {
188
+ // Unknown handle: the tool itself reports it.
189
+ }
190
+ }
191
+ const response = new Response(context, name, responseArguments, requestContext);
192
+ // Per-call token, not a single slot: two overlapping calls on one session
193
+ // must keep isRunningTool() true until BOTH finish, or the TTL reaper (and
194
+ // browser_session_close) could dispose the browser under the slower call.
195
+ const endToolCall = context.beginToolCall(name);
79
196
  try {
80
197
  await tool.handle(context, parsedArguments, response);
81
198
  await response.finish();
82
- this._sessionLog?.logResponse(response);
199
+ if (name === 'browser_session_close') {
200
+ // The close has already completed and the handle is gone, so a log
201
+ // failure must not turn the result into an isError — the caller's
202
+ // retry would only meet "Unknown browserSessionId". Logged via debug
203
+ // instead of surfacing.
204
+ try {
205
+ const sessionLog = await closingSessionContext?.resolveSessionLog();
206
+ sessionLog?.logResponse(response);
207
+ }
208
+ catch (error) {
209
+ logUnhandledError(error);
210
+ }
211
+ }
212
+ else {
213
+ // A routed call belongs to the session's own log — resolved through
214
+ // the supplier captured from the backend that opened it, which over
215
+ // stateless HTTP is not this one. Resolving (not just reading the
216
+ // cached field) matters when the routed call is the session's first
217
+ // and needs no browser: the field is only populated at browser
218
+ // launch, so a browser_default_timeout opening move would otherwise
219
+ // never be logged. A default-context call is a real use of THIS
220
+ // backend, so it may create the backend's log on first demand.
221
+ const sessionLog = routedSessionId !== undefined ? await context.resolveSessionLog() : await this._ensureSessionLog();
222
+ sessionLog?.logResponse(response);
223
+ }
83
224
  }
84
225
  catch (error) {
85
226
  response.addError(String(error));
86
227
  }
87
228
  finally {
88
- context.setRunningTool(undefined);
229
+ endToolCall();
230
+ // Refresh after completion too: a long run must not leave the session
231
+ // one reaper tick from expiry.
232
+ if (routedSessionId !== undefined)
233
+ this._sessionRegistry?.touch(routedSessionId);
89
234
  }
90
235
  return response.serialize();
91
236
  }
237
+ /**
238
+ * The optional `browserSessionId` argument selects which registry Context a
239
+ * tool runs in; without it (or before any session exists) the default
240
+ * Context preserves the pre-#167 behavior exactly. The session tools are
241
+ * exempt: `browser_session_close` takes `browserSessionId` as its own
242
+ * argument naming the session to close — running it *inside* that session
243
+ * would dispose the context out from under the running tool — and both
244
+ * always execute on the default Context.
245
+ */
246
+ _routedSessionId(name, rawArguments) {
247
+ if (name === 'browser_session_open' || name === 'browser_session_close')
248
+ return undefined;
249
+ const id = rawArguments?.browserSessionId;
250
+ if (id === undefined)
251
+ return undefined;
252
+ if (typeof id !== 'string')
253
+ throw new Error('Invalid browserSessionId: expected a string handle returned by browser_session_open.');
254
+ return id;
255
+ }
92
256
  serverClosed() {
257
+ // A shared registry outlives any one backend — over stateless HTTP the
258
+ // per-request server closes after every response, and disposing the
259
+ // registry with it would kill the very sessions the handles exist for.
260
+ // Its sessions are reaped by their idle TTL, closed explicitly, or
261
+ // disposed at process exit; only an owned registry is disposed here.
262
+ if (this._sessionRegistry && this._sessionRegistry !== this._sharedSessionRegistry)
263
+ void this._sessionRegistry.disposeAll().catch(logUnhandledError);
93
264
  void this._context?.dispose().catch(logUnhandledError);
94
265
  }
95
266
  }
@@ -1 +1 @@
1
- {"version":3,"file":"browserServerBackend.js","sourceRoot":"","sources":["../src/browserServerBackend.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"browserServerBackend.js","sourceRoot":"","sources":["../src/browserServerBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,172 @@
1
+ /**
2
+ * Copyright (c) Microsoft Corporation.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import crypto from 'node:crypto';
17
+ import { logUnhandledError } from './utils/log.js';
18
+ const defaultSessionTtlMs = 30 * 60 * 1000;
19
+ /**
20
+ * Inactivity TTL for explicitly opened browser sessions. Overridable via
21
+ * `PLAYWRIGHT_MCP_BROWSER_SESSION_TTL_MS`; a present-but-blank or unparsable
22
+ * value keeps the default rather than becoming 0, and a zero or negative
23
+ * value disables reaping entirely.
24
+ */
25
+ export function browserSessionTtlMs() {
26
+ const value = process.env.PLAYWRIGHT_MCP_BROWSER_SESSION_TTL_MS;
27
+ if (value === undefined)
28
+ return defaultSessionTtlMs;
29
+ const trimmed = value.trim();
30
+ if (!trimmed)
31
+ return defaultSessionTtlMs;
32
+ const parsed = Number(trimmed);
33
+ if (!Number.isFinite(parsed))
34
+ return defaultSessionTtlMs;
35
+ return parsed;
36
+ }
37
+ /**
38
+ * Maps server-minted opaque handles (`bs_<uuid>`) to Contexts, per the MCP
39
+ * 2026-07-28 prescription for stateful servers: state is named by an explicit
40
+ * handle the model passes back as an ordinary tool argument, instead of being
41
+ * hidden in the connection. The default (no-handle) Context stays outside
42
+ * this registry so existing clients see today's behavior unchanged.
43
+ *
44
+ * Entries expire after `ttlMs` of inactivity so an abandoned handle cannot
45
+ * leak a browser process. The TTL is refreshed on every use and held while a
46
+ * tool is running (a long `audit_site` crawl must not be reaped mid-run); the
47
+ * reaper timer is unref'ed so it never keeps the process alive. Refs #167.
48
+ */
49
+ export class BrowserSessionRegistry {
50
+ _sessions = new Map();
51
+ _ttlMs;
52
+ _reaper;
53
+ constructor(ttlMs = browserSessionTtlMs()) {
54
+ this._ttlMs = ttlMs;
55
+ }
56
+ /**
57
+ * Mints a handle for a Context built by `createContext` — supplied per call,
58
+ * never stored: a registry shared across backend instances (stateful HTTP
59
+ * sessions, and the stateless HTTP path's fresh backend per request) serves
60
+ * several live backends at once, and a registry-wide rebindable constructor
61
+ * would mint every new session with the LAST initializer's identity — its
62
+ * clientInfo (CDP User-Agent) and SessionLog (recorder entries in the wrong
63
+ * session folder) — regardless of which client asked.
64
+ *
65
+ * The minted handle is handed to `createContext` so the Context knows the
66
+ * identity it serves: the `--save-session` log is shared backend-wide, and
67
+ * recorded user actions are tagged with the handle the way routed tool
68
+ * calls already tag their logged args.
69
+ */
70
+ open(createContext, sessionsUnsupportedReason) {
71
+ BrowserSessionRegistry.checkSessionsSupported(sessionsUnsupportedReason);
72
+ const id = `bs_${crypto.randomUUID()}`;
73
+ this._sessions.set(id, { context: createContext(id), lastUsedAt: Date.now() });
74
+ this._ensureReaper();
75
+ return id;
76
+ }
77
+ /**
78
+ * Throws the veto for modes whose factory hands every Context the same live
79
+ * browser context (non-isolated CDP attach, extension, VS Code, custom
80
+ * getters): a handle there would claim a separation that does not exist —
81
+ * two "sessions" sharing tabs, cookies and storage. open() enforces this
82
+ * itself; it is exposed so a caller with fallible pre-open side effects
83
+ * (the backend resolves the --save-session log before minting a handle)
84
+ * can fail first, without minting an empty session-* directory per
85
+ * doomed attempt.
86
+ */
87
+ static checkSessionsSupported(sessionsUnsupportedReason) {
88
+ if (sessionsUnsupportedReason)
89
+ throw new Error(`Cannot open a separate browser session: ${sessionsUnsupportedReason}`);
90
+ }
91
+ /** Returns the session's Context and refreshes its TTL. */
92
+ resolve(id) {
93
+ const entry = this._sessions.get(id);
94
+ if (!entry)
95
+ throw new Error(this._unknownSessionMessage(id));
96
+ entry.lastUsedAt = Date.now();
97
+ return entry.context;
98
+ }
99
+ /** Refreshes the TTL if the session still exists (e.g. after a tool run). */
100
+ touch(id) {
101
+ const entry = this._sessions.get(id);
102
+ if (entry)
103
+ entry.lastUsedAt = Date.now();
104
+ }
105
+ async close(id) {
106
+ const entry = this._sessions.get(id);
107
+ if (!entry)
108
+ throw new Error(this._unknownSessionMessage(id));
109
+ // Disposing under a running call would yank the browser out from under it
110
+ // (browser_session_close itself executes on the default Context, so it
111
+ // never counts as the session's own running tool).
112
+ if (entry.context.isRunningTool())
113
+ throw new Error(`Browser session "${id}" still has a tool call running. Wait for it to finish, then retry browser_session_close.`);
114
+ this._sessions.delete(id);
115
+ this._stopReaperIfIdle();
116
+ await entry.context.dispose();
117
+ }
118
+ async disposeAll() {
119
+ const contexts = [...this._sessions.values()].map(entry => entry.context);
120
+ this._sessions.clear();
121
+ this._stopReaperIfIdle();
122
+ await Promise.all(contexts.map(context => context.dispose().catch(logUnhandledError)));
123
+ }
124
+ // Deliberately does NOT enumerate the open sessions: handles are bearer
125
+ // tokens, and listing them would hand any caller with a mistyped handle the
126
+ // keys to every other session's browser.
127
+ _unknownSessionMessage(id) {
128
+ return `Unknown browserSessionId "${id}": the session may have expired or been closed. Use browser_session_open to open a session, or omit browserSessionId to use the default session.`;
129
+ }
130
+ _ensureReaper() {
131
+ if (this._reaper || this._ttlMs <= 0 || !this._sessions.size)
132
+ return;
133
+ const interval = Math.min(this._ttlMs, 60_000);
134
+ this._reaper = setInterval(() => this._reap(), interval);
135
+ // The reaper must never keep the process alive on its own.
136
+ this._reaper.unref?.();
137
+ }
138
+ _stopReaperIfIdle() {
139
+ if (!this._sessions.size && this._reaper) {
140
+ clearInterval(this._reaper);
141
+ this._reaper = undefined;
142
+ }
143
+ }
144
+ _reap() {
145
+ const now = Date.now();
146
+ for (const [id, entry] of this._sessions) {
147
+ // A running tool holds the session's TTL: refresh instead of expiring,
148
+ // so a long crawl that never re-touches the registry survives.
149
+ if (entry.context.isRunningTool()) {
150
+ entry.lastUsedAt = now;
151
+ continue;
152
+ }
153
+ const idleFor = now - entry.lastUsedAt;
154
+ if (idleFor < this._ttlMs)
155
+ continue;
156
+ // An in-flight download save holds expiry too — downloads outlive the
157
+ // tool call that started them, and reaping would abort the save. But
158
+ // the hold is bounded at one extra TTL period (proportionate to the
159
+ // operator's configured idle tolerance): a stalled saveAs() on an
160
+ // abandoned handle must not pin the browser forever. Because the tool
161
+ // call that starts a download refreshes lastUsedAt as it finishes,
162
+ // every download gets at least a full TTL of downloads-only grace,
163
+ // and disposal itself still waits (bounded) for the save.
164
+ if (entry.context.hasPendingDownloads() && idleFor < this._ttlMs * 2)
165
+ continue;
166
+ this._sessions.delete(id);
167
+ void entry.context.dispose().catch(logUnhandledError);
168
+ }
169
+ this._stopReaperIfIdle();
170
+ }
171
+ }
172
+ //# sourceMappingURL=browserSessions.js.map