UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

32 lines (31 loc) • 1.37 kB
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))); }