UNPKG

donobu

Version:

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

81 lines (80 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateBrowserCookieReportTool = void 0; const v4_1 = require("zod/v4"); const ToolSchema_1 = require("../models/ToolSchema"); const MiscUtils_1 = require("../utils/MiscUtils"); const TargetUtils_1 = require("../utils/TargetUtils"); const Tool_1 = require("./Tool"); class CreateBrowserCookieReportTool extends Tool_1.Tool { constructor() { super(CreateBrowserCookieReportTool.NAME, 'Perform an analysis of the cookies for the current web browsing session.', ToolSchema_1.NoArgsSchema, ToolSchema_1.BaseGptArgsSchema, true, undefined, ['web']); } async call(context, _parameters) { const gptClient = context.gptClient; const cookies = (await (0, TargetUtils_1.webPage)(context).context().cookies()).map((c) => { return { ...c, expires: this.convertUnixTimeToString(c.expires), }; }); // Create a map to store cookies by name for easy lookup and to convert the // "expires" field to a string const cookieMap = new Map(); for (const cookie of cookies) { if (cookie.name) { cookieMap.set(cookie.name, cookie); } } const prompt = `${JSON.stringify(cookies, null, 2)} Above is a list of cookies for the current web browsing session. For each cookie, report on its actual or potential purpose. Do not report on any cookies that are not listed above.`; const userMessage = { type: 'user', items: [{ type: 'text', text: prompt }], }; const gptReportResponse = await gptClient.getStructuredOutput([userMessage], v4_1.z.object({ analyses: v4_1.z.array(v4_1.z.object({ cookieName: v4_1.z .string() .describe('The cookie that has been analyzed'), analysis: v4_1.z .string() .describe('The analysis for the cookie, including its actual or perceived intended purpose'), })), })); MiscUtils_1.MiscUtils.updateTokenCounts(gptReportResponse, context.metadata); const filteredCookieAnalyses = { cookies: [], }; for (const analysis of gptReportResponse.output.analyses) { const originalCookie = cookieMap.get(analysis.cookieName); if (originalCookie) { filteredCookieAnalyses.cookies.push({ ...originalCookie, analysis: analysis.analysis, }); } } return { isSuccessful: true, forLlm: JSON.stringify(filteredCookieAnalyses, null, 2), metadata: filteredCookieAnalyses, }; } async callFromGpt(context, _parameters) { return this.call(context, {}); } convertUnixTimeToString(unixTime) { if (unixTime < 0) { return 'session'; } const unixTimeMillis = Math.round(unixTime * 1000); const date = new Date(unixTimeMillis); return date.toUTCString(); } } exports.CreateBrowserCookieReportTool = CreateBrowserCookieReportTool; CreateBrowserCookieReportTool.NAME = 'createBrowserCookieReport'; //# sourceMappingURL=CreateBrowserCookieReportTool.js.map