"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 tracing_exports = {};
__export(tracing_exports, {
  default: () => tracing_default
});
module.exports = __toCommonJS(tracing_exports);
var import_zodBundle = require("../../zodBundle");
var import_tool = require("./tool");
const tracingStart = (0, import_tool.defineTool)({
  capability: "devtools",
  schema: {
    name: "browser_start_tracing",
    title: "Start tracing",
    description: "Start trace recording",
    inputSchema: import_zodBundle.z.object({}),
    type: "readOnly"
  },
  handle: async (context, params, response) => {
    const browserContext = await context.ensureBrowserContext();
    const tracesDir = await context.outputFile({ prefix: "", suggestedFilename: `traces`, ext: "" }, { origin: "code" });
    const name = "trace-" + Date.now();
    await browserContext.tracing.start({
      name,
      screenshots: true,
      snapshots: true,
      live: true
    });
    response.addTextResult(`Trace recording started`);
    response.addFileLink("Action log", `${tracesDir}/${name}.trace`);
    response.addFileLink("Network log", `${tracesDir}/${name}.network`);
    response.addFileLink("Resources", `${tracesDir}/resources`);
    browserContext.tracing[traceLegendSymbol] = { tracesDir, name };
  }
});
const tracingStop = (0, import_tool.defineTool)({
  capability: "devtools",
  schema: {
    name: "browser_stop_tracing",
    title: "Stop tracing",
    description: "Stop trace recording",
    inputSchema: import_zodBundle.z.object({}),
    type: "readOnly"
  },
  handle: async (context, params, response) => {
    const browserContext = await context.ensureBrowserContext();
    await browserContext.tracing.stop();
    const traceLegend = browserContext.tracing[traceLegendSymbol];
    if (!traceLegend)
      throw new Error("Tracing is not started");
    delete browserContext.tracing[traceLegendSymbol];
    response.addTextResult(`Trace recording stopped.`);
    response.addFileLink("Trace", `${traceLegend.tracesDir}/${traceLegend.name}.trace`);
    response.addFileLink("Network log", `${traceLegend.tracesDir}/${traceLegend.name}.network`);
    response.addFileLink("Resources", `${traceLegend.tracesDir}/resources`);
  }
});
var tracing_default = [
  tracingStart,
  tracingStop
];
const traceLegendSymbol = Symbol("tracesDir");
