eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.31 kB
JavaScript
import{ActivityObserverKey,ActivityPendingBlockersKey,ActivityRootTurnIdKey}from"#context/keys.js";import{activityRequestIdsForRootTurn,activityRootTurnIdForInputResponses}from"#harness/pending-input-batches.js";function updateActivityRootForDelivery(e){if(!e.ctx.has(ActivityObserverKey))return;if(e.taskRootTurnId!==void 0){e.ctx.set(ActivityRootTurnIdKey,e.taskRootTurnId);return}let t=e.delivery;if(t===void 0)return;if(t.payloads.some(e=>e.message!==void 0)&&t.taskDeliveryId===void 0){e.ctx.set(ActivityRootTurnIdKey,e.activeTurnId),e.ctx.delete(ActivityPendingBlockersKey);return}let n=new Set(t.payloads.flatMap(e=>(e.inputResponses??[]).map(e=>e.requestId)));if(n.size===0)return;let r=activityRootTurnIdForInputResponses(e.sessionState,n)??e.ctx.get(ActivityRootTurnIdKey)??e.activeTurnId;e.ctx.set(ActivityRootTurnIdKey,r),e.ctx.set(ActivityPendingBlockersKey,activityRequestIdsForRootTurn(e.sessionState,r))}function restoreAuthorizationActivity(e){let t=e.matches.map(e=>e.result.attemptId??e.candidateId??e.result.name),n=t.map(t=>e.pending.activityRootTurnIds?.[t]).find(Boolean);return n!==void 0&&(e.ctx.set(ActivityRootTurnIdKey,n),e.ctx.set(ActivityPendingBlockersKey,Object.entries(e.pending.activityRootTurnIds??{}).flatMap(([e,t])=>t===n?[e]:[]))),clearActivityBlockers(e.ctx,t),t}function updateActivityBlockers(e,t){e.has(ActivityObserverKey)&&(t.type===`input.requested`?addActivityBlockers(e,t.data.requests.map(e=>e.requestId)):t.type===`input.resolved`?clearActivityBlockers(e,t.data.resolutions.map(e=>e.requestId)):t.type===`authorization.required`?addActivityBlockers(e,[authorizationBlockerId(t)]):t.type===`authorization.completed`&&clearActivityBlockers(e,[authorizationBlockerId(t)]))}function clearActivityBlockers(e,t){let n=new Set(t),r=(e.get(ActivityPendingBlockersKey)??[]).filter(e=>!n.has(e));r.length===0?e.delete(ActivityPendingBlockersKey):e.set(ActivityPendingBlockersKey,r)}function addActivityBlockers(e,t){e.set(ActivityPendingBlockersKey,[...new Set([...e.get(ActivityPendingBlockersKey)??[],...t])])}function authorizationBlockerId(e){return e.data.attemptId??e.data.candidateId??`${e.data.turnId}:${String(e.data.stepIndex)}:${e.data.name}`}export{clearActivityBlockers,restoreAuthorizationActivity,updateActivityBlockers,updateActivityRootForDelivery};