UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

74 lines (73 loc) • 2.38 kB
const CODE_BODY_OPERANDS = new Map([ ["trap", trapAction], ["alias", aliasValues], ["mapfile", callbacksOf(new Set(["d", "u", "n", "O", "C", "c", "s"]))], ["readarray", callbacksOf(new Set(["d", "u", "n", "O", "C", "c", "s"]))], ["compgen", callbacksOf(new Set(["o", "A", "G", "W", "P", "S", "X", "F", "C", "V"]))], ]); export function codeBodies(basename, args) { return CODE_BODY_OPERANDS.get(basename)?.(args) ?? []; } function trapAction(args) { let k = 0; for (; k < args.length; k++) { const a = args[k]; if (a === "--") { k++; break; } if (!a.startsWith("-") || a === "-") break; } const action = args[k]; return action === undefined || action === "" || action === "-" ? [] : [action]; } function aliasValues(args) { const values = []; for (const a of args) { const eq = a.indexOf("="); if (eq > 0) values.push(a.slice(eq + 1)); } return values; } function callbacksOf(valueLetters) { return (args) => { const callbacks = []; for (let k = 0; k < args.length; k++) { const a = args[k]; if (a === "--" || !a.startsWith("-") || a === "-") break; for (let i = 1; i < a.length; i++) { if (!valueLetters.has(a[i])) continue; const value = i + 1 < a.length ? a.slice(i + 1) : args[++k]; if (a[i] === "C" && value !== undefined) callbacks.push(value); break; } } return callbacks; }; } export function reentryText(basename, args) { if (basename === "eval") return args.length === 0 ? undefined : args.join(" "); if (basename === "parallel") return args.filter((a) => !a.startsWith("-")).join(" ") || undefined; if (basename === "source" || basename === ".") return undefined; for (let k = 0; k < args.length; k++) { const a = args[k]; if (a === "--") return undefined; if (!a.startsWith("-") || a === "-") return undefined; const c = a.indexOf("c"); if (a.startsWith("--")) continue; if (c > 0) return a.length > c + 1 ? a.slice(c + 1) : args[k + 1]; } return undefined; }