Update npm registry domain from privatenpm.hanson.xyz to npm.internal.hanson.xyz 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
334 lines
14 KiB
JavaScript
334 lines
14 KiB
JavaScript
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var commands_exports = {};
|
|
__export(commands_exports, {
|
|
commands: () => commands
|
|
});
|
|
module.exports = __toCommonJS(commands_exports);
|
|
var import_mcpBundle = require("playwright-core/lib/mcpBundle");
|
|
var import_command = require("./command");
|
|
const click = (0, import_command.declareCommand)({
|
|
name: "click",
|
|
description: "Perform click on a web page",
|
|
args: import_mcpBundle.z.object({
|
|
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
|
|
}),
|
|
options: import_mcpBundle.z.object({
|
|
button: import_mcpBundle.z.string().optional().describe("Button to click, defaults to left"),
|
|
modifiers: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("Modifier keys to press")
|
|
}),
|
|
toolName: "browser_click",
|
|
toolParams: ({ ref }, { button, modifiers }) => ({ ref, button, modifiers })
|
|
});
|
|
const doubleClick = (0, import_command.declareCommand)({
|
|
name: "dblclick",
|
|
description: "Perform double click on a web page",
|
|
args: import_mcpBundle.z.object({
|
|
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
|
|
}),
|
|
options: import_mcpBundle.z.object({
|
|
button: import_mcpBundle.z.string().optional().describe("Button to click, defaults to left"),
|
|
modifiers: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("Modifier keys to press")
|
|
}),
|
|
toolName: "browser_click",
|
|
toolParams: ({ ref }, { button, modifiers }) => ({ ref, button, modifiers, doubleClick: true })
|
|
});
|
|
const close = (0, import_command.declareCommand)({
|
|
name: "close",
|
|
description: "Close the page",
|
|
args: import_mcpBundle.z.object({}),
|
|
toolName: "browser_close",
|
|
toolParams: () => ({})
|
|
});
|
|
const consoleMessages = (0, import_command.declareCommand)({
|
|
name: "console",
|
|
description: "Returns all console messages",
|
|
args: import_mcpBundle.z.object({
|
|
level: import_mcpBundle.z.string().optional().describe('Level of the console messages to return. Each level includes the messages of more severe levels. Defaults to "info".')
|
|
}),
|
|
toolName: "browser_console_messages",
|
|
toolParams: ({ level }) => ({ level })
|
|
});
|
|
const drag = (0, import_command.declareCommand)({
|
|
name: "drag",
|
|
description: "Perform drag and drop between two elements",
|
|
args: import_mcpBundle.z.object({
|
|
startRef: import_mcpBundle.z.string().describe("Exact source element reference from the page snapshot"),
|
|
endRef: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
|
|
}),
|
|
options: import_mcpBundle.z.object({
|
|
headed: import_mcpBundle.z.boolean().default(false).describe("Run browser in headed mode")
|
|
}),
|
|
toolName: "browser_drag",
|
|
toolParams: ({ startRef, endRef }) => ({ startRef, endRef })
|
|
});
|
|
const evaluate = (0, import_command.declareCommand)({
|
|
name: "evaluate",
|
|
description: "Evaluate JavaScript expression on page or element",
|
|
args: import_mcpBundle.z.object({
|
|
function: import_mcpBundle.z.string().describe("() => { /* code */ } or (element) => { /* code */ } when element is provided"),
|
|
ref: import_mcpBundle.z.string().optional().describe("Exact target element reference from the page snapshot")
|
|
}),
|
|
toolName: "browser_evaluate",
|
|
toolParams: ({ function: fn, ref }) => ({ function: fn, ref })
|
|
});
|
|
const fileUpload = (0, import_command.declareCommand)({
|
|
name: "upload-file",
|
|
description: "Upload one or multiple files",
|
|
args: import_mcpBundle.z.object({}),
|
|
options: import_mcpBundle.z.object({
|
|
paths: import_mcpBundle.z.array(import_mcpBundle.z.string()).optional().describe("The absolute paths to the files to upload. Can be single file or multiple files. If omitted, file chooser is cancelled.")
|
|
}),
|
|
toolName: "browser_file_upload",
|
|
toolParams: (_, { paths }) => ({ paths })
|
|
});
|
|
const handleDialog = (0, import_command.declareCommand)({
|
|
name: "handle-dialog",
|
|
description: "Handle a dialog",
|
|
args: import_mcpBundle.z.object({
|
|
accept: import_mcpBundle.z.boolean().describe("Whether to accept the dialog."),
|
|
promptText: import_mcpBundle.z.string().optional().describe("The text of the prompt in case of a prompt dialog.")
|
|
}),
|
|
toolName: "browser_handle_dialog",
|
|
toolParams: ({ accept, promptText }) => ({ accept, promptText })
|
|
});
|
|
const hover = (0, import_command.declareCommand)({
|
|
name: "hover",
|
|
description: "Hover over element on page",
|
|
args: import_mcpBundle.z.object({
|
|
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot")
|
|
}),
|
|
toolName: "browser_hover",
|
|
toolParams: ({ ref }) => ({ ref })
|
|
});
|
|
const open = (0, import_command.declareCommand)({
|
|
name: "open",
|
|
description: "Open URL",
|
|
args: import_mcpBundle.z.object({
|
|
url: import_mcpBundle.z.string().describe("The URL to navigate to")
|
|
}),
|
|
options: import_mcpBundle.z.object({
|
|
headed: import_mcpBundle.z.boolean().default(false).describe("Run browser in headed mode")
|
|
}),
|
|
toolName: "browser_open",
|
|
toolParams: ({ url }, { headed }) => ({ url, headed })
|
|
});
|
|
const navigateBack = (0, import_command.declareCommand)({
|
|
name: "go-back",
|
|
description: "Go back to the previous page",
|
|
args: import_mcpBundle.z.object({}),
|
|
toolName: "browser_navigate_back",
|
|
toolParams: () => ({})
|
|
});
|
|
const networkRequests = (0, import_command.declareCommand)({
|
|
name: "network-requests",
|
|
description: "Returns all network requests since loading the page",
|
|
args: import_mcpBundle.z.object({}),
|
|
options: import_mcpBundle.z.object({
|
|
includeStatic: import_mcpBundle.z.boolean().optional().describe("Whether to include successful static resources like images, fonts, scripts, etc. Defaults to false.")
|
|
}),
|
|
toolName: "browser_network_requests",
|
|
toolParams: (_, { includeStatic }) => ({ includeStatic })
|
|
});
|
|
const pressKey = (0, import_command.declareCommand)({
|
|
name: "press",
|
|
description: "Press a key on the keyboard",
|
|
args: import_mcpBundle.z.object({
|
|
key: import_mcpBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`")
|
|
}),
|
|
toolName: "browser_press_key",
|
|
toolParams: ({ key }) => ({ key })
|
|
});
|
|
const resize = (0, import_command.declareCommand)({
|
|
name: "resize",
|
|
description: "Resize the browser window",
|
|
args: import_mcpBundle.z.object({
|
|
width: import_mcpBundle.z.number().describe("Width of the browser window"),
|
|
height: import_mcpBundle.z.number().describe("Height of the browser window")
|
|
}),
|
|
toolName: "browser_resize",
|
|
toolParams: ({ width, height }) => ({ width, height })
|
|
});
|
|
const runCode = (0, import_command.declareCommand)({
|
|
name: "run-code",
|
|
description: "Run Playwright code snippet",
|
|
args: import_mcpBundle.z.object({
|
|
code: import_mcpBundle.z.string().describe("A JavaScript function containing Playwright code to execute. It will be invoked with a single argument, page, which you can use for any page interaction.")
|
|
}),
|
|
toolName: "browser_run_code",
|
|
toolParams: ({ code }) => ({ code })
|
|
});
|
|
const selectOption = (0, import_command.declareCommand)({
|
|
name: "select-option",
|
|
description: "Select an option in a dropdown",
|
|
args: import_mcpBundle.z.object({
|
|
ref: import_mcpBundle.z.string().describe("Exact target element reference from the page snapshot"),
|
|
values: import_mcpBundle.z.array(import_mcpBundle.z.string()).describe("Array of values to select in the dropdown. This can be a single value or multiple values.")
|
|
}),
|
|
toolName: "browser_select_option",
|
|
toolParams: ({ ref, values }) => ({ ref, values })
|
|
});
|
|
const snapshot = (0, import_command.declareCommand)({
|
|
name: "snapshot",
|
|
description: "Capture accessibility snapshot of the current page, this is better than screenshot",
|
|
args: import_mcpBundle.z.object({}),
|
|
options: import_mcpBundle.z.object({
|
|
filename: import_mcpBundle.z.string().optional().describe("Save snapshot to markdown file instead of returning it in the response.")
|
|
}),
|
|
toolName: "browser_snapshot",
|
|
toolParams: (_, { filename }) => ({ filename })
|
|
});
|
|
const screenshot = (0, import_command.declareCommand)({
|
|
name: "screenshot",
|
|
description: "Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.",
|
|
args: import_mcpBundle.z.object({
|
|
ref: import_mcpBundle.z.string().optional().describe("Exact target element reference from the page snapshot.")
|
|
}),
|
|
options: import_mcpBundle.z.object({
|
|
filename: import_mcpBundle.z.string().optional().describe("File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified."),
|
|
fullPage: import_mcpBundle.z.boolean().optional().describe("When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport.")
|
|
}),
|
|
toolName: "browser_take_screenshot",
|
|
toolParams: ({ ref }, { filename, fullPage }) => ({ filename, ref, fullPage })
|
|
});
|
|
const type = (0, import_command.declareCommand)({
|
|
name: "type",
|
|
description: "Type text into editable element",
|
|
args: import_mcpBundle.z.object({
|
|
text: import_mcpBundle.z.string().describe("Text to type into the element")
|
|
}),
|
|
options: import_mcpBundle.z.object({
|
|
submit: import_mcpBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)")
|
|
}),
|
|
toolName: "browser_press_sequentially",
|
|
toolParams: ({ text }, { submit }) => ({ text, submit })
|
|
});
|
|
const waitFor = (0, import_command.declareCommand)({
|
|
name: "wait-for",
|
|
description: "Wait for text to appear or disappear or a specified time to pass",
|
|
args: import_mcpBundle.z.object({}),
|
|
options: import_mcpBundle.z.object({
|
|
time: import_mcpBundle.z.number().optional().describe("The time to wait in seconds"),
|
|
text: import_mcpBundle.z.string().optional().describe("The text to wait for"),
|
|
textGone: import_mcpBundle.z.string().optional().describe("The text to wait for to disappear")
|
|
}),
|
|
toolName: "browser_wait_for",
|
|
toolParams: (_, { time, text, textGone }) => ({ time, text, textGone })
|
|
});
|
|
const tab = (0, import_command.declareCommand)({
|
|
name: "tab",
|
|
description: "Close a browser tab",
|
|
args: import_mcpBundle.z.object({
|
|
action: import_mcpBundle.z.string().describe(`Action to perform on tabs, 'list' | 'new' | 'close' | 'select'`),
|
|
index: import_mcpBundle.z.number().optional().describe("Tab index. If omitted, current tab is closed.")
|
|
}),
|
|
toolName: "browser_tabs",
|
|
toolParams: ({ action, index }) => ({ action, index })
|
|
});
|
|
const mouseClickXy = (0, import_command.declareCommand)({
|
|
name: "mouse-click-xy",
|
|
description: "Click left mouse button at a given position",
|
|
args: import_mcpBundle.z.object({
|
|
x: import_mcpBundle.z.number().describe("X coordinate"),
|
|
y: import_mcpBundle.z.number().describe("Y coordinate")
|
|
}),
|
|
toolName: "browser_mouse_click_xy",
|
|
toolParams: ({ x, y }) => ({ x, y })
|
|
});
|
|
const mouseDragXy = (0, import_command.declareCommand)({
|
|
name: "mouse-drag-xy",
|
|
description: "Drag left mouse button to a given position",
|
|
args: import_mcpBundle.z.object({
|
|
startX: import_mcpBundle.z.number().describe("Start X coordinate"),
|
|
startY: import_mcpBundle.z.number().describe("Start Y coordinate"),
|
|
endX: import_mcpBundle.z.number().describe("End X coordinate"),
|
|
endY: import_mcpBundle.z.number().describe("End Y coordinate")
|
|
}),
|
|
toolName: "browser_mouse_drag_xy",
|
|
toolParams: ({ startX, startY, endX, endY }) => ({ startX, startY, endX, endY })
|
|
});
|
|
const mouseMoveXy = (0, import_command.declareCommand)({
|
|
name: "mouse-move-xy",
|
|
description: "Move mouse to a given position",
|
|
args: import_mcpBundle.z.object({
|
|
x: import_mcpBundle.z.number().describe("X coordinate"),
|
|
y: import_mcpBundle.z.number().describe("Y coordinate")
|
|
}),
|
|
toolName: "browser_mouse_move_xy",
|
|
toolParams: ({ x, y }) => ({ x, y })
|
|
});
|
|
const pdfSave = (0, import_command.declareCommand)({
|
|
name: "pdf-save",
|
|
description: "Save page as PDF",
|
|
args: import_mcpBundle.z.object({}),
|
|
options: import_mcpBundle.z.object({
|
|
filename: import_mcpBundle.z.string().optional().describe("File name to save the pdf to. Defaults to `page-{timestamp}.pdf` if not specified.")
|
|
}),
|
|
toolName: "browser_pdf_save",
|
|
toolParams: (_, { filename }) => ({ filename })
|
|
});
|
|
const startTracing = (0, import_command.declareCommand)({
|
|
name: "start-tracing",
|
|
description: "Start trace recording",
|
|
args: import_mcpBundle.z.object({}),
|
|
toolName: "browser_start_tracing",
|
|
toolParams: () => ({})
|
|
});
|
|
const stopTracing = (0, import_command.declareCommand)({
|
|
name: "stop-tracing",
|
|
description: "Stop trace recording",
|
|
args: import_mcpBundle.z.object({}),
|
|
toolName: "browser_stop_tracing",
|
|
toolParams: () => ({})
|
|
});
|
|
const commandsArray = [
|
|
click,
|
|
close,
|
|
doubleClick,
|
|
consoleMessages,
|
|
drag,
|
|
evaluate,
|
|
fileUpload,
|
|
handleDialog,
|
|
hover,
|
|
open,
|
|
navigateBack,
|
|
networkRequests,
|
|
pressKey,
|
|
resize,
|
|
runCode,
|
|
selectOption,
|
|
snapshot,
|
|
screenshot,
|
|
type,
|
|
waitFor,
|
|
tab,
|
|
mouseClickXy,
|
|
mouseDragXy,
|
|
mouseMoveXy,
|
|
pdfSave,
|
|
startTracing,
|
|
stopTracing
|
|
];
|
|
const commands = Object.fromEntries(commandsArray.map((cmd) => [cmd.name, cmd]));
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
commands
|
|
});
|