mcp-accessibility-scanner 3.0.1 → 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 (85) hide show
  1. package/README.md +265 -12
  2. package/index.d.ts +1 -1
  3. package/lib/browserContextFactory.js +1161 -94
  4. package/lib/browserContextFactory.js.map +1 -1
  5. package/lib/browserServerBackend.js +199 -22
  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 +321 -71
  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 +12 -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 +76 -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/networkPolicy.js +73 -0
  33. package/lib/networkPolicy.js.map +1 -0
  34. package/lib/program.js +91 -12
  35. package/lib/program.js.map +1 -1
  36. package/lib/response.js +16 -3
  37. package/lib/response.js.map +1 -1
  38. package/lib/sessionLog.js +36 -6
  39. package/lib/sessionLog.js.map +1 -1
  40. package/lib/tab.js +149 -18
  41. package/lib/tab.js.map +1 -1
  42. package/lib/tools/auditKeyboard.js +204 -4
  43. package/lib/tools/auditKeyboard.js.map +1 -1
  44. package/lib/tools/auditScreenReader.js +823 -0
  45. package/lib/tools/auditScreenReader.js.map +1 -0
  46. package/lib/tools/auditSite.js +268 -90
  47. package/lib/tools/auditSite.js.map +1 -1
  48. package/lib/tools/axe.js +479 -21
  49. package/lib/tools/axe.js.map +1 -1
  50. package/lib/tools/dialogs.js +18 -4
  51. package/lib/tools/dialogs.js.map +1 -1
  52. package/lib/tools/evaluate.js +34 -5
  53. package/lib/tools/evaluate.js.map +1 -1
  54. package/lib/tools/network.js +136 -8
  55. package/lib/tools/network.js.map +1 -1
  56. package/lib/tools/pdf.js +5 -2
  57. package/lib/tools/pdf.js.map +1 -1
  58. package/lib/tools/scanPageMatrix.js +135 -47
  59. package/lib/tools/scanPageMatrix.js.map +1 -1
  60. package/lib/tools/screenshot.js +8 -4
  61. package/lib/tools/screenshot.js.map +1 -1
  62. package/lib/tools/session.js +53 -0
  63. package/lib/tools/session.js.map +1 -0
  64. package/lib/tools/snapshot.js +266 -8
  65. package/lib/tools/snapshot.js.map +1 -1
  66. package/lib/tools/tool.js.map +1 -1
  67. package/lib/tools/utils.js +62 -6
  68. package/lib/tools/utils.js.map +1 -1
  69. package/lib/tools.js +11 -2
  70. package/lib/tools.js.map +1 -1
  71. package/lib/utils/dataUrl.js +58 -35
  72. package/lib/utils/dataUrl.js.map +1 -1
  73. package/lib/utils/fileUtils.js +35 -0
  74. package/lib/utils/fileUtils.js.map +1 -1
  75. package/lib/utils/guid.js +8 -0
  76. package/lib/utils/guid.js.map +1 -1
  77. package/lib/utils/jsSource.js +187 -0
  78. package/lib/utils/jsSource.js.map +1 -0
  79. package/lib/vscode/browserContextFactory.js +87 -0
  80. package/lib/vscode/browserContextFactory.js.map +1 -0
  81. package/lib/vscode/host.js +189 -33
  82. package/lib/vscode/host.js.map +1 -1
  83. package/lib/vscode/main.js +3 -35
  84. package/lib/vscode/main.js.map +1 -1
  85. package/package.json +13 -9
@@ -0,0 +1,73 @@
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
+ // One installation per context, shared by every caller: the storage-state
17
+ // reuse path installs the policy before it reloads pages (Context has not run
18
+ // yet), Context ensures it afterwards, and sibling sessions sharing a reused
19
+ // context must not stack duplicate handlers. Keyed weakly on the context
20
+ // object, and by promise so concurrent callers await one installation instead
21
+ // of racing two; a failed installation is forgotten so the next caller
22
+ // retries. The policy is identical for every caller — it comes from the
23
+ // server-wide config — so "already installed" can never mean "installed with
24
+ // different rules".
25
+ const policyInstallations = new WeakMap();
26
+ /**
27
+ * Installs the configured origin allowlist/blocklist as routes on the
28
+ * context, once — later calls (and concurrent ones) join the first. The
29
+ * handlers stay for the context's lifetime: they are never uninstalled, so
30
+ * there is no window between a temporary installation coming off and the
31
+ * permanent one going in during which a queued request could reach a blocked
32
+ * origin, and a sibling session's view of the shared context never loses its
33
+ * protection.
34
+ */
35
+ export function ensureNetworkPolicyRoutes(config, context) {
36
+ let installation = policyInstallations.get(context);
37
+ if (!installation) {
38
+ installation = installRoutes(config, context);
39
+ policyInstallations.set(context, installation);
40
+ installation.catch(() => policyInstallations.delete(context));
41
+ }
42
+ return installation;
43
+ }
44
+ async function installRoutes(config, context) {
45
+ const installed = [];
46
+ const register = async (pattern, handler) => {
47
+ await context.route(pattern, handler);
48
+ installed.push({ pattern, handler });
49
+ };
50
+ try {
51
+ if (config.network?.allowedOrigins?.length) {
52
+ await register('**', route => route.abort('blockedbyclient'));
53
+ for (const origin of config.network.allowedOrigins)
54
+ await register(`*://${origin}/**`, route => route.continue());
55
+ }
56
+ if (config.network?.blockedOrigins?.length) {
57
+ for (const origin of config.network.blockedOrigins)
58
+ await register(`*://${origin}/**`, route => route.abort('blockedbyclient'));
59
+ }
60
+ }
61
+ catch (error) {
62
+ // A partial policy is worse than none: with the allowlist's abort-all
63
+ // route in but its continue routes missing, everything is blocked — and
64
+ // on a reused context the fragment would linger for whoever uses the
65
+ // context next. Unwind exactly what was registered (never more — a
66
+ // sibling session may have its own handlers) before surfacing the
67
+ // failure.
68
+ for (const { pattern, handler } of installed)
69
+ await context.unroute(pattern, handler).catch(() => { });
70
+ throw error;
71
+ }
72
+ }
73
+ //# sourceMappingURL=networkPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"networkPolicy.js","sourceRoot":"","sources":["../src/networkPolicy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAOH,0EAA0E;AAC1E,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,8EAA8E;AAC9E,uEAAuE;AACvE,wEAAwE;AACxE,6EAA6E;AAC7E,oBAAoB;AACpB,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAA4C,CAAC;AAEpF;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAkB,EAAE,OAAkC;IAC9F,IAAI,YAAY,GAAG,mBAAmB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,mBAAmB,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC/C,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,MAAkB,EAAE,OAAkC;IACjF,MAAM,SAAS,GAAiD,EAAE,CAAC;IACnE,MAAM,QAAQ,GAAG,KAAK,EAAE,OAAe,EAAE,OAAqB,EAAE,EAAE;QAChE,MAAM,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtC,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YAC3C,MAAM,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YAC9D,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc;gBAChD,MAAM,QAAQ,CAAC,OAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;YAC3C,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,cAAc;gBAChD,MAAM,QAAQ,CAAC,OAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sEAAsE;QACtE,wEAAwE;QACxE,qEAAqE;QACrE,mEAAmE;QACnE,kEAAkE;QAClE,WAAW;QACX,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,SAAS;YAC1C,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
package/lib/program.js CHANGED
@@ -19,27 +19,61 @@ import * as mcpServer from './mcp/server.js';
19
19
  import { commaSeparatedList, resolveCLIConfig, semicolonSeparatedList } from './config.js';
20
20
  import { packageJSON } from './utils/package.js';
21
21
  import { Context } from './context.js';
22
- import { contextFactory } from './browserContextFactory.js';
22
+ import { assertStorageStateDoesNotResetUserProfile, assertStorageStateSupported, contextFactory, PersistentContextFactory, persistentProfileConflictRemedy } from './browserContextFactory.js';
23
23
  import { ProxyBackend } from './mcp/proxyBackend.js';
24
+ import { SharedClientSlot } from './mcp/sharedClientSlot.js';
24
25
  import { BrowserServerBackend } from './browserServerBackend.js';
26
+ import { BrowserSessionRegistry } from './browserSessions.js';
25
27
  import { ExtensionContextFactory } from './extension/extensionContextFactory.js';
26
28
  import { filteredTools, serverInstructions } from './tools.js';
27
29
  import { logUnhandledError } from './utils/log.js';
28
30
  import { runVSCodeTools } from './vscode/host.js';
29
31
  async function resolveProgramContext(options) {
30
32
  const config = await resolveCLIConfig(options);
31
- const browserContextFactory = contextFactory(config);
32
33
  const extensionContextFactory = new ExtensionContextFactory(config.browser.launchOptions.channel || 'chrome', config.browser.userDataDir, config.browser.launchOptions.executablePath);
34
+ // --extension runs every tool through the extension factory, not the one
35
+ // contextFactory() builds, so validate the factory that will actually create
36
+ // the context. Checked first because contextFactory() would otherwise
37
+ // recommend --isolated, which does not help here.
38
+ if (options.extension)
39
+ assertStorageStateSupported(config, extensionContextFactory, '--extension attaches to the browser you are already running and uses the context it already has; --isolated does not change that. Drop the storage state and sign in in that browser before auditing.');
40
+ const browserContextFactory = contextFactory(config);
41
+ // Provider-switching modes with a persistent default provider must reject
42
+ // the profile conflict at startup: the factory itself only rejects the
43
+ // combination lazily, on its first browser operation, while the extension
44
+ // provider refuses the storage state at switch time — so the server would
45
+ // start advertising two providers and neither could ever create a context.
46
+ // (Other default providers ignore --user-data-dir, and the extension leg
47
+ // alone validates at switch time instead.)
48
+ if ((options.connectTool || options.vscode) && browserContextFactory instanceof PersistentContextFactory)
49
+ assertStorageStateDoesNotResetUserProfile(config, persistentProfileConflictRemedy);
33
50
  return { config, browserContextFactory, extensionContextFactory };
34
51
  }
35
52
  async function startMCPServer(config, browserContextFactory) {
53
+ // One browser-session handle registry for every backend this factory mints:
54
+ // handshake-free (MCP 2026-07-28) HTTP requests are each served by a fresh
55
+ // backend, and a browserSessionId minted in one request must resolve in the
56
+ // next. Stateful (stdio and v1 HTTP session) backends share it too — handles
57
+ // are already opaque bearer tokens scoped to this server process.
58
+ const sessionRegistry = new BrowserSessionRegistry();
36
59
  const factory = {
37
60
  name: 'Playwright',
38
61
  title: 'Accessibility Scanner',
39
62
  nameInConfig: 'playwright',
40
63
  version: packageJSON.version,
41
64
  instructions: serverInstructions,
42
- create: () => new BrowserServerBackend(config, browserContextFactory)
65
+ // The tool list is fixed per process (filteredTools(config) never changes
66
+ // at runtime), so 2026-07-28 clients may cache it for an hour. Scope is
67
+ // `private`: the list depends on this server's local configuration
68
+ // (--caps and connection mode), so it must not be served from a shared
69
+ // cache keyed only on the URL.
70
+ toolListCacheHint: { ttlMs: 3600000, cacheScope: 'private' },
71
+ create: () => new BrowserServerBackend(config, browserContextFactory, sessionRegistry),
72
+ // Handshake-free HTTP serves each request with a throwaway backend whose
73
+ // default context is disposed when the response ends; flagging it
74
+ // ephemeral gives it a disposable profile in default persistent mode, so
75
+ // parallel stateless requests stop contending for the one stable profile.
76
+ createStateless: () => new BrowserServerBackend(config, browserContextFactory, sessionRegistry, { ephemeralDefaultContext: true })
43
77
  };
44
78
  await mcpServer.start(factory, config.server);
45
79
  }
@@ -83,7 +117,7 @@ function configureBaseProgram() {
83
117
  .option('--proxy-server <proxy>', 'specify proxy server, for example "http://myproxy:3128" or "socks5://myproxy:8080"')
84
118
  .option('--save-session', 'Whether to save the Playwright MCP session into the output directory.')
85
119
  .option('--save-trace', 'Whether to save the Playwright Trace of the session into the output directory.')
86
- .option('--storage-state <path>', 'path to the storage state file for isolated sessions.')
120
+ .option('--storage-state <path>', 'path to the storage state file to start the session from; applied in every mode except --extension (reused contexts receive it via setStorageState, which first clears their cookies and storage).')
87
121
  .option('--user-agent <ua string>', 'specify user agent string')
88
122
  .option('--user-data-dir <path>', 'path to the user data directory. If not specified, a temporary directory will be created.')
89
123
  .option('--viewport-size <size>', 'specify browser viewport size in pixels, for example "1280, 720"')
@@ -96,42 +130,87 @@ function configureBaseProgram() {
96
130
  }
97
131
  configureBaseProgram()
98
132
  .action(async (options) => {
99
- setupExitWatchdog();
133
+ // Cleanups the proxy modes register for their process-scoped switched
134
+ // clients; they run before the contexts are disposed so a switched
135
+ // provider (e.g. a spawned VS Code child) shuts down deliberately
136
+ // instead of relying on process teardown.
137
+ const exitCleanups = [];
138
+ setupExitWatchdog(async () => {
139
+ for (const cleanup of exitCleanups)
140
+ await cleanup().catch(logUnhandledError);
141
+ await Context.disposeAll();
142
+ });
100
143
  const { config, browserContextFactory, extensionContextFactory } = await resolveProgramContext(options);
101
144
  if (options.extension) {
145
+ // Shared for the same reason as in startMCPServer (the extension
146
+ // factory vetoes browser_session_open, but the veto itself must
147
+ // still reach handshake-free HTTP requests consistently).
148
+ const sessionRegistry = new BrowserSessionRegistry();
102
149
  const serverBackendFactory = {
103
150
  name: 'Playwright w/ extension',
104
151
  title: 'Accessibility Scanner (browser extension)',
105
152
  nameInConfig: 'playwright-extension',
106
153
  version: packageJSON.version,
107
154
  instructions: serverInstructions,
108
- create: () => new BrowserServerBackend(config, extensionContextFactory)
155
+ // Static per process, same rationale as in startMCPServer above.
156
+ toolListCacheHint: { ttlMs: 3600000, cacheScope: 'private' },
157
+ create: () => new BrowserServerBackend(config, extensionContextFactory, sessionRegistry)
109
158
  };
110
159
  await mcpServer.start(serverBackendFactory, config.server);
111
160
  return;
112
161
  }
113
162
  if (options.vscode) {
114
- await runVSCodeTools(config);
163
+ await runVSCodeTools(config, cleanup => exitCleanups.push(cleanup));
115
164
  return;
116
165
  }
117
166
  if (options.connectTool) {
118
- const providers = [
167
+ // Process-scoped, like startMCPServer's: over stateless HTTP every
168
+ // handshake-free POST builds a fresh proxy with a fresh inner
169
+ // backend, and a browserSessionId minted in one request must resolve
170
+ // in the next instead of dying with the response. Shared between the
171
+ // two providers as well, so a handle opened under one provider can
172
+ // still be closed after a switch (each session's Context keeps the
173
+ // factory it was created with).
174
+ const sessionRegistry = new BrowserSessionRegistry();
175
+ // A stateless per-request proxy flags its inner default context
176
+ // ephemeral (disposable profile, see startMCPServer); stateful
177
+ // proxies keep the stable profile.
178
+ const makeProviders = (ephemeralDefaultContext) => [
119
179
  {
120
180
  name: 'default',
121
181
  description: 'Starts standalone browser',
122
- connect: () => mcpServer.wrapInProcess(new BrowserServerBackend(config, browserContextFactory)),
182
+ connect: () => mcpServer.wrapInProcess(new BrowserServerBackend(config, browserContextFactory, sessionRegistry, { ephemeralDefaultContext })),
123
183
  },
124
184
  {
125
185
  name: 'extension',
126
186
  description: 'Connect to a browser using the Playwright MCP extension',
127
- connect: () => mcpServer.wrapInProcess(new BrowserServerBackend(config, extensionContextFactory)),
187
+ // Runs before the default provider is torn down, so a rejected
188
+ // switch keeps the session on the provider that works.
189
+ validate: () => assertStorageStateSupported(config, extensionContextFactory, 'The "extension" method works through the browser you are already running and uses the context it already has. Stay on the "default" method, or restart without the storage state and sign in in that browser.'),
190
+ connect: () => mcpServer.wrapInProcess(new BrowserServerBackend(config, extensionContextFactory, sessionRegistry, { ephemeralDefaultContext })),
128
191
  },
129
192
  ];
193
+ // Process-scoped browser_connect selection for handshake-free HTTP:
194
+ // each such POST serves with a throwaway ProxyBackend, so a switch
195
+ // stored only there would report success and silently revert to the
196
+ // default provider on the next request. The shared client connects
197
+ // through the stateful-flavored providers — it outlives any single
198
+ // response, so it must not take the ephemeral per-request default
199
+ // context.
200
+ const sharedSelection = { slot: new SharedClientSlot(), providers: makeProviders(false) };
201
+ exitCleanups.push(async () => {
202
+ // dispose(), not replace(undefined): shutdown must close the
203
+ // switched client even while in-flight requests still hold leases
204
+ // on it — nothing outlives the process, and waiting for a drain
205
+ // could stall exit forever.
206
+ await sharedSelection.slot.dispose();
207
+ });
130
208
  const factory = {
131
209
  name: 'Playwright w/ switch',
132
210
  nameInConfig: 'playwright-switch',
133
211
  version: packageJSON.version,
134
- create: () => new ProxyBackend(providers),
212
+ create: () => new ProxyBackend(makeProviders(false)),
213
+ createStateless: () => new ProxyBackend(makeProviders(true), sharedSelection),
135
214
  };
136
215
  await mcpServer.start(factory, config.server);
137
216
  return;
@@ -158,7 +237,7 @@ program
158
237
  const { config, browserContextFactory, extensionContextFactory } = await resolveProgramContext(parentOptions);
159
238
  const backend = new BrowserServerBackend(config, parentOptions.extension ? extensionContextFactory : browserContextFactory);
160
239
  const handleExit = setupExitWatchdog();
161
- await backend.initialize({ notifyToolListChanged: async () => { } }, { name: 'interactive-cli', version: packageJSON.version }, []);
240
+ await backend.initialize({ notifyToolListChanged: async () => { } }, { name: 'interactive-cli', version: packageJSON.version });
162
241
  const rl = readline.createInterface({
163
242
  input: process.stdin,
164
243
  output: process.stdout,
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
package/lib/response.js CHANGED
@@ -41,6 +41,14 @@ export class Response {
41
41
  this.toolArgs = toolArgs;
42
42
  this._requestContext = requestContext;
43
43
  }
44
+ /**
45
+ * The Context the tool call ran in. The `--save-session` log uses it as
46
+ * the entry's originating identity: the log is shared backend-wide, and
47
+ * its pending-action bookkeeping is scoped per context.
48
+ */
49
+ get context() {
50
+ return this._context;
51
+ }
44
52
  addResult(result) {
45
53
  this._result.push(result);
46
54
  }
@@ -119,12 +127,17 @@ export class Response {
119
127
  // All the async snapshotting post-action is happening here.
120
128
  // Everything below should race against modal states.
121
129
  const currentTab = this._context.currentTab();
122
- if (this._includeSnapshot && currentTab)
123
- this._tabSnapshot = await currentTab.captureSnapshot();
130
+ // The snapshot of the current tab and the titles of the others are
131
+ // independent page reads, so they go out together rather than one after the
132
+ // other. Only the current tab's snapshot also refreshes its title.
124
133
  const tabsToUpdate = this._includeTabs
125
134
  ? this._context.tabs().filter(tab => !this._includeSnapshot || tab !== currentTab)
126
135
  : currentTab && !this._includeSnapshot ? [currentTab] : [];
127
- await Promise.allSettled(tabsToUpdate.map(tab => tab.updateTitle()));
136
+ const [snapshot] = await Promise.all([
137
+ this._includeSnapshot && currentTab ? currentTab.captureSnapshot() : undefined,
138
+ Promise.allSettled(tabsToUpdate.map(tab => tab.updateTitle())),
139
+ ]);
140
+ this._tabSnapshot = snapshot;
128
141
  }
129
142
  tabSnapshot() {
130
143
  return this._tabSnapshot;
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../src/response.ts"],"names":[],"mappings":"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"}
package/lib/sessionLog.js CHANGED
@@ -16,6 +16,7 @@
16
16
  import fs from 'node:fs';
17
17
  import path from 'node:path';
18
18
  import { Response } from './response.js';
19
+ import { createShortGuid } from './utils/guid.js';
19
20
  import { logUnhandledError } from './utils/log.js';
20
21
  import { outputFile } from './config.js';
21
22
  class NodeFileStorage {
@@ -39,8 +40,12 @@ export class SessionLog {
39
40
  this._file = path.join(this._folder, 'session.md');
40
41
  this._storage = storage;
41
42
  }
42
- static async create(config, rootPath) {
43
- const sessionFolder = await outputFile(config, rootPath, `session-${Date.now()}`);
43
+ static async create(config) {
44
+ // The random suffix keeps two sessions created in the same millisecond
45
+ // (e.g. concurrent HTTP connections) from sharing a folder — a collision
46
+ // would interleave their session.md entries and overwrite each other's
47
+ // snapshot ordinals. Nothing parses the folder name back.
48
+ const sessionFolder = await outputFile(config, `session-${Date.now()}-${createShortGuid()}`);
44
49
  await fs.promises.mkdir(sessionFolder, { recursive: true });
45
50
  // eslint-disable-next-line no-console
46
51
  console.error(`Session: ${sessionFolder}`);
@@ -55,6 +60,7 @@ export class SessionLog {
55
60
  result: response.result(),
56
61
  isError: response.isError(),
57
62
  },
63
+ source: response.context,
58
64
  code: response.code(),
59
65
  tabSnapshot: response.tabSnapshot(),
60
66
  };
@@ -62,9 +68,15 @@ export class SessionLog {
62
68
  }
63
69
  logUserAction(action, tab, code, isUpdate) {
64
70
  code = code.trim();
71
+ // All bookkeeping is scoped to the context the recorder event came from:
72
+ // with the log shared across a backend's contexts, an update matched
73
+ // against the globally-last entry could merge into ANOTHER session's
74
+ // same-named pending action, and a navigate could be deduplicated
75
+ // against another session's location.
76
+ const source = tab.context;
77
+ const lastEntry = this._lastPendingEntryFor(source);
65
78
  if (isUpdate) {
66
- const lastEntry = this._pendingEntries[this._pendingEntries.length - 1];
67
- if (lastEntry.userAction?.name === action.name) {
79
+ if (lastEntry?.userAction?.name === action.name) {
68
80
  lastEntry.userAction = action;
69
81
  lastEntry.code = code;
70
82
  return;
@@ -72,13 +84,19 @@ export class SessionLog {
72
84
  }
73
85
  if (action.name === 'navigate') {
74
86
  // Already logged at this location.
75
- const lastEntry = this._pendingEntries[this._pendingEntries.length - 1];
76
87
  if (lastEntry?.tabSnapshot?.url === action.url)
77
88
  return;
78
89
  }
79
90
  const entry = {
80
91
  timestamp: performance.now(),
81
92
  userAction: action,
93
+ source,
94
+ // Session contexts' recorded actions carry the handle in session.md,
95
+ // mirroring how routed tool calls log a browserSessionId in their
96
+ // args — otherwise concurrent sessions' user actions would be
97
+ // indistinguishable in the shared log. Default-context actions stay
98
+ // untagged, exactly as before.
99
+ browserSessionId: source.options.browserSessionId,
82
100
  code,
83
101
  tabSnapshot: {
84
102
  url: tab.page.url(),
@@ -91,6 +109,14 @@ export class SessionLog {
91
109
  };
92
110
  this._appendEntry(entry);
93
111
  }
112
+ /** The last not-yet-flushed entry this context wrote, tool calls included. */
113
+ _lastPendingEntryFor(source) {
114
+ for (let i = this._pendingEntries.length - 1; i >= 0; i--) {
115
+ if (this._pendingEntries[i].source === source)
116
+ return this._pendingEntries[i];
117
+ }
118
+ return undefined;
119
+ }
94
120
  _appendEntry(entry) {
95
121
  this._pendingEntries.push(entry);
96
122
  if (this._flushEntriesTimeout)
@@ -115,7 +141,11 @@ export class SessionLog {
115
141
  delete actionData.ariaSnapshot;
116
142
  delete actionData.selector;
117
143
  delete actionData.signals;
118
- lines.push(`### User action: ${entry.userAction.name}`, `- Args`, '```json', JSON.stringify(actionData, null, 2), '```');
144
+ // Leads the args like a routed tool call's browserSessionId does.
145
+ const loggedAction = entry.browserSessionId !== undefined
146
+ ? { browserSessionId: entry.browserSessionId, ...actionData }
147
+ : actionData;
148
+ lines.push(`### User action: ${entry.userAction.name}`, `- Args`, '```json', JSON.stringify(loggedAction, null, 2), '```');
119
149
  }
120
150
  if (entry.code) {
121
151
  lines.push(`- Code`, '```js', entry.code, '```');
@@ -1 +1 @@
1
- {"version":3,"file":"sessionLog.js","sourceRoot":"","sources":["../src/sessionLog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessionLog.js","sourceRoot":"","sources":["../src/sessionLog.ts"],"names":[],"mappings":"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"}