TenantAtlas/apps/platform/.pnpm-store/v10/files/ca/d201cac9f16b339a0833b6101b20ab66566b11071c9dd60f880806a3e5c80f2c5c63ef035e01eb7d0483d0dfc6f66fbfd010ed21fec6be867b0d1672b5c225
ahmido 1fec9c6f9d
Some checks failed
Main Confidence / confidence (push) Failing after 45s
feat: compress governance operator outcomes (#253)
## Summary
- introduce surface-aware compressed governance outcomes and reuse the shared truth/explanation seams for operator-first summaries
- apply the compressed outcome hierarchy across baseline, evidence, review, review-pack, canonical review/evidence, and artifact-oriented operation-run surfaces
- expand spec 214 fixtures and Pest coverage, and fix tenant-panel route assertions by generating explicit tenant-panel URLs in the affected Filament tests

## Validation
- `cd apps/platform && ./vendor/bin/sail bin pint --dirty --format agent`
- focused governance compression suite from `specs/214-governance-outcome-compression/quickstart.md` passed (`68` tests, `445` assertions)
- `cd apps/platform && ./vendor/bin/sail artisan test --compact tests/Feature/Filament/InventoryItemResourceTest.php tests/Feature/Filament/BackupSetUiEnforcementTest.php tests/Feature/Filament/RestoreRunUiEnforcementTest.php` passed (`18` tests, `81` assertions)

Co-authored-by: Ahmed Darrazi <ahmed.darrazi@live.de>
Reviewed-on: #253
2026-04-19 12:30:36 +00:00

154 lines
6.0 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 traceUtils_exports = {};
__export(traceUtils_exports, {
LoadedTrace: () => LoadedTrace,
actionTitle: () => actionTitle,
closeTrace: () => closeTrace,
formatTimestamp: () => formatTimestamp,
loadTrace: () => loadTrace,
openTrace: () => openTrace,
saveOutputFile: () => saveOutputFile
});
module.exports = __toCommonJS(traceUtils_exports);
var import_fs = __toESM(require("fs"));
var import_path = __toESM(require("path"));
var import_traceModel = require("../../utils/isomorphic/trace/traceModel");
var import_traceLoader = require("../../utils/isomorphic/trace/traceLoader");
var import_protocolFormatter = require("../../utils/isomorphic/protocolFormatter");
var import_traceParser = require("./traceParser");
const traceDir = import_path.default.join(".playwright-cli", "trace");
const cliOutputDir = ".playwright-cli";
class LoadedTrace {
constructor(model, loader, ordinals) {
this.model = model;
this.loader = loader;
this.ordinalToCallId = ordinals.ordinalToCallId;
this.callIdToOrdinal = ordinals.callIdToOrdinal;
}
resolveActionId(actionId) {
const ordinal = parseInt(actionId, 10);
if (!isNaN(ordinal)) {
const callId = this.ordinalToCallId.get(ordinal);
if (callId)
return this.model.actions.find((a) => a.callId === callId);
}
return this.model.actions.find((a) => a.callId === actionId);
}
}
function ensureTraceOpen() {
if (!import_fs.default.existsSync(traceDir))
throw new Error(`No trace opened. Run 'npx playwright trace open <file>' first.`);
return traceDir;
}
async function closeTrace() {
if (import_fs.default.existsSync(traceDir))
await import_fs.default.promises.rm(traceDir, { recursive: true });
}
async function openTrace(traceFile) {
const filePath = import_path.default.resolve(traceFile);
if (!import_fs.default.existsSync(filePath))
throw new Error(`Trace file not found: ${filePath}`);
await closeTrace();
await import_fs.default.promises.mkdir(traceDir, { recursive: true });
if (filePath.endsWith(".zip"))
await (0, import_traceParser.extractTrace)(filePath, traceDir);
else
await import_fs.default.promises.writeFile(import_path.default.join(traceDir, ".link"), filePath, "utf-8");
}
async function loadTrace() {
const dir = ensureTraceOpen();
const linkFile = import_path.default.join(dir, ".link");
let traceDir2;
let traceFile;
if (import_fs.default.existsSync(linkFile)) {
const tracePath = await import_fs.default.promises.readFile(linkFile, "utf-8");
traceDir2 = import_path.default.dirname(tracePath);
traceFile = import_path.default.basename(tracePath);
} else {
traceDir2 = dir;
}
const backend = new import_traceParser.DirTraceLoaderBackend(traceDir2);
const loader = new import_traceLoader.TraceLoader();
await loader.load(backend, traceFile);
const model = new import_traceModel.TraceModel(traceDir2, loader.contextEntries);
return new LoadedTrace(model, loader, buildOrdinalMap(model));
}
function formatTimestamp(ms, base) {
const relative = ms - base;
if (relative < 0)
return "0:00.000";
const totalMs = Math.floor(relative);
const minutes = Math.floor(totalMs / 6e4);
const seconds = Math.floor(totalMs % 6e4 / 1e3);
const millis = totalMs % 1e3;
return `${minutes}:${seconds.toString().padStart(2, "0")}.${millis.toString().padStart(3, "0")}`;
}
function actionTitle(action) {
return (0, import_protocolFormatter.renderTitleForCall)({ ...action, type: action.class }) || `${action.class}.${action.method}`;
}
async function saveOutputFile(fileName, content, explicitOutput) {
let outFile;
if (explicitOutput) {
outFile = explicitOutput;
} else {
await import_fs.default.promises.mkdir(cliOutputDir, { recursive: true });
outFile = import_path.default.join(cliOutputDir, fileName);
}
await import_fs.default.promises.writeFile(outFile, content);
return outFile;
}
function buildOrdinalMap(model) {
const actions = model.actions.filter((a) => a.group !== "configuration");
const { rootItem } = (0, import_traceModel.buildActionTree)(actions);
const ordinalToCallId = /* @__PURE__ */ new Map();
const callIdToOrdinal = /* @__PURE__ */ new Map();
let ordinal = 1;
const visit = (item) => {
ordinalToCallId.set(ordinal, item.action.callId);
callIdToOrdinal.set(item.action.callId, ordinal);
ordinal++;
for (const child of item.children)
visit(child);
};
for (const child of rootItem.children)
visit(child);
return { ordinalToCallId, callIdToOrdinal };
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
LoadedTrace,
actionTitle,
closeTrace,
formatTimestamp,
loadTrace,
openTrace,
saveOutputFile
});