UNPKG

@sema-agent/core

Version:

Stateless, task-oriented AI agent core

41 lines (40 loc) • 1.17 kB
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 }; }