eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.25 kB
JavaScript
import{createLogger,formatError}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{SessionTraceSeedKey}from"#context/keys.js";import{sessionIdempotencyKey,turnIdempotencyKey}from"#instrumentation/lifecycle.js";const log=createLogger(`harness.prepare-trace-context`);async function prepareTurnTraceContext(e){let t,{channelAudience:n,channelKind:r,channelType:i,traceSeed:a,...o}=e.session;if(!e.sessionStarted&&e.instrumentation?.prepareSessionTrace!==void 0)try{t=await e.instrumentation.prepareSessionTrace({...o,channelAudience:n,channelKind:r,channelType:i,idempotencyKey:sessionIdempotencyKey(o.sessionId),traceSeed:a,type:`session.started`})}catch(e){warn(`session.started`,e)}if(e.turnId!==void 0&&e.instrumentation?.prepareTurnTrace!==void 0)try{t=await e.instrumentation.prepareTurnTrace({...o,...e.principals,idempotencyKey:turnIdempotencyKey(o.sessionId,e.turnId),sequence:e.sequence,turnId:e.turnId,type:`turn.started`})}catch(e){warn(`turn.started`,e)}return a===void 0&&t?.decision!==void 0&&contextStorage.getStore()?.set(SessionTraceSeedKey,t),e.traceContext??t}function warn(e,t){log.warn(`instrumentation trace preparation failed`,{boundary:e,error:formatError(t)})}export{prepareTurnTraceContext};