eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 4.37 kB
JavaScript
import{normalizePresentationText}from"#shared/presentation-text.js";import{deriveChildActivityWorkId}from"#execution/activity-work-id.js";function projectActivityEvents(e){let{event:t,lineage:n}=e;if(t.type===`actions.requested`)return t.data.actions.flatMap(r=>{if(r.kind===`subagent-call`||r.kind===`remote-agent-call`)return[];let i=r.kind===`load-skill`?`skill`:`tool`,a=r.kind===`load-skill`?`load_skill`:r.toolName,o=normalizePresentationText(a)||(i===`skill`?`Skill`:`Tool`),s=actionId(n.id,r.callId),c=activityLabel(t.data.presentation?.[r.callId]?.label);return[{action:{id:s,kind:i,name:o,parentWorkId:n.id,rootTurnId:n.rootTurnId,stepIndex:t.data.stepIndex},eventId:`${s}:started`,kind:`action.started`,startedAt:e.at},...c===void 0?[]:[{actionId:s,eventId:`${s}:label`,kind:`action.label.updated`,label:c}]]});if(t.type===`action.partial`){let r=actionId(n.id,t.data.result.callId),i=activityLabel(t.data.presentation?.[t.data.result.callId]?.label);return i===void 0?[]:[{actionId:r,eventId:`${r}:update:${e.eventId??e.at}`,kind:`action.label.updated`,label:i}]}if(t.type===`action.result`){let r=t.data.result;if(r.kind===`subagent-result`){if(`backgroundTask`in r&&r.backgroundTask!==void 0)return[];let t=deriveChildActivityWorkId({callId:r.callId,parentSessionId:n.sessionId??n.rootSessionId,parentTurnId:n.turnId??n.rootTurnId}),i=r.origin===`dispatch`?`failed`:r.outcome.result.kind===`succeeded`?`completed`:r.outcome.result.kind===`cancelled`?`cancelled`:`failed`;return[{eventId:`${t}:settled:${i}`,kind:`work.settled`,outcome:i,settledAt:e.at,workId:t}]}let i=actionId(n.id,r.callId),a=activityLabel(t.data.presentation?.[r.callId]?.label);return[...a===void 0?[]:[{actionId:i,eventId:`${i}:result:${e.eventId??e.at}`,kind:`action.label.updated`,label:a}],{actionId:i,eventId:`${i}:settled:${t.data.status}`,kind:`action.settled`,outcome:t.data.status,settledAt:e.at}]}if(t.type===`authorization.required`){let r=blockerId(`authorization`,n.id,t.data.attemptId??t.data.candidateId??`${t.data.turnId}:${String(t.data.stepIndex)}:${t.data.name}`);return[{blocker:{id:r,kind:`authorization`,label:activityLabel(t.data.authorization?.displayName??t.data.name),parentWorkId:n.id,rootTurnId:n.rootTurnId},eventId:`${r}:started`,kind:`blocker.started`,startedAt:e.at}]}if(t.type===`authorization.completed`){let r=blockerId(`authorization`,n.id,t.data.attemptId??t.data.candidateId??`${t.data.turnId}:${String(t.data.stepIndex)}:${t.data.name}`),i=t.data.outcome===`authorized`?`completed`:t.data.outcome===`failed`?`failed`:`cancelled`;return[{blockerId:r,eventId:`${r}:settled:${i}`,kind:`blocker.settled`,outcome:i,settledAt:e.at}]}if(t.type===`approval.candidate`&&t.data.outcome===`pending`){let r=blockerId(`approval`,n.id,t.data.requestId);return[{blocker:{id:r,kind:`approval`,parentWorkId:n.id,rootTurnId:n.rootTurnId},eventId:`${r}:started`,kind:`blocker.started`,startedAt:e.at}]}if(t.type===`approval.settled`){let r=blockerId(`approval`,n.id,t.data.requestId),i=t.data.outcome===`approved`?`completed`:`cancelled`;return[{blockerId:r,eventId:`${r}:settled:${i}`,kind:`blocker.settled`,outcome:i,settledAt:e.at}]}if(t.type===`input.requested`)return t.data.requests.map(t=>{let r=t.kind===`tool-approval`?`approval`:`input`,i=blockerId(r,n.id,t.requestId);return{blocker:{id:i,kind:r,label:activityLabel(t.prompt),parentActionId:actionId(n.id,t.action.callId),parentWorkId:n.id,rootTurnId:n.rootTurnId},eventId:`${i}:started`,kind:`blocker.started`,startedAt:e.at}});if(t.type===`input.resolved`)return t.data.resolutions.map(t=>{let r=blockerId(t.kind===`tool-approval`?`approval`:`input`,n.id,t.requestId),i=t.outcome===`answered`||t.outcome===`approved`?`completed`:t.outcome===`invalid`?`failed`:`cancelled`;return{blockerId:r,eventId:`${r}:settled:${i}`,kind:`blocker.settled`,outcome:i,settledAt:e.at}});if(n.kind===`root-turn`&&(t.type===`turn.completed`||t.type===`turn.failed`||t.type===`turn.cancelled`)){let r=t.type===`turn.completed`?`completed`:t.type===`turn.failed`?`failed`:`cancelled`;return[{eventId:`${n.id}:settled:${r}`,kind:`work.settled`,outcome:r,settledAt:e.at,workId:n.id}]}return[]}function activityLabel(e){if(e===void 0)return;let t=normalizePresentationText(e);return t===``?void 0:t}function actionId(e,t){return`action:${e}:${t}`}function blockerId(e,t,n){return`${e}:${t}:${n}`}export{projectActivityEvents};