eve
Version:
Filesystem-first framework for durable backend AI agents that run anywhere.
1 lines • 1.88 kB
JavaScript
import{parseJsonObject,parseJsonValue}from"#shared/json.js";const DEFAULT_WORKFLOW_PROGRAM_MAX_SUBAGENTS=100,MAX_WORKFLOW_PROGRAM_MAX_SUBAGENTS=128,WORKFLOW_PROGRAM_BRIDGE_REQUEST_LIMIT=256,WORKFLOW_PROGRAM_CALL_INTERRUPT_KIND=`eve.workflow-program-agent-call`;function parseWorkflowProgramOptions(e){let t=parseJsonObject(e);if(!isPositiveInteger(t.maxSubagents)||t.maxSubagents>128)throw TypeError(`workflow maxSubagents must be an integer between 1 and 128.`);return{maxSubagents:t.maxSubagents}}function readWorkflowProgramCallInterrupt(e){let t=e.payload;if(t.kind!==`eve.workflow-program-agent-call`||t.toolName!==`agent`)throw Error(`Unsupported workflow program interrupt kind "${String(t.kind)}".`);return{kind:WORKFLOW_PROGRAM_CALL_INTERRUPT_KIND,task:void 0,toolInput:t.toolInput,toolName:`agent`}}function readWorkflowProgramAgentCall(e){let t=parseJsonObject(e);if(typeof t.target!=`string`||t.target.trim()===``)throw TypeError(`Workflow program ctx.agent() requires a non-empty agent name.`);let n=parseJsonObject(t.input);if(typeof n.message!=`string`)throw TypeError(`Workflow program ctx.agent() requires a "message" string.`);if(n.agentId!==void 0&&typeof n.agentId!=`string`)throw TypeError(`Workflow program ctx.agent() "agentId" must be a string.`);let r={message:n.message};return n.agentId!==void 0&&(r.agentId=n.agentId),n.outputSchema!==void 0&&(r.outputSchema=parseJsonObject(n.outputSchema)),{input:r,target:t.target}}function parseWorkflowProgramOutput(e){return parseJsonValue(e??null)}function isPositiveInteger(e){return typeof e==`number`&&Number.isSafeInteger(e)&&e>0}export{DEFAULT_WORKFLOW_PROGRAM_MAX_SUBAGENTS,MAX_WORKFLOW_PROGRAM_MAX_SUBAGENTS,WORKFLOW_PROGRAM_BRIDGE_REQUEST_LIMIT,WORKFLOW_PROGRAM_CALL_INTERRUPT_KIND,parseWorkflowProgramOptions,parseWorkflowProgramOutput,readWorkflowProgramAgentCall,readWorkflowProgramCallInterrupt};