eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.35 kB
JavaScript
import{createLogger}from"#internal/logging.js";import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createActionsRequestedEvent}from"#protocol/message.js";import{createRuntimeActionRequestFromToolCall}from"#harness/runtime-actions.js";import{createRuntimeToolResultFromValue}from"#harness/action-result-helpers.js";const log=createLogger(`harness.workflow-lifecycle`);function createWorkflowLifecycle(e){return{onHookError(e,t){log.warn(`workflow lifecycle hook failed`,{error:e,hook:t.hook})},async onNestedToolCall(t){if(e.skipReplayed===!0&&t.replayed)return;let n={input:t.input,toolCallId:t.toolCallId,toolName:t.toolName,type:`tool-call`};await e.emit(createActionsRequestedEvent({actions:[createRuntimeActionRequestFromToolCall({toolCall:n,tools:e.tools})],sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}))},async onNestedToolResult(r){if(e.skipReplayed===!0&&r.replayed||r.status===`interrupted`)return;let i=createRuntimeToolResultFromValue({callId:r.toolCallId,output:r.status===`rejected`?toErrorMessage(r.error):r.output,toolName:r.toolName,isError:r.status===`rejected`});await e.emit(createActionResultEvent({result:i,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}))}}}export{createWorkflowLifecycle};