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.
- package/README.md +265 -12
- package/index.d.ts +1 -1
- package/lib/browserContextFactory.js +1161 -94
- package/lib/browserContextFactory.js.map +1 -1
- package/lib/browserServerBackend.js +199 -22
- package/lib/browserServerBackend.js.map +1 -1
- package/lib/browserSessions.js +172 -0
- package/lib/browserSessions.js.map +1 -0
- package/lib/config.js +48 -7
- package/lib/config.js.map +1 -1
- package/lib/context.js +321 -71
- package/lib/context.js.map +1 -1
- package/lib/extension/cdpRelay.js +5 -0
- package/lib/extension/cdpRelay.js.map +1 -1
- package/lib/extension/extensionContextFactory.js +12 -1
- package/lib/extension/extensionContextFactory.js.map +1 -1
- package/lib/index.js +5 -1
- package/lib/index.js.map +1 -1
- package/lib/mcp/http.js +194 -44
- package/lib/mcp/http.js.map +1 -1
- package/lib/mcp/inProcessTransport.js.map +1 -1
- package/lib/mcp/mdb.js +7 -9
- package/lib/mcp/mdb.js.map +1 -1
- package/lib/mcp/proxyBackend.js +76 -18
- package/lib/mcp/proxyBackend.js.map +1 -1
- package/lib/mcp/server.js +70 -41
- package/lib/mcp/server.js.map +1 -1
- package/lib/mcp/sharedClientSlot.js +134 -0
- package/lib/mcp/sharedClientSlot.js.map +1 -0
- package/lib/mcp/tool.js +3 -0
- package/lib/mcp/tool.js.map +1 -1
- package/lib/networkPolicy.js +73 -0
- package/lib/networkPolicy.js.map +1 -0
- package/lib/program.js +91 -12
- package/lib/program.js.map +1 -1
- package/lib/response.js +16 -3
- package/lib/response.js.map +1 -1
- package/lib/sessionLog.js +36 -6
- package/lib/sessionLog.js.map +1 -1
- package/lib/tab.js +149 -18
- package/lib/tab.js.map +1 -1
- package/lib/tools/auditKeyboard.js +204 -4
- package/lib/tools/auditKeyboard.js.map +1 -1
- package/lib/tools/auditScreenReader.js +823 -0
- package/lib/tools/auditScreenReader.js.map +1 -0
- package/lib/tools/auditSite.js +268 -90
- package/lib/tools/auditSite.js.map +1 -1
- package/lib/tools/axe.js +479 -21
- package/lib/tools/axe.js.map +1 -1
- package/lib/tools/dialogs.js +18 -4
- package/lib/tools/dialogs.js.map +1 -1
- package/lib/tools/evaluate.js +34 -5
- package/lib/tools/evaluate.js.map +1 -1
- package/lib/tools/network.js +136 -8
- package/lib/tools/network.js.map +1 -1
- package/lib/tools/pdf.js +5 -2
- package/lib/tools/pdf.js.map +1 -1
- package/lib/tools/scanPageMatrix.js +135 -47
- package/lib/tools/scanPageMatrix.js.map +1 -1
- package/lib/tools/screenshot.js +8 -4
- package/lib/tools/screenshot.js.map +1 -1
- package/lib/tools/session.js +53 -0
- package/lib/tools/session.js.map +1 -0
- package/lib/tools/snapshot.js +266 -8
- package/lib/tools/snapshot.js.map +1 -1
- package/lib/tools/tool.js.map +1 -1
- package/lib/tools/utils.js +62 -6
- package/lib/tools/utils.js.map +1 -1
- package/lib/tools.js +11 -2
- package/lib/tools.js.map +1 -1
- package/lib/utils/dataUrl.js +58 -35
- package/lib/utils/dataUrl.js.map +1 -1
- package/lib/utils/fileUtils.js +35 -0
- package/lib/utils/fileUtils.js.map +1 -1
- package/lib/utils/guid.js +8 -0
- package/lib/utils/guid.js.map +1 -1
- package/lib/utils/jsSource.js +187 -0
- package/lib/utils/jsSource.js.map +1 -0
- package/lib/vscode/browserContextFactory.js +87 -0
- package/lib/vscode/browserContextFactory.js.map +1 -0
- package/lib/vscode/host.js +189 -33
- package/lib/vscode/host.js.map +1 -1
- package/lib/vscode/main.js +3 -35
- package/lib/vscode/main.js.map +1 -1
- 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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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,
|
package/lib/program.js.map
CHANGED
|
@@ -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":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,yCAAyC,EAAE,2BAA2B,EAAE,cAAc,EAAE,wBAAwB,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAC/L,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAWlD,KAAK,UAAU,qBAAqB,CAAC,OAAgC;IACnE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,uBAAuB,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,IAAI,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;IACvL,yEAAyE;IACzE,6EAA6E;IAC7E,sEAAsE;IACtE,kDAAkD;IAClD,IAAI,OAAO,CAAC,SAAS;QACnB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,uMAAuM,CAAC,CAAC;IACxQ,MAAM,qBAAqB,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACrD,0EAA0E;IAC1E,uEAAuE;IACvE,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,2CAA2C;IAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,qBAAqB,YAAY,wBAAwB;QACtG,yCAAyC,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;IACrF,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,MAAkB,EAAE,qBAA4C;IAC5F,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,kEAAkE;IAClE,MAAM,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACrD,MAAM,OAAO,GAAmC;QAC9C,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,uBAAuB;QAC9B,YAAY,EAAE,YAAY;QAC1B,OAAO,EAAE,WAAW,CAAC,OAAO;QAC5B,YAAY,EAAE,kBAAkB;QAChC,0EAA0E;QAC1E,wEAAwE;QACxE,mEAAmE;QACnE,uEAAuE;QACvE,+BAA+B;QAC/B,iBAAiB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;QAC5D,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,EAAE,eAAe,CAAC;QACtF,yEAAyE;QACzE,kEAAkE;QAClE,yEAAyE;QACzE,0EAA0E;QAC1E,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,CAAC;KACnI,CAAC;IACF,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,gFAAgF;AAChF,gBAAgB;AAChB,SAAS,eAAe,CAAC,KAAa,EAAE,QAAkB;IACxD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;SACF,OAAO,CAAC,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC;SACzC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;SACtB,MAAM,CAAC,6BAA6B,EAAE,+FAA+F,EAAE,sBAAsB,CAAC;SAC9J,MAAM,CAAC,6BAA6B,EAAE,0MAA0M,EAAE,sBAAsB,CAAC;SACzQ,MAAM,CAAC,yBAAyB,EAAE,uBAAuB,CAAC;SAC1D,MAAM,CAAC,qBAAqB,EAAE,qFAAqF,CAAC;SACpH,MAAM,CAAC,eAAe,EAAE,0FAA0F,EAAE,kBAAkB,CAAC;SACvI,MAAM,CAAC,gCAAgC,EAAE,+DAA+D,CAAC;SACzG,MAAM,CAAC,0BAA0B,EAAE,6DAA6D,EAAE,kBAAkB,CAAC;SACrH,MAAM,CAAC,yBAAyB,EAAE,+CAA+C,CAAC;SAClF,MAAM,CAAC,0BAA0B,EAAE,gDAAgD,EAAE,QAAQ,CAAC;SAC9F,MAAM,CAAC,mCAAmC,EAAE,uEAAuE,EAAE,QAAQ,CAAC;SAC9H,MAAM,CAAC,2BAA2B,EAAE,6BAA6B,CAAC;SAClE,MAAM,CAAC,uBAAuB,EAAE,6JAA6J,EAAE,eAAe,EAAE,EAAE,CAAC;SACnN,MAAM,CAAC,oBAAoB,EAAE,6GAA6G,EAAE,QAAQ,CAAC;SACrJ,MAAM,CAAC,iBAAiB,EAAE,iCAAiC,CAAC;SAC5D,MAAM,CAAC,mBAAmB,EAAE,6CAA6C,CAAC;SAC1E,MAAM,CAAC,0BAA0B,EAAE,iCAAiC,CAAC;SACrE,MAAM,CAAC,aAAa,EAAE,gHAAgH,CAAC;SACvI,MAAM,CAAC,YAAY,EAAE,iDAAiD,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,sFAAsF,CAAC;SAC/G,MAAM,CAAC,uBAAuB,EAAE,qBAAqB,CAAC;SACtD,MAAM,CAAC,YAAY,EAAE,6DAA6D,CAAC;SACnF,MAAM,CAAC,0BAA0B,EAAE,+FAA+F,CAAC;SACnI,MAAM,CAAC,UAAU,EAAE,qLAAqL,CAAC;SACzM,MAAM,CAAC,cAAc,EAAE,wEAAwE,CAAC;SAChG,MAAM,CAAC,qBAAqB,EAAE,yCAAyC,CAAC;SACxE,MAAM,CAAC,eAAe,EAAE,sDAAsD,CAAC;SAC/E,MAAM,CAAC,yBAAyB,EAAE,sFAAsF,CAAC;SACzH,MAAM,CAAC,wBAAwB,EAAE,oFAAoF,CAAC;SACtH,MAAM,CAAC,gBAAgB,EAAE,uEAAuE,CAAC;SACjG,MAAM,CAAC,cAAc,EAAE,gFAAgF,CAAC;SACxG,MAAM,CAAC,wBAAwB,EAAE,oMAAoM,CAAC;SACtO,MAAM,CAAC,0BAA0B,EAAE,2BAA2B,CAAC;SAC/D,MAAM,CAAC,wBAAwB,EAAE,2FAA2F,CAAC;SAC7H,MAAM,CAAC,wBAAwB,EAAE,kEAAkE,CAAC;SACpG,MAAM,CAAC,2BAA2B,EAAE,qFAAqF,EAAE,QAAQ,CAAC;SACpI,MAAM,CAAC,wBAAwB,EAAE,qGAAqG,EAAE,QAAQ,CAAC;SACjJ,MAAM,CAAC,uBAAuB,EAAE,sGAAsG,EAAE,QAAQ,CAAC;SACjJ,SAAS,CAAC,IAAI,MAAM,CAAC,gBAAgB,EAAE,+DAA+D,CAAC,CAAC,QAAQ,EAAE,CAAC;SACnH,SAAS,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEpE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,oBAAoB,EAAE;KACjB,MAAM,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE;IACtB,sEAAsE;IACtE,mEAAmE;IACnE,kEAAkE;IAClE,0CAA0C;IAC1C,MAAM,YAAY,GAA+B,EAAE,CAAC;IACpD,iBAAiB,CAAC,KAAK,IAAI,EAAE;QAC3B,KAAK,MAAM,OAAO,IAAI,YAAY;YAChC,MAAM,OAAO,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC3C,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,GAAG,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAExG,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,iEAAiE;QACjE,gEAAgE;QAChE,0DAA0D;QAC1D,MAAM,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACrD,MAAM,oBAAoB,GAAmC;YAC3D,IAAI,EAAE,yBAAyB;YAC/B,KAAK,EAAE,2CAA2C;YAClD,YAAY,EAAE,sBAAsB;YACpC,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,YAAY,EAAE,kBAAkB;YAChC,iEAAiE;YACjE,iBAAiB,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE;YAC5D,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,EAAE,eAAe,CAAC;SACzF,CAAC;QACF,MAAM,SAAS,CAAC,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3D,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,mEAAmE;QACnE,8DAA8D;QAC9D,qEAAqE;QACrE,qEAAqE;QACrE,mEAAmE;QACnE,mEAAmE;QACnE,gCAAgC;QAChC,MAAM,eAAe,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACrD,gEAAgE;QAChE,+DAA+D;QAC/D,mCAAmC;QACnC,MAAM,aAAa,GAAG,CAAC,uBAAgC,EAAiB,EAAE,CAAC;YACzE;gBACE,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,2BAA2B;gBACxC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,EAAE,eAAe,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC;aAC9I;YACD;gBACE,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,yDAAyD;gBACtE,+DAA+D;gBAC/D,uDAAuD;gBACvD,QAAQ,EAAE,GAAG,EAAE,CAAC,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,+MAA+M,CAAC;gBAC7R,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,oBAAoB,CAAC,MAAM,EAAE,uBAAuB,EAAE,eAAe,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC;aAChJ;SACF,CAAC;QACF,oEAAoE;QACpE,mEAAmE;QACnE,oEAAoE;QACpE,mEAAmE;QACnE,mEAAmE;QACnE,kEAAkE;QAClE,WAAW;QACX,MAAM,eAAe,GAAyB,EAAE,IAAI,EAAE,IAAI,gBAAgB,EAAE,EAAE,SAAS,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAChH,YAAY,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC3B,6DAA6D;YAC7D,kEAAkE;YAClE,gEAAgE;YAChE,4BAA4B;YAC5B,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAmC;YAC9C,IAAI,EAAE,sBAAsB;YAC5B,YAAY,EAAE,mBAAmB;YACjC,OAAO,EAAE,WAAW,CAAC,OAAO;YAC5B,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACpD,eAAe,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;SAC9E,CAAC;QACF,MAAM,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,cAAc,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;AACtD,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC,CAAC;AAEP,OAAO;KACF,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qDAAqD,CAAC;KAClE,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,GAAG,MAAM,qBAAqB,CAAC,aAAa,CAAC,CAAC;IAC9G,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC5H,MAAM,UAAU,GAAG,iBAAiB,EAAE,CAAC;IACvC,MAAM,OAAO,CAAC,UAAU,CACpB,EAAE,qBAAqB,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,EAAE,EACzC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAC5D,CAAC;IAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAE3F,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;IACjC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,EAAE,CAAC;IAET,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,IAAY,EAAE,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAChF,MAAM,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEpF,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;YAC1C,MAAM,EAAE,CAAC;YACT,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBAClC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;wBACtB,sCAAsC;wBACtC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sCAAsC;YACtC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,KAAK,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,SAAS,iBAAiB,CAAC,OAAO,GAAwB,GAAG,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE;IAClF,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,UAAU,GAAG,KAAK,IAAI,EAAE;QAC5B,IAAI,SAAS;YACX,OAAO;QACT,SAAS,GAAG,IAAI,CAAC;QACjB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,EAAE,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAC7B,KAAK,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,KAAK,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,KAAK,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
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
|
-
|
|
123
|
-
|
|
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.
|
|
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;
|
package/lib/response.js.map
CHANGED
|
@@ -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
|
|
43
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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, '```');
|
package/lib/sessionLog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionLog.js","sourceRoot":"","sources":["../src/sessionLog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"sessionLog.js","sourceRoot":"","sources":["../src/sessionLog.ts"],"names":[],"mappings":"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"}
|