UNPKG

eve

Version:

Filesystem-first framework for durable backend AI agents that run anywhere.

1 lines 2.43 kB
import{normalizeChannelAudience}from"#shared/channel-audience.js";import{ConversationIdKey}from"#context/keys.js";import{readConversationId}from"#tracing/conversation-context.js";import{applyLiveDeliveryAudienceCeiling,readForwardedTraceAssertion}from"#shared/forwarded-trace-policy.js";import{getWorkflowToolRuns}from"#harness/workflow-tool-runs.js";import{readActionTraceContext,readTaskActionTrace,readTurnTraceContext,recordActionInvocationKind,recordNestedAgentInvocation}from"#tracing/agent-trace-context-store.js";import{invocationError,recordNestedAgentInvocationTerminal}from"#tracing/agent-invocation-terminal.js";import{deriveAgentActionSpanId}from"#tracing/agent-span-id-generator.js";function prepareAgentInvocationTrace(e){let t=readConversationId(e.serializedContext[ConversationIdKey.name]),n=e.taskId===void 0?void 0:readTaskActionTrace(e.serializedContext,e.sessionId,e.taskId),r=e.taskId===void 0?getWorkflowToolRuns(e.sessionState).find(t=>t.runId===e.ownerId)?.callId:n?.callId,i=n?.turnId??e.turnId,a=readTurnTraceContext(e.serializedContext,e.sessionId,i),o=normalizeChannelAudience(e.channelMetadata?.metadata.audience),s=(r===void 0?void 0:readActionTraceContext(e.serializedContext,e.sessionId,i,r))??a,c=s?.decision===void 0?void 0:applyLiveDeliveryAudienceCeiling(s.decision,o,s.forwardedTracePolicy),l=r===void 0?e.serializedContext:r===e.invocation.callId?recordActionInvocationKind({callId:e.invocation.callId,kind:e.invocation.kind,serializedContext:e.serializedContext,sessionId:e.sessionId,turnId:i}):recordNestedAgentInvocation({callId:e.invocation.callId,kind:e.invocation.kind,name:e.invocation.name,outerCallId:r,recordOutputs:c?.action===`record`&&c.recordOutputs,serializedContext:e.serializedContext,sessionId:e.sessionId,spanId:deriveAgentActionSpanId(e.sessionId,i,e.invocation.callId),startTimeMs:e.startTimeMs,turnId:i}),u=readActionTraceContext(l,e.sessionId,i,e.invocation.callId)??s,d=readForwardedTraceAssertion(u?.forwardedTracePolicy),f=u?.decision===void 0?u:{...u,decision:applyLiveDeliveryAudienceCeiling(u.decision,o,d)};return{dispatch:{conversationId:t,originAudience:d?.originAudience??o,parentTraceContext:f},fail:t=>recordNestedAgentInvocationTerminal({callId:e.invocation.callId,serializedContext:l,sessionId:e.sessionId,terminal:{acceptedAtMs:Date.now(),error:invocationError(t.output),outcome:`failed`},turnId:i}),serializedContext:l}}export{prepareAgentInvocationTrace};