@sleep2agi/agent-node 2.5.0-preview.36 → 2.5.0-preview.37
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.
- package/dist/cli.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -196,7 +196,7 @@ ${A}`}function A3(A,Q,B,C,I){let{interactiveDashboardTask:E,messageType:g}=B,D=e
|
|
|
196
196
|
`,"config.json",Q?.stat),{config:I,source:"prev",primaryError:B}}function jR(A){return JSON.parse(dg(A,"config.json").body)}function _R(A,Q){let B=dg(A,"config.json");LN(A,JSON.stringify(Q,null,2)+`
|
|
197
197
|
`,"config.json",B.stat)}function qR(A){let Q=dg(A,"config.json");return LN(`${A}.prev`,Q.body,"config.json.prev"),{backedUp:!0}}function OR(A,Q){let B=dg(A,"config.json"),C=JSON.parse(B.body);if(C.session===Q)return!1;return C.session=Q,LN(A,JSON.stringify(C,null,2)+`
|
|
198
198
|
`,"config.json",B.stat),!0}jN();async function fR(A,Q){let B=!1,C;for(let I of A)try{await Q(I)}catch(E){if(!B)C=E;B=!0}if(B)throw C}function f1(A,Q){let B=Promise.resolve(),C=new Map,I=async(E)=>{let g=Q?.initialDelayMs??0;while(!0)try{await E();return}catch(D){if(A(D),!Q)return;await new Promise((U)=>{setTimeout(U,g).unref?.()}),g=Math.min(g*2,Q.maxDelayMs)}};return{schedule(E){let g=C.get(E);if(g){g.dirty=!0;return}let D={dirty:!1};C.set(E,D);let U=async()=>{try{do D.dirty=!1,await I(E);while(D.dirty)}finally{C.delete(E)}};B=B.then(U,U)},idle(){return B}}}function hR(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 h1(A){let Q=A.type??"task";if(Q!=="task"&&Q!=="broadcast")return!1;let B=hR(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 mR(A){if(!h1(A))return null;let Q=hR(A)?.client_request_id;return typeof Q==="string"?Q:null}async function uR(A,Q){for(let B of A)await Q(B)}function cR(A){if(!Number.isInteger(A.maxConcurrent)||A.maxConcurrent<1)throw Error("maxConcurrent must be a positive integer");let Q=new Set,B=new Set,C=[],I=()=>{while(Q.size<A.maxConcurrent&&C.length>0){let E=C.shift(),g=A.key(E.message);B.delete(g),Q.add(g);let D;try{D=E.handler(E.message)}catch(U){D=Promise.reject(U)}D.catch(A.onError).finally(()=>{Q.delete(g);try{A.onSettled?.()}catch(U){A.onError(U)}finally{I()}})}};return{submit(E,g){let D=0,U=0;for(let F of E){let Y=A.key(F);if(Q.has(Y)||B.has(Y)){U++;continue}B.add(Y),C.push({message:F,handler:g}),D++}return I(),{active:Q.size,queued:C.length,accepted:D,deduplicated:U}},stats(){return{active:Q.size,queued:C.length}}}}function lR(A,Q){return A!=="codex-app-server"||Q===0}var ad={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 iR(A){let Q=ad[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 _N(){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 pR(){let A=null,Q=_N();return{async getOrOpen(B){if(A?.isRunning)return A;return Q.run(async()=>{if(A?.isRunning)return A;A=null;let C=await B();if(!C.isRunning)throw Error("codex app-server session stopped while opening");return A=C,C})},invalidate(B){if(!B||A===B)A=null},current(){return A},pending(){return Q.pending()}}}$U();import{closeSync as MU,constants as lI,existsSync as Bn,fchmodSync as ON,fstatSync as nR,fsyncSync as In,ftruncateSync as Cn,lstatSync as En,mkdirSync as gn,openSync as i1,readdirSync as Dn,readFileSync as Un,realpathSync as l1,writeSync as Fn}from"node:fs";import{join as oR,resolve as p1}from"node:path";function rR(){return process.platform==="linux"&&Bn("/proc/self/fd")}function aR(A,Q){return rR()?`/proc/self/fd/${A}`:Q}function sR(A,Q){let B=nR(A),C=process.getuid?.();if(!B.isFile()||B.nlink!==1||C!==void 0&&B.uid!==C)throw Error(`private log is not a single owner-controlled file: ${Q}`);ON(A,384)}function tR(A){let Q=p1(A);if(l1(Q)!==Q)throw Error(`private log directory is not canonical: ${Q}`);let B=i1(Q,lI.O_RDONLY|(lI.O_DIRECTORY||0)|(lI.O_NOFOLLOW||0));try{let C=nR(B),I=process.getuid?.();if(!C.isDirectory()||I!==void 0&&C.uid!==I)throw Error(`private log directory is not owner-controlled: ${Q}`);if(rR()&&l1(`/proc/self/fd/${B}`)!==Q)throw Error(`private log directory changed during validation: ${Q}`);if(process.platform!=="win32")ON(B,448);return B}catch(C){throw MU(B),C}}function eR(A,Q,B){let C=0;while(C<Q.length){let I=Fn(A,Q,C,Q.length-C,B===null?null:B+C);if(I<=0)throw Error("private log write made no progress");C+=I}}function Yn(A,Q){let B=i1(A,lI.O_RDWR|(lI.O_NOFOLLOW||0));try{sR(B,A);let C=Buffer.from(Q.redactText(Un(B,"utf8")).text,"utf8");if(Cn(B,0),C.length>0)eR(B,C,0);In(B),ON(B,384)}finally{MU(B)}}function A7(A,Q){let B=p1(A);gn(B,{recursive:!0,mode:448});let C=En(B),I=process.getuid?.();if(C.isSymbolicLink()||!C.isDirectory()||l1(B)!==B||I!==void 0&&C.uid!==I)throw Error(`private log directory is not owner-controlled: ${B}`);let E=tR(B);try{let g=aR(E,B);for(let D of Dn(g)){if(!D.endsWith(".log"))continue;Yn(oR(g,D),Q)}}finally{MU(E)}return B}function Q7(A,Q,B,C){if(!/^\d{4}-\d{2}-\d{2}\.log$/.test(Q))throw Error("private log filename is not a canonical daily log name");let I=tR(A),E=oR(aR(I,p1(A)),Q),g;try{g=i1(E,lI.O_WRONLY|lI.O_CREAT|lI.O_APPEND|(lI.O_NOFOLLOW||0),384),sR(g,E);let D=Buffer.from(C.redactText(B).text,"utf8");if(D.length>0)eR(g,D,null);ON(g,384)}finally{if(g!==void 0)MU(g);MU(I)}}function d1(A){return JSON.stringify(A)}function B7(A){let Q=A.configNodeId||"",B=A.envNodeId||"";if(Q){if(B&&B!==Q)A.warn?.(`COMMHUB_NODE_ID mismatch: env=${d1(B)} config=${d1(Q)} config_path=${d1(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 Jn(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 C=JSON.parse(B);return C?.task_id||C?.message_id||C?.id||null}catch{return null}}function rg(A,Q,B,C={}){let I=nJ({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",...C.errorCode?{error_code:C.errorCode}:{},...C.errorMessage?{error_message:pJ(C.errorMessage)}:{}});if(C.event)I.event=C.event;A.log(dJ(I))}async function I7(A,Q,B){let C=B.now??Date.now,I=B.sleep??((V)=>new Promise((M)=>setTimeout(M,V))),E=B.timeoutMs??120000,g=B.pollIntervalMs??2000,D=B.stale30Ms??30000,U=B.stale60Ms??60000,F=B.emit,Y=C()+E,N=null,J=new Set,G=!1,$=!1;while(C()<Y){N=await B.getTask(A);let V=N?.task||N,M=V?.status;if((M==="acked"||M==="running"||M==="processing")&&!J.has(M))J.add(M),F(M==="acked"?"acked":"started",A);if(M==="replied"||M==="failed"||M==="cancelled")return F(M==="replied"?"replied":"failed",A,{...M==="replied"?{}:{errorCode:`task_${M}`,event:"task.failed"}}),{kind:"terminal",status:M,latest:N,row:V};let W=C()-Q;if(!G&&W>=D&&M==="delivered")G=!0,F("delivered",A,{event:"task.warning.delivered_stale_30s"});if(!$&&W>=U&&M==="delivered")$=!0,F("delivered",A,{event:"task.warning.delivered_stale_60s"});await I(g)}return F("expired",A,{errorCode:"lifecycle_timeout"}),{kind:"expired",latest:N}}async function C7(A,Q,B){rg(Q,"sending",null);try{let C=await B({alias:A.alias,task:A.task,priority:A.priority||"normal",from_session:Q.fromAlias,parent_task_id:Q.parentTaskId||void 0}),I=Jn(C);if(!I)rg(Q,"failed",null,{errorCode:"missing_task_id",errorMessage:"CommHub response omitted task_id"});else rg(Q,"delivered",I);return C}catch(C){throw rg(Q,"failed",null,{errorCode:"send_failed",errorMessage:C}),C}}function E7(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 g7(A,Q,B){let C=await B.deliverToRuntime(A);if(Q)return{kind:"request",result:C};return await B.acknowledge(A.id),{kind:"terminal_peer_reply",result:C}}function D7(A,Q){if(A.type!=="new_reply")return!1;return Q(),!0}function n1(){return{hubSupportsTool:null}}function Nn(A){if(!(A instanceof bB))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 Gn(A){if(!(A instanceof bB))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"||Nn(A)}async function U7(A,Q,B=n1()){try{let C=await Q.sendAtomic(A);return B.hubSupportsTool=!0,{route:"atomic",payload:C}}catch(C){if(!Gn(C))throw C;return{route:"legacy-reply",payload:await Q.sendLegacyReply(A)}}}import{chmodSync as F7,closeSync as o1,existsSync as $n,fchmodSync as Mn,fsyncSync as Vn,openSync as Y7,readFileSync as Wn,renameSync as wn,unlinkSync as J7,writeFileSync as Ln}from"node:fs";import{randomBytes as Xn}from"node:crypto";var N7=15000,Zn=2500,M7=300000,VU=2000,Kn=new Set(["replied","failed","cancelled","expired"]);function a1(A){if(A===void 0||A===null||String(A).trim()==="")return N7;let Q=Number(A);if(!Number.isSafeInteger(Q))return N7;return Math.min(M7,Math.max(Zn,Q))}function r1(){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 KC(A){if(!Array.isArray(A))return[];return[...new Set(A.filter((Q)=>typeof Q==="string"&&Q.length>0&&Q.length<=512))].slice(-VU)}function zn(A){if(!A||typeof A!=="object")return r1();let Q=A;return{version:3,consumed_task_ids:KC(Q.consumed_task_ids),consumed_client_request_ids:KC(Q.consumed_client_request_ids),surfaced_outbound_terminal_ids:KC(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(-VU):KC(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(-VU):KC(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 G7(A){return mR(A)}function $7(A){return typeof A.task_id==="string"&&A.task_id?A.task_id:A.id}function Hn(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)}class V7{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=KC(Q.consumed_task_ids),Q.consumed_client_request_ids=KC(Q.consumed_client_request_ids),Q.surfaced_outbound_terminal_ids=KC(Q.surfaced_outbound_terminal_ids),Q.outbound_deliveries=Q.outbound_deliveries.filter((B)=>B.state!=="delivered").slice(-VU),Q.inbound_lifecycle=Q.inbound_lifecycle.slice(-VU),this.write(Q),this.state=Q})}claimOutbound(A,Q,B,C){return this.withLock(()=>{let I=this.read(),E=I.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+C;else I.outbound_deliveries.push({task_id:A,idempotency_key:Q,state:"delivering",lease_until:B+C});return this.write(I),this.state=I,!0},!1)}withLock(A,Q){let B=`${this.path}.lock`,C;try{C=Y7(B,"wx",384)}catch{if(arguments.length>1)return Q;throw Error("compensation cursor is locked")}try{return A()}finally{o1(C);try{J7(B)}catch{}}}read(){if(!$n(this.path))return r1();try{let A=zn(JSON.parse(Wn(this.path,"utf8")));return F7(this.path,384),A}catch{return r1()}}write(A){let Q=`${this.path}.tmp-${process.pid}-${Xn(6).toString("hex")}`,B=null;try{B=Y7(Q,"wx",384),Mn(B,384),Ln(B,`${JSON.stringify(A)}
|
|
199
|
-
`,"utf8"),Vn(B),o1(B),B=null,wn(Q,this.path),F7(this.path,384)}finally{if(B!==null)o1(B);try{J7(Q)}catch{}}}}function W7(A){let Q=a1(A.intervalMs),B=A.adapters,C=new V7(A.cursorPath),I="probing",E=null,g=!1,D=!1,U=null,F=0,Y=!1,N=B.now??Date.now,J=Math.max(30000,Q*2),G=B.setTimer??((x,y)=>{let u=setTimeout(x,y);return u.unref?.(),u}),$=B.clearTimer??((x)=>clearTimeout(x)),V=(x)=>{let y=C.snapshot(),u=$7(x),m=G7(x);return y.consumed_task_ids.includes(u)||!!m&&y.consumed_client_request_ids.includes(m)},M=(x)=>{let y=$7(x),u=G7(x);C.update((m)=>{if(m.consumed_task_ids.push(y),u)m.consumed_client_request_ids.push(u);let n=m.inbound_lifecycle.find((T)=>T.task_id===y);if(n)n.state="completed";else m.inbound_lifecycle.push({task_id:y,state:"completed"})})},W={delivered:0,submitted:1,consumed:2,completed:3},Z=(x,y)=>{if(!x)return;C.update((u)=>{let m=u.inbound_lifecycle.find((n)=>n.task_id===x);if(!m)u.inbound_lifecycle.push({task_id:x,state:y});else if(W[y]>W[m.state])m.state=y;if(W[y]>=W.consumed)u.consumed_task_ids.push(x)})},L=(x)=>{if(D||I==="realtime-only")return;if(U!==null)$(U);U=G(()=>{U=null,H("timer")},x)},X=async(x)=>{try{let y=C.snapshot().outbound_terminal_watermark,[u,m]=await Promise.all([B.getInbox(),B.listOutbound(y)]),n=m.tasks;if(I==="probing")I="active",B.log(`[commhub-compensation] active (${Q}ms; SSE remains primary)`);if(u.some((T)=>!V(T)))B.scheduleInboxDrain();for(let T of n){if(!T?.task_id||!Kn.has(T.status))continue;if(!Number.isSafeInteger(T.terminal_seq)||Number(T.terminal_seq)<=0)throw Object.assign(Error("Hub terminal sequence missing"),{code:-32602});let p=Number(T.terminal_seq),HA=C.snapshot();if(p<=HA.outbound_terminal_watermark)continue;let zQ=C.snapshot().outbound_deliveries.find((CA)=>CA.task_id===T.task_id);if(zQ?.state==="delivered"){C.update((CA)=>{CA.outbound_terminal_watermark=Math.max(CA.outbound_terminal_watermark,p)});continue}let FQ=zQ?.idempotency_key??`commhub-terminal:${T.task_id}`;if(!C.claimOutbound(T.task_id,FQ,N(),J))break;try{await B.onOutboundTerminal(T,FQ)}catch(CA){throw C.update((dA)=>{let XQ=dA.outbound_deliveries.find((BA)=>BA.task_id===T.task_id);if(XQ)XQ.state="pending",XQ.lease_until=0}),CA}C.update((CA)=>{let dA=CA.outbound_deliveries.find((XQ)=>XQ.task_id===T.task_id);if(dA)dA.state="delivered",dA.lease_until=0;CA.outbound_terminal_watermark=Math.max(CA.outbound_terminal_watermark,p)})}if(C.update((T)=>{T.last_success_at=new Date(N()).toISOString()}),m.hasMore)g=!0;F=0,B.log(`[commhub-compensation] ${x} poll ok; inbox=${u.length} outbound=${n.length}`),L(Q)}catch(y){if(Hn(y)){if(I="realtime-only",!Y)Y=!0,B.warn("[commhub-compensation] Hub lacks durable inbox/outbox polling capability; realtime-only mode (SSE/turn-steer only)");return}F++;let u=Math.min(M7,Q*2**Math.min(F,5));B.warn(`[commhub-compensation] poll failed; retry in ${u}ms: ${y instanceof Error?y.message:String(y)}`),L(u)}},H=(x)=>{if(D||I==="realtime-only")return;if(E){g=!0;return}E=(async()=>{let y=x;do g=!1,await X(y),y="idle";while(g&&!D&&I!=="realtime-only")})().finally(()=>{E=null})};return{get mode(){return I},trigger:H,recordConsumed:M,recordLifecycle:Z,wasConsumed:V,async idle(){await E},stop(){if(D=!0,U!==null)$(U);U=null}}}import{appendFileSync as Km,mkdirSync as $2}from"fs";var w7={name:"@sleep2agi/agent-node",version:"2.5.0-preview.
|
|
199
|
+
`,"utf8"),Vn(B),o1(B),B=null,wn(Q,this.path),F7(this.path,384)}finally{if(B!==null)o1(B);try{J7(Q)}catch{}}}}function W7(A){let Q=a1(A.intervalMs),B=A.adapters,C=new V7(A.cursorPath),I="probing",E=null,g=!1,D=!1,U=null,F=0,Y=!1,N=B.now??Date.now,J=Math.max(30000,Q*2),G=B.setTimer??((x,y)=>{let u=setTimeout(x,y);return u.unref?.(),u}),$=B.clearTimer??((x)=>clearTimeout(x)),V=(x)=>{let y=C.snapshot(),u=$7(x),m=G7(x);return y.consumed_task_ids.includes(u)||!!m&&y.consumed_client_request_ids.includes(m)},M=(x)=>{let y=$7(x),u=G7(x);C.update((m)=>{if(m.consumed_task_ids.push(y),u)m.consumed_client_request_ids.push(u);let n=m.inbound_lifecycle.find((T)=>T.task_id===y);if(n)n.state="completed";else m.inbound_lifecycle.push({task_id:y,state:"completed"})})},W={delivered:0,submitted:1,consumed:2,completed:3},Z=(x,y)=>{if(!x)return;C.update((u)=>{let m=u.inbound_lifecycle.find((n)=>n.task_id===x);if(!m)u.inbound_lifecycle.push({task_id:x,state:y});else if(W[y]>W[m.state])m.state=y;if(W[y]>=W.consumed)u.consumed_task_ids.push(x)})},L=(x)=>{if(D||I==="realtime-only")return;if(U!==null)$(U);U=G(()=>{U=null,H("timer")},x)},X=async(x)=>{try{let y=C.snapshot().outbound_terminal_watermark,[u,m]=await Promise.all([B.getInbox(),B.listOutbound(y)]),n=m.tasks;if(I==="probing")I="active",B.log(`[commhub-compensation] active (${Q}ms; SSE remains primary)`);if(u.some((T)=>!V(T)))B.scheduleInboxDrain();for(let T of n){if(!T?.task_id||!Kn.has(T.status))continue;if(!Number.isSafeInteger(T.terminal_seq)||Number(T.terminal_seq)<=0)throw Object.assign(Error("Hub terminal sequence missing"),{code:-32602});let p=Number(T.terminal_seq),HA=C.snapshot();if(p<=HA.outbound_terminal_watermark)continue;let zQ=C.snapshot().outbound_deliveries.find((CA)=>CA.task_id===T.task_id);if(zQ?.state==="delivered"){C.update((CA)=>{CA.outbound_terminal_watermark=Math.max(CA.outbound_terminal_watermark,p)});continue}let FQ=zQ?.idempotency_key??`commhub-terminal:${T.task_id}`;if(!C.claimOutbound(T.task_id,FQ,N(),J))break;try{await B.onOutboundTerminal(T,FQ)}catch(CA){throw C.update((dA)=>{let XQ=dA.outbound_deliveries.find((BA)=>BA.task_id===T.task_id);if(XQ)XQ.state="pending",XQ.lease_until=0}),CA}C.update((CA)=>{let dA=CA.outbound_deliveries.find((XQ)=>XQ.task_id===T.task_id);if(dA)dA.state="delivered",dA.lease_until=0;CA.outbound_terminal_watermark=Math.max(CA.outbound_terminal_watermark,p)})}if(C.update((T)=>{T.last_success_at=new Date(N()).toISOString()}),m.hasMore)g=!0;F=0,B.log(`[commhub-compensation] ${x} poll ok; inbox=${u.length} outbound=${n.length}`),L(Q)}catch(y){if(Hn(y)){if(I="realtime-only",!Y)Y=!0,B.warn("[commhub-compensation] Hub lacks durable inbox/outbox polling capability; realtime-only mode (SSE/turn-steer only)");return}F++;let u=Math.min(M7,Q*2**Math.min(F,5));B.warn(`[commhub-compensation] poll failed; retry in ${u}ms: ${y instanceof Error?y.message:String(y)}`),L(u)}},H=(x)=>{if(D||I==="realtime-only")return;if(E){g=!0;return}E=(async()=>{let y=x;do g=!1,await X(y),y="idle";while(g&&!D&&I!=="realtime-only")})().finally(()=>{E=null})};return{get mode(){return I},trigger:H,recordConsumed:M,recordLifecycle:Z,wasConsumed:V,async idle(){await E},stop(){if(D=!0,U!==null)$(U);U=null}}}import{appendFileSync as Km,mkdirSync as $2}from"fs";var w7={name:"@sleep2agi/agent-node",version:"2.5.0-preview.37",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.226",undici:"^6.27.0",zod:"^4.4.3"},optionalDependencies:{"@openai/codex":"^0.133.0","@openai/codex-sdk":"^0.133.0","node-pty":"^1.1.0"}};var __dirname="/home/runner/work/agent-network/agent-network/agent-node/src";var VB=jGA(),_GA=n1(),Nm=process.env.ANET_OPENCODE_BIN,rF=process.env.ANET_OPENCODE_VERSION,Gm=process.env.PATH||"",mh=process.env.ANET_OPENCODE_SAFE_BASE,tQ=process.argv.slice(2),wA={},$m=[];if(tQ.length===1&&tQ[0]==="--print-entrypoint")console.log(HGA(process.argv[1])),process.exit(0);var Mm="2.1.0";try{let A=new URL(".",import.meta.url).pathname;for(let Q of["../package.json","../../package.json"])try{let B=JSON.parse(kI(e(A,Q),"utf-8"));if(B.version){Mm=B.version;break}}catch{}}catch{}for(let A=0;A<tQ.length;A++){if(tQ[A]==="--version"||tQ[A]==="-v")console.log(`agent-node v${Mm}`),process.exit(0);if(tQ[A]==="-h"||tQ[A]==="--help")console.log(`
|
|
200
200
|
@sleep2agi/agent-node — AI Agent 节点,一行命令加入 CommHub 网络
|
|
201
201
|
|
|
202
202
|
用法:
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sleep2agi/agent-node",
|
|
3
|
-
"version": "2.5.0-preview.
|
|
3
|
+
"version": "2.5.0-preview.37",
|
|
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"
|