TenantAtlas/apps/platform/.pnpm-store/v10/files/0e/6a3815fddfbb2a098367c1fee86313ae4209828ed0619dea25935fed3c7cf76946fc0479af0a5880cda47758d8a165bfc8650b03215c03d9422f2bbc3ac3ce
Ahmed Darrazi 9f74f7a658
Some checks failed
PR Fast Feedback / fast-feedback (pull_request) Failing after 51s
feat: compress governance operator outcomes
2026-04-19 14:15:11 +02:00

150 lines
5.9 KiB
Plaintext

"use strict";
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
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 __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var traceSnapshot_exports = {};
__export(traceSnapshot_exports, {
traceSnapshot: () => traceSnapshot
});
module.exports = __toCommonJS(traceSnapshot_exports);
var import_browserBackend = require("../backend/browserBackend");
var import_tools = require("../backend/tools");
var playwright = __toESM(require("../../.."));
var import_utils = require("../../utils");
var import_command = require("../cli-daemon/command");
var import_minimist = require("../cli-client/minimist");
var import_commands = require("../cli-daemon/commands");
var import_traceUtils = require("./traceUtils");
async function traceSnapshot(actionId, options) {
const trace = await (0, import_traceUtils.loadTrace)();
const action = trace.resolveActionId(actionId);
if (!action) {
console.error(`Action '${actionId}' not found.`);
process.exitCode = 1;
return;
}
const pageId = action.pageId;
if (!pageId) {
console.error(`Action '${actionId}' has no associated page.`);
process.exitCode = 1;
return;
}
const callId = action.callId;
const storage = trace.loader.storage();
let snapshotName;
let renderer;
if (options.name) {
snapshotName = options.name;
renderer = storage.snapshotByName(pageId, `${snapshotName}@${callId}`);
} else {
for (const candidate of ["input", "before", "after"]) {
renderer = storage.snapshotByName(pageId, `${candidate}@${callId}`);
if (renderer) {
snapshotName = candidate;
break;
}
}
}
if (!renderer || !snapshotName) {
console.error(`No snapshot found for action '${actionId}'.`);
process.exitCode = 1;
return;
}
const snapshotKey = `${snapshotName}@${callId}`;
const server = await serveTraceSnapshot(storage, trace.loader, pageId, snapshotKey);
if (options.serve) {
console.log(`Serving snapshot at ${server.url}`);
await new Promise(() => {
});
return;
}
await runCommandOnSnapshot(server, options.browserArgs || []);
}
async function serveTraceSnapshot(storage, loader, pageId, snapshotKey) {
const { SnapshotServer } = require("../../utils/isomorphic/trace/snapshotServer");
const { HttpServer } = require("../../server/utils/httpServer");
const snapshotServer = new SnapshotServer(storage, (sha1) => loader.resourceForSha1(sha1));
const httpServer = new HttpServer();
httpServer.routePrefix("/snapshot", (request, response) => {
const url = new URL("http://localhost" + request.url);
const searchParams = url.searchParams;
searchParams.set("name", snapshotKey);
const snapshotResponse = snapshotServer.serveSnapshot(pageId, searchParams, "/snapshot");
response.statusCode = snapshotResponse.status;
snapshotResponse.headers.forEach((value, key) => response.setHeader(key, value));
snapshotResponse.text().then((text) => response.end(text));
return true;
});
httpServer.routePrefix("/", (_request, response) => {
response.statusCode = 302;
response.setHeader("Location", "/snapshot");
response.end();
return true;
});
await httpServer.start({ preferredPort: 0 });
return { url: httpServer.urlPrefix("human-readable"), stop: () => httpServer.stop() };
}
async function runCommandOnSnapshot(server, browserArgs) {
const browser = await playwright.chromium.launch({ headless: true });
const context = await browser.newContext();
const page = await context.newPage();
await page.goto(server.url);
const backend = new import_browserBackend.BrowserBackend({
snapshot: { mode: "full" },
outputMode: "file",
skillMode: true
}, context, import_tools.browserTools);
await backend.initialize({ cwd: process.cwd() });
try {
if (!browserArgs.length)
browserArgs = ["snapshot"];
const args = (0, import_minimist.minimist)(browserArgs, { string: ["_"] });
const command = import_commands.commands[args._[0]];
if (!command)
throw new Error(`Unknown command: ${args._[0]}`);
const { toolName, toolParams } = (0, import_command.parseCommand)(command, args);
const result = await backend.callTool(toolName, toolParams);
const text = result.content[0]?.type === "text" ? result.content[0].text : void 0;
if (text)
console.log(text);
if (result.isError) {
console.error("Command failed.");
process.exitCode = 1;
}
} catch (e) {
console.error(e.message);
process.exitCode = 1;
} finally {
await server.stop().catch((e) => console.error(e));
await (0, import_utils.gracefullyCloseAll)();
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
traceSnapshot
});