openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
38 lines (37 loc) • 1.9 kB
JavaScript
import { h as readNonEmptyStringPreservingWhitespace } from "./string-coerce-1VuiLaaR.mjs";
import { i as stripAnsi } from "./ansi-BeFJ0Uu7.mjs";
import "./plugin-approvals-BXljsQyC.mjs";
import { d as truncateRelayText } from "./native-hook-relay-utils-CG_lxxVt.mjs";
//#region src/agents/harness/native-hook-relay-approval-presentation.ts
function formatNativeHookRelayApprovalPresentation(request) {
return formatHarnessApprovalPresentation({
title: "Codex permission request",
description: formatPermissionApprovalDescription(request)
});
}
function formatPermissionApprovalDescription(request) {
return [
`Tool: ${sanitizeApprovalText(request.toolName)}`,
request.cwd ? `Cwd: ${sanitizeApprovalText(request.cwd)}` : void 0,
request.model ? `Model: ${sanitizeApprovalText(request.model)}` : void 0,
formatToolInputPreview(request.toolInput)
].filter((line) => Boolean(line)).join("\n");
}
function formatToolInputPreview(toolInput) {
const command = readNonEmptyStringPreservingWhitespace(toolInput.command);
if (command) return `Command: ${truncateRelayText(sanitizeApprovalText(command), 240)}`;
const keys = Object.keys(toolInput).map(sanitizeApprovalText).filter(Boolean).toSorted();
if (!keys.length) return;
return `Input keys: ${keys.slice(0, 12).join(", ")}${keys.length > 12 ? ` (${keys.length - 12} omitted)` : ""}`;
}
function sanitizeApprovalText(value) {
return stripAnsi(value).replace(/[\p{Cc}\u202a-\u202e\u2066-\u2069]/gu, " ").replace(/\s+/g, " ").trim();
}
function formatHarnessApprovalPresentation(input) {
return {
title: truncateRelayText(sanitizeApprovalText(input.title), 80),
description: truncateRelayText(input.description.split("\n").map(sanitizeApprovalText).join("\n"), 512)
};
}
//#endregion
export { formatNativeHookRelayApprovalPresentation as n, formatPermissionApprovalDescription as r, formatHarnessApprovalPresentation as t };