UNPKG

eve

Version:

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

1 lines 1.15 kB
import{agent,methods,ndJsonStream}from"#compiled/@agentclientprotocol/sdk/index.js";import{Readable,Writable}from"node:stream";import{EveAcpAdapter}from"#acp/adapter.js";import{limitAcpLineBytes}from"#acp/line-limit.js";async function runAcpServer(e){await runAcpServerOnStreams(e,{input:process.stdin,output:process.stdout})}async function runAcpServerOnStreams(e,t){let n=new EveAcpAdapter(e),r=agent({name:`eve`}).onRequest(methods.agent.initialize,({params:e})=>n.initialize(e)).onRequest(methods.agent.session.new,({params:e})=>n.newSession(e)).onRequest(methods.agent.session.prompt,({params:e,client:t,signal:r})=>n.prompt(e,t,r)).onRequest(methods.agent.session.close,({params:e})=>n.closeSession(e.sessionId)).onNotification(methods.agent.session.cancel,({params:e})=>n.cancel(e.sessionId)),i=Writable.toWeb(t.output),a=Readable.toWeb(t.input).pipeThrough(limitAcpLineBytes()),o=r.connect(ndJsonStream(i,a)),close=()=>o.close();e.signal?.aborted?close():e.signal?.addEventListener(`abort`,close,{once:!0});try{await o.closed}finally{e.signal?.removeEventListener(`abort`,close),await n.close()}}export{runAcpServer,runAcpServerOnStreams};