UNPKG

donobu

Version:

Create browser automations with an LLM agent and replay them as Playwright scripts.

51 lines 2.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RunSandboxedJavaScriptCodeTool = exports.RunSandboxedJavaScriptCodeGptSchema = exports.RunSandboxedJavaScriptCodeCoreSchema = void 0; const playwright_1 = require("playwright"); const v4_1 = require("zod/v4"); const ToolSchema_1 = require("../models/ToolSchema"); const Tool_1 = require("./Tool"); exports.RunSandboxedJavaScriptCodeCoreSchema = v4_1.z.object({ javaScriptCode: v4_1.z.string().describe('The JavaScript code to run.'), }); exports.RunSandboxedJavaScriptCodeGptSchema = v4_1.z.object({ ...ToolSchema_1.BaseGptArgsSchema.shape, ...exports.RunSandboxedJavaScriptCodeCoreSchema.shape, }); class RunSandboxedJavaScriptCodeTool extends Tool_1.Tool { constructor() { super(RunSandboxedJavaScriptCodeTool.NAME, `Run arbitrary JavaScript code in a sandboxed environment. The current webpage's DOM is *not* available. The JS code must be of the form: \`\`\` () => { // ...some code... return ...some result... } \`\`\``, exports.RunSandboxedJavaScriptCodeCoreSchema, exports.RunSandboxedJavaScriptCodeGptSchema, false, undefined, ['web']); } async call(_context, parameters) { const sandBoxedBrowser = await playwright_1.chromium.launch({ headless: true, chromiumSandbox: true, }); const sandBoxedPage = await sandBoxedBrowser.newPage(); try { const result = await sandBoxedPage.evaluate(parameters.javaScriptCode); return { isSuccessful: true, forLlm: '' + JSON.stringify(result), metadata: null, }; } finally { await sandBoxedPage.close(); await sandBoxedBrowser.close(); } } async callFromGpt(context, parameters) { return this.call(context, parameters); } } exports.RunSandboxedJavaScriptCodeTool = RunSandboxedJavaScriptCodeTool; RunSandboxedJavaScriptCodeTool.NAME = 'runSandboxedJavaScriptCode'; //# sourceMappingURL=RunSandboxedJavaScriptCodeTool.js.map