eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.87 kB
JavaScript
import{mintSubagentContinuationToken}from"#execution/session.js";import{SUBAGENT_ADAPTER_KIND}from"#subagents/adapter-state.js";import{formatSubagentInput,normalizeRequestedOutputSchema}from"#subagents/invocation.js";import{resolveRemainingSessionTokenLimits}from"#subagents/token-budget.js";function buildSubagentRunInput(e){let{action:t,auth:n,capabilities:r,channelMetadata:i,initiatorAuth:a,session:o,source:s}=e,c=mintSubagentContinuationToken(`${o.sessionId}:${t.callId}`),l=resolveRemainingSessionTokenLimits(o,e.fanoutSize),u=normalizeRequestedOutputSchema(t.input.outputSchema),d={callId:t.callId,parentContinuationToken:e.parent.continuationToken??o.continuationToken,parentSessionId:o.sessionId,subagentName:t.subagentName};e.taskId!==void 0&&(d.taskId=e.taskId),(e.graph?.nodesByNodeId.get(t.nodeId)?.sandboxRegistry.sandbox?.definition.inheritsParent===!0||e.selfAgent)&&(o.sandboxState!==void 0&&(d.parentSandboxState=o.sandboxState),d.sandboxSessionId=e.sandboxSessionId??o.sessionId);let f={adapter:{kind:SUBAGENT_ADAPTER_KIND,state:d},auth:n,capabilities:r,channelMetadata:i,continuationToken:c,initiatorAuth:a,input:{message:formatSubagentCallInputMessage({action:t,source:s}),outputSchema:u??s.outputSchema},limits:l,mode:`conversation`,conversationId:e.parent.conversationId,parent:e.parent.lineage,parentTraceContext:e.parent.traceContext,activityObserver:e.activityObserver};return e.taskId!==void 0&&(f.taskId=e.taskId),{childContinuationToken:c,runInput:f}}function formatSubagentCallInputMessage(e){let{message:t}=e.action.input;switch(e.source.type){case`local`:return formatSubagentInput({description:e.source.description,message:t,name:e.action.subagentName,type:`local`}).message;case`runtime`:return formatSubagentInput({message:t,name:e.action.subagentName,type:`runtime`}).message;default:return e.source}}export{buildSubagentRunInput};