@sema-agent/core
Version:
Stateless, task-oriented AI agent core
41 lines (40 loc) • 1.17 kB
JavaScript
import { hasDestroy } from "../remote-env.js";
export function streamReap(input) {
const { live, runner, locallyClaimedTokens, parentConstraintRegistry, suspendedEnvReaps } = input;
const reapSuspended = async () => {
const rh = live.reapHandle;
if (!rh)
return;
const reportErr = (err) => {
try {
runner.deps.onError?.(err, { phase: "config", sessionId: rh.sessionId });
}
catch {
}
};
let won;
try {
won = await rh.store.expire(rh.token, rh.scope);
}
catch (err) {
reportErr(err);
return;
}
if (!won) {
if (!locallyClaimedTokens.has(rh.token))
suspendedEnvReaps.delete(rh.token);
return;
}
parentConstraintRegistry.delete(rh.token);
suspendedEnvReaps.delete(rh.token);
if (rh.env && hasDestroy(rh.env)) {
try {
await rh.env.destroy();
}
catch (err) {
reportErr(err);
}
}
};
return { reapSuspended };
}