@sleep2agi/agent-node 2.5.0-preview.162 → 2.5.0-preview.163

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +1 -1
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -324,7 +324,7 @@ ${A}`}function _y(A,Q,B,I,C){let{interactiveDashboardTask:E,messageType:g}=B,U=N
324
324
  `,"config.json",B.stat),!0}function El(A,Q){return typeof A.opencodeConfiguredModelAtLastOpen==="string"&&A.opencodeConfiguredModelAtLastOpen!==Q}P0();UC();async function gl(A,Q){let B=!1,I;for(let C of A)try{await Q(C)}catch(E){if(!B)I=E;B=!0}if(B)throw I}function Nj(A,Q){let B=Promise.resolve(),I=new Map,C=async(E)=>{let g=Q?.initialDelayMs??0;while(!0)try{await E();return}catch(U){if(A(U),!Q)return;await new Promise((J)=>{setTimeout(J,g).unref?.()}),g=Math.min(g*2,Q.maxDelayMs)}};return{schedule(E){let g=I.get(E);if(g){g.dirty=!0;return}let U={dirty:!1};I.set(E,U);let J=async()=>{try{do U.dirty=!1,await C(E);while(U.dirty)}finally{I.delete(E)}};B=B.then(J,J)},idle(){return B}}}var oXA=new Set(["replied","failed","cancelled","expired"]);function aXA(A){return typeof A==="string"&&oXA.has(A)}async function Ul(A,Q){if(!Q)return{skip:!1,status:null,reason:"no-task-id"};let B;try{B=await A(Q)}catch{return{skip:!1,status:null,reason:"lookup-failed"}}if(!B||B.ok===!1||!B.task)return{skip:!1,status:null,reason:"not-found"};let I=typeof B.task.status==="string"?B.task.status:null;return aXA(I)?{skip:!0,status:I,reason:"terminal"}:{skip:!1,status:I,reason:"open"}}function Jl(A){if(A.meta&&typeof A.meta==="object"&&!Array.isArray(A.meta))return A.meta;if(typeof A.meta_json!=="string"||A.meta_json.length===0)return null;try{let Q=JSON.parse(A.meta_json);return Q&&typeof Q==="object"&&!Array.isArray(Q)?Q:null}catch{return null}}function OV(A){let Q=A.type??"task";if(Q!=="task"&&Q!=="broadcast")return!1;let B=Jl(A);if(!B||B.source!=="dashboard-chat")return!1;if(typeof B.client_request_id!=="string"||!/^dreq_[a-f0-9]{32}$/.test(B.client_request_id))return!1;return B.auth_origin==="user"}function Yl(A){if(!OV(A))return null;let Q=Jl(A)?.client_request_id;return typeof Q==="string"?Q:null}async function Fl(A,Q){for(let B of A)await Q(B)}function Gl(A){if(!Number.isInteger(A.maxConcurrent)||A.maxConcurrent<1)throw Error("maxConcurrent must be a positive integer");let Q=new Set,B=new Set,I=A.reservedPrioritySlots??0;if(!Number.isInteger(I)||I<0||I>=A.maxConcurrent)throw Error("reservedPrioritySlots out of range");let C=new Set,E=[],g=()=>{while(Q.size<A.maxConcurrent&&E.length>0){if(!E[0].priority&&B.size>=A.maxConcurrent-I)break;let U=E.shift(),J=A.key(U.message);if(C.delete(J),Q.add(J),!U.priority)B.add(J);let Y;try{Y=U.handler(U.message)}catch(F){Y=Promise.reject(F)}Y.catch(A.onError).finally(()=>{Q.delete(J),B.delete(J);try{A.onSettled?.()}catch(F){A.onError(F)}finally{g()}})}};return{submit(U,J){let Y=0,F=0;for(let G of U){let $=A.key(G);if(Q.has($)||C.has($)){F++;continue}C.add($);let D=A.prioritize?.(G)===!0||A.prioritizeRecovery?.(G)===!0,N=D?E.findIndex((Z)=>!Z.priority):-1,V={message:G,handler:J,priority:D};if(N<0)E.push(V);else E.splice(N,0,V);Y++}return g(),{active:Q.size,queued:E.length,accepted:Y,deduplicated:F}},stats(){return{active:Q.size,queued:E.length}}}}function $l(A,Q){return A!=="codex-app-server"||Q===0}var rXA={self:"sender alias equals node alias; reply-loop guard","own-prefix":"message carries this node's own reply prefix; reply-loop guard",cooldown:"sender cooldown is active","low-value-inbound":"non-task message matched the low-value filter"};function Dl(A){let Q=rXA[A.reason]||"inbound filter rejected the message";return`skipped inbound ${A.messageType} ${A.taskId} from ${A.sender}: ${A.reason} (${Q}); acknowledged without model delivery`}function Nl(A){let Q=A||"task";return Q==="task"||Q==="broadcast"}function Vl(A){let{alias:Q,from:B,content:I,msgType:C}=A;if(B===Q&&!A.imBridge)return"self";if(I.startsWith(`[${Q}]`))return"own-prefix";let E=C==="task"||C==="broadcast"||C==="reply";if(!E&&B!=="hub"&&B!=="api"){if(A.lastReplyAt&&A.now-A.lastReplyAt<A.cooldownMs)return"cooldown"}if(!E&&A.isLowValue(I))return"low-value-inbound";return null}var sXA="skipped by agent-node: self-sent task (sender is this node; reply-loop guard), no turn ran. To wake a node later, use a Hub scheduled task or /aloop instead of send_task to yourself. (#519)",tXA="skipped by agent-node: task text starts with this node's own reply prefix (echo of its own reply; reply-loop guard), no turn ran. (#519)";function eXA(A){if(A==="self")return sXA;if(A==="own-prefix")return tXA;return null}async function Zl(A,Q){let B=eXA(Q.reason);if(!B)return{kind:"not-applicable",detail:`reason ${Q.reason} does not close a task`};if(!Nl(Q.msgType))return{kind:"not-applicable",detail:`type ${Q.msgType} carries no task`};if(!Q.taskId)return{kind:"not-applicable",detail:"no task id"};try{let I=await A("cancel_task",{task_id:Q.taskId,reason:B});if(I&&typeof I==="object"&&I.ok===!0)return{kind:"closed",tool:"cancel_task"};return{kind:"not-closed",tool:"cancel_task",detail:JSON.stringify(I??null).slice(0,200)}}catch(I){return{kind:"error",tool:"cancel_task",detail:String(I?.message??I).slice(0,200)}}}async function Wl(A,Q){if(!Nl(Q.msgType))return{kind:"not-applicable",detail:`type ${Q.msgType} carries no task`};if(!Q.taskId)return{kind:"not-applicable",detail:"no task id"};let I=`${Q.result.trim()||"(empty reply)"} [low-value reply withheld from sender by agent-node (#519)]`.slice(0,4000);try{return await A("report_completion",{alias:Q.alias,task:Q.taskId,result:I}),{kind:"closed",tool:"report_completion"}}catch(C){return{kind:"error",tool:"report_completion",detail:String(C?.message??C).slice(0,200)}}}function GD(A,Q){switch(Q.kind){case"closed":return`closed task ${A} via ${Q.tool} (#519)`;case"not-closed":return`task ${A} not closed by ${Q.tool} (already terminal?): ${Q.detail}`;case"not-applicable":return`task ${A} left as-is: ${Q.detail}`;case"error":return`failed to close task ${A} via ${Q.tool}: ${Q.detail}`}}function TV(){let A=null;return{run(Q){if(A)return A;let B=Promise.resolve().then(Q);return A=B,B.finally(()=>{if(A===B)A=null}).catch(()=>{}),B},pending(){return A}}}function Xl(){let A=null,Q=TV();return{async getOrOpen(B){if(A?.isRunning)return A;return Q.run(async()=>{if(A?.isRunning)return A;A=null;let I=await B();if(!I.isRunning)throw Error("codex app-server session stopped while opening");return A=I,I})},invalidate(B){if(!B||A===B)A=null},current(){return A},pending(){return Q.pending()}}}$D();I4();import{closeSync as DD,constants as vE,existsSync as EMA,fchmodSync as SV,fstatSync as Ll,fsyncSync as gMA,ftruncateSync as UMA,lstatSync as JMA,mkdirSync as YMA,openSync as Mj,readdirSync as FMA,readFileSync as GMA,realpathSync as Xj,writeSync as $MA}from"node:fs";import{join as zl,resolve as Lj}from"node:path";function Kl(){return process.platform==="linux"&&EMA("/proc/self/fd")}function Hl(A,Q){return Kl()?`/proc/self/fd/${A}`:Q}function jl(A,Q){let B=Ll(A),I=process.getuid?.();if(!B.isFile()||B.nlink!==1||I!==void 0&&B.uid!==I)throw Error(`private log is not a single owner-controlled file: ${Q}`);SV(A,384)}function _l(A){let Q=Lj(A);if(Xj(Q)!==Q)throw Error(`private log directory is not canonical: ${Q}`);let B=Mj(Q,vE.O_RDONLY|(vE.O_DIRECTORY||0)|(vE.O_NOFOLLOW||0));try{let I=Ll(B),C=process.getuid?.();if(!I.isDirectory()||C!==void 0&&I.uid!==C)throw Error(`private log directory is not owner-controlled: ${Q}`);if(Kl()&&Xj(`/proc/self/fd/${B}`)!==Q)throw Error(`private log directory changed during validation: ${Q}`);if(process.platform!=="win32")SV(B,448);return B}catch(I){throw DD(B),I}}function Rl(A,Q,B){let I=0;while(I<Q.length){let C=$MA(A,Q,I,Q.length-I,B===null?null:B+I);if(C<=0)throw Error("private log write made no progress");I+=C}}function DMA(A,Q){let B=Mj(A,vE.O_RDWR|(vE.O_NOFOLLOW||0));try{jl(B,A);let I=Buffer.from(Q.redactText(GMA(B,"utf8")).text,"utf8");if(UMA(B,0),I.length>0)Rl(B,I,0);gMA(B),SV(B,384)}finally{DD(B)}}function wl(A,Q){let B=Lj(A);YMA(B,{recursive:!0,mode:448});let I=JMA(B),C=process.getuid?.();if(I.isSymbolicLink()||!I.isDirectory()||Xj(B)!==B||C!==void 0&&I.uid!==C)throw Error(`private log directory is not owner-controlled: ${B}`);let E=_l(B);try{let g=Hl(E,B);for(let U of FMA(g)){if(!U.endsWith(".log"))continue;DMA(zl(g,U),Q)}}finally{DD(E)}return B}function zj(A,Q,B,I){if(!/^\d{4}-\d{2}-\d{2}\.log$/.test(Q))throw Error("private log filename is not a canonical daily log name");let C=_l(A),E=zl(Hl(C,Lj(A)),Q),g;try{g=Mj(E,vE.O_WRONLY|vE.O_CREAT|vE.O_APPEND|(vE.O_NOFOLLOW||0),384),jl(g,E);let U=Buffer.from(I.redactText(B).text,"utf8");if(U.length>0)Rl(g,U,null);SV(g,384)}finally{if(g!==void 0)DD(g);DD(C)}}function Kj(A){return JSON.stringify(A)}function ql(A){let Q=A.configNodeId||"",B=A.envNodeId||"";if(Q){if(B&&B!==Q)A.warn?.(`COMMHUB_NODE_ID mismatch: env=${Kj(B)} config=${Kj(Q)} config_path=${Kj(A.configPath||"config.json")}; ignoring env COMMHUB_NODE_ID, using config node_id`);return{value:Q,source:"config"}}if(B)return{value:B,source:"env"};return{value:"",source:"none"}}function NMA(A){let Q=A?.task_id||A?.message_id||A?.id;if(Q)return String(Q);let B=A?.content?.[0]?.text;if(typeof B!=="string")return null;try{let I=JSON.parse(B);return I?.task_id||I?.message_id||I?.id||null}catch{return null}}function hY(A,Q,B,I={}){let C=o1({from_alias:A.fromAlias,to_alias:A.toAlias,task_id:B,parent_task_id:A.parentTaskId,network_id:A.networkId,transport:"mcp_http",status:Q,duration_ms:Date.now()-A.startedAt,lifecycle_tracking:"tracked",...I.errorCode?{error_code:I.errorCode}:{},...I.errorMessage?{error_message:d1(I.errorMessage)}:{}});if(I.event)C.event=I.event;A.log(n1(C))}async function Ol(A,Q,B){let I=B.now??Date.now,C=B.sleep??((V)=>new Promise((Z)=>setTimeout(Z,V))),E=B.timeoutMs??120000,g=B.pollIntervalMs??2000,U=B.stale30Ms??30000,J=B.stale60Ms??60000,Y=B.emit,F=I()+E,G=null,$=new Set,D=!1,N=!1;while(I()<F){G=await B.getTask(A);let V=G?.task||G,Z=V?.status;if((Z==="acked"||Z==="running"||Z==="processing")&&!$.has(Z))$.add(Z),Y(Z==="acked"?"acked":"started",A);if(Z==="replied"||Z==="failed"||Z==="cancelled")return Y(Z==="replied"?"replied":"failed",A,{...Z==="replied"?{}:{errorCode:`task_${Z}`,event:"task.failed"}}),{kind:"terminal",status:Z,latest:G,row:V};let W=I()-Q;if(!D&&W>=U&&Z==="delivered")D=!0,Y("delivered",A,{event:"task.warning.delivered_stale_30s"});if(!N&&W>=J&&Z==="delivered")N=!0,Y("delivered",A,{event:"task.warning.delivered_stale_60s"});await C(g)}return Y("expired",A,{errorCode:"lifecycle_timeout"}),{kind:"expired",latest:G}}async function Tl(A,Q,B){hY(Q,"sending",null);try{let I=await B({alias:A.alias,task:A.task,priority:A.priority||"normal",from_session:Q.fromAlias,parent_task_id:Q.parentTaskId||void 0}),C=NMA(I);if(!C)hY(Q,"failed",null,{errorCode:"missing_task_id",errorMessage:"CommHub response omitted task_id"});else hY(Q,"delivered",C);return I}catch(I){throw hY(Q,"failed",null,{errorCode:"send_failed",errorMessage:I}),I}}function Pl(A){let Q=A||"task";if(Q==="task"||Q==="broadcast")return{deliverToRuntime:!0,replyExpected:!0};if(Q==="reply")return{deliverToRuntime:!0,replyExpected:!1};return{deliverToRuntime:!1,replyExpected:!1}}async function Sl(A,Q,B){let I=await B.deliverToRuntime(A);if(Q)return{kind:"request",result:I};return await B.acknowledge(A.id),{kind:"terminal_peer_reply",result:I}}function xl(A,Q){if(A.type!=="new_reply")return!1;return Q(),!0}F9();function Hj(){return{hubSupportsTool:null}}function VMA(A){if(!(A instanceof II))return!1;if(A.code===-32601)return!0;let Q=String(A.message||"");return A.code===-32602&&/(?:unknown|not found|does not exist).{0,80}send_peer_reply|send_peer_reply.{0,80}(?:unknown|not found|does not exist)/i.test(Q)}function ZMA(A){if(!(A instanceof II))return!1;return A.code==="peer_reply_unsupported"||A.code==="peer_reply_origin_not_node"||A.code==="reply_task_not_owned"||A.code==="peer_reply_node_token_required"||VMA(A)}async function kl(A,Q,B=Hj()){try{let I=await Q.sendAtomic(A);return B.hubSupportsTool=!0,{route:"atomic",payload:I}}catch(I){if(!ZMA(I))throw I;return{route:"legacy-reply",payload:await Q.sendLegacyReply(A)}}}UQ();import{chmodSync as vl,closeSync as jj,existsSync as WMA,fchmodSync as XMA,fsyncSync as MMA,openSync as bl,readFileSync as LMA,unlinkSync as yl,writeFileSync as zMA}from"node:fs";import{randomBytes as KMA}from"node:crypto";var fl=15000,HMA=2500,ul=300000,ND=2000,jMA=new Set(["replied","failed","cancelled","expired"]);function Rj(A){if(A===void 0||A===null||String(A).trim()==="")return fl;let Q=Number(A);if(!Number.isSafeInteger(Q))return fl;return Math.min(ul,Math.max(HMA,Q))}function _j(){return{version:3,consumed_task_ids:[],consumed_client_request_ids:[],surfaced_outbound_terminal_ids:[],outbound_deliveries:[],outbound_terminal_watermark:0,inbound_lifecycle:[],last_success_at:null}}function m0(A){if(!Array.isArray(A))return[];return[...new Set(A.filter((Q)=>typeof Q==="string"&&Q.length>0&&Q.length<=512))].slice(-ND)}function _MA(A){if(!A||typeof A!=="object")return _j();let Q=A;return{version:3,consumed_task_ids:m0(Q.consumed_task_ids),consumed_client_request_ids:m0(Q.consumed_client_request_ids),surfaced_outbound_terminal_ids:m0(Q.surfaced_outbound_terminal_ids),outbound_deliveries:Array.isArray(Q.outbound_deliveries)?Q.outbound_deliveries.filter((B)=>!!B&&typeof B.task_id==="string"&&typeof B.idempotency_key==="string"&&["pending","delivering","delivered"].includes(B.state)).slice(-ND):m0(Q.surfaced_outbound_terminal_ids).map((B)=>({task_id:B,idempotency_key:`commhub-terminal:${B}`,state:"delivered"})),outbound_terminal_watermark:Number.isSafeInteger(Q.outbound_terminal_watermark)&&Number(Q.outbound_terminal_watermark)>=0?Number(Q.outbound_terminal_watermark):0,inbound_lifecycle:Array.isArray(Q.inbound_lifecycle)?Q.inbound_lifecycle.filter((B)=>!!B&&typeof B.task_id==="string"&&["delivered","submitted","consumed","completed"].includes(B.state)).slice(-ND):m0(Q.consumed_task_ids).map((B)=>({task_id:B,state:"consumed"})),last_success_at:typeof Q.last_success_at==="string"?Q.last_success_at:null}}function hl(A){return Yl(A)}function ml(A){return typeof A.task_id==="string"&&A.task_id?A.task_id:A.id}function RMA(A){let Q=A,B=String(Q?.message??A??"");return Q?.code===-32601||Q?.code===-32602||/unknown tool|tool .+ not found|method not found|-3260[12]/i.test(B)}var wMA=new Set(["from_node_id_identity_mismatch","node_token_required"]);function qMA(A){let Q=A;return Q?.appLevel===!0&&typeof Q.code==="string"&&wMA.has(Q.code)}class cl{path;state;constructor(A){this.path=A;this.state=this.read()}snapshot(){return this.state=this.read(),this.state}update(A){this.withLock(()=>{let Q=this.read();A(Q),Q.consumed_task_ids=m0(Q.consumed_task_ids),Q.consumed_client_request_ids=m0(Q.consumed_client_request_ids),Q.surfaced_outbound_terminal_ids=m0(Q.surfaced_outbound_terminal_ids),Q.outbound_deliveries=Q.outbound_deliveries.filter((B)=>B.state!=="delivered").slice(-ND),Q.inbound_lifecycle=Q.inbound_lifecycle.slice(-ND),this.write(Q),this.state=Q})}claimOutbound(A,Q,B,I){return this.withLock(()=>{let C=this.read(),E=C.outbound_deliveries.find((g)=>g.task_id===A);if(E?.state==="delivered"||E?.state==="delivering"&&(E.lease_until??0)>B)return!1;if(E)E.state="delivering",E.lease_until=B+I;else C.outbound_deliveries.push({task_id:A,idempotency_key:Q,state:"delivering",lease_until:B+I});return this.write(C),this.state=C,!0},!1)}withLock(A,Q){let B=`${this.path}.lock`,I;try{I=bl(B,"wx",384)}catch{if(arguments.length>1)return Q;throw Error("compensation cursor is locked")}try{return A()}finally{jj(I);try{yl(B)}catch{}}}read(){if(!WMA(this.path))return _j();try{let A=_MA(JSON.parse(LMA(this.path,"utf8")));return vl(this.path,384),A}catch{return _j()}}write(A){let Q=`${this.path}.tmp-${process.pid}-${KMA(6).toString("hex")}`,B=null;try{B=bl(Q,"wx",384),XMA(B,384),zMA(B,`${JSON.stringify(A)}
325
325
  `,"utf8"),MMA(B),jj(B),B=null,GA(Q,this.path),vl(this.path,384)}finally{if(B!==null)jj(B);try{yl(Q)}catch{}}}}function ll(A){let Q=Rj(A.intervalMs),B=A.adapters,I=new cl(A.cursorPath),C="probing",E=null,g=!1,U=!1,J=null,Y=0,F=!1,G=!1,$=B.now??Date.now,D=Math.max(30000,Q*2),N=B.setTimer??((_,h)=>{let x=setTimeout(_,h);return x.unref?.(),x}),V=B.clearTimer??((_)=>clearTimeout(_)),Z=(_)=>{let h=I.snapshot(),x=ml(_),k=hl(_);return h.consumed_task_ids.includes(x)||!!k&&h.consumed_client_request_ids.includes(k)},W=(_)=>{let h=ml(_),x=hl(_);I.update((k)=>{if(k.consumed_task_ids.push(h),x)k.consumed_client_request_ids.push(x);let b=k.inbound_lifecycle.find((y)=>y.task_id===h);if(b)b.state="completed";else k.inbound_lifecycle.push({task_id:h,state:"completed"})})},X={delivered:0,submitted:1,consumed:2,completed:3},L=(_,h)=>{if(!_)return;I.update((x)=>{let k=x.inbound_lifecycle.find((b)=>b.task_id===_);if(!k)x.inbound_lifecycle.push({task_id:_,state:h});else if(X[h]>X[k.state])k.state=h;if(X[h]>=X.consumed)x.consumed_task_ids.push(_)})},M=(_)=>{if(U||C==="realtime-only")return;if(J!==null)V(J);J=N(()=>{J=null,K("timer")},_)},z=async(_)=>{try{let h=I.snapshot().outbound_terminal_watermark,[x,k]=await Promise.all([B.getInbox(),G?Promise.resolve({tasks:[],hasMore:!1}):B.listOutbound(h).catch((y)=>{if(!qMA(y))throw y;return G=!0,B.warn(`[commhub-compensation] outbound reconciliation disabled: this node's token is not bound to its node_id (${y.code}); inbox compensation continues. Re-issue a node-bound token to restore lost-reply reconciliation.`),{tasks:[],hasMore:!1}})]),b=k.tasks;if(C==="probing")C="active",B.log(`[commhub-compensation] active (${Q}ms; SSE remains primary)`);if(x.some((y)=>!Z(y)))B.scheduleInboxDrain();for(let y of b){if(!y?.task_id||!jMA.has(y.status))continue;if(!Number.isSafeInteger(y.terminal_seq)||Number(y.terminal_seq)<=0)throw Object.assign(Error("Hub terminal sequence missing"),{code:-32602});let T=Number(y.terminal_seq),n=I.snapshot();if(T<=n.outbound_terminal_watermark)continue;let u=I.snapshot().outbound_deliveries.find((v)=>v.task_id===y.task_id);if(u?.state==="delivered"){I.update((v)=>{v.outbound_terminal_watermark=Math.max(v.outbound_terminal_watermark,T)});continue}let O=u?.idempotency_key??`commhub-terminal:${y.task_id}`;if(!I.claimOutbound(y.task_id,O,$(),D))break;try{await B.onOutboundTerminal(y,O)}catch(v){throw I.update((e)=>{let s=e.outbound_deliveries.find((EA)=>EA.task_id===y.task_id);if(s)s.state="pending",s.lease_until=0}),v}I.update((v)=>{let e=v.outbound_deliveries.find((s)=>s.task_id===y.task_id);if(e)e.state="delivered",e.lease_until=0;v.outbound_terminal_watermark=Math.max(v.outbound_terminal_watermark,T)})}if(I.update((y)=>{y.last_success_at=new Date($()).toISOString()}),k.hasMore)g=!0;Y=0,B.log(`[commhub-compensation] ${_} poll ok; inbox=${x.length} outbound=${b.length}`),M(Q)}catch(h){if(RMA(h)){if(C="realtime-only",!F)F=!0,B.warn("[commhub-compensation] Hub lacks durable inbox/outbox polling capability; realtime-only mode (SSE/turn-steer only)");return}Y++;let x=Math.min(ul,Q*2**Math.min(Y,5));B.warn(`[commhub-compensation] poll failed; retry in ${x}ms: ${h instanceof Error?h.message:String(h)}`),M(x)}},K=(_)=>{if(U||C==="realtime-only")return;if(E){g=!0;return}E=(async()=>{let h=_;do g=!1,await z(h),h="idle";while(g&&!U&&C!=="realtime-only")})().finally(()=>{E=null})};return{get mode(){return C},get outboundDisabled(){return G},trigger:K,recordConsumed:W,recordLifecycle:L,wasConsumed:Z,async idle(){await E},stop(){if(U=!0,J!==null)V(J);J=null}}}import{appendFileSync as dgA,mkdirSync as eW,statSync as ngA}from"fs";import{appendFileSync as OMA,mkdirSync as TMA,writeSync as PMA}from"node:fs";import{join as SMA}from"node:path";function pl(A){if(A instanceof Error)return`${A.name}: ${A.message}`.replace(/[\r\n]+/g," ");return String(A).replace(/[\r\n]+/g," ")}function xMA(A){if(A instanceof Error)return A.stack||`${A.name}: ${A.message}`;return String(A)}function il(A){let Q=A.stdout??process.stdout,B=A.stderr??process.stderr,I=A.now??(()=>new Date),C=A.redact??((Z)=>Z),E=A.exit??((Z)=>process.exit(Z)),g=A.alias??"agent-node",U=!1,J=!1,Y=!1,F="normal",G=!1,$=(Z,W,X)=>{return`[${I().toISOString().slice(11,19)}] [${Z.padEnd(5)}] [${g}] [${W}] ${X}`},D=(Z)=>{try{let W=I().toISOString().slice(0,10),X=C(Z);if(A.appendLine)A.appendLine(W,X);else TMA(A.logDir,{recursive:!0,mode:448}),OMA(SMA(A.logDir,`${W}.log`),X+`
326
326
  `,{mode:384})}catch{}},N=(Z)=>(W)=>{if(W?.code==="EPIPE"){if(Z==="stdout")U=!0;else J=!0;if(!Y)Y=!0,D($("WARN","stream",`${Z} EPIPE; terminal output disabled, file logging continues`));return}if(F=`${Z} error: ${pl(W)}`,!G)G=!0,E(1)};Q.on("error",N("stdout")),B.on("error",N("stderr"));let V=(Z,W)=>{if(G)return;G=!0,F=`${Z}: ${pl(W)}`;let X=xMA(W);if(D($("ERROR","fatal",`${Z}: ${X}`)),!J)try{PMA(2,`${X}
327
- `)}catch(L){if(L?.code==="EPIPE")J=!0}E(1)};return process.on("uncaughtException",(Z)=>V("uncaughtException",Z)),process.on("unhandledRejection",(Z)=>V("unhandledRejection",Z)),process.on("exit",(Z)=>D($(Z===0?"INFO":"ERROR","exit",`code=${Z} reason=${F}`))),{outputBroken:()=>U||J}}var dl={name:"@sleep2agi/agent-node",version:"2.5.0-preview.162",description:"AI Agent runtime for CommHub networks. Supports Claude Code CLI, Claude Agent SDK, Codex SDK, Codex app-server, Grok Build ACP, and OpenCode CLI.",bin:{"agent-node":"dist/cli.js"},type:"module",files:["dist","README.md"],scripts:{build:"bun build src/cli.ts --outdir dist --entry-naming cli.js --target node --minify --external @anthropic-ai/claude-agent-sdk --external '@anthropic-ai/claude-agent-sdk-*' --external @openai/codex-sdk --external node-pty && bun build src/upload-file-mcp-stdio.ts --outdir dist --entry-naming upload-file-mcp-stdio.js --target node --minify",prepublishOnly:"npm run build"},keywords:["agent","ai","commhub","claude","claude-code","codex","gpt5","grok","xai","grok-build-cli","copresence","acp","sdk","minimax","mimo","runtime","node","anthropic"],author:"sleep2agi",license:"Apache-2.0",homepage:"https://anet.sh",repository:{type:"git",url:"git+https://github.com/sleep2agi/agent-network.git",directory:"agent-node"},publishConfig:{access:"public",tag:"preview"},bugs:{url:"https://github.com/sleep2agi/agent-network/issues"},engines:{node:">=18.17.0"},dependencies:{"@anthropic-ai/claude-agent-sdk":"0.3.289",undici:"^6.27.0",ws:"^8.22.0",zod:"^4.4.3"},optionalDependencies:{"@openai/codex":"^0.133.0","@openai/codex-sdk":"^0.133.0","node-pty":"^1.1.0"},devDependencies:{"@types/ws":"^8.18.2"}};a$();_$();import{chmodSync as vMA,existsSync as bMA,mkdirSync as yMA,readFileSync as fMA,writeFileSync as hMA}from"node:fs";import{join as mMA}from"node:path";var nl="model_reasoning_effort";function wj(A){return H$(A)}function uMA(A,Q){let B=A.includes(`\r
327
+ `)}catch(L){if(L?.code==="EPIPE")J=!0}E(1)};return process.on("uncaughtException",(Z)=>V("uncaughtException",Z)),process.on("unhandledRejection",(Z)=>V("unhandledRejection",Z)),process.on("exit",(Z)=>D($(Z===0?"INFO":"ERROR","exit",`code=${Z} reason=${F}`))),{outputBroken:()=>U||J}}var dl={name:"@sleep2agi/agent-node",version:"2.5.0-preview.163",description:"AI Agent runtime for CommHub networks. Supports Claude Code CLI, Claude Agent SDK, Codex SDK, Codex app-server, Grok Build ACP, and OpenCode CLI.",bin:{"agent-node":"dist/cli.js"},type:"module",files:["dist","README.md"],scripts:{build:"bun build src/cli.ts --outdir dist --entry-naming cli.js --target node --minify --external @anthropic-ai/claude-agent-sdk --external '@anthropic-ai/claude-agent-sdk-*' --external @openai/codex-sdk --external node-pty && bun build src/upload-file-mcp-stdio.ts --outdir dist --entry-naming upload-file-mcp-stdio.js --target node --minify",prepublishOnly:"npm run build"},keywords:["agent","ai","commhub","claude","claude-code","codex","gpt5","grok","xai","grok-build-cli","copresence","acp","sdk","minimax","mimo","runtime","node","anthropic"],author:"sleep2agi",license:"Apache-2.0",homepage:"https://anet.sh",repository:{type:"git",url:"git+https://github.com/sleep2agi/agent-network.git",directory:"agent-node"},publishConfig:{access:"public",tag:"preview"},bugs:{url:"https://github.com/sleep2agi/agent-network/issues"},engines:{node:">=18.17.0"},dependencies:{"@anthropic-ai/claude-agent-sdk":"0.3.289",undici:"^6.27.0",ws:"^8.22.0",zod:"^4.4.3"},optionalDependencies:{"@openai/codex":"^0.133.0","@openai/codex-sdk":"^0.133.0","node-pty":"^1.1.0"},devDependencies:{"@types/ws":"^8.18.2"}};a$();_$();import{chmodSync as vMA,existsSync as bMA,mkdirSync as yMA,readFileSync as fMA,writeFileSync as hMA}from"node:fs";import{join as mMA}from"node:path";var nl="model_reasoning_effort";function wj(A){return H$(A)}function uMA(A,Q){let B=A.includes(`\r
328
328
  `)?`\r
329
329
  `:`
330
330
  `,I=A.endsWith(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-node",
3
- "version": "2.5.0-preview.162",
3
+ "version": "2.5.0-preview.163",
4
4
  "description": "AI Agent runtime for CommHub networks. Supports Claude Code CLI, Claude Agent SDK, Codex SDK, Codex app-server, Grok Build ACP, and OpenCode CLI.",
5
5
  "bin": {
6
6
  "agent-node": "dist/cli.js"