UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

48 lines (47 loc) • 1.63 kB
const LINE_RE = /^\s*([A-Za-z][A-Za-z0-9_-]*):\s*(.*?)\s*$/; const ISO_DATE_PREFIX_RE = /^\d{4}-\d{2}-\d{2}(?:$|[T\s])/; export function isInstructionEntry(fm) { if (fm.type === "feedback") return true; const hints = readV2HeaderHints(fm.extra); return hints.pinned !== undefined || hints.triggers !== undefined || hints.appliesWhen !== undefined; } export function readV2HeaderHints(extra) { const out = {}; if (extra === undefined) return out; for (const line of extra) { const m = LINE_RE.exec(line); if (m === null) continue; const [, key, value] = m; switch (key) { case "pinned": if (out.pinned === undefined && value === "true") out.pinned = true; break; case "triggers": { if (out.triggers !== undefined) break; const items = value .split(",") .map((s) => s.trim()) .filter((s) => s !== ""); if (items.length > 0) out.triggers = items; break; } case "last-confirmed": if (out.lastConfirmedAt === undefined && ISO_DATE_PREFIX_RE.test(value)) out.lastConfirmedAt = value; break; case "applies-when": if (out.appliesWhen === undefined && value !== "") out.appliesWhen = value; break; default: break; } } return out; }