UNPKG

eve

Version:

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

1 lines • 2.81 kB
import{ConversationContextKey,UNKNOWN_CONVERSATION_CONTEXT}from"#shared/conversation-context.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;if(t===void 0)continue;let i=e.ctx.get(ConversationContextKey)??UNKNOWN_CONVERSATION_CONTEXT;await(e.hooks.forTrace?.({agentName:t,...i,audience:r.delivery.channelAudience??i.audience})??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=[...e.ctx.get(ActiveChannelDeliveriesKey)??[]],n=e.ctx.get(ConversationContextKey)??UNKNOWN_CONVERSATION_CONTEXT,r=n.audience,i=e.hooks.forTrace?.({agentName:e.policyAgentName,...n})??e.hooks;for(let n of e.delivery.deliveryMetadata){let a=e.delivery.payloads[n.payloadIndex],o={channelAudience:r,channelKind:n.channelKind,channelName:n.channelName,deliveryId:n.deliveryId,requestId:n.requestId,requestTraceContext:n.requestTraceContext},s=!(i.capturesInputs??i.capturesContent)||a===void 0?void 0:projectDeliveryInput(a),c={agentName:e.agentName,channelType:e.ctx.get(ChannelInstrumentationKey)?.channelType,delivery:o,policyAgentName:e.policyAgentName,rootSessionId:e.rootSessionId,sequence:e.sequence,sessionId:e.sessionId,turnId:e.turnId};t.some(e=>e.sessionId===c.sessionId&&e.delivery.deliveryId===c.delivery.deliveryId)||(t.push(c),await i?.publish({agentName:c.agentName,delivery:o,idempotencyKey:channelDeliveryIdempotencyKey(e.sessionId,o.deliveryId),input:s,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};