"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 keyboard_exports = {}; __export(keyboard_exports, { default: () => keyboard_default }); module.exports = __toCommonJS(keyboard_exports); var import_zodBundle = require("../../zodBundle"); var import_tool = require("./tool"); var import_snapshot = require("./snapshot"); const press = (0, import_tool.defineTabTool)({ capability: "core-input", schema: { name: "browser_press_key", title: "Press a key", description: "Press a key on the keyboard", inputSchema: import_zodBundle.z.object({ key: import_zodBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`") }), type: "input" }, handle: async (tab, params, response) => { response.addCode(`// Press ${params.key}`); response.addCode(`await page.keyboard.press('${params.key}');`); if (params.key === "Enter") { response.setIncludeSnapshot(); await tab.waitForCompletion(async () => { await tab.page.keyboard.press("Enter"); }); } else { await tab.page.keyboard.press(params.key); } } }); const pressSequentially = (0, import_tool.defineTabTool)({ capability: "core-input", skillOnly: true, schema: { name: "browser_press_sequentially", title: "Type text key by key", description: "Type text key by key on the keyboard", inputSchema: import_zodBundle.z.object({ text: import_zodBundle.z.string().describe("Text to type"), submit: import_zodBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)") }), type: "input" }, handle: async (tab, params, response) => { response.addCode(`// Press ${params.text}`); response.addCode(`await page.keyboard.type('${params.text}');`); await tab.page.keyboard.type(params.text); if (params.submit) { response.addCode(`await page.keyboard.press('Enter');`); response.setIncludeSnapshot(); await tab.waitForCompletion(async () => { await tab.page.keyboard.press("Enter"); }); } } }); const typeSchema = import_snapshot.elementSchema.extend({ text: import_zodBundle.z.string().describe("Text to type into the element"), submit: import_zodBundle.z.boolean().optional().describe("Whether to submit entered text (press Enter after)"), slowly: import_zodBundle.z.boolean().optional().describe("Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once.") }); const type = (0, import_tool.defineTabTool)({ capability: "core-input", schema: { name: "browser_type", title: "Type text", description: "Type text into editable element", inputSchema: typeSchema, type: "input" }, handle: async (tab, params, response) => { const { locator, resolved } = await tab.refLocator(params); const secret = tab.context.lookupSecret(params.text); const action = async () => { if (params.slowly) { response.setIncludeSnapshot(); response.addCode(`await page.${resolved}.pressSequentially(${secret.code});`); await locator.pressSequentially(secret.value, tab.actionTimeoutOptions); } else { response.addCode(`await page.${resolved}.fill(${secret.code});`); await locator.fill(secret.value, tab.actionTimeoutOptions); } if (params.submit) { response.setIncludeSnapshot(); response.addCode(`await page.${resolved}.press('Enter');`); await locator.press("Enter", tab.actionTimeoutOptions); } }; if (params.submit || params.slowly) await tab.waitForCompletion(action); else await action(); } }); const keydown = (0, import_tool.defineTabTool)({ capability: "core-input", skillOnly: true, schema: { name: "browser_keydown", title: "Press a key down", description: "Press a key down on the keyboard", inputSchema: import_zodBundle.z.object({ key: import_zodBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`") }), type: "input" }, handle: async (tab, params, response) => { response.addCode(`await page.keyboard.down('${params.key}');`); await tab.page.keyboard.down(params.key); } }); const keyup = (0, import_tool.defineTabTool)({ capability: "core-input", skillOnly: true, schema: { name: "browser_keyup", title: "Press a key up", description: "Press a key up on the keyboard", inputSchema: import_zodBundle.z.object({ key: import_zodBundle.z.string().describe("Name of the key to press or a character to generate, such as `ArrowLeft` or `a`") }), type: "input" }, handle: async (tab, params, response) => { response.addCode(`await page.keyboard.up('${params.key}');`); await tab.page.keyboard.up(params.key); } }); var keyboard_default = [ press, type, pressSequentially, keydown, keyup ];