UNPKG

eve

Version:

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

1 lines • 2.35 kB
import{queueDeferredStepInput,removePendingInputBatches}from"#harness/pending-input-batches.js";import{buildResolvedInputBatch}from"#harness/input-request-resolution.js";import{appendResolvedBatchTranscript,compactStepInput,finishResolvedInput,responsesForBatches}from"#harness/hitl/pending-input-resolution.js";function resolveQuestionOnlyInputBatches(e){let t=findAnsweredQuestionBatches(e.batches,e.responses),n=e.batches.filter(e=>!t.includes(e)),r=responsesForBatches(e.responses,n);if(t.length===0){if(e.resolvedStepInput?.message===void 0)return{outcome:`unresolved`,messages:[...e.baseHistory],session:queueDeferredStepInput(e.session,compactStepInput(e.resolvedStepInput))};let t=e.batches.length===1?e.batches[0]:void 0;if(t===void 0){let t=r.length===0?e.session:queueDeferredStepInput(e.session,{inputResponses:r});return{consumedMessage:e.resolvedStepInput.messageConsumed,outcome:`continue`,messages:[...e.baseHistory],session:t}}let n=resolveQuestionBatches({batches:[t],messages:[...e.baseHistory],responses:[]});return{consumedMessage:e.resolvedStepInput.messageConsumed,outcome:`resolved`,messages:n,resolvedInputs:[buildResolvedInputBatch(t,[])].filter(e=>e!==void 0),session:removePendingInputBatches(e.session,[t])}}let i=resolveQuestionBatches({batches:t,messages:[...e.baseHistory],responses:e.responses});return finishResolvedInput({deferTurnInput:e.deferTurnInput,leftoverResponses:r,messages:i,resolvedInputs:t.flatMap(t=>{let n=buildResolvedInputBatch(t,e.responses);return n===void 0?[]:[n]}),resolvedStepInput:e.resolvedStepInput,session:removePendingInputBatches(e.session,t)})}function findAnsweredQuestionBatches(e,t){let n=new Set(t.map(e=>e.requestId));return e.filter(e=>e.requests.some(e=>n.has(e.requestId)))}function resolveQuestionBatches(e){let t=new Map(e.responses.map(e=>[e.requestId,e]));for(let n of e.batches){let r=n.requests.map(e=>buildQuestionToolResponsePart(e,t.get(e.requestId)));appendResolvedBatchTranscript(e.messages,n,r)}return e.messages}function buildQuestionToolResponsePart(e,t){return{output:{type:`json`,value:t===void 0?{status:`ignored`}:{optionId:t.optionId,text:t.text,status:`answered`}},toolCallId:e.action.callId,toolName:e.action.toolName,type:`tool-result`}}export{buildQuestionToolResponsePart,findAnsweredQuestionBatches,resolveQuestionBatches,resolveQuestionOnlyInputBatches};