@sleep2agi/agent-network 2.3.0-preview.73 → 2.3.0-preview.74

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.
@@ -1 +1 @@
1
- const a0_0xd9c652=a0_0x3659;function a0_0x3659(_0x539ffb,_0x44d8ef){_0x539ffb=_0x539ffb-0x1d9;const _0x1682df=a0_0x1682();let _0x365978=_0x1682df[_0x539ffb];return _0x365978;}(function(_0x4982e1,_0x11b38a){const _0x2d7fac=a0_0x3659,_0x361ab1=_0x4982e1();while(!![]){try{const _0xd6f960=-parseInt(_0x2d7fac(0x249))/0x1+parseInt(_0x2d7fac(0x207))/0x2*(-parseInt(_0x2d7fac(0x23e))/0x3)+-parseInt(_0x2d7fac(0x246))/0x4+parseInt(_0x2d7fac(0x1df))/0x5+parseInt(_0x2d7fac(0x1ff))/0x6+parseInt(_0x2d7fac(0x218))/0x7*(parseInt(_0x2d7fac(0x238))/0x8)+-parseInt(_0x2d7fac(0x24d))/0x9;if(_0xd6f960===_0x11b38a)break;else _0x361ab1['push'](_0x361ab1['shift']());}catch(_0x40e850){_0x361ab1['push'](_0x361ab1['shift']());}}}(a0_0x1682,0xd842f));import{EventEmitter as a0_0x413238}from'events';import{hostname as a0_0x19fcbe}from'os';var K=/(?:atok|ntok|utok|ghp|github_pat)_[A-Za-z0-9_-]+|Bearer\s+\S+/gi,L=(_0x4e7cf5,_0x105b45)=>(_0x4e7cf5??_0x105b45)[a0_0xd9c652(0x225)](/[\r\n\x00-\x1f\x7f]/g,'\x20')['slice'](0x0,0xf0);function N(_0x3218a4){const _0x1dae88=a0_0xd9c652;return(_0x3218a4 instanceof Error?_0x3218a4[_0x1dae88(0x241)]:String(_0x3218a4??'unknown\x20error'))[_0x1dae88(0x225)](K,'[REDACTED]')[_0x1dae88(0x225)](/[\r\n\x00-\x1f\x7f]/g,'\x20')[_0x1dae88(0x243)](0x0,0xf0);}function a0_0x1682(){const _0x395cbf=['SSE\x20error:\x20','signal','content','match','send_failed','failed','stringify','min','sdk','running','send_task','decode','connectSSE','autoConnect','sending','sdk-','sseAbort','get_all_status','parse','offline','lifecycle_tracking','disconnect','4596216vpGiab','parentTaskId','normal','messages','new_message','task.ack','toTimeString','task.replied','2IohVIM','reconnectDelay','url','connected','text','text/event-stream','fromAlias','idle','Bearer\x20',']\x20[commhub:','task.expired','call','startsWith','parent_task_id','alias','SSE\x20connected','send_reply','1974DuHWHC','error','disconnected','read','to_alias','now','task.send.failed','\x20duration_ms=','delivered','name','missing_task_id','lifecycleTracking','tools/call','replace','catch','message_id','heartbeatTimer','transport','CommHub\x20response\x20omitted\x20task_id','emit','agent','<unknown>','server','log','toAlias','broadcast','status','from_session','not_tracked','\x20from=','application/json','cwd','26984OGyZZg','from_alias','error_code','body','send','sleep','1117668WCJRnN','s...','task.started','message','\x20to=','slice','task.send.delivered','getAllStatus','1861132HboEam','type','new_task','12049uLJXAz','connect','split','/events/','9307080mZEypD','CommHub\x20rejected\x20task','/mcp','completed','reply','Authorization','POST','task_id','\x20transport=','application/json,\x20text/event-stream','token','getReader','SSE\x20failed:\x20','network_id','duration_ms','processInbox','5262965yHzneZ','heartbeat\x20failed:\x20','\x20lifecycle=','<missing>','heartbeatInterval','task','SSE\x20reconnecting\x20in\x20','resumeId','\x20network_id=','inbox\x20error:\x20'];a0_0x1682=function(){return _0x395cbf;};return a0_0x1682();}function O(_0x40a3d0,_0x18f910=process.env.ANET_TASK_TRACE_FORMAT==='json'){const _0x498e27=a0_0xd9c652;if(_0x18f910)return JSON[_0x498e27(0x1ef)](_0x40a3d0);let _0x11f7f4=L(_0x40a3d0[_0x498e27(0x214)],_0x498e27(0x1e2)),_0x59e5fe=L(_0x40a3d0[_0x498e27(0x254)],'<pending>'),_0x5a5e3a=_0x40a3d0[_0x498e27(0x23a)]?'\x20error='+_0x40a3d0['error_code']+':'+(_0x40a3d0['error_message']??''):'';return'[commhub:task]\x20'+_0x40a3d0[_0x498e27(0x232)]+_0x498e27(0x235)+L(_0x40a3d0[_0x498e27(0x239)],'<unknown>')+_0x498e27(0x242)+L(_0x40a3d0[_0x498e27(0x21c)],_0x498e27(0x22d))+'\x20task_id='+_0x59e5fe+'\x20parent_task_id='+_0x11f7f4+_0x498e27(0x1e7)+L(_0x40a3d0[_0x498e27(0x1dc)],_0x498e27(0x22d))+_0x498e27(0x255)+_0x40a3d0[_0x498e27(0x229)]+_0x498e27(0x21f)+_0x40a3d0[_0x498e27(0x1dd)]+_0x498e27(0x1e1)+_0x40a3d0[_0x498e27(0x1fd)]+_0x5a5e3a;}function U(_0x47ef04){const _0x3c6ef3=a0_0xd9c652;return{'event':{'sending':'task.send.start','delivered':_0x3c6ef3(0x244),'failed':_0x3c6ef3(0x21e),'acked':_0x3c6ef3(0x204),'started':_0x3c6ef3(0x240),'replied':_0x3c6ef3(0x206),'expired':_0x3c6ef3(0x211)}[_0x47ef04[_0x3c6ef3(0x232)]],..._0x47ef04};}function j(_0xc02945){const _0x72e378=a0_0xd9c652;let _0x4c3240=_0xc02945?.[_0x72e378(0x254)]||_0xc02945?.[_0x72e378(0x227)]||_0xc02945?.['id'];if(_0x4c3240)return String(_0x4c3240);let _0x5b4409=_0xc02945?.[_0x72e378(0x1eb)]?.[0x0]?.[_0x72e378(0x20b)];if(typeof _0x5b4409!=='string')return null;try{let _0x3e8d8b=JSON['parse'](_0x5b4409);return _0x3e8d8b?.[_0x72e378(0x254)]||_0x3e8d8b?.[_0x72e378(0x227)]||_0x3e8d8b?.['id']||null;}catch{return null;}}async function X(_0x3ae0e3,_0x382010){const _0x2779fe=a0_0xd9c652;let _0x3334c7=_0x382010[_0x2779fe(0x21d)]??Date['now'],_0x5833ed=_0x3334c7(),_0x2dab2e=(_0x3beaa2,_0x65ec48,_0x3a8d6b,_0x19f8ef)=>{const _0x379a02=_0x2779fe;_0x382010['log'](O(U({'from_alias':_0x3ae0e3['fromAlias'],'to_alias':_0x3ae0e3[_0x379a02(0x230)],'task_id':_0x65ec48,'parent_task_id':_0x3ae0e3[_0x379a02(0x200)],'network_id':_0x3ae0e3['networkId'],'transport':_0x3ae0e3['transport'],'status':_0x3beaa2,'duration_ms':_0x3334c7()-_0x5833ed,'lifecycle_tracking':_0x3ae0e3[_0x379a02(0x223)],..._0x3a8d6b!==void 0x0?{'error_code':_0x19f8ef||_0x379a02(0x1ed),'error_message':N(_0x3a8d6b)}:{}})));};_0x2dab2e(_0x2779fe(0x1f7),null);try{let _0x10546f=await _0x382010['send'](),_0xdce332=j(_0x10546f);if(_0xdce332)_0x2dab2e(_0x2779fe(0x220),_0xdce332);else{if(_0x10546f?.['ok']===!0x1||_0x10546f?.[_0x2779fe(0x219)])_0x2dab2e(_0x2779fe(0x1ee),_0xdce332,_0x10546f?.[_0x2779fe(0x219)]||_0x2779fe(0x24e),'send_rejected');else _0x2dab2e(_0x2779fe(0x1ee),null,_0x2779fe(0x22a),_0x2779fe(0x222));}return _0x10546f;}catch(_0x4716f8){throw _0x2dab2e(_0x2779fe(0x1ee),null,_0x4716f8,_0x2779fe(0x1ed)),_0x4716f8;}}async function Y(_0x4a73cd,_0x5ccc27){const _0x3cd162=a0_0xd9c652;return X({'fromAlias':_0x4a73cd[_0x3cd162(0x20d)],'toAlias':_0x4a73cd[_0x3cd162(0x215)],'parentTaskId':_0x4a73cd['parentTaskId']||null,'networkId':_0x4a73cd['networkId']||null,'transport':'mcp_http','lifecycleTracking':_0x3cd162(0x234)},_0x5ccc27);}class $ extends a0_0x413238{['url'];['alias'];[a0_0xd9c652(0x1d9)];['agent'];['resumeId'];[a0_0xd9c652(0x1e3)];['reconnectDelay'];[a0_0xd9c652(0x228)];['sseAbort'];[a0_0xd9c652(0x1f2)]=!0x1;constructor(_0xae535b){const _0x1ad81d=a0_0xd9c652;super();if(this[_0x1ad81d(0x209)]=_0xae535b[_0x1ad81d(0x209)][_0x1ad81d(0x225)](/\/$/,''),this['alias']=_0xae535b[_0x1ad81d(0x215)],this['token']=_0xae535b[_0x1ad81d(0x1d9)],this[_0x1ad81d(0x22c)]=_0xae535b['agent']||_0x1ad81d(0x1f1),this['resumeId']=_0x1ad81d(0x1f8)+_0xae535b['alias']+'-'+Date[_0x1ad81d(0x21d)]()['toString'](0x24),this[_0x1ad81d(0x1e3)]=_0xae535b[_0x1ad81d(0x1e3)]??0x2bf20,this[_0x1ad81d(0x208)]=_0xae535b[_0x1ad81d(0x208)]??0xbb8,_0xae535b[_0x1ad81d(0x1f6)]!==!0x1)this[_0x1ad81d(0x24a)]();}[a0_0xd9c652(0x22f)](_0x18f18c){const _0x199eb4=a0_0xd9c652;console[_0x199eb4(0x22f)]('['+new Date()[_0x199eb4(0x205)]()[_0x199eb4(0x243)](0x0,0x8)+_0x199eb4(0x210)+this[_0x199eb4(0x215)]+']\x20'+_0x18f18c);}async[a0_0xd9c652(0x212)](_0x10baeb,_0x5a9d23){const _0x578254=a0_0xd9c652;let _0x5aacf8={'Content-Type':_0x578254(0x236),'Accept':_0x578254(0x256)};if(this[_0x578254(0x1d9)])_0x5aacf8[_0x578254(0x252)]=_0x578254(0x20f)+this[_0x578254(0x1d9)];let _0x2ed9b9=await(await fetch(this[_0x578254(0x209)]+_0x578254(0x24f),{'method':_0x578254(0x253),'headers':_0x5aacf8,'body':JSON[_0x578254(0x1ef)]({'jsonrpc':'2.0','id':Date[_0x578254(0x21d)](),'method':_0x578254(0x224),'params':{'name':_0x10baeb,'arguments':_0x5a9d23}})}))[_0x578254(0x20b)](),_0x55eb8b=_0x2ed9b9[_0x578254(0x1ec)](/data: (.+)/),_0x3b33e1=_0x55eb8b?JSON['parse'](_0x55eb8b[0x1]):JSON[_0x578254(0x1fb)](_0x2ed9b9),_0x3eea5e=_0x3b33e1?.['result']?.['content']?.[0x0]?.[_0x578254(0x20b)];return _0x3eea5e?JSON['parse'](_0x3eea5e):_0x3b33e1;}async['connect'](){const _0x1cbd65=a0_0xd9c652;if(this['running'])return;this[_0x1cbd65(0x1f2)]=!0x0,await this[_0x1cbd65(0x232)](_0x1cbd65(0x20e)),this[_0x1cbd65(0x22f)]('registered'),this[_0x1cbd65(0x228)]=setInterval(()=>{const _0x3c6f4f=_0x1cbd65;this[_0x3c6f4f(0x232)](_0x3c6f4f(0x20e))[_0x3c6f4f(0x226)](_0x5238ce=>this[_0x3c6f4f(0x22f)](_0x3c6f4f(0x1e0)+_0x5238ce['message']));},this[_0x1cbd65(0x1e3)]),this[_0x1cbd65(0x1f5)]();}async[a0_0xd9c652(0x1fe)](){const _0x29834d=a0_0xd9c652;if(this[_0x29834d(0x1f2)]=!0x1,this[_0x29834d(0x1f9)]?.['abort'](),this[_0x29834d(0x228)])clearInterval(this[_0x29834d(0x228)]);await this[_0x29834d(0x232)](_0x29834d(0x1fc))[_0x29834d(0x226)](()=>{}),this['log'](_0x29834d(0x21a));}async[a0_0xd9c652(0x23c)](_0x513c85,_0x26f062,_0x2fff3c=a0_0xd9c652(0x201)){const _0x5d9be6=a0_0xd9c652;return Y({'alias':_0x513c85,'fromAlias':this['alias']},{'log':_0x37c3e8=>console[_0x5d9be6(0x22f)](_0x37c3e8),'send':()=>this[_0x5d9be6(0x212)](_0x5d9be6(0x1f3),{'alias':_0x513c85,'task':_0x26f062,'priority':_0x2fff3c,'from_session':this['alias']})});}async[a0_0xd9c652(0x241)](_0x529e7f,_0x103bba){const _0x4de48e=a0_0xd9c652;return this['call']('send_message',{'alias':_0x529e7f,'message':_0x103bba,'from_session':this[_0x4de48e(0x215)]});}async[a0_0xd9c652(0x251)](_0x4dd0ad,_0x275023,_0x199b45=a0_0xd9c652(0x250)){const _0x2b9bfe=a0_0xd9c652;return this[_0x2b9bfe(0x212)](_0x2b9bfe(0x217),{'in_reply_to':_0x4dd0ad,'text':_0x275023,'status':_0x199b45});}async[a0_0xd9c652(0x232)](_0xf906e6,_0x4d3007){const _0x5b5249=a0_0xd9c652;return this[_0x5b5249(0x212)]('report_status',{'resume_id':this[_0x5b5249(0x1e6)],'alias':this['alias'],'status':_0xf906e6,'server':a0_0x19fcbe(),'hostname':a0_0x19fcbe(),'agent':this[_0x5b5249(0x22c)],'project_dir':process[_0x5b5249(0x237)](),..._0x4d3007});}async[a0_0xd9c652(0x245)](){const _0x58b17a=a0_0xd9c652;return this[_0x58b17a(0x212)](_0x58b17a(0x1fa),{});}async[a0_0xd9c652(0x231)](_0x4d235c,_0x3ac462){const _0xabba59=a0_0xd9c652;return this[_0xabba59(0x212)](_0xabba59(0x231),{'message':_0x4d235c,'filter_server':_0x3ac462?.[_0xabba59(0x22e)],'filter_status':_0x3ac462?.[_0xabba59(0x232)]});}async['connectSSE'](){const _0x25d0b7=a0_0xd9c652;let _0x46363e=encodeURIComponent(this[_0x25d0b7(0x215)]),_0x3a3649=this[_0x25d0b7(0x209)]+_0x25d0b7(0x24c)+_0x46363e,_0x4ba956=this[_0x25d0b7(0x208)];while(this[_0x25d0b7(0x1f2)]){try{this['sseAbort']=new AbortController();let _0x2827d6={'Accept':_0x25d0b7(0x20c)};if(this['token'])_0x2827d6[_0x25d0b7(0x252)]=_0x25d0b7(0x20f)+this[_0x25d0b7(0x1d9)];let _0x358634=await fetch(_0x3a3649,{'headers':_0x2827d6,'signal':this[_0x25d0b7(0x1f9)][_0x25d0b7(0x1ea)]});if(!_0x358634['ok']||!_0x358634[_0x25d0b7(0x23b)]){this[_0x25d0b7(0x22f)](_0x25d0b7(0x1db)+_0x358634[_0x25d0b7(0x232)]),await this[_0x25d0b7(0x23d)](_0x4ba956),_0x4ba956=Math[_0x25d0b7(0x1f0)](_0x4ba956*1.5,0xea60);continue;}_0x4ba956=this['reconnectDelay'];let _0x521814=_0x358634[_0x25d0b7(0x23b)][_0x25d0b7(0x1da)](),_0x26b5a2=new TextDecoder(),_0x4dbd41='';while(this[_0x25d0b7(0x1f2)]){let {done:_0x21040b,value:_0x532edb}=await _0x521814[_0x25d0b7(0x21b)]();if(_0x21040b)break;_0x4dbd41+=_0x26b5a2[_0x25d0b7(0x1f4)](_0x532edb,{'stream':!0x0});let _0x5e5089=_0x4dbd41[_0x25d0b7(0x24b)]('\x0a');_0x4dbd41=_0x5e5089['pop']()||'';for(let _0x4b2ec1 of _0x5e5089){if(!_0x4b2ec1[_0x25d0b7(0x213)]('data:\x20'))continue;try{let _0x373588=JSON[_0x25d0b7(0x1fb)](_0x4b2ec1['slice'](0x6));if(_0x373588['type']===_0x25d0b7(0x20a)){this[_0x25d0b7(0x22f)](_0x25d0b7(0x216)),this[_0x25d0b7(0x22b)](_0x25d0b7(0x20a));continue;}if(_0x373588[_0x25d0b7(0x247)]===_0x25d0b7(0x248)||_0x373588[_0x25d0b7(0x247)]===_0x25d0b7(0x203)||_0x373588['type']==='broadcast')await this[_0x25d0b7(0x1de)]();}catch{}}}}catch(_0x2b17ee){if(_0x2b17ee[_0x25d0b7(0x221)]==='AbortError')break;this[_0x25d0b7(0x22b)](_0x25d0b7(0x219),_0x2b17ee),this['log'](_0x25d0b7(0x1e9)+_0x2b17ee[_0x25d0b7(0x241)]);}if(this[_0x25d0b7(0x1f2)])this[_0x25d0b7(0x22b)](_0x25d0b7(0x21a)),this['log'](_0x25d0b7(0x1e5)+_0x4ba956/0x3e8+_0x25d0b7(0x23f)),await this[_0x25d0b7(0x23d)](_0x4ba956),_0x4ba956=Math[_0x25d0b7(0x1f0)](_0x4ba956*1.5,0xea60);}}async[a0_0xd9c652(0x1de)](){const _0x544542=a0_0xd9c652;try{let _0x6799b1=(await this[_0x544542(0x212)]('get_inbox',{'alias':this['alias'],'limit':0xa}))?.[_0x544542(0x202)]||[];for(let _0x1ec551 of _0x6799b1)await this[_0x544542(0x212)]('ack_inbox',{'alias':this[_0x544542(0x215)],'message_id':_0x1ec551['id']}),this[_0x544542(0x22f)]('←\x20'+_0x1ec551[_0x544542(0x233)]+':\x20'+_0x1ec551['content']['slice'](0x0,0x3c)),this['emit'](_0x544542(0x1e4),_0x1ec551),this['emit']('message',_0x1ec551);}catch(_0x5d0617){this['log'](_0x544542(0x1e8)+_0x5d0617['message']);}}[a0_0xd9c652(0x23d)](_0xeba498){return new Promise(_0x2c3b31=>setTimeout(_0x2c3b31,_0xeba498));}}var F=$;export{F as default,$ as CommHub};
1
+ const a0_0x578d01=a0_0x2995;(function(_0x43414a,_0xb7c6b7){const _0x3eeb2d=a0_0x2995,_0x582d8f=_0x43414a();while(!![]){try{const _0xaa9d=parseInt(_0x3eeb2d(0x15d))/0x1*(-parseInt(_0x3eeb2d(0x195))/0x2)+-parseInt(_0x3eeb2d(0x165))/0x3+parseInt(_0x3eeb2d(0x15f))/0x4+parseInt(_0x3eeb2d(0x160))/0x5*(-parseInt(_0x3eeb2d(0x175))/0x6)+-parseInt(_0x3eeb2d(0x169))/0x7*(parseInt(_0x3eeb2d(0x159))/0x8)+-parseInt(_0x3eeb2d(0x1c6))/0x9+parseInt(_0x3eeb2d(0x1cc))/0xa;if(_0xaa9d===_0xb7c6b7)break;else _0x582d8f['push'](_0x582d8f['shift']());}catch(_0x270cc2){_0x582d8f['push'](_0x582d8f['shift']());}}}(a0_0x1291,0xa80ac));import{EventEmitter as a0_0x4ca04f}from'events';import{hostname as a0_0x77ace9}from'os';var K=/(?:atok|ntok|utok|ghp|github_pat)_[A-Za-z0-9_-]+|Bearer\s+\S+/gi,L=(_0x47722a,_0x4cf4f3)=>(_0x47722a??_0x4cf4f3)[a0_0x578d01(0x1cf)](/[\r\n\x00-\x1f\x7f]/g,'\x20')['slice'](0x0,0xf0);function a0_0x1291(){const _0x6be679=['reply','/mcp','connectSSE','new_message','toString','type','send_message','idle','text/event-stream','\x20from=','7571709eUiRrg','connected','SSE\x20reconnecting\x20in\x20','split','task','reconnectDelay','39464240hOMhTM','read','s...','replace','data:\x20','from_session','min','application/json,\x20text/event-stream','SSE\x20failed:\x20','send_rejected','sdk','parentTaskId','status','message','decode','fromAlias','abort','emit','normal','networkId','\x20task_id=','8ZwcCNw','[commhub:task]\x20','application/json','autoConnect','1DcHHtj','alias','26828SkbzDV','3518115oDPPax','new_task','log','send_failed','task_id','2734686VgcfET','to_alias','\x20transport=','error_code','2908892UUwNqi','lifecycle_tracking','processInbox','send_task','sending','\x20duration_ms=','name','agent','task.started','slice','stringify','Authorization','6Gcynyp','delivered','task.replied','disconnect','catch','<pending>','url','now','task.expired','task.send.failed','[REDACTED]','\x20lifecycle=','server','content','CommHub\x20rejected\x20task','parent_task_id','send_reply','pop','message_id','missing_task_id','\x20parent_task_id=','network_id','call','/events/','<unknown>','<missing>','\x20network_id=','text','AbortError','task.send.start','token','completed','785578vBpncd','\x20to=','CommHub\x20response\x20omitted\x20task_id','task.send.delivered','error','ack_inbox','lifecycleTracking','unknown\x20error','task.ack','from_alias','sseAbort','registered','running',']\x20[commhub:','json','resumeId','sdk-','heartbeatTimer','string','connect','get_inbox','cwd','send','tools/call','heartbeatInterval','parse','2.0','Bearer\x20','broadcast','report_status','disconnected','startsWith','get_all_status','body','\x20error=','failed','heartbeat\x20failed:\x20','duration_ms','messages'];a0_0x1291=function(){return _0x6be679;};return a0_0x1291();}function N(_0x32f736){const _0x2df201=a0_0x578d01;return(_0x32f736 instanceof Error?_0x32f736[_0x2df201(0x1d9)]:String(_0x32f736??_0x2df201(0x19c)))[_0x2df201(0x1cf)](K,_0x2df201(0x17f))['replace'](/[\r\n\x00-\x1f\x7f]/g,'\x20')[_0x2df201(0x172)](0x0,0xf0);}function O(_0x2909a1,_0x35e9bd=process.env.ANET_TASK_TRACE_FORMAT===a0_0x578d01(0x1a3)){const _0x150f40=a0_0x578d01;if(_0x35e9bd)return JSON[_0x150f40(0x173)](_0x2909a1);let _0x113362=L(_0x2909a1[_0x150f40(0x184)],_0x150f40(0x18e)),_0x10c1c9=L(_0x2909a1[_0x150f40(0x164)],_0x150f40(0x17a)),_0x2481af=_0x2909a1[_0x150f40(0x168)]?_0x150f40(0x1b7)+_0x2909a1[_0x150f40(0x168)]+':'+(_0x2909a1['error_message']??''):'';return _0x150f40(0x15a)+_0x2909a1[_0x150f40(0x1d8)]+_0x150f40(0x1c5)+L(_0x2909a1[_0x150f40(0x19e)],_0x150f40(0x18d))+_0x150f40(0x196)+L(_0x2909a1[_0x150f40(0x166)],_0x150f40(0x18d))+_0x150f40(0x1e0)+_0x10c1c9+_0x150f40(0x189)+_0x113362+_0x150f40(0x18f)+L(_0x2909a1[_0x150f40(0x18a)],'<unknown>')+_0x150f40(0x167)+_0x2909a1['transport']+_0x150f40(0x16e)+_0x2909a1[_0x150f40(0x1ba)]+_0x150f40(0x180)+_0x2909a1[_0x150f40(0x16a)]+_0x2481af;}function U(_0x4be2a4){const _0x590685=a0_0x578d01;return{'event':{'sending':_0x590685(0x192),'delivered':_0x590685(0x198),'failed':_0x590685(0x17e),'acked':_0x590685(0x19d),'started':_0x590685(0x171),'replied':_0x590685(0x177),'expired':_0x590685(0x17d)}[_0x4be2a4[_0x590685(0x1d8)]],..._0x4be2a4};}function j(_0x4e5e8b){const _0x11f83c=a0_0x578d01;let _0x57538e=_0x4e5e8b?.['task_id']||_0x4e5e8b?.[_0x11f83c(0x187)]||_0x4e5e8b?.['id'];if(_0x57538e)return String(_0x57538e);let _0x5e135c=_0x4e5e8b?.[_0x11f83c(0x182)]?.[0x0]?.[_0x11f83c(0x190)];if(typeof _0x5e135c!==_0x11f83c(0x1a7))return null;try{let _0x10e102=JSON[_0x11f83c(0x1ae)](_0x5e135c);return _0x10e102?.['task_id']||_0x10e102?.[_0x11f83c(0x187)]||_0x10e102?.['id']||null;}catch{return null;}}async function X(_0x114989,_0x6b1ef6){const _0x34caac=a0_0x578d01;let _0x4b3f82=_0x6b1ef6['now']??Date[_0x34caac(0x17c)],_0x178b6=_0x4b3f82(),_0xcf4727=(_0xa14e56,_0x315579,_0x514f24,_0x1f4945)=>{const _0x5761f5=_0x34caac;_0x6b1ef6['log'](O(U({'from_alias':_0x114989[_0x5761f5(0x1db)],'to_alias':_0x114989['toAlias'],'task_id':_0x315579,'parent_task_id':_0x114989['parentTaskId'],'network_id':_0x114989[_0x5761f5(0x1df)],'transport':_0x114989['transport'],'status':_0xa14e56,'duration_ms':_0x4b3f82()-_0x178b6,'lifecycle_tracking':_0x114989[_0x5761f5(0x19b)],..._0x514f24!==void 0x0?{'error_code':_0x1f4945||_0x5761f5(0x163),'error_message':N(_0x514f24)}:{}})));};_0xcf4727(_0x34caac(0x16d),null);try{let _0x1a5671=await _0x6b1ef6[_0x34caac(0x1ab)](),_0xae4e5e=j(_0x1a5671);if(_0xae4e5e)_0xcf4727(_0x34caac(0x176),_0xae4e5e);else{if(_0x1a5671?.['ok']===!0x1||_0x1a5671?.[_0x34caac(0x199)])_0xcf4727(_0x34caac(0x1b8),_0xae4e5e,_0x1a5671?.['error']||_0x34caac(0x183),_0x34caac(0x1d5));else _0xcf4727(_0x34caac(0x1b8),null,_0x34caac(0x197),_0x34caac(0x188));}return _0x1a5671;}catch(_0x410f93){throw _0xcf4727(_0x34caac(0x1b8),null,_0x410f93,_0x34caac(0x163)),_0x410f93;}}async function Y(_0x2025f6,_0x42b8d4){const _0x505325=a0_0x578d01;return X({'fromAlias':_0x2025f6['fromAlias'],'toAlias':_0x2025f6[_0x505325(0x15e)],'parentTaskId':_0x2025f6[_0x505325(0x1d7)]||null,'networkId':_0x2025f6[_0x505325(0x1df)]||null,'transport':'mcp_http','lifecycleTracking':'not_tracked'},_0x42b8d4);}function a0_0x2995(_0xc70572,_0x50ad13){_0xc70572=_0xc70572-0x159;const _0x129162=a0_0x1291();let _0x2995a1=_0x129162[_0xc70572];return _0x2995a1;}class $ extends a0_0x4ca04f{[a0_0x578d01(0x17b)];[a0_0x578d01(0x15e)];[a0_0x578d01(0x193)];['agent'];[a0_0x578d01(0x1a4)];['heartbeatInterval'];[a0_0x578d01(0x1cb)];[a0_0x578d01(0x1a6)];[a0_0x578d01(0x19f)];[a0_0x578d01(0x1a1)]=!0x1;constructor(_0x188987){const _0x5a7379=a0_0x578d01;super();if(this[_0x5a7379(0x17b)]=_0x188987[_0x5a7379(0x17b)]['replace'](/\/$/,''),this['alias']=_0x188987[_0x5a7379(0x15e)],this[_0x5a7379(0x193)]=_0x188987['token'],this[_0x5a7379(0x170)]=_0x188987[_0x5a7379(0x170)]||_0x5a7379(0x1d6),this[_0x5a7379(0x1a4)]=_0x5a7379(0x1a5)+_0x188987[_0x5a7379(0x15e)]+'-'+Date[_0x5a7379(0x17c)]()[_0x5a7379(0x1c0)](0x24),this[_0x5a7379(0x1ad)]=_0x188987[_0x5a7379(0x1ad)]??0x2bf20,this[_0x5a7379(0x1cb)]=_0x188987[_0x5a7379(0x1cb)]??0xbb8,_0x188987[_0x5a7379(0x15c)]!==!0x1)this[_0x5a7379(0x1a8)]();}[a0_0x578d01(0x162)](_0x184908){const _0x38a9b2=a0_0x578d01;console['log']('['+new Date()['toTimeString']()[_0x38a9b2(0x172)](0x0,0x8)+_0x38a9b2(0x1a2)+this[_0x38a9b2(0x15e)]+']\x20'+_0x184908);}async['call'](_0x589222,_0x1ebaf2){const _0x2e94ae=a0_0x578d01;let _0x21eb65={'Content-Type':_0x2e94ae(0x15b),'Accept':_0x2e94ae(0x1d3)};if(this[_0x2e94ae(0x193)])_0x21eb65['Authorization']=_0x2e94ae(0x1b0)+this[_0x2e94ae(0x193)];let _0x3e9a37=await(await fetch(this['url']+_0x2e94ae(0x1bd),{'method':'POST','headers':_0x21eb65,'body':JSON[_0x2e94ae(0x173)]({'jsonrpc':_0x2e94ae(0x1af),'id':Date[_0x2e94ae(0x17c)](),'method':_0x2e94ae(0x1ac),'params':{'name':_0x589222,'arguments':_0x1ebaf2}})}))[_0x2e94ae(0x190)](),_0x1fadf1=_0x3e9a37['match'](/data: (.+)/),_0xd155b3=_0x1fadf1?JSON[_0x2e94ae(0x1ae)](_0x1fadf1[0x1]):JSON[_0x2e94ae(0x1ae)](_0x3e9a37),_0x4491f3=_0xd155b3?.['result']?.[_0x2e94ae(0x182)]?.[0x0]?.['text'];return _0x4491f3?JSON[_0x2e94ae(0x1ae)](_0x4491f3):_0xd155b3;}async[a0_0x578d01(0x1a8)](){const _0x158a6c=a0_0x578d01;if(this[_0x158a6c(0x1a1)])return;this['running']=!0x0,await this['status'](_0x158a6c(0x1c3)),this[_0x158a6c(0x162)](_0x158a6c(0x1a0)),this[_0x158a6c(0x1a6)]=setInterval(()=>{const _0x32bf66=_0x158a6c;this['status'](_0x32bf66(0x1c3))['catch'](_0x4633ad=>this[_0x32bf66(0x162)](_0x32bf66(0x1b9)+_0x4633ad['message']));},this[_0x158a6c(0x1ad)]),this[_0x158a6c(0x1be)]();}async[a0_0x578d01(0x178)](){const _0x21a1d6=a0_0x578d01;if(this[_0x21a1d6(0x1a1)]=!0x1,this[_0x21a1d6(0x19f)]?.[_0x21a1d6(0x1dc)](),this[_0x21a1d6(0x1a6)])clearInterval(this[_0x21a1d6(0x1a6)]);await this[_0x21a1d6(0x1d8)]('offline')[_0x21a1d6(0x179)](()=>{}),this[_0x21a1d6(0x162)]('disconnected');}async[a0_0x578d01(0x1ab)](_0x391fad,_0x56fb72,_0x1e7b0d=a0_0x578d01(0x1de)){const _0x5d2229=a0_0x578d01;return Y({'alias':_0x391fad,'fromAlias':this['alias']},{'log':_0x3123cf=>console[_0x5d2229(0x162)](_0x3123cf),'send':()=>this[_0x5d2229(0x18b)](_0x5d2229(0x16c),{'alias':_0x391fad,'task':_0x56fb72,'priority':_0x1e7b0d,'from_session':this[_0x5d2229(0x15e)]})});}async[a0_0x578d01(0x1d9)](_0x1f01b5,_0x15ef83){const _0xc2f2fb=a0_0x578d01;return this[_0xc2f2fb(0x18b)](_0xc2f2fb(0x1c2),{'alias':_0x1f01b5,'message':_0x15ef83,'from_session':this[_0xc2f2fb(0x15e)]});}async[a0_0x578d01(0x1bc)](_0x124622,_0x30f967,_0x1c91bb=a0_0x578d01(0x194)){const _0x233ee7=a0_0x578d01;return this[_0x233ee7(0x18b)](_0x233ee7(0x185),{'in_reply_to':_0x124622,'text':_0x30f967,'status':_0x1c91bb});}async[a0_0x578d01(0x1d8)](_0x442b00,_0x533d87){const _0x460b07=a0_0x578d01;return this[_0x460b07(0x18b)](_0x460b07(0x1b2),{'resume_id':this['resumeId'],'alias':this[_0x460b07(0x15e)],'status':_0x442b00,'server':a0_0x77ace9(),'hostname':a0_0x77ace9(),'agent':this[_0x460b07(0x170)],'project_dir':process[_0x460b07(0x1aa)](),..._0x533d87});}async['getAllStatus'](){const _0x4621b7=a0_0x578d01;return this[_0x4621b7(0x18b)](_0x4621b7(0x1b5),{});}async[a0_0x578d01(0x1b1)](_0x3bcbf0,_0xd235ce){const _0x5548f7=a0_0x578d01;return this[_0x5548f7(0x18b)]('broadcast',{'message':_0x3bcbf0,'filter_server':_0xd235ce?.[_0x5548f7(0x181)],'filter_status':_0xd235ce?.[_0x5548f7(0x1d8)]});}async[a0_0x578d01(0x1be)](){const _0x4408a5=a0_0x578d01;let _0x2eda02=encodeURIComponent(this['alias']),_0x579e19=this[_0x4408a5(0x17b)]+_0x4408a5(0x18c)+_0x2eda02,_0x15cf70=this[_0x4408a5(0x1cb)];while(this[_0x4408a5(0x1a1)]){try{this[_0x4408a5(0x19f)]=new AbortController();let _0x218599={'Accept':_0x4408a5(0x1c4)};if(this[_0x4408a5(0x193)])_0x218599[_0x4408a5(0x174)]=_0x4408a5(0x1b0)+this['token'];let _0x245cfe=await fetch(_0x579e19,{'headers':_0x218599,'signal':this[_0x4408a5(0x19f)]['signal']});if(!_0x245cfe['ok']||!_0x245cfe[_0x4408a5(0x1b6)]){this['log'](_0x4408a5(0x1d4)+_0x245cfe[_0x4408a5(0x1d8)]),await this['sleep'](_0x15cf70),_0x15cf70=Math[_0x4408a5(0x1d2)](_0x15cf70*1.5,0xea60);continue;}_0x15cf70=this['reconnectDelay'];let _0x45aa9f=_0x245cfe[_0x4408a5(0x1b6)]['getReader'](),_0x3c9276=new TextDecoder(),_0x4f393f='';while(this['running']){let {done:_0x264062,value:_0x21d2db}=await _0x45aa9f[_0x4408a5(0x1cd)]();if(_0x264062)break;_0x4f393f+=_0x3c9276[_0x4408a5(0x1da)](_0x21d2db,{'stream':!0x0});let _0x2c611a=_0x4f393f[_0x4408a5(0x1c9)]('\x0a');_0x4f393f=_0x2c611a[_0x4408a5(0x186)]()||'';for(let _0x22cd2d of _0x2c611a){if(!_0x22cd2d[_0x4408a5(0x1b4)](_0x4408a5(0x1d0)))continue;try{let _0x1e6b4a=JSON[_0x4408a5(0x1ae)](_0x22cd2d['slice'](0x6));if(_0x1e6b4a[_0x4408a5(0x1c1)]===_0x4408a5(0x1c7)){this[_0x4408a5(0x162)]('SSE\x20connected'),this[_0x4408a5(0x1dd)]('connected');continue;}if(_0x1e6b4a[_0x4408a5(0x1c1)]===_0x4408a5(0x161)||_0x1e6b4a['type']===_0x4408a5(0x1bf)||_0x1e6b4a[_0x4408a5(0x1c1)]===_0x4408a5(0x1b1))await this[_0x4408a5(0x16b)]();}catch{}}}}catch(_0x39c530){if(_0x39c530[_0x4408a5(0x16f)]===_0x4408a5(0x191))break;this['emit']('error',_0x39c530),this[_0x4408a5(0x162)]('SSE\x20error:\x20'+_0x39c530[_0x4408a5(0x1d9)]);}if(this[_0x4408a5(0x1a1)])this['emit'](_0x4408a5(0x1b3)),this[_0x4408a5(0x162)](_0x4408a5(0x1c8)+_0x15cf70/0x3e8+_0x4408a5(0x1ce)),await this['sleep'](_0x15cf70),_0x15cf70=Math[_0x4408a5(0x1d2)](_0x15cf70*1.5,0xea60);}}async['processInbox'](){const _0x14ece0=a0_0x578d01;try{let _0x36c255=(await this[_0x14ece0(0x18b)](_0x14ece0(0x1a9),{'alias':this[_0x14ece0(0x15e)],'limit':0xa}))?.[_0x14ece0(0x1bb)]||[];for(let _0x14fb1a of _0x36c255)await this[_0x14ece0(0x18b)](_0x14ece0(0x19a),{'alias':this['alias'],'message_id':_0x14fb1a['id']}),this['log']('←\x20'+_0x14fb1a[_0x14ece0(0x1d1)]+':\x20'+_0x14fb1a[_0x14ece0(0x182)]['slice'](0x0,0x3c)),this[_0x14ece0(0x1dd)](_0x14ece0(0x1ca),_0x14fb1a),this[_0x14ece0(0x1dd)](_0x14ece0(0x1d9),_0x14fb1a);}catch(_0x3fc259){this[_0x14ece0(0x162)]('inbox\x20error:\x20'+_0x3fc259[_0x14ece0(0x1d9)]);}}['sleep'](_0x251902){return new Promise(_0x5cd14d=>setTimeout(_0x5cd14d,_0x251902));}}var F=$;export{F as default,$ as CommHub};
@@ -10,7 +10,7 @@ export type DaemonCapabilityRow = {
10
10
  readonly create_capability_observed_ms_ago?: number;
11
11
  };
12
12
  export type CapabilityView =
13
- /** hub 上根本没有这一格 —— 旧 daemon(preview.55 之前)不上报。 */
13
+ /** hub 上根本没有这一格 —— 旧 daemon(agent-node ≤ 2.5.0-preview.54)不上报。 */
14
14
  {
15
15
  readonly kind: "never-reported";
16
16
  readonly line: string;
@@ -75,3 +75,36 @@ export type CapabilityFetchFailure = {
75
75
  * 尾巴统一带上「本地清单不需要网络」—— 那是这条命令没有整个失败的原因,
76
76
  * 用户看到「查不到」时最先怕的就是"上面那些是不是也不可信了"。 */
77
77
  export declare function describeFetchFailure(f: CapabilityFetchFailure): string;
78
+ /**
79
+ * `create_node` 被拒时 hub 返回的形状(`server/src/tools.ts` 的
80
+ * `daemon_cannot_create_nodes` 分支)。
81
+ *
82
+ * 🔴 它和 `DaemonCapabilityRow` **不是同一个形状**,所以单独一个入口 ——
83
+ * 在调用方做一次字段映射,等于开出**第二个理解这些字段含义的地方**。
84
+ */
85
+ export type CreateRejectionPayload = {
86
+ readonly error?: string;
87
+ readonly blocked_reason?: string;
88
+ /** 🔴 已经是**到现在为止**的绝对年龄(hub 在拒绝时把心跳那一段补上了)。
89
+ * null = 补不出来 —— 见 `capability_age`。 */
90
+ readonly capability_observed_ms_ago?: number | null;
91
+ readonly capability_age?: string;
92
+ };
93
+ /**
94
+ * 把拒绝载荷渲染成人能读的一段。不是这类拒绝就返回 null,调用方走它原来的通用文案。
95
+ *
96
+ * 🔴 **这里没有第二份年龄公式。** `describeCapability` 里那段
97
+ * `(now − last_seen_at) + observed` 是给「列 daemon」那条路用的;
98
+ * 拒绝这条路上,**hub 已经算好了绝对年龄**(它手里有心跳时间)。
99
+ * 所以这里只做格式化,复用同一个 `formatAge`。
100
+ * 两份年龄算法一旦并排存在,出现分歧时不会有任何东西红。
101
+ *
102
+ * 🔴 **没有新增第六种 kind**,这是刻意的:
103
+ * `kind` 是**呈现分桶**(禁不禁用、什么色调),不是完整语义。
104
+ * 「daemon 没报年龄」和「hub 没有它的心跳时间」在 UI 上要的处理**完全一样**
105
+ * (都是 blocked、都给不出年龄),差别在**说哪句话** —— 那放在 `line` 里。
106
+ * 反过来,给共享联合加第六个值,会让所有既有消费者的映射多一个
107
+ * 它们没写过的分支,而**落进 default 的那一支通常是"看起来最正常"的那个**。
108
+ * 区分没有丢:两种 unknown 的 `line` 逐字不同,并有测试钉住。
109
+ */
110
+ export declare function describeCreateRejection(payload: CreateRejectionPayload): CapabilityView | null;
@@ -1,12 +1,12 @@
1
- var K=Object.freeze({anet_bin_identity:{explain:"该路径不是 anet 的包内 bin(若设过 ANET_BIN_ABS,先 unset 再重装)",command:"npm i -g @sleep2agi/agent-network"},anet_bin_source:{explain:"pin 没有可信来源。在该机器上写信任根 —— 两段都要 sudo,少一个 && 就会断链",command:`sudo install -d -m 755 /etc/anet-daemon && printf 'ANET_BIN_ABS=%s
2
- ' "$(command -v anet)" | sudo tee /etc/anet-daemon/path.conf`},anet_bin_permission:{explain:"该二进制 group/other 可写。一行就能修",command:'chmod go-w "$(command -v anet)"'},anet_bin_shape:{explain:"pin 的路径形态不合法(相对路径,或路径里含软链)。取它的 realpath 重新写进 path.conf",command:'readlink -f "$(command -v anet)"'},anet_bin_unknown:{explain:"daemon 没能给出类别(例如安装后二进制被换过、校验和不符)。只能看该机器的 daemon 日志取原文",command:null},anet_bin_pin_unresolved:{explain:"旧版 daemon(preview.40 及更早)只报这一个笼统原因。升级该机器的 agent-node 并重启 daemon 后才能拿到具体类别",command:null}});function H(c){if(!Number.isFinite(c)||c<0)return"?";if(c<1000)return`${Math.round(c)}ms 前`;let j=Math.floor(c/1000);if(j<60)return`${j}s 前`;let q=Math.floor(j/60);if(q<60)return`${q}m 前`;let k=Math.floor(q/60);if(k<24)return`${k}h 前`;return`${Math.floor(k/24)}d 前`}function P(c){if(typeof c==="number"&&Number.isFinite(c))return c;if(typeof c==="string"){let j=Date.parse(c);if(Number.isFinite(j))return j}return}function T(c,j){if(typeof c.can_create_nodes!=="boolean")return{kind:"never-reported",line:`创建能力:未知 —— 这台 daemon 没报过这一格。
3
- `+" (agent-node 版本早于 preview.55;升级后必须重启 daemon 才生效)"};let q=P(c.last_seen_at),k=c.create_capability_observed_ms_ago,z=q!==void 0&&typeof k==="number"&&Number.isFinite(k)?Math.max(0,j-q)+k:void 0;if(c.can_create_nodes){if(z===void 0)return{kind:"ready-age-unknown",line:`创建能力:可用
4
- `+" ⚠ 不知道是什么时候测的 —— 该版本开机只算一次。重启它,或升级。"};return{kind:"ready",ageMs:z,line:`创建能力:可用(${H(z)}测)`}}let D=c.create_nodes_blocked_reason||"anet_bin_unknown",C=K[D]??{explain:`未知原因代码 ${D} —— 本 CLI 可能比那台机器的 anet 旧,升级本机 anet 或看它的 daemon 日志`,command:null},J=`完整原文只在那台机器的 daemon 日志里。
5
- (它带真实机器路径,按设计不上报)`,G=[` 原因:${C.explain}`,C.command?` 修法(可整行粘贴):${C.command}`:" 修法:没有单条命令能修,见上。",` ${J}`].join(`
6
- `);if(z===void 0)return{kind:"blocked-age-unknown",line:`创建能力:**不可用**(${D})
1
+ var J=Object.freeze({anet_bin_identity:{explain:"该路径不是 anet 的包内 bin(若设过 ANET_BIN_ABS,先 unset 再重装)",command:"npm i -g @sleep2agi/agent-network"},anet_bin_source:{explain:"pin 没有可信来源。在该机器上写信任根 —— 两段都要 sudo,少一个 && 就会断链",command:`sudo install -d -m 755 /etc/anet-daemon && printf 'ANET_BIN_ABS=%s
2
+ ' "$(command -v anet)" | sudo tee /etc/anet-daemon/path.conf`},anet_bin_permission:{explain:"该二进制 group/other 可写。一行就能修",command:'chmod go-w "$(command -v anet)"'},anet_bin_shape:{explain:"pin 的路径形态不合法(相对路径,或路径里含软链)。取它的 realpath 重新写进 path.conf",command:'readlink -f "$(command -v anet)"'},anet_bin_unknown:{explain:"daemon 没能给出类别(例如安装后二进制被换过、校验和不符)。只能看该机器的 daemon 日志取原文",command:null},anet_bin_pin_unresolved:{explain:"旧版 daemon(agent-node 2.5.0-preview.40 及更早)只报这一个笼统原因。升级该机器的 agent-node 并重启 daemon 后才能拿到具体类别",command:null}});function G(c){if(!Number.isFinite(c)||c<0)return"?";if(c<1000)return`${Math.round(c)}ms 前`;let j=Math.floor(c/1000);if(j<60)return`${j}s 前`;let k=Math.floor(j/60);if(k<60)return`${k}m 前`;let u=Math.floor(k/60);if(u<24)return`${u}h 前`;return`${Math.floor(u/24)}d 前`}function P(c){if(typeof c==="number"&&Number.isFinite(c))return c;if(typeof c==="string"){let j=Date.parse(c);if(Number.isFinite(j))return j}return}function Q(c,j){if(typeof c.can_create_nodes!=="boolean")return{kind:"never-reported",line:`创建能力:未知 —— 这台 daemon 没报过这一格。
3
+ `+" (agent-node 版本早于 preview.55;升级后必须重启 daemon 才生效)"};let k=P(c.last_seen_at),u=c.create_capability_observed_ms_ago,q=k!==void 0&&typeof u==="number"&&Number.isFinite(u)?Math.max(0,j-k)+u:void 0;if(c.can_create_nodes){if(q===void 0)return{kind:"ready-age-unknown",line:`创建能力:可用
4
+ `+" ⚠ 不知道是什么时候测的 —— 该版本开机只算一次。重启它,或升级。"};return{kind:"ready",ageMs:q,line:`创建能力:可用(${G(q)}测)`}}let C=c.create_nodes_blocked_reason||"anet_bin_unknown",z=J[C]??{explain:`未知原因代码 ${C} —— 本 CLI 可能比那台机器的 anet 旧,升级本机 anet 或看它的 daemon 日志`,command:null},K=`完整原文只在那台机器的 daemon 日志里。
5
+ (它带真实机器路径,按设计不上报)`,H=[` 原因:${z.explain}`,z.command?` 修法(可整行粘贴):${z.command}`:" 修法:没有单条命令能修,见上。",` ${K}`].join(`
6
+ `);if(q===void 0)return{kind:"blocked-age-unknown",line:`创建能力:**不可用**(${C})
7
7
  ⚠ 不知道是什么时候测的 —— 该 daemon 版本开机只算一次,之后不再重测。
8
- ${G}`,fix:C};return{kind:"blocked",ageMs:z,line:`创建能力:**不可用**(${D},${H(z)}测)
9
- ${G}`,fix:C}}function U(c){switch(c.why){case"no-hub":return`创建能力:查不到 —— 本机还没配 hub 地址。
8
+ ${H}`,fix:z};return{kind:"blocked",ageMs:q,line:`创建能力:**不可用**(${C},${G(q)}测)
9
+ ${H}`,fix:z}}function T(c){switch(c.why){case"no-hub":return`创建能力:查不到 —— 本机还没配 hub 地址。
10
10
  `+" 跑 anet init,或这次带上 --hub <url>"+`
11
11
  (本地清单不需要网络,上面那些信息仍然有效)`;case"unauthorized":return`创建能力:查不到 —— hub 拒绝了本机的身份(HTTP ${c.status})。
12
12
  `+" hub 是通的,要修的是**凭据**不是网络:跑 anet login"+`
@@ -15,4 +15,7 @@ ${G}`,fix:C}}function U(c){switch(c.why){case"no-hub":return`创建能力:查不
15
15
  (本地清单不需要网络,上面那些信息仍然有效)`;case"bad-body":return`创建能力:查不到 —— hub 的应答读不懂。
16
16
  `+" 多半是 hub 比本机 CLI 旧,升级 hub 或降本机 anet"+`
17
17
  (本地清单不需要网络,上面那些信息仍然有效)`;case"unreachable":return"创建能力:查不到 —— 连不上 hub"+(c.detail?`(${c.detail})`:"")+"。"+`
18
- (本地清单不需要网络,上面那些信息仍然有效)`}}export{H as formatAge,U as describeFetchFailure,T as describeCapability};
18
+ (本地清单不需要网络,上面那些信息仍然有效)`}}function U(c){if(c?.error!=="daemon_cannot_create_nodes")return null;let j=c.blocked_reason||"anet_bin_unknown",k=J[j]??{explain:`未知原因代码 ${j} —— 本端可能比那台机器的 anet 旧,升级本端或看它的 daemon 日志`,command:null},u="完整原文(含真实路径)只在那台机器的 daemon 日志里 —— 它带机器路径,按设计不上报。",D=[`原因:${k.explain}`,k.command?`修法(可整行粘贴):${k.command}`:"修法:没有单条命令能修,见上。",u].join(`
19
+ `),q=c.capability_observed_ms_ago;if(c.capability_age==="known"&&typeof q==="number"&&Number.isFinite(q)&&q>=0)return{kind:"blocked",ageMs:q,line:`这台 daemon 报告它现在**建不了节点**(${j},${G(q)}测)
20
+ ${D}`,fix:k};let z=c.capability_age==="unknown_no_heartbeat_time"?"**它报了这个判断,但 hub 这边没有它的心跳时间**,所以算不出是多久以前的 —— 先看这台 daemon 是否还在线,别急着升级它":"**不知道是多久以前测的** —— 该 daemon 版本在开机时算一次就不再重测,这个结论可能早就过期了。重启或升级它";return{kind:"blocked-age-unknown",line:`这台 daemon 报告它现在**建不了节点**(${j});${z}
21
+ ${D}`,fix:k}}export{G as formatAge,T as describeFetchFailure,U as describeCreateRejection,Q as describeCapability};