@sema-agent/core
Version:
Stateless, task-oriented AI agent core
27 lines (26 loc) • 1.21 kB
JavaScript
export function newDelegationProvenanceAggregate() {
return { version: 1, coverageStartTurn: 0, sawExternal: false, incomplete: false };
}
export function narrowContentSafety(parent, own) {
if (parent === undefined) {
return { trustedTools: new Set(own?.trustedTools ?? []), execIsExternalContent: own?.execIsExternalContent ?? false };
}
const fromParent = new Set(parent.trustedTools);
const trustedTools = own === undefined ? fromParent : new Set([...fromParent].filter((t) => own.trustedTools.has(t)));
return { trustedTools, execIsExternalContent: parent.execIsExternalContent || (own?.execIsExternalContent ?? false) };
}
export function reduceDelegationAttestation(agg, opts) {
if (agg === undefined)
return "unknown";
if (agg.sawExternal)
return "external";
if (agg.incomplete || !opts.completed || agg.version !== 1 || agg.coverageStartTurn !== 0)
return "unknown";
return "clean";
}
export function readCardAttestation(details) {
if (details === null || typeof details !== "object")
return undefined;
const v = details.attestation;
return v === "clean" || v === "external" || v === "unknown" ? v : undefined;
}