@sema-agent/core
Version:
Stateless, task-oriented AI agent core
32 lines (31 loc) • 1.37 kB
JavaScript
const VERIFIABLE_STRUCTURE_FACES = new RegExp([
String.raw `\b(?:xxd|hexdump)\b`,
String.raw `\bod\s+-`,
String.raw `\bdd\s+if=`,
String.raw `\bopen\s*\([^()]*["']rb["']`,
String.raw `\bbase64\s+(?:-d\b|--decode\b)`,
String.raw `\b(?:readelf|objdump|binwalk)\b`,
String.raw `\bstruct\.unpack\b`,
String.raw `\b(?:binascii|unhexlify|fromhex)\b`,
String.raw `\bsha(?:1|224|256|384|512)?sum\b`,
String.raw `\b(?:md5sum|b2sum|cksum|crc32|hashlib)\b`,
String.raw `\bopenssl\s+dgst\b`,
].join("|"));
const REFERENCE_COMPARE_COMMAND = /(?<![.$-])\b(?:diff|cmp)\s/;
const REFERENCE_COMPARE_CONTEXT = new RegExp([
String.raw `\b(?:reference|expected|golden|oracle|actual)`,
String.raw `\.(?:bin|dat|png|ppm|pgm|bmp|npy|npz|wav)\b`,
].join("|"));
function stripHeredocBodies(command) {
return command.replace(/<<-?\s*(["']?)([A-Za-z_][A-Za-z0-9_]*)\1[^\n]*\n[\s\S]*?\n[ \t]*\2(?=\s|$)/g, "<<$2");
}
export function hasVerifiableStructureSignal(args) {
if (typeof args !== "object" || args === null)
return false;
const command = args.command;
if (typeof command !== "string")
return false;
const projected = stripHeredocBodies(command);
return (VERIFIABLE_STRUCTURE_FACES.test(projected) ||
(REFERENCE_COMPARE_COMMAND.test(projected) && REFERENCE_COMPARE_CONTEXT.test(projected)));
}