eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 2.6 kB
JavaScript
import{normalizeChannelAudience}from"#shared/channel-audience.js";import{ActiveChannelDeliveriesKey,ChannelInstrumentationKey,ParentTraceContextKey,SessionTraceSeedKey}from"#context/keys.js";import{channelDeliveryIdempotencyKey}from"#instrumentation/lifecycle.js";async function instrumentChannelDelivery(e){if(!(`delivery`in e)){let t=e.ctx.get(ActiveChannelDeliveriesKey);if(t===void 0||e.hooks===void 0)return;let n=`channel.delivery.${e.outcome}`;for(let r of t){let t=r.policyAgentName??r.agentName;t!==void 0&&await(e.hooks.forTrace?.({agentName:t,audience:normalizeChannelAudience(r.delivery.channelAudience),channelType:r.channelType})??e.hooks).publish({agentName:r.agentName,delivery:r.delivery,error:e.error,errorCode:e.errorCode,idempotencyKey:channelDeliveryIdempotencyKey(r.sessionId,r.delivery.deliveryId),outcome:e.outcome,rootSessionId:r.rootSessionId,sequence:e.includeTurn?r.sequence:void 0,sessionId:r.sessionId,turnId:e.includeTurn?r.turnId:void 0,type:n})}e.ctx.delete(ActiveChannelDeliveriesKey);return}if(e.hooks===void 0||e.delivery.deliveryMetadata===void 0)return;let t=[],n=e.ctx.get(ChannelInstrumentationKey),r=normalizeChannelAudience(n?.metadata.audience),i=e.hooks.forTrace?.({agentName:e.policyAgentName,audience:r,channelType:n?.channelType})??e.hooks;for(let a of e.delivery.deliveryMetadata){let o=e.delivery.payloads[a.payloadIndex],s={channelAudience:r,channelKind:a.channelKind,channelName:a.channelName,deliveryId:a.deliveryId,requestId:a.requestId,requestTraceContext:a.requestTraceContext},c=!(i.capturesInputs??i.capturesContent)||o===void 0?void 0:projectDeliveryInput(o),l={agentName:e.agentName,channelType:n?.channelType,delivery:s,policyAgentName:e.policyAgentName,rootSessionId:e.rootSessionId,sequence:e.sequence,sessionId:e.sessionId,turnId:e.turnId};t.push(l),await i?.publish({agentName:l.agentName,delivery:s,idempotencyKey:channelDeliveryIdempotencyKey(e.sessionId,s.deliveryId),input:c,parentTraceContext:e.ctx.get(ParentTraceContextKey),rootSessionId:e.rootSessionId,sequence:e.sequence,sessionId:e.sessionId,traceSeed:e.ctx.get(SessionTraceSeedKey),turnId:e.turnId,type:`channel.delivery.started`})}t.length>0&&e.ctx.set(ActiveChannelDeliveriesKey,t)}function projectDeliveryInput(e){let t={};return e.context!==void 0&&(t.context=e.context),e.message!==void 0&&(t.message=e.message),e.outputSchema!==void 0&&(t.outputSchema=e.outputSchema),e.inputResponses!==void 0&&(t.inputResponses=e.inputResponses.map(e=>{let t={};return e.optionId!==void 0&&(t.optionId=e.optionId),e.text!==void 0&&(t.text=e.text),t})),t}export{instrumentChannelDelivery};