chore: extract page snapshot, prep for multipage (#120)

This commit is contained in:
Pavel Feldman 2025-04-02 11:42:39 -07:00 committed by GitHub
parent 23f392dd91
commit 89627fd23a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 194 additions and 114 deletions

View file

@ -17,8 +17,6 @@
import { z } from 'zod';
import { zodToJsonSchema } from 'zod-to-json-schema';
import { runAndWait } from './utils';
import type { Tool } from './tool';
export const screenshot: Tool = {
@ -76,11 +74,13 @@ export const click: Tool = {
},
handle: async (context, params) => {
return await runAndWait(context, 'Clicked mouse', async page => {
return await context.runAndWait(async page => {
const validatedParams = clickSchema.parse(params);
await page.mouse.move(validatedParams.x, validatedParams.y);
await page.mouse.down();
await page.mouse.up();
}, {
status: 'Clicked mouse',
});
},
};
@ -101,11 +101,13 @@ export const drag: Tool = {
handle: async (context, params) => {
const validatedParams = dragSchema.parse(params);
return await runAndWait(context, `Dragged mouse from (${validatedParams.startX}, ${validatedParams.startY}) to (${validatedParams.endX}, ${validatedParams.endY})`, async page => {
return await context.runAndWait(async page => {
await page.mouse.move(validatedParams.startX, validatedParams.startY);
await page.mouse.down();
await page.mouse.move(validatedParams.endX, validatedParams.endY);
await page.mouse.up();
}, {
status: `Dragged mouse from (${validatedParams.startX}, ${validatedParams.startY}) to (${validatedParams.endX}, ${validatedParams.endY})`,
});
},
};
@ -124,10 +126,12 @@ export const type: Tool = {
handle: async (context, params) => {
const validatedParams = typeSchema.parse(params);
return await runAndWait(context, `Typed text "${validatedParams.text}"`, async page => {
return await context.runAndWait(async page => {
await page.keyboard.type(validatedParams.text);
if (validatedParams.submit)
await page.keyboard.press('Enter');
}, {
status: `Typed text "${validatedParams.text}"`,
});
},
};