patchright-bun-core 1.58.2 → 1.59.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/ThirdPartyNotices.txt +126 -650
- package/browsers.json +16 -14
- package/lib/bootstrap.js +77 -0
- package/lib/cli/browserActions.js +308 -0
- package/lib/cli/driver.js +3 -2
- package/lib/cli/installActions.js +171 -0
- package/lib/cli/program.js +47 -411
- package/lib/client/android.js +4 -4
- package/lib/client/api.js +3 -3
- package/lib/client/browser.js +8 -0
- package/lib/client/browserContext.js +18 -37
- package/lib/client/browserType.js +19 -51
- package/lib/client/cdpSession.js +6 -2
- package/lib/client/channelOwner.js +1 -1
- package/lib/client/{webSocket.js → connect.js} +57 -7
- package/lib/client/connection.js +8 -4
- package/lib/client/consoleMessage.js +3 -0
- package/lib/client/debugger.js +57 -0
- package/lib/client/dialog.js +8 -1
- package/lib/client/disposable.js +76 -0
- package/lib/client/electron.js +1 -0
- package/lib/client/elementHandle.js +1 -4
- package/lib/client/events.js +3 -3
- package/lib/client/fetch.js +0 -1
- package/lib/client/frame.js +0 -5
- package/lib/client/harRouter.js +13 -1
- package/lib/client/jsHandle.js +0 -4
- package/lib/client/locator.js +5 -7
- package/lib/client/network.js +14 -11
- package/lib/client/page.js +34 -48
- package/lib/client/platform.js +0 -3
- package/lib/client/screencast.js +88 -0
- package/lib/client/selectors.js +3 -1
- package/lib/client/tracing.js +11 -4
- package/lib/client/video.js +13 -20
- package/lib/generated/bindingsControllerSource.js +1 -1
- package/lib/generated/clockSource.js +1 -1
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/pollingRecorderSource.js +1 -1
- package/lib/generated/storageScriptSource.js +1 -1
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/mcpBundle.js +0 -6
- package/lib/mcpBundleImpl.js +91 -0
- package/lib/protocol/validator.js +216 -118
- package/lib/protocol/validatorPrimitives.js +1 -1
- package/lib/remote/playwrightConnection.js +10 -8
- package/lib/remote/playwrightPipeServer.js +100 -0
- package/lib/remote/playwrightServer.js +13 -8
- package/lib/remote/playwrightWebSocketServer.js +73 -0
- package/lib/remote/serverTransport.js +96 -0
- package/lib/server/android/android.js +2 -2
- package/lib/server/bidi/bidiBrowser.js +30 -8
- package/lib/server/bidi/bidiChromium.js +18 -5
- package/lib/server/bidi/bidiNetworkManager.js +39 -11
- package/lib/server/bidi/bidiPage.js +31 -15
- package/lib/server/bidi/third_party/firefoxPrefs.js +3 -1
- package/lib/server/browser.js +84 -21
- package/lib/server/browserContext.js +97 -58
- package/lib/server/browserType.js +14 -12
- package/lib/server/chromium/chromium.js +15 -13
- package/lib/server/chromium/crBrowser.js +18 -10
- package/lib/server/chromium/crNetworkManager.js +4 -4
- package/lib/server/chromium/crPage.js +26 -64
- package/lib/server/chromium/crServiceWorker.js +5 -4
- package/lib/server/clock.js +33 -33
- package/lib/server/console.js +5 -1
- package/lib/server/debugController.js +12 -6
- package/lib/server/debugger.js +40 -47
- package/lib/server/deviceDescriptorsSource.json +137 -137
- package/lib/server/dispatchers/browserContextDispatcher.js +27 -30
- package/lib/server/dispatchers/browserDispatcher.js +11 -5
- package/lib/server/dispatchers/browserTypeDispatcher.js +7 -0
- package/lib/server/dispatchers/cdpSessionDispatcher.js +4 -1
- package/lib/server/dispatchers/debuggerDispatcher.js +84 -0
- package/lib/server/dispatchers/dispatcher.js +1 -1
- package/lib/server/dispatchers/disposableDispatcher.js +39 -0
- package/lib/server/dispatchers/electronDispatcher.js +2 -1
- package/lib/server/dispatchers/frameDispatcher.js +3 -3
- package/lib/server/dispatchers/localUtilsDispatcher.js +37 -1
- package/lib/server/dispatchers/networkDispatchers.js +6 -5
- package/lib/server/dispatchers/pageDispatcher.js +101 -38
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +4 -5
- package/lib/server/disposable.js +41 -0
- package/lib/server/dom.js +44 -26
- package/lib/server/download.js +3 -2
- package/lib/server/electron/electron.js +12 -7
- package/lib/server/firefox/ffBrowser.js +9 -19
- package/lib/server/firefox/ffInput.js +21 -5
- package/lib/server/firefox/ffNetworkManager.js +2 -2
- package/lib/server/firefox/ffPage.js +24 -27
- package/lib/server/frames.js +40 -11
- package/lib/server/har/harRecorder.js +2 -2
- package/lib/server/har/harTracer.js +5 -4
- package/lib/server/input.js +49 -4
- package/lib/server/instrumentation.js +5 -0
- package/lib/server/launchApp.js +0 -1
- package/lib/server/localUtils.js +6 -6
- package/lib/server/network.js +9 -8
- package/lib/server/overlay.js +138 -0
- package/lib/server/page.js +111 -51
- package/lib/server/progress.js +6 -0
- package/lib/server/recorder/recorderApp.js +9 -8
- package/lib/server/recorder.js +76 -40
- package/lib/server/registry/index.js +54 -81
- package/lib/server/registry/nativeDeps.js +1 -0
- package/lib/server/screencast.js +90 -143
- package/lib/server/trace/recorder/snapshotter.js +2 -2
- package/lib/server/trace/recorder/tracing.js +87 -36
- package/lib/server/trace/viewer/traceViewer.js +3 -4
- package/lib/server/usKeyboardLayout.js +7 -0
- package/lib/server/utils/comparators.js +1 -1
- package/lib/server/utils/disposable.js +32 -0
- package/lib/server/utils/eventsHelper.js +3 -1
- package/lib/server/utils/fileUtils.js +16 -2
- package/lib/server/utils/happyEyeballs.js +15 -12
- package/lib/server/utils/hostPlatform.js +0 -15
- package/lib/server/utils/httpServer.js +5 -3
- package/lib/server/utils/network.js +2 -1
- package/lib/server/utils/nodePlatform.js +0 -6
- package/lib/server/utils/processLauncher.js +8 -6
- package/lib/server/utils/zipFile.js +2 -2
- package/lib/server/videoRecorder.js +82 -12
- package/lib/server/webkit/wkBrowser.js +1 -6
- package/lib/server/webkit/wkPage.js +27 -25
- package/lib/server/webkit/wkWorkers.js +2 -1
- package/lib/serverRegistry.js +156 -0
- package/lib/tools/backend/browserBackend.js +79 -0
- package/lib/tools/backend/common.js +63 -0
- package/lib/tools/backend/config.js +41 -0
- package/lib/tools/backend/console.js +66 -0
- package/lib/tools/backend/context.js +296 -0
- package/lib/tools/backend/cookies.js +152 -0
- package/lib/tools/backend/devtools.js +69 -0
- package/lib/tools/backend/dialogs.js +59 -0
- package/lib/tools/backend/evaluate.js +64 -0
- package/lib/tools/backend/files.js +60 -0
- package/lib/tools/backend/form.js +64 -0
- package/lib/tools/backend/keyboard.js +155 -0
- package/lib/tools/backend/logFile.js +95 -0
- package/lib/tools/backend/mouse.js +168 -0
- package/lib/tools/backend/navigate.js +106 -0
- package/lib/tools/backend/network.js +135 -0
- package/lib/tools/backend/pdf.js +48 -0
- package/lib/tools/backend/response.js +305 -0
- package/lib/tools/backend/route.js +140 -0
- package/lib/tools/backend/runCode.js +77 -0
- package/lib/tools/backend/screenshot.js +88 -0
- package/lib/tools/backend/sessionLog.js +74 -0
- package/lib/tools/backend/snapshot.js +208 -0
- package/lib/tools/backend/storage.js +68 -0
- package/lib/tools/backend/tab.js +445 -0
- package/lib/tools/backend/tabs.js +67 -0
- package/lib/tools/backend/tool.js +47 -0
- package/lib/tools/backend/tools.js +102 -0
- package/lib/tools/backend/tracing.js +78 -0
- package/lib/tools/backend/utils.js +83 -0
- package/lib/tools/backend/verify.js +151 -0
- package/lib/tools/backend/video.js +98 -0
- package/lib/tools/backend/wait.js +63 -0
- package/lib/tools/backend/webstorage.js +223 -0
- package/lib/tools/cli-client/cli.js +6 -0
- package/lib/tools/cli-client/help.json +399 -0
- package/lib/tools/cli-client/minimist.js +128 -0
- package/lib/tools/cli-client/program.js +350 -0
- package/lib/tools/cli-client/registry.js +176 -0
- package/lib/tools/cli-client/session.js +289 -0
- package/lib/tools/cli-client/skill/SKILL.md +328 -0
- package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
- package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
- package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
- package/lib/tools/cli-client/skill/references/running-code.md +231 -0
- package/lib/tools/cli-client/skill/references/session-management.md +169 -0
- package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
- package/lib/tools/cli-client/skill/references/test-generation.md +88 -0
- package/lib/tools/cli-client/skill/references/tracing.md +139 -0
- package/lib/tools/cli-client/skill/references/video-recording.md +143 -0
- package/lib/tools/cli-daemon/command.js +73 -0
- package/lib/tools/cli-daemon/commands.js +956 -0
- package/lib/tools/cli-daemon/daemon.js +157 -0
- package/lib/tools/cli-daemon/helpGenerator.js +177 -0
- package/lib/tools/cli-daemon/program.js +129 -0
- package/lib/tools/dashboard/appIcon.png +0 -0
- package/lib/tools/dashboard/dashboardApp.js +284 -0
- package/lib/tools/dashboard/dashboardController.js +296 -0
- package/lib/tools/exports.js +60 -0
- package/lib/tools/mcp/browserFactory.js +233 -0
- package/lib/tools/mcp/cdpRelay.js +352 -0
- package/lib/tools/mcp/cli-stub.js +7 -0
- package/lib/tools/mcp/config.d.js +16 -0
- package/lib/tools/mcp/config.js +446 -0
- package/lib/tools/mcp/configIni.js +189 -0
- package/lib/tools/mcp/extensionContextFactory.js +55 -0
- package/lib/tools/mcp/index.js +62 -0
- package/lib/tools/mcp/log.js +35 -0
- package/lib/tools/mcp/program.js +107 -0
- package/lib/tools/mcp/protocol.js +28 -0
- package/lib/tools/mcp/watchdog.js +44 -0
- package/lib/tools/trace/SKILL.md +171 -0
- package/lib/{server/trace/viewer/traceParser.js → tools/trace/installSkill.js} +15 -39
- package/lib/tools/trace/traceActions.js +142 -0
- package/lib/tools/trace/traceAttachments.js +69 -0
- package/lib/tools/trace/traceCli.js +87 -0
- package/lib/tools/trace/traceConsole.js +97 -0
- package/lib/tools/trace/traceErrors.js +55 -0
- package/lib/tools/trace/traceOpen.js +69 -0
- package/lib/tools/trace/traceParser.js +96 -0
- package/lib/tools/trace/traceRequests.js +182 -0
- package/lib/tools/trace/traceScreenshot.js +68 -0
- package/lib/tools/trace/traceSnapshot.js +149 -0
- package/lib/tools/trace/traceUtils.js +153 -0
- package/lib/tools/utils/connect.js +32 -0
- package/lib/tools/utils/mcp/http.js +152 -0
- package/lib/tools/utils/mcp/server.js +230 -0
- package/lib/tools/utils/mcp/tool.js +47 -0
- package/lib/tools/utils/socketConnection.js +108 -0
- package/lib/utils/isomorphic/formatUtils.js +64 -0
- package/lib/utils/isomorphic/jsonSchema.js +89 -0
- package/lib/utils/isomorphic/mimeType.js +7 -2
- package/lib/utils/isomorphic/protocolFormatter.js +2 -2
- package/lib/utils/isomorphic/protocolMetainfo.js +127 -106
- package/lib/utils/isomorphic/stringUtils.js +3 -3
- package/lib/utils/isomorphic/timeoutRunner.js +3 -3
- package/lib/utils/isomorphic/trace/snapshotRenderer.js +35 -42
- package/lib/utils/isomorphic/trace/traceLoader.js +15 -14
- package/lib/utils/isomorphic/trace/traceModel.js +3 -2
- package/lib/utils/isomorphic/trace/traceModernizer.js +1 -0
- package/lib/utils/isomorphic/urlMatch.js +54 -1
- package/lib/utils/isomorphic/utilityScriptSerializers.js +11 -0
- package/lib/utils.js +6 -2
- package/lib/utilsBundle.js +3 -21
- package/lib/utilsBundleImpl/index.js +132 -133
- package/lib/vite/dashboard/assets/index-BAOybkp8.js +50 -0
- package/lib/vite/dashboard/assets/index-CZAYOG76.css +1 -0
- package/lib/vite/dashboard/index.html +28 -0
- package/lib/vite/htmlReport/index.html +2 -70
- package/lib/vite/htmlReport/report.css +1 -0
- package/lib/vite/htmlReport/report.js +72 -0
- package/lib/vite/recorder/assets/{codeMirrorModule-DadYNm1I.js → codeMirrorModule-C8KMvO9L.js} +20 -20
- package/lib/vite/recorder/assets/index-CqAYX1I3.js +193 -0
- package/lib/vite/recorder/index.html +1 -1
- package/lib/vite/traceViewer/assets/{codeMirrorModule-a5XoALAZ.js → codeMirrorModule-DS0FLvoc.js} +20 -20
- package/lib/vite/traceViewer/assets/defaultSettingsView-GTWI-W_B.js +262 -0
- package/lib/vite/traceViewer/defaultSettingsView.B4dS75f0.css +1 -0
- package/lib/vite/traceViewer/{index.BVu7tZDe.css → index.CzXZzn5A.css} +1 -1
- package/lib/vite/traceViewer/{index.BDwrLSGN.js → index.Dtstcb7U.js} +1 -1
- package/lib/vite/traceViewer/index.html +4 -4
- package/lib/vite/traceViewer/sw.bundle.js +4 -4
- package/lib/vite/traceViewer/uiMode.Vipi55dB.js +6 -0
- package/lib/vite/traceViewer/uiMode.html +3 -3
- package/lib/zipBundleImpl.js +2 -2
- package/lib/zodBundle.js +39 -0
- package/lib/zodBundleImpl.js +40 -0
- package/package.json +6 -1
- package/types/protocol.d.ts +947 -51
- package/types/types.d.ts +854 -74
- package/lib/client/pageAgent.js +0 -64
- package/lib/mcpBundleImpl/index.js +0 -147
- package/lib/server/agent/actionRunner.js +0 -335
- package/lib/server/agent/actions.js +0 -128
- package/lib/server/agent/codegen.js +0 -111
- package/lib/server/agent/context.js +0 -150
- package/lib/server/agent/expectTools.js +0 -156
- package/lib/server/agent/pageAgent.js +0 -204
- package/lib/server/agent/performTools.js +0 -262
- package/lib/server/agent/tool.js +0 -109
- package/lib/server/dispatchers/pageAgentDispatcher.js +0 -96
- package/lib/vite/recorder/assets/index-BhTWtUlo.js +0 -193
- package/lib/vite/traceViewer/assets/defaultSettingsView-CJSZINFr.js +0 -266
- package/lib/vite/traceViewer/defaultSettingsView.7ch9cixO.css +0 -1
- package/lib/vite/traceViewer/uiMode.CQJ9SCIQ.js +0 -5
- /package/lib/{server/utils → utils/isomorphic}/imageUtils.js +0 -0
- /package/lib/utils/isomorphic/{traceUtils.js → trace/traceUtils.js} +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var serverRegistry_exports = {};
|
|
30
|
+
__export(serverRegistry_exports, {
|
|
31
|
+
serverRegistry: () => serverRegistry
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(serverRegistry_exports);
|
|
34
|
+
var import_fs = __toESM(require("fs"));
|
|
35
|
+
var import_net = __toESM(require("net"));
|
|
36
|
+
var import_path = __toESM(require("path"));
|
|
37
|
+
var import_os = __toESM(require("os"));
|
|
38
|
+
const packageVersion = require("../package.json").version;
|
|
39
|
+
class ServerRegistry {
|
|
40
|
+
async list() {
|
|
41
|
+
const files = await import_fs.default.promises.readdir(this._browsersDir()).catch(() => []);
|
|
42
|
+
const result = /* @__PURE__ */ new Map();
|
|
43
|
+
for (const file of files) {
|
|
44
|
+
try {
|
|
45
|
+
const filePath = import_path.default.join(this._browsersDir(), file);
|
|
46
|
+
const content = await import_fs.default.promises.readFile(filePath, "utf-8");
|
|
47
|
+
const descriptor = JSON.parse(content);
|
|
48
|
+
const key = descriptor.workspaceDir ?? "";
|
|
49
|
+
let list = result.get(key);
|
|
50
|
+
if (!list) {
|
|
51
|
+
list = [];
|
|
52
|
+
result.set(key, list);
|
|
53
|
+
}
|
|
54
|
+
list.push(canConnect(descriptor).then((connectable) => ({ ...descriptor, canConnect: connectable, file: filePath })));
|
|
55
|
+
} catch {
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const resolvedResult = /* @__PURE__ */ new Map();
|
|
59
|
+
for (const [key, promises] of result) {
|
|
60
|
+
const entries = await Promise.all(promises);
|
|
61
|
+
const descriptors = [];
|
|
62
|
+
for (const entry of entries) {
|
|
63
|
+
if (!entry.canConnect && !entry.browser.userDataDir) {
|
|
64
|
+
await import_fs.default.promises.unlink(entry.file).catch(() => {
|
|
65
|
+
});
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
descriptors.push(entry);
|
|
69
|
+
}
|
|
70
|
+
if (descriptors.length)
|
|
71
|
+
resolvedResult.set(key, descriptors);
|
|
72
|
+
}
|
|
73
|
+
return resolvedResult;
|
|
74
|
+
}
|
|
75
|
+
async create(browser, endpoint) {
|
|
76
|
+
const file = import_path.default.join(this._browsersDir(), browser.guid);
|
|
77
|
+
await import_fs.default.promises.mkdir(this._browsersDir(), { recursive: true });
|
|
78
|
+
const descriptor = {
|
|
79
|
+
playwrightVersion: packageVersion,
|
|
80
|
+
playwrightLib: require.resolve(".."),
|
|
81
|
+
title: endpoint.title,
|
|
82
|
+
browser,
|
|
83
|
+
endpoint: endpoint.endpoint,
|
|
84
|
+
workspaceDir: endpoint.workspaceDir
|
|
85
|
+
};
|
|
86
|
+
await import_fs.default.promises.writeFile(file, JSON.stringify(descriptor), "utf-8");
|
|
87
|
+
}
|
|
88
|
+
async delete(guid) {
|
|
89
|
+
const file = import_path.default.join(this._browsersDir(), guid);
|
|
90
|
+
await import_fs.default.promises.unlink(file).catch(() => {
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
async deleteUserData(guid) {
|
|
94
|
+
const filePath = import_path.default.join(this._browsersDir(), guid);
|
|
95
|
+
const content = await import_fs.default.promises.readFile(filePath, "utf-8");
|
|
96
|
+
const descriptor = JSON.parse(content);
|
|
97
|
+
if (descriptor.browser.userDataDir)
|
|
98
|
+
await import_fs.default.promises.rm(descriptor.browser.userDataDir, { recursive: true, force: true });
|
|
99
|
+
await import_fs.default.promises.unlink(filePath);
|
|
100
|
+
}
|
|
101
|
+
readDescriptor(guid) {
|
|
102
|
+
const filePath = import_path.default.join(this._browsersDir(), guid);
|
|
103
|
+
const content = import_fs.default.readFileSync(filePath, "utf-8");
|
|
104
|
+
const descriptor = JSON.parse(content);
|
|
105
|
+
return descriptor;
|
|
106
|
+
}
|
|
107
|
+
async find(name) {
|
|
108
|
+
const entries = await this.list();
|
|
109
|
+
for (const [, browsers] of entries) {
|
|
110
|
+
for (const browser of browsers) {
|
|
111
|
+
if (browser.title === name)
|
|
112
|
+
return browser;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
_browsersDir() {
|
|
118
|
+
return process.env.PLAYWRIGHT_SERVER_REGISTRY || registryDirectory;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function canConnect(descriptor) {
|
|
122
|
+
if (!descriptor.endpoint)
|
|
123
|
+
return false;
|
|
124
|
+
if (descriptor.endpoint.startsWith("ws://") || descriptor.endpoint.startsWith("wss://")) {
|
|
125
|
+
return await new Promise((resolve) => {
|
|
126
|
+
const url = new URL(descriptor.endpoint);
|
|
127
|
+
const socket = import_net.default.createConnection(Number(url.port), url.hostname, () => {
|
|
128
|
+
socket.destroy();
|
|
129
|
+
resolve(true);
|
|
130
|
+
});
|
|
131
|
+
socket.on("error", () => resolve(false));
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
return await new Promise((resolve) => {
|
|
135
|
+
const socket = import_net.default.createConnection(descriptor.endpoint ?? descriptor.pipeName, () => {
|
|
136
|
+
socket.destroy();
|
|
137
|
+
resolve(true);
|
|
138
|
+
});
|
|
139
|
+
socket.on("error", () => resolve(false));
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
const defaultCacheDirectory = (() => {
|
|
143
|
+
if (process.platform === "linux")
|
|
144
|
+
return process.env.XDG_CACHE_HOME || import_path.default.join(import_os.default.homedir(), ".cache");
|
|
145
|
+
if (process.platform === "darwin")
|
|
146
|
+
return import_path.default.join(import_os.default.homedir(), "Library", "Caches");
|
|
147
|
+
if (process.platform === "win32")
|
|
148
|
+
return process.env.LOCALAPPDATA || import_path.default.join(import_os.default.homedir(), "AppData", "Local");
|
|
149
|
+
throw new Error("Unsupported platform: " + process.platform);
|
|
150
|
+
})();
|
|
151
|
+
const registryDirectory = import_path.default.join(defaultCacheDirectory, "ms-playwright", "b");
|
|
152
|
+
const serverRegistry = new ServerRegistry();
|
|
153
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
154
|
+
0 && (module.exports = {
|
|
155
|
+
serverRegistry
|
|
156
|
+
});
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var browserBackend_exports = {};
|
|
20
|
+
__export(browserBackend_exports, {
|
|
21
|
+
BrowserBackend: () => BrowserBackend
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(browserBackend_exports);
|
|
24
|
+
var import_context = require("./context");
|
|
25
|
+
var import_response = require("./response");
|
|
26
|
+
var import_sessionLog = require("./sessionLog");
|
|
27
|
+
var import_utilsBundle = require("../../utilsBundle");
|
|
28
|
+
class BrowserBackend {
|
|
29
|
+
constructor(config, browserContext, tools) {
|
|
30
|
+
this._config = config;
|
|
31
|
+
this._tools = tools;
|
|
32
|
+
this.browserContext = browserContext;
|
|
33
|
+
}
|
|
34
|
+
async initialize(clientInfo) {
|
|
35
|
+
this._sessionLog = this._config.saveSession ? await import_sessionLog.SessionLog.create(this._config, clientInfo.cwd) : void 0;
|
|
36
|
+
this._context = new import_context.Context(this.browserContext, {
|
|
37
|
+
config: this._config,
|
|
38
|
+
sessionLog: this._sessionLog,
|
|
39
|
+
cwd: clientInfo.cwd
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
async dispose() {
|
|
43
|
+
await this._context?.dispose().catch((e) => (0, import_utilsBundle.debug)("pw:tools:error")(e));
|
|
44
|
+
}
|
|
45
|
+
async callTool(name, rawArguments = {}) {
|
|
46
|
+
const tool = this._tools.find((tool2) => tool2.schema.name === name);
|
|
47
|
+
if (!tool) {
|
|
48
|
+
return {
|
|
49
|
+
content: [{ type: "text", text: `### Error
|
|
50
|
+
Tool "${name}" not found` }],
|
|
51
|
+
isError: true
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
const parsedArguments = tool.schema.inputSchema.parse(rawArguments);
|
|
55
|
+
const cwd = rawArguments._meta?.cwd;
|
|
56
|
+
const context = this._context;
|
|
57
|
+
const response = new import_response.Response(context, name, parsedArguments, cwd);
|
|
58
|
+
context.setRunningTool(name);
|
|
59
|
+
let responseObject;
|
|
60
|
+
try {
|
|
61
|
+
await tool.handle(context, parsedArguments, response);
|
|
62
|
+
responseObject = await response.serialize();
|
|
63
|
+
this._sessionLog?.logResponse(name, parsedArguments, responseObject);
|
|
64
|
+
} catch (error) {
|
|
65
|
+
return {
|
|
66
|
+
content: [{ type: "text", text: `### Error
|
|
67
|
+
${String(error)}` }],
|
|
68
|
+
isError: true
|
|
69
|
+
};
|
|
70
|
+
} finally {
|
|
71
|
+
context.setRunningTool(void 0);
|
|
72
|
+
}
|
|
73
|
+
return responseObject;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
77
|
+
0 && (module.exports = {
|
|
78
|
+
BrowserBackend
|
|
79
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var common_exports = {};
|
|
20
|
+
__export(common_exports, {
|
|
21
|
+
default: () => common_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(common_exports);
|
|
24
|
+
var import_zodBundle = require("../../zodBundle");
|
|
25
|
+
var import_tool = require("./tool");
|
|
26
|
+
var import_response = require("./response");
|
|
27
|
+
const close = (0, import_tool.defineTool)({
|
|
28
|
+
capability: "core",
|
|
29
|
+
schema: {
|
|
30
|
+
name: "browser_close",
|
|
31
|
+
title: "Close browser",
|
|
32
|
+
description: "Close the page",
|
|
33
|
+
inputSchema: import_zodBundle.z.object({}),
|
|
34
|
+
type: "action"
|
|
35
|
+
},
|
|
36
|
+
handle: async (context, params, response) => {
|
|
37
|
+
const result = (0, import_response.renderTabsMarkdown)([]);
|
|
38
|
+
response.addTextResult(result.join("\n"));
|
|
39
|
+
response.addCode(`await page.close()`);
|
|
40
|
+
response.setClose();
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
const resize = (0, import_tool.defineTabTool)({
|
|
44
|
+
capability: "core",
|
|
45
|
+
schema: {
|
|
46
|
+
name: "browser_resize",
|
|
47
|
+
title: "Resize browser window",
|
|
48
|
+
description: "Resize the browser window",
|
|
49
|
+
inputSchema: import_zodBundle.z.object({
|
|
50
|
+
width: import_zodBundle.z.number().describe("Width of the browser window"),
|
|
51
|
+
height: import_zodBundle.z.number().describe("Height of the browser window")
|
|
52
|
+
}),
|
|
53
|
+
type: "action"
|
|
54
|
+
},
|
|
55
|
+
handle: async (tab, params, response) => {
|
|
56
|
+
response.addCode(`await page.setViewportSize({ width: ${params.width}, height: ${params.height} });`);
|
|
57
|
+
await tab.page.setViewportSize({ width: params.width, height: params.height });
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
var common_default = [
|
|
61
|
+
close,
|
|
62
|
+
resize
|
|
63
|
+
];
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var config_exports = {};
|
|
20
|
+
__export(config_exports, {
|
|
21
|
+
default: () => config_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(config_exports);
|
|
24
|
+
var import_zodBundle = require("../../zodBundle");
|
|
25
|
+
var import_tool = require("./tool");
|
|
26
|
+
const configShow = (0, import_tool.defineTool)({
|
|
27
|
+
capability: "config",
|
|
28
|
+
schema: {
|
|
29
|
+
name: "browser_get_config",
|
|
30
|
+
title: "Get config",
|
|
31
|
+
description: "Get the final resolved config after merging CLI options, environment variables and config file.",
|
|
32
|
+
inputSchema: import_zodBundle.z.object({}),
|
|
33
|
+
type: "readOnly"
|
|
34
|
+
},
|
|
35
|
+
handle: async (context, params, response) => {
|
|
36
|
+
response.addTextResult(JSON.stringify(context.config, null, 2));
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
var config_default = [
|
|
40
|
+
configShow
|
|
41
|
+
];
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var console_exports = {};
|
|
20
|
+
__export(console_exports, {
|
|
21
|
+
default: () => console_default
|
|
22
|
+
});
|
|
23
|
+
module.exports = __toCommonJS(console_exports);
|
|
24
|
+
var import_zodBundle = require("../../zodBundle");
|
|
25
|
+
var import_tool = require("./tool");
|
|
26
|
+
const console = (0, import_tool.defineTabTool)({
|
|
27
|
+
capability: "core",
|
|
28
|
+
schema: {
|
|
29
|
+
name: "browser_console_messages",
|
|
30
|
+
title: "Get console messages",
|
|
31
|
+
description: "Returns all console messages",
|
|
32
|
+
inputSchema: import_zodBundle.z.object({
|
|
33
|
+
level: import_zodBundle.z.enum(["error", "warning", "info", "debug"]).default("info").describe('Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info".'),
|
|
34
|
+
all: import_zodBundle.z.boolean().optional().describe("Return all console messages since the beginning of the session, not just since the last navigation. Defaults to false."),
|
|
35
|
+
filename: import_zodBundle.z.string().optional().describe("Filename to save the console messages to. If not provided, messages are returned as text.")
|
|
36
|
+
}),
|
|
37
|
+
type: "readOnly"
|
|
38
|
+
},
|
|
39
|
+
handle: async (tab, params, response) => {
|
|
40
|
+
const count = await tab.consoleMessageCount();
|
|
41
|
+
const header = [`Total messages: ${count.total} (Errors: ${count.errors}, Warnings: ${count.warnings})`];
|
|
42
|
+
const messages = await tab.consoleMessages(params.level, params.all);
|
|
43
|
+
if (messages.length !== count.total)
|
|
44
|
+
header.push(`Returning ${messages.length} messages for level "${params.level}"`);
|
|
45
|
+
const text = [...header, "", ...messages.map((message) => message.toString())].join("\n");
|
|
46
|
+
await response.addResult("Console", text, { prefix: "console", ext: "log", suggestedFilename: params.filename });
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
const consoleClear = (0, import_tool.defineTabTool)({
|
|
50
|
+
capability: "core",
|
|
51
|
+
skillOnly: true,
|
|
52
|
+
schema: {
|
|
53
|
+
name: "browser_console_clear",
|
|
54
|
+
title: "Clear console messages",
|
|
55
|
+
description: "Clear all console messages",
|
|
56
|
+
inputSchema: import_zodBundle.z.object({}),
|
|
57
|
+
type: "readOnly"
|
|
58
|
+
},
|
|
59
|
+
handle: async (tab) => {
|
|
60
|
+
await tab.clearConsoleMessages();
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
var console_default = [
|
|
64
|
+
console,
|
|
65
|
+
consoleClear
|
|
66
|
+
];
|