@sleep2agi/agent-network 2.3.0-preview.35 → 2.3.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.
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env bun
2
- const a0_0x59a7e7=a0_0x3ac4;function a0_0x3ac4(_0x5052af,_0x4ceea3){_0x5052af=_0x5052af-0x176;const _0x4c9737=a0_0x4c97();let _0x3ac4ac=_0x4c9737[_0x5052af];return _0x3ac4ac;}(function(_0x2678a8,_0x1e5a10){const _0x41a1fa=a0_0x3ac4,_0xf5dda8=_0x2678a8();while(!![]){try{const _0x1f9874=-parseInt(_0x41a1fa(0x1b4))/0x1+parseInt(_0x41a1fa(0x1e7))/0x2+parseInt(_0x41a1fa(0x17d))/0x3+-parseInt(_0x41a1fa(0x1b3))/0x4+-parseInt(_0x41a1fa(0x1c3))/0x5+parseInt(_0x41a1fa(0x1be))/0x6*(-parseInt(_0x41a1fa(0x1ae))/0x7)+parseInt(_0x41a1fa(0x19f))/0x8;if(_0x1f9874===_0x1e5a10)break;else _0xf5dda8['push'](_0xf5dda8['shift']());}catch(_0x304cdc){_0xf5dda8['push'](_0xf5dda8['shift']());}}}(a0_0x4c97,0x490ef));import{readFileSync as a0_0x442ed9,existsSync as a0_0x398191}from'fs';import{randomUUID as a0_0x2726dc}from'crypto';import{join as a0_0x1576ba}from'path';import{hostname as a0_0x1ca798}from'os';import{execSync as a0_0x136732}from'child_process';function B(_0x4f94ad){const _0x2aee39=a0_0x3ac4;let _0x5fda6d=_0x4f94ad['replace'](/[^a-zA-Z0-9\-_]/g,'-');return _0x5fda6d===''?_0x2aee39(0x1fe):_0x5fda6d;}import{Server as a0_0x129abd}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0x93ee58}from'@modelcontextprotocol/sdk/server/stdio.js';import{ListToolsRequestSchema as a0_0x317cc4,CallToolRequestSchema as a0_0x395ef7}from'@modelcontextprotocol/sdk/types.js';function T(_0x5d3a5a){const _0x1451c3=a0_0x3ac4;if(!a0_0x398191(_0x5d3a5a))return;for(let _0x13be43 of a0_0x442ed9(_0x5d3a5a,'utf-8')['split']('\x0a')){let _0x4c6dfd=_0x13be43[_0x1451c3(0x204)]();if(!_0x4c6dfd||_0x4c6dfd[_0x1451c3(0x1df)]('#'))continue;let _0x5612e6=_0x4c6dfd[_0x1451c3(0x212)]('=');if(_0x5612e6<0x0)continue;let _0x4753eb=_0x4c6dfd[_0x1451c3(0x1a9)](0x0,_0x5612e6)[_0x1451c3(0x204)](),_0x1045f7=_0x4c6dfd['slice'](_0x5612e6+0x1)[_0x1451c3(0x204)]()['replace'](/^["']|["']$/g,'');if(!process.env[_0x4753eb])process.env[_0x4753eb]=_0x1045f7;}}var C=process.env.HOME||'~',r=a0_0x1576ba(C,a0_0x59a7e7(0x20a));T(a0_0x1576ba(r,a0_0x59a7e7(0x184)));var H=B(process['cwd']());T(a0_0x1576ba(r,H,'.env'));function E(){const _0x5b6e87=a0_0x59a7e7;try{return a0_0x136732(_0x5b6e87(0x1cd),{'encoding':_0x5b6e87(0x1bb),'timeout':0x7d0})[_0x5b6e87(0x204)]();}catch{return'';}}function _(){const _0x15b08b=a0_0x59a7e7;try{let _0x1a0742=a0_0x1576ba(C,'.anet',_0x15b08b(0x1e3));if(a0_0x398191(_0x1a0742))return JSON[_0x15b08b(0x20b)](a0_0x442ed9(_0x1a0742,_0x15b08b(0x1bb)));}catch{}return{};}var R=_(),Y=process.env.COMMHUB_URL||R[a0_0x59a7e7(0x1c1)]||a0_0x59a7e7(0x1cf),j=process.env.COMMHUB_TMUX||E();function a0_0x4c97(){const _0x353fe7=['send_task','[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20','normal','string','type','MCP\x20stdio\x20connected','initialize','alias','cancelled','delete','replied','/mcp','ready\x20—\x20waiting\x20for\x20events','ENV:\x20URL=','inbox_count','unknown','priority','send_reply','from_session','min','commhub_send_task','trim','low','unattributed-','\x20/\x20hostname=','stdin','get','.claude/channels/commhub','parse',')\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat','Reply\x20text\x20/\x20result\x20summary','completed','Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates','send_message','function','indexOf','\x20priority=','high','Progress\x200-100','offline','get_all_status','result','SSE\x20stream\x20ended,\x20reconnecting...','POST','/events/','Authorization','notifications/claude/channel','You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','write','1761519bCuMAU','token','0.3.0','Target\x20session\x20alias','\x20CWD=','2025-03-26','content','.env','params','set','warning:\x20could\x20not\x20register:\x20','These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.','\x20no\x20longer\x20exists\x20(kill-0\x20ESRCH)\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat','split','new_task','now','number','cwd','Reply\x20to\x20a\x20CommHub\x20task.\x20Use\x20status=\x22completed\x22\x20(terminal)\x20to\x20push\x20the\x20reply\x20to\x20the\x20Dashboard/sender\x20in\x20real\x20time\x20(send_reply\x20→\x20new_reply\x20SSE);\x20non-terminal\x20status\x20(in_progress/blocked/error)\x20only\x20updates\x20session\x20status\x20(report_status)\x20and\x20does\x20NOT\x20reach\x20the\x20Dashboard.','Session\x20alias:\x20','read','setRequestHandler','status','starting\x20SSE\x20listener...','Reply\x20using\x20the\x20commhub_reply\x20tool.\x20IMPORTANT:\x20to\x20make\x20your\x20reply\x20appear\x20in\x20the\x20Dashboard\x20chat\x20and\x20reach\x20the\x20sender\x20in\x20real\x20time,\x20use\x20status=\x22completed\x22\x20(a\x20terminal\x20status:\x20completed/failed/cancelled)\x20—\x20that\x20routes\x20to\x20send_reply\x20and\x20emits\x20the\x20new_reply\x20SSE\x20event\x20the\x20Dashboard\x20listens\x20for.\x20A\x20non-terminal\x20status\x20(in_progress/blocked/error)\x20only\x20updates\x20your\x20session\x20status\x20via\x20report_status\x20and\x20does\x20NOT\x20show\x20in\x20the\x20Dashboard,\x20even\x20though\x20the\x20call\x20returns\x20ok.','SIGTERM','code','from','notification','init\x20failed:\x20','ack_inbox','shutting\x20down,\x20reporting\x20offline...','idle','Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','2736664sFgict','catch','.\x20Restart\x20node\x20via\x20`anet\x20node\x20start\x20<alias>`\x20so\x20the\x20env\x20is\x20set\x20explicitly\x20(#203).\x0a','The\x20task_id\x20from\x20the\x20channel\x20message\x20(or\x20\x27hub\x27\x20for\x20general)','working','length','kill','SSE\x20连续\x20>1h\x20连不上\x20hub\x20(','claude-code','statusText','slice','text','SSE\x20connected\x20as\x20\x22','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','commhub_get_all_status','1344784iFdJWv','Task\x20content','unref','blocked','commhub_report_status','686992ZthdwB','100101HFThfA','pid','exit','toTimeString','failed',':\x20inbox_count=','parent\x20claude\x20died\x20(reparented\x20to\x20PID\x201\x20from\x20','utf-8','parent\x20claude\x20pid=','parse\x20error:\x20','6cNCaqe','commhub_reply','then','hub','message_id','1639595ONcOfQ','report_status','2.0','Message\x20content','application/json,\x20text/event-stream','Priority\x20(default:\x20normal)','object','SSE\x20fatal:\x20','ESRCH','application/json','tmux\x20display-message\x20-p\x20\x27#S\x27','decode','http://127.0.0.1:9200','broadcast','getReader','data:\x20','connect','registered\x20as\x20\x22','connected','SIGINT','session\x20disconnected','Current\x20task\x20description','body','unknown\x20tool','←\x20message\x20from\x20','fatal:\x20','message','new_message','startsWith',')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','end','in_progress','config.json','Bearer\x20','error','find','323742rzIWQH','no\x20response','tools/call','commhub','ppid','\x22\x20(','stringify','commhub_send_message'];a0_0x4c97=function(){return _0x353fe7;};return a0_0x4c97();}function S(){const _0x480196=a0_0x59a7e7;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS[_0x480196(0x204)]())return process.env.COMMHUB_ALIAS[_0x480196(0x204)]();return process['stderr'][_0x480196(0x17c)](_0x480196(0x1f0)+('would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME='+(j||'(none)')+_0x480196(0x207)+a0_0x1ca798()+_0x480196(0x1a1))),_0x480196(0x206)+process[_0x480196(0x1b5)];}var p=S(),V=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0x2726dc(),k=process.env.COMMHUB_TOKEN||R[a0_0x59a7e7(0x17e)]||'';function z(_0x3ee7cd){const _0x209133=a0_0x59a7e7;let _0x33302d=new Date()[_0x209133(0x1b7)]()[_0x209133(0x1a9)](0x0,0x8);process['stderr']['write']('['+_0x33302d+']\x20[commhub]\x20'+_0x3ee7cd+'\x0a');}function i(_0x5773c4){return new Promise(_0x19a2b7=>setTimeout(_0x19a2b7,_0x5773c4));}z(a0_0x59a7e7(0x1fc)+Y+'\x20ALIAS='+p+'\x20RESUME_ID='+V['slice'](0x0,0x8)+'...\x20TMUX='+(j||'none')+a0_0x59a7e7(0x181)+process[a0_0x59a7e7(0x18e)]()+'\x20PROJECT_ENV='+H);var G=new Map(),K=new a0_0x129abd({'name':'commhub-channel','version':a0_0x59a7e7(0x17f)},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x59a7e7(0x1ac),a0_0x59a7e7(0x188),a0_0x59a7e7(0x195),a0_0x59a7e7(0x17b),a0_0x59a7e7(0x190)+p]['join']('\x0a')});K[a0_0x59a7e7(0x192)](a0_0x317cc4,async()=>({'tools':[{'name':a0_0x59a7e7(0x1bf),'description':a0_0x59a7e7(0x18f),'inputSchema':{'type':a0_0x59a7e7(0x1c9),'properties':{'task_id':{'type':a0_0x59a7e7(0x1f2),'description':a0_0x59a7e7(0x1a2)},'text':{'type':a0_0x59a7e7(0x1f2),'description':a0_0x59a7e7(0x20d)},'status':{'type':a0_0x59a7e7(0x1f2),'enum':[a0_0x59a7e7(0x20e),a0_0x59a7e7(0x1b8),a0_0x59a7e7(0x1f7),'blocked','error',a0_0x59a7e7(0x1e2)],'description':a0_0x59a7e7(0x20f)}},'required':[a0_0x59a7e7(0x1aa)]}},{'name':a0_0x59a7e7(0x1b2),'description':'Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','inputSchema':{'type':'object','properties':{'status':{'type':a0_0x59a7e7(0x1f2),'enum':[a0_0x59a7e7(0x1a3),a0_0x59a7e7(0x19d),a0_0x59a7e7(0x1b1),a0_0x59a7e7(0x1e5)]},'task':{'type':a0_0x59a7e7(0x1f2),'description':a0_0x59a7e7(0x1d8)},'progress':{'type':a0_0x59a7e7(0x18d),'description':a0_0x59a7e7(0x215)}},'required':[a0_0x59a7e7(0x193)]}},{'name':a0_0x59a7e7(0x203),'description':'Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','inputSchema':{'type':a0_0x59a7e7(0x1c9),'properties':{'alias':{'type':a0_0x59a7e7(0x1f2),'description':a0_0x59a7e7(0x180)},'task':{'type':a0_0x59a7e7(0x1f2),'description':a0_0x59a7e7(0x1af)},'priority':{'type':a0_0x59a7e7(0x1f2),'enum':[a0_0x59a7e7(0x214),a0_0x59a7e7(0x1f1),a0_0x59a7e7(0x205)],'description':a0_0x59a7e7(0x1c8)}},'required':[a0_0x59a7e7(0x1f6),'task']}},{'name':a0_0x59a7e7(0x1ee),'description':'Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','inputSchema':{'type':a0_0x59a7e7(0x1c9),'properties':{'alias':{'type':'string','description':a0_0x59a7e7(0x180)},'message':{'type':'string','description':a0_0x59a7e7(0x1c6)}},'required':[a0_0x59a7e7(0x1f6),a0_0x59a7e7(0x1dd)]}},{'name':a0_0x59a7e7(0x1ad),'description':a0_0x59a7e7(0x19e),'inputSchema':{'type':a0_0x59a7e7(0x1c9),'properties':{}}}]}));async function Q(_0x1cb689,_0x4ec7bc){const _0x1dfb1a=a0_0x59a7e7;let _0x526e20=await fetch(Y+'/mcp',{'method':_0x1dfb1a(0x177),'headers':{'Content-Type':_0x1dfb1a(0x1cc),'Accept':_0x1dfb1a(0x1c7),...k?{'Authorization':'Bearer\x20'+k}:{}},'body':JSON[_0x1dfb1a(0x1ed)]({'jsonrpc':'2.0','id':0x1,'method':_0x1dfb1a(0x1f5),'params':{'protocolVersion':_0x1dfb1a(0x182),'capabilities':{},'clientInfo':{'name':'commhub-channel','version':_0x1dfb1a(0x17f)}}})});if(!_0x526e20['ok']){let _0x483409=await _0x526e20[_0x1dfb1a(0x1aa)]();return z('CommHub\x20init\x20failed:\x20'+_0x526e20[_0x1dfb1a(0x193)]+'\x20'+_0x483409[_0x1dfb1a(0x1a9)](0x0,0x64)),{'ok':!0x1,'error':_0x1dfb1a(0x19a)+_0x526e20['status']};}await _0x526e20[_0x1dfb1a(0x1aa)]();let _0x5d9484=(await(await fetch(Y+_0x1dfb1a(0x1fa),{'method':_0x1dfb1a(0x177),'headers':{'Content-Type':_0x1dfb1a(0x1cc),'Accept':_0x1dfb1a(0x1c7),...k?{'Authorization':_0x1dfb1a(0x1e4)+k}:{}},'body':JSON[_0x1dfb1a(0x1ed)]({'jsonrpc':_0x1dfb1a(0x1c5),'id':0x2,'method':_0x1dfb1a(0x1e9),'params':{'name':_0x1cb689,'arguments':_0x4ec7bc}})}))[_0x1dfb1a(0x1aa)]())[_0x1dfb1a(0x18a)]('\x0a')[_0x1dfb1a(0x1e6)](_0x5827a2=>_0x5827a2['startsWith'](_0x1dfb1a(0x1d2)));if(_0x5d9484){let _0x283166=JSON[_0x1dfb1a(0x20b)](_0x5d9484[_0x1dfb1a(0x1a9)](0x6));return _0x283166?.['result']?.[_0x1dfb1a(0x183)]?.[0x0]?.[_0x1dfb1a(0x1aa)]?JSON['parse'](_0x283166[_0x1dfb1a(0x218)][_0x1dfb1a(0x183)][0x0][_0x1dfb1a(0x1aa)]):_0x283166;}return{'ok':!0x1,'error':_0x1dfb1a(0x1e8)};}K[a0_0x59a7e7(0x192)](a0_0x395ef7,async _0x35ae21=>{const _0x203eb6=a0_0x59a7e7;let {name:_0x562ade,arguments:_0x5837b7}=_0x35ae21[_0x203eb6(0x185)];if(_0x562ade===_0x203eb6(0x1bf)){let {task_id:_0x5eb8ef,text:_0x532c9a,status:_0x38ee0c}=_0x5837b7;if(_0x38ee0c===_0x203eb6(0x20e)||_0x38ee0c==='failed'||_0x38ee0c===_0x203eb6(0x1f7)){let _0x1e1f35=_0x38ee0c==='completed'?_0x203eb6(0x1f9):_0x38ee0c,_0x4aeedd=_0x5eb8ef?G[_0x203eb6(0x209)](_0x5eb8ef)||_0x203eb6(0x1c1):_0x203eb6(0x1c1),_0x18237d=await Q(_0x203eb6(0x200),{'alias':_0x4aeedd,'text':_0x532c9a,'in_reply_to':_0x5eb8ef||void 0x0,'status':_0x1e1f35,'from_session':p});if(_0x5eb8ef)G[_0x203eb6(0x1f8)](_0x5eb8ef);return{'content':[{'type':_0x203eb6(0x1aa),'text':JSON['stringify'](_0x18237d)}]};}let _0x1f9baf=await Q(_0x203eb6(0x1c4),{'resume_id':V,'alias':p,'status':_0x38ee0c==='blocked'?_0x203eb6(0x1b1):_0x38ee0c===_0x203eb6(0x1e5)?_0x203eb6(0x1e5):_0x203eb6(0x1a3),'task':_0x532c9a[_0x203eb6(0x1a9)](0x0,0xc8),'output':_0x532c9a});return{'content':[{'type':_0x203eb6(0x1aa),'text':JSON[_0x203eb6(0x1ed)](_0x1f9baf)}]};}if(_0x562ade===_0x203eb6(0x1b2)){let {status:_0x432b94,task:_0x865a74,progress:_0x50094e}=_0x5837b7,_0x247e86=await Q(_0x203eb6(0x1c4),{'resume_id':V,'alias':p,'status':_0x432b94,'task':_0x865a74,'progress':_0x50094e});return{'content':[{'type':_0x203eb6(0x1aa),'text':JSON[_0x203eb6(0x1ed)](_0x247e86)}]};}if(_0x562ade===_0x203eb6(0x203)){let {alias:_0x143bd1,task:_0x136858,priority:_0x29d124}=_0x5837b7,_0x431497=await Q(_0x203eb6(0x1ef),{'alias':_0x143bd1,'task':_0x136858,'priority':_0x29d124||_0x203eb6(0x1f1),'from_session':p});return{'content':[{'type':_0x203eb6(0x1aa),'text':JSON['stringify'](_0x431497)}]};}if(_0x562ade===_0x203eb6(0x1ee)){let {alias:_0x59fe2a,message:_0x1a6552}=_0x5837b7,_0x39d071=await Q(_0x203eb6(0x210),{'alias':_0x59fe2a,'message':_0x1a6552,'from_session':p});return{'content':[{'type':_0x203eb6(0x1aa),'text':JSON[_0x203eb6(0x1ed)](_0x39d071)}]};}if(_0x562ade===_0x203eb6(0x1ad)){let _0x3e554e=await Q(_0x203eb6(0x217),{});return{'content':[{'type':_0x203eb6(0x1aa),'text':JSON[_0x203eb6(0x1ed)](_0x3e554e)}]};}return{'content':[{'type':'text','text':JSON[_0x203eb6(0x1ed)]({'error':_0x203eb6(0x1da)})}]};});var D=0x3e8,v=0x7530,O=0x36ee80;async function m(){const _0x509f45=a0_0x59a7e7;try{await Q('report_status',{'resume_id':V,'alias':p,'status':_0x509f45(0x19d),'server':a0_0x1ca798(),'hostname':a0_0x1ca798(),'agent':'claude-code','project_dir':process['cwd'](),'tmux_name':j||void 0x0}),z('re-registered\x20as\x20\x22'+p+'\x22\x20after\x20SSE\x20reconnect');}catch(_0x5b116b){z('re-register\x20failed:\x20'+_0x5b116b);}}async function l(){const _0x33ed29=a0_0x59a7e7;let _0x102d8c=Y+_0x33ed29(0x178)+encodeURIComponent(p),_0x162d95={};if(k)_0x162d95[_0x33ed29(0x179)]=_0x33ed29(0x1e4)+k;z('connecting\x20to\x20'+_0x102d8c);let _0x2867f2=D,_0x4f8698=!0x0,_0x5f5ab1=null;while(!0x0){try{let _0x2c2191=await fetch(_0x102d8c,{'headers':_0x162d95});if(!_0x2c2191['ok']){if(z('SSE\x20error:\x20'+_0x2c2191['status']+'\x20'+_0x2c2191[_0x33ed29(0x1a8)]),_0x5f5ab1=_0x5f5ab1??Date[_0x33ed29(0x18c)](),Date['now']()-_0x5f5ab1>O){z(_0x33ed29(0x1a6)+Y+_0x33ed29(0x1e0));return;}await i(_0x2867f2),_0x2867f2=Math[_0x33ed29(0x202)](_0x2867f2*0x2,v);continue;}let _0x5211c1=_0x2c2191[_0x33ed29(0x1d9)][_0x33ed29(0x1d1)](),_0x2ee030=new TextDecoder(),_0x51a1ab='';_0x2867f2=D;while(!0x0){let {done:_0x59f9c1,value:_0x38c8f4}=await _0x5211c1[_0x33ed29(0x191)]();if(_0x59f9c1)break;_0x51a1ab+=_0x2ee030[_0x33ed29(0x1ce)](_0x38c8f4,{'stream':!0x0});let _0x2f5491=_0x51a1ab['split']('\x0a\x0a');_0x51a1ab=_0x2f5491['pop']()||'';for(let _0x30cea3 of _0x2f5491){let _0x1e51db=_0x30cea3['split']('\x0a')[_0x33ed29(0x1e6)](_0x50f4b0=>_0x50f4b0[_0x33ed29(0x1df)](_0x33ed29(0x1d2)));if(!_0x1e51db)continue;try{let _0x4339f9=JSON[_0x33ed29(0x20b)](_0x1e51db[_0x33ed29(0x1a9)](0x6));if(await A(_0x4339f9),_0x4339f9[_0x33ed29(0x1f3)]===_0x33ed29(0x1d5)){if(_0x5f5ab1=null,!_0x4f8698)await m();_0x4f8698=!0x1;}}catch(_0x4c7fc0){z(_0x33ed29(0x1bd)+_0x4c7fc0);}}}z(_0x33ed29(0x176));}catch(_0x2dd639){z('SSE\x20connection\x20error:\x20'+_0x2dd639);}if(_0x5f5ab1=_0x5f5ab1??Date[_0x33ed29(0x18c)](),Date[_0x33ed29(0x18c)]()-_0x5f5ab1>O){z(_0x33ed29(0x1a6)+Y+')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。');return;}await i(_0x2867f2),_0x2867f2=Math['min'](_0x2867f2*0x2,v);}}async function A(_0x4e2c34){const _0x2c250e=a0_0x59a7e7;if(_0x4e2c34['type']===_0x2c250e(0x1d5)){z(_0x2c250e(0x1ab)+p+'\x22');return;}if(_0x4e2c34[_0x2c250e(0x1f3)]===_0x2c250e(0x1de)){if(z(_0x2c250e(0x1db)+_0x4e2c34[_0x2c250e(0x198)]+':\x20'+_0x4e2c34[_0x2c250e(0x1dd)][_0x2c250e(0x1a9)](0x0,0x3c)),await K['notification']({'method':_0x2c250e(0x17a),'params':{'content':_0x4e2c34['message'],'meta':{'sender':_0x4e2c34['from']||_0x2c250e(0x1c1),'sender_id':_0x2c250e(0x1ea),'user':_0x4e2c34['from']||_0x2c250e(0x1c1),'priority':_0x2c250e(0x1f1)}}}),_0x4e2c34[_0x2c250e(0x1c2)])await Q(_0x2c250e(0x19b),{'alias':p,'message_id':_0x4e2c34[_0x2c250e(0x1c2)]});return;}if(_0x4e2c34[_0x2c250e(0x1f3)]===_0x2c250e(0x18b)||_0x4e2c34[_0x2c250e(0x1f3)]===_0x2c250e(0x1d0)){z('←\x20'+_0x4e2c34[_0x2c250e(0x1f3)]+_0x2c250e(0x1b9)+_0x4e2c34[_0x2c250e(0x1fd)]+_0x2c250e(0x213)+(_0x4e2c34[_0x2c250e(0x1ff)]||_0x2c250e(0x1f1)));let _0x125918=await Q('get_inbox',{'alias':p,'limit':0x5});if(_0x125918?.['ok']&&_0x125918['messages']?.[_0x2c250e(0x1a4)]>0x0)for(let _0xf72ebb of _0x125918['messages']){let _0x47b456={'sender':_0xf72ebb['from_session']||_0x2c250e(0x1c1),'sender_id':_0x2c250e(0x1ea),'user':_0xf72ebb[_0x2c250e(0x201)]||_0x2c250e(0x1c1),'task_id':_0xf72ebb['id'],'priority':_0xf72ebb[_0x2c250e(0x1ff)]||_0x2c250e(0x1f1)};G[_0x2c250e(0x186)](_0xf72ebb['id'],_0xf72ebb[_0x2c250e(0x201)]||_0x2c250e(0x1c1)),await K[_0x2c250e(0x199)]({'method':_0x2c250e(0x17a),'params':{'content':_0xf72ebb[_0x2c250e(0x183)],'meta':_0x47b456}}),z('→\x20injected\x20task\x20'+_0xf72ebb['id'][_0x2c250e(0x1a9)](0x0,0x8)+'\x20from\x20'+_0xf72ebb['from_session']+':\x20'+_0xf72ebb[_0x2c250e(0x183)][_0x2c250e(0x1a9)](0x0,0x3c)),await Q(_0x2c250e(0x19b),{'alias':p,'message_id':_0xf72ebb['id']});}}}async function t(){const _0x58b3c3=a0_0x59a7e7;let _0x131917=new a0_0x93ee58();await K[_0x58b3c3(0x1d3)](_0x131917),z(_0x58b3c3(0x1f4)),z(_0x58b3c3(0x194)),l()[_0x58b3c3(0x1a0)](_0x2a16c3=>z(_0x58b3c3(0x1ca)+_0x2a16c3)),Q('report_status',{'resume_id':V,'alias':p,'status':_0x58b3c3(0x19d),'server':a0_0x1ca798(),'hostname':a0_0x1ca798(),'agent':_0x58b3c3(0x1a7),'project_dir':process[_0x58b3c3(0x18e)](),'tmux_name':j||void 0x0})[_0x58b3c3(0x1c0)](()=>z(_0x58b3c3(0x1d4)+p+_0x58b3c3(0x1ec)+V[_0x58b3c3(0x1a9)](0x0,0x8)+')'))[_0x58b3c3(0x1a0)](_0xdd5af1=>z(_0x58b3c3(0x187)+_0xdd5af1)),setInterval(()=>{const _0x591e15=_0x58b3c3;Q(_0x591e15(0x1c4),{'resume_id':V,'alias':p,'status':_0x591e15(0x19d),'server':a0_0x1ca798(),'hostname':a0_0x1ca798(),'agent':'claude-code','project_dir':process[_0x591e15(0x18e)](),'tmux_name':j||void 0x0})[_0x591e15(0x1a0)](_0x202335=>z('heartbeat\x20failed:\x20'+_0x202335));},0x2bf20),z(_0x58b3c3(0x1fb));}t()[a0_0x59a7e7(0x1a0)](_0x45c51c=>{const _0x415aad=a0_0x59a7e7;z(_0x415aad(0x1dc)+_0x45c51c),process['exit'](0x1);});async function b(){const _0xca1c6d=a0_0x59a7e7;z(_0xca1c6d(0x19c)),await Q(_0xca1c6d(0x1c4),{'resume_id':V,'alias':p,'status':_0xca1c6d(0x216),'task':_0xca1c6d(0x1d7)})[_0xca1c6d(0x1a0)](()=>{}),process[_0xca1c6d(0x1b6)](0x0);}process[a0_0x59a7e7(0x208)]['on'](a0_0x59a7e7(0x1e1),()=>b()),process['on'](a0_0x59a7e7(0x196),()=>b()),process['on'](a0_0x59a7e7(0x1d6),()=>b());var d=process[a0_0x59a7e7(0x1eb)];if(d&&d>0x1){let h=setInterval(()=>{const _0x13b05a=a0_0x59a7e7;if(process[_0x13b05a(0x1eb)]===0x1&&d!==0x1){z(_0x13b05a(0x1ba)+d+_0x13b05a(0x20c)),b();return;}try{process[_0x13b05a(0x1a5)](d,0x0);}catch(_0x4a43fe){if(_0x4a43fe?.[_0x13b05a(0x197)]===_0x13b05a(0x1cb))z(_0x13b05a(0x1bc)+d+_0x13b05a(0x189)),b();}},0x7530);if(typeof h[a0_0x59a7e7(0x1b0)]===a0_0x59a7e7(0x211))h['unref']();}
2
+ const a0_0x2c4552=a0_0x3be1;(function(_0x2cbe21,_0x1a2a66){const _0x1c4e5d=a0_0x3be1,_0x339a5d=_0x2cbe21();while(!![]){try{const _0x1f49e4=parseInt(_0x1c4e5d(0x1ad))/0x1*(-parseInt(_0x1c4e5d(0x224))/0x2)+-parseInt(_0x1c4e5d(0x1d9))/0x3*(-parseInt(_0x1c4e5d(0x217))/0x4)+-parseInt(_0x1c4e5d(0x1f9))/0x5*(parseInt(_0x1c4e5d(0x1f2))/0x6)+-parseInt(_0x1c4e5d(0x182))/0x7*(parseInt(_0x1c4e5d(0x21d))/0x8)+-parseInt(_0x1c4e5d(0x21e))/0x9*(-parseInt(_0x1c4e5d(0x1e1))/0xa)+-parseInt(_0x1c4e5d(0x1c1))/0xb*(-parseInt(_0x1c4e5d(0x215))/0xc)+parseInt(_0x1c4e5d(0x1e5))/0xd*(parseInt(_0x1c4e5d(0x1cd))/0xe);if(_0x1f49e4===_0x1a2a66)break;else _0x339a5d['push'](_0x339a5d['shift']());}catch(_0x810d97){_0x339a5d['push'](_0x339a5d['shift']());}}}(a0_0x2318,0xc76e4));import{readFileSync as a0_0x4289c7,existsSync as a0_0x16af32}from'fs';import{randomUUID as a0_0x1c158b}from'crypto';import{join as a0_0x453f6b}from'path';function a0_0x2318(){const _0x30202e=['cwd','...\x20TMUX=','13610qJEaMx','body','setRequestHandler','length','16123341CRAGpF','utf-8','commhub_report_status','(none)','\x22\x20(','\x20\x20•\x20If\x20the\x20sender\x20is\x20another\x20agent\x20node\x20(from\x20CommHub,\x20from\x20your\x20peer\x27s\x20session\x20alias),\x20reply\x20with\x20commhub_send_task(alias=\x22<their\x20alias>\x22,\x20task=\x22<your\x20reply>\x22).\x20This\x20creates\x20a\x20new\x20routable\x20task\x20that\x20wakes\x20the\x20peer\x20via\x20new_task\x20SSE\x20so\x20they\x20process\x20it.\x20commhub_reply\x20does\x20NOT\x20wake\x20agent\x20peers\x20—\x20they\x27d\x20only\x20see\x20it\x20on\x20the\x20next\x20inbox\x20poll\x20(Vincent\x202026-07-28\x20全网规则).','\x20no\x20longer\x20exists\x20(kill-0\x20ESRCH)\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat','session\x20disconnected','warning:\x20could\x20not\x20register:\x20','from_session','stderr','send_message','replied','4261950YzhiJe','task','idle','from','.claude/channels/commhub','Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME=','5wsSxJW','connected','code','MCP\x20stdio\x20connected','startsWith','\x20\x20•\x20Only\x20use\x20commhub_reply\x20when\x20the\x20sender\x20is\x20the\x20Dashboard/UI\x20(task_id\x20came\x20from\x20a\x20browser\x20chat).\x20Use\x20status=\x22completed\x22\x20(terminal)\x20so\x20send_reply\x20routes\x20it,\x20updates\x20the\x20task\x20row\x20(Dashboard\x20displays\x20it),\x20and\x20emits\x20new_reply\x20SSE\x20for\x20the\x20live\x20Dashboard\x20viewer.\x20Non-terminal\x20status\x20(in_progress/blocked/error)\x20just\x20updates\x20your\x20session\x20status\x20and\x20does\x20NOT\x20reach\x20the\x20Dashboard.','claude-code','Priority\x20(default:\x20normal)','get','Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates','registered\x20as\x20\x22','write','SIGTERM','string','ENV:\x20URL=','SIGINT','no\x20response','commhub','commhub_send_message','SSE\x20连续\x20>1h\x20连不上\x20hub\x20(','slice','decode','high',':\x20inbox_count=','message_id','unref','failed','re-register\x20failed:\x20','216poWawz','blocked','4sBHLzO','Reply\x20to\x20a\x20Dashboard/UI-originated\x20CommHub\x20task.\x20⚠\x20For\x20agent-to-agent\x20replies\x20use\x20commhub_send_task\x20instead\x20—\x20commhub_reply\x20does\x20NOT\x20wake\x20agent\x20peers\x20via\x20SSE\x20(Vincent\x202026-07-28\x20全网规则).\x20status=\x22completed\x22\x20(terminal)\x20routes\x20to\x20send_reply\x20and\x20emits\x20new_reply\x20SSE\x20for\x20the\x20live\x20Dashboard;\x20non-terminal\x20status\x20(in_progress/blocked/error)\x20only\x20updates\x20session\x20status\x20(report_status)\x20and\x20does\x20NOT\x20reach\x20the\x20Dashboard.','read','report_status','.\x20Restart\x20node\x20via\x20`anet\x20node\x20start\x20<alias>`\x20so\x20the\x20env\x20is\x20set\x20explicitly\x20(#203).\x0a','commhub_get_all_status','8JFLiOK','3285CyCRFz','tmux\x20display-message\x20-p\x20\x27#S\x27',']\x20[commhub]\x20','send_reply','offline','pop','242618FQXzXr','catch','ack_inbox','result','2025-03-26','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','join','5474798HBQJwr','fatal:\x20','get_inbox','statusText','error','ESRCH','priority','notifications/claude/channel','new_task','token','working','replace','content','commhub_reply','\x20RESUME_ID=','send_task','now','[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20','\x20CWD=','.env','0.3.0','split','connect','commhub-channel','Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','CommHub\x20init\x20failed:\x20','application/json','config.json','Current\x20task\x20description','inbox_count','exit','find','\x22\x20after\x20SSE\x20reconnect','\x20from\x20','delete','SSE\x20connection\x20error:\x20','SSE\x20error:\x20','hub','These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.','stdin','Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','kill','normal','12IGXfmw','ppid',')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','←\x20message\x20from\x20','Task\x20content','type','SSE\x20connected\x20as\x20\x22','Progress\x200-100','→\x20injected\x20task\x20','shutting\x20down,\x20reporting\x20offline...','You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','status','Authorization','POST','heartbeat\x20failed:\x20','completed','data:\x20','pid','text','unknown\x20tool','380589XZKlfy','min','notification','\x20/\x20hostname=','new_message','in_progress','stringify','application/json,\x20text/event-stream','starting\x20SSE\x20listener...','SSE\x20fatal:\x20','parse','message','14YQWtlw','get_all_status','messages','unknown',')\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat','trim','Session\x20alias:\x20','then','Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','object','The\x20task_id\x20from\x20the\x20channel\x20message\x20(or\x20\x27hub\x27\x20for\x20general)','params','4215633qBJyLm','init\x20failed:\x20','\x20PROJECT_ENV=','http://127.0.0.1:9200','alias','Target\x20session\x20alias'];a0_0x2318=function(){return _0x30202e;};return a0_0x2318();}import{hostname as a0_0x2b7f10}from'os';import{execSync as a0_0x3a9435}from'child_process';function B(_0x4d6419){const _0x4ca303=a0_0x3be1;let _0x389a94=_0x4d6419['replace'](/[^a-zA-Z0-9\-_]/g,'-');return _0x389a94===''?_0x4ca303(0x1d0):_0x389a94;}import{Server as a0_0x4fdfae}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0x2e972b}from'@modelcontextprotocol/sdk/server/stdio.js';import{ListToolsRequestSchema as a0_0x38cfb7,CallToolRequestSchema as a0_0x1b6d63}from'@modelcontextprotocol/sdk/types.js';function T(_0x19bbfe){const _0x34c8e5=a0_0x3be1;if(!a0_0x16af32(_0x19bbfe))return;for(let _0x30d49b of a0_0x4289c7(_0x19bbfe,_0x34c8e5(0x1e6))[_0x34c8e5(0x197)]('\x0a')){let _0x4b021e=_0x30d49b['trim']();if(!_0x4b021e||_0x4b021e[_0x34c8e5(0x1fd)]('#'))continue;let _0x1e85e4=_0x4b021e['indexOf']('=');if(_0x1e85e4<0x0)continue;let _0xde92f8=_0x4b021e[_0x34c8e5(0x20d)](0x0,_0x1e85e4)['trim'](),_0x58c892=_0x4b021e[_0x34c8e5(0x20d)](_0x1e85e4+0x1)['trim']()[_0x34c8e5(0x18d)](/^["']|["']$/g,'');if(!process.env[_0xde92f8])process.env[_0xde92f8]=_0x58c892;}}var C=process.env.HOME||'~',r=a0_0x453f6b(C,a0_0x2c4552(0x1f6));T(a0_0x453f6b(r,'.env'));var H=B(process[a0_0x2c4552(0x1df)]());T(a0_0x453f6b(r,H,a0_0x2c4552(0x195)));function E(){const _0x4f6673=a0_0x2c4552;try{return a0_0x3a9435(_0x4f6673(0x21f),{'encoding':_0x4f6673(0x1e6),'timeout':0x7d0})[_0x4f6673(0x1d2)]();}catch{return'';}}function _(){const _0x4fa482=a0_0x2c4552;try{let _0x871d9e=a0_0x453f6b(C,'.anet',_0x4fa482(0x19d));if(a0_0x16af32(_0x871d9e))return JSON[_0x4fa482(0x1cb)](a0_0x4289c7(_0x871d9e,'utf-8'));}catch{}return{};}function a0_0x3be1(_0x51ae3a,_0x1a29bd){_0x51ae3a=_0x51ae3a-0x17e;const _0x231827=a0_0x2318();let _0x3be1fc=_0x231827[_0x51ae3a];return _0x3be1fc;}var R=_(),Y=process.env.COMMHUB_URL||R['hub']||a0_0x2c4552(0x1dc),j=process.env.COMMHUB_TMUX||E();function S(){const _0x5ad3c4=a0_0x2c4552;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS[_0x5ad3c4(0x1d2)]())return process.env.COMMHUB_ALIAS[_0x5ad3c4(0x1d2)]();return process[_0x5ad3c4(0x1ef)][_0x5ad3c4(0x204)](_0x5ad3c4(0x193)+(_0x5ad3c4(0x1f8)+(j||_0x5ad3c4(0x1e8))+_0x5ad3c4(0x1c4)+a0_0x2b7f10()+_0x5ad3c4(0x21b))),'unattributed-'+process[_0x5ad3c4(0x1be)];}var p=S(),V=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0x1c158b(),k=process.env.COMMHUB_TOKEN||R[a0_0x2c4552(0x18b)]||'';function z(_0x30b81c){const _0x45e3a4=a0_0x2c4552;let _0x34a07c=new Date()['toTimeString']()[_0x45e3a4(0x20d)](0x0,0x8);process['stderr'][_0x45e3a4(0x204)]('['+_0x34a07c+_0x45e3a4(0x220)+_0x30b81c+'\x0a');}function i(_0x16344d){return new Promise(_0x31e5f7=>setTimeout(_0x31e5f7,_0x16344d));}z(a0_0x2c4552(0x207)+Y+'\x20ALIAS='+p+a0_0x2c4552(0x190)+V[a0_0x2c4552(0x20d)](0x0,0x8)+a0_0x2c4552(0x1e0)+(j||'none')+a0_0x2c4552(0x194)+process[a0_0x2c4552(0x1df)]()+a0_0x2c4552(0x1db)+H);var G=new Map(),K=new a0_0x4fdfae({'name':a0_0x2c4552(0x199),'version':'0.3.0'},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x2c4552(0x180),a0_0x2c4552(0x1a8),'Reply\x20routing\x20(IMPORTANT\x20—\x20the\x20tool\x20you\x20pick\x20determines\x20whether\x20the\x20receiver\x20actually\x20gets\x20woken\x20up):',a0_0x2c4552(0x1ea),a0_0x2c4552(0x1fe),a0_0x2c4552(0x1b7),a0_0x2c4552(0x1d3)+p][a0_0x2c4552(0x181)]('\x0a')});K[a0_0x2c4552(0x1e3)](a0_0x38cfb7,async()=>({'tools':[{'name':a0_0x2c4552(0x18f),'description':a0_0x2c4552(0x218),'inputSchema':{'type':'object','properties':{'task_id':{'type':a0_0x2c4552(0x206),'description':a0_0x2c4552(0x1d7)},'text':{'type':a0_0x2c4552(0x206),'description':'Reply\x20text\x20/\x20result\x20summary'},'status':{'type':a0_0x2c4552(0x206),'enum':['completed',a0_0x2c4552(0x213),'cancelled',a0_0x2c4552(0x216),'error',a0_0x2c4552(0x1c6)],'description':a0_0x2c4552(0x202)}},'required':[a0_0x2c4552(0x1bf)]}},{'name':a0_0x2c4552(0x1e7),'description':a0_0x2c4552(0x19a),'inputSchema':{'type':'object','properties':{'status':{'type':a0_0x2c4552(0x206),'enum':[a0_0x2c4552(0x18c),a0_0x2c4552(0x1f4),a0_0x2c4552(0x216),a0_0x2c4552(0x186)]},'task':{'type':a0_0x2c4552(0x206),'description':a0_0x2c4552(0x19e)},'progress':{'type':'number','description':a0_0x2c4552(0x1b4)}},'required':[a0_0x2c4552(0x1b8)]}},{'name':'commhub_send_task','description':a0_0x2c4552(0x1d5),'inputSchema':{'type':a0_0x2c4552(0x1d6),'properties':{'alias':{'type':'string','description':'Target\x20session\x20alias'},'task':{'type':a0_0x2c4552(0x206),'description':a0_0x2c4552(0x1b1)},'priority':{'type':'string','enum':[a0_0x2c4552(0x20f),a0_0x2c4552(0x1ac),'low'],'description':a0_0x2c4552(0x200)}},'required':[a0_0x2c4552(0x1dd),a0_0x2c4552(0x1f3)]}},{'name':a0_0x2c4552(0x20b),'description':a0_0x2c4552(0x1f7),'inputSchema':{'type':'object','properties':{'alias':{'type':a0_0x2c4552(0x206),'description':a0_0x2c4552(0x1de)},'message':{'type':'string','description':'Message\x20content'}},'required':[a0_0x2c4552(0x1dd),a0_0x2c4552(0x1cc)]}},{'name':a0_0x2c4552(0x21c),'description':a0_0x2c4552(0x1aa),'inputSchema':{'type':a0_0x2c4552(0x1d6),'properties':{}}}]}));async function Q(_0x3c66b9,_0xbbd1ce){const _0x165339=a0_0x2c4552;let _0x3f7358=await fetch(Y+'/mcp',{'method':_0x165339(0x1ba),'headers':{'Content-Type':_0x165339(0x19c),'Accept':_0x165339(0x1c8),...k?{'Authorization':'Bearer\x20'+k}:{}},'body':JSON[_0x165339(0x1c7)]({'jsonrpc':'2.0','id':0x1,'method':'initialize','params':{'protocolVersion':_0x165339(0x17f),'capabilities':{},'clientInfo':{'name':_0x165339(0x199),'version':_0x165339(0x196)}}})});if(!_0x3f7358['ok']){let _0x22caed=await _0x3f7358['text']();return z(_0x165339(0x19b)+_0x3f7358[_0x165339(0x1b8)]+'\x20'+_0x22caed[_0x165339(0x20d)](0x0,0x64)),{'ok':!0x1,'error':_0x165339(0x1da)+_0x3f7358[_0x165339(0x1b8)]};}await _0x3f7358['text']();let _0x3a4d87=(await(await fetch(Y+'/mcp',{'method':_0x165339(0x1ba),'headers':{'Content-Type':_0x165339(0x19c),'Accept':_0x165339(0x1c8),...k?{'Authorization':'Bearer\x20'+k}:{}},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x2,'method':'tools/call','params':{'name':_0x3c66b9,'arguments':_0xbbd1ce}})}))[_0x165339(0x1bf)]())[_0x165339(0x197)]('\x0a')['find'](_0x5027b8=>_0x5027b8[_0x165339(0x1fd)](_0x165339(0x1bd)));if(_0x3a4d87){let _0x3dd1fb=JSON['parse'](_0x3a4d87[_0x165339(0x20d)](0x6));return _0x3dd1fb?.[_0x165339(0x17e)]?.[_0x165339(0x18e)]?.[0x0]?.[_0x165339(0x1bf)]?JSON[_0x165339(0x1cb)](_0x3dd1fb['result'][_0x165339(0x18e)][0x0][_0x165339(0x1bf)]):_0x3dd1fb;}return{'ok':!0x1,'error':_0x165339(0x209)};}K[a0_0x2c4552(0x1e3)](a0_0x1b6d63,async _0x154a65=>{const _0x541d6a=a0_0x2c4552;let {name:_0x31a92d,arguments:_0x41a2ab}=_0x154a65[_0x541d6a(0x1d8)];if(_0x31a92d===_0x541d6a(0x18f)){let {task_id:_0x5da221,text:_0x1c0b97,status:_0x294e69}=_0x41a2ab;if(_0x294e69===_0x541d6a(0x1bc)||_0x294e69===_0x541d6a(0x213)||_0x294e69==='cancelled'){let _0x20911b=_0x294e69===_0x541d6a(0x1bc)?_0x541d6a(0x1f1):_0x294e69,_0x4c4240=_0x5da221?G[_0x541d6a(0x201)](_0x5da221)||'hub':'hub',_0x145383=await Q(_0x541d6a(0x221),{'alias':_0x4c4240,'text':_0x1c0b97,'in_reply_to':_0x5da221||void 0x0,'status':_0x20911b,'from_session':p});if(_0x5da221)G[_0x541d6a(0x1a4)](_0x5da221);return{'content':[{'type':'text','text':JSON[_0x541d6a(0x1c7)](_0x145383)}]};}let _0x198239=await Q(_0x541d6a(0x21a),{'resume_id':V,'alias':p,'status':_0x294e69===_0x541d6a(0x216)?'blocked':_0x294e69===_0x541d6a(0x186)?_0x541d6a(0x186):'working','task':_0x1c0b97[_0x541d6a(0x20d)](0x0,0xc8),'output':_0x1c0b97});return{'content':[{'type':_0x541d6a(0x1bf),'text':JSON[_0x541d6a(0x1c7)](_0x198239)}]};}if(_0x31a92d==='commhub_report_status'){let {status:_0xbc30f3,task:_0x593395,progress:_0x559b26}=_0x41a2ab,_0x251fe7=await Q('report_status',{'resume_id':V,'alias':p,'status':_0xbc30f3,'task':_0x593395,'progress':_0x559b26});return{'content':[{'type':'text','text':JSON['stringify'](_0x251fe7)}]};}if(_0x31a92d==='commhub_send_task'){let {alias:_0x27c473,task:_0x56202c,priority:_0x10f37e}=_0x41a2ab,_0x44b444=await Q(_0x541d6a(0x191),{'alias':_0x27c473,'task':_0x56202c,'priority':_0x10f37e||_0x541d6a(0x1ac),'from_session':p});return{'content':[{'type':_0x541d6a(0x1bf),'text':JSON[_0x541d6a(0x1c7)](_0x44b444)}]};}if(_0x31a92d===_0x541d6a(0x20b)){let {alias:_0x5245d0,message:_0x5e246d}=_0x41a2ab,_0x2ce042=await Q(_0x541d6a(0x1f0),{'alias':_0x5245d0,'message':_0x5e246d,'from_session':p});return{'content':[{'type':_0x541d6a(0x1bf),'text':JSON[_0x541d6a(0x1c7)](_0x2ce042)}]};}if(_0x31a92d==='commhub_get_all_status'){let _0x5a7c9e=await Q(_0x541d6a(0x1ce),{});return{'content':[{'type':'text','text':JSON[_0x541d6a(0x1c7)](_0x5a7c9e)}]};}return{'content':[{'type':_0x541d6a(0x1bf),'text':JSON[_0x541d6a(0x1c7)]({'error':_0x541d6a(0x1c0)})}]};});var D=0x3e8,v=0x7530,O=0x36ee80;async function m(){const _0x3e275d=a0_0x2c4552;try{await Q('report_status',{'resume_id':V,'alias':p,'status':'idle','server':a0_0x2b7f10(),'hostname':a0_0x2b7f10(),'agent':_0x3e275d(0x1ff),'project_dir':process[_0x3e275d(0x1df)](),'tmux_name':j||void 0x0}),z('re-registered\x20as\x20\x22'+p+_0x3e275d(0x1a2));}catch(_0x5c2899){z(_0x3e275d(0x214)+_0x5c2899);}}async function l(){const _0x5f560d=a0_0x2c4552;let _0xc2e708=Y+'/events/'+encodeURIComponent(p),_0x3041ab={};if(k)_0x3041ab[_0x5f560d(0x1b9)]='Bearer\x20'+k;z('connecting\x20to\x20'+_0xc2e708);let _0x5bb519=D,_0x467333=!0x0,_0x5a889c=null;while(!0x0){try{let _0x5b3cdd=await fetch(_0xc2e708,{'headers':_0x3041ab});if(!_0x5b3cdd['ok']){if(z(_0x5f560d(0x1a6)+_0x5b3cdd[_0x5f560d(0x1b8)]+'\x20'+_0x5b3cdd[_0x5f560d(0x185)]),_0x5a889c=_0x5a889c??Date['now'](),Date['now']()-_0x5a889c>O){z(_0x5f560d(0x20c)+Y+_0x5f560d(0x1af));return;}await i(_0x5bb519),_0x5bb519=Math[_0x5f560d(0x1c2)](_0x5bb519*0x2,v);continue;}let _0x7459c4=_0x5b3cdd[_0x5f560d(0x1e2)]['getReader'](),_0x620e50=new TextDecoder(),_0x1e778f='';_0x5bb519=D;while(!0x0){let {done:_0x5a9faf,value:_0x479f88}=await _0x7459c4[_0x5f560d(0x219)]();if(_0x5a9faf)break;_0x1e778f+=_0x620e50[_0x5f560d(0x20e)](_0x479f88,{'stream':!0x0});let _0x39ee81=_0x1e778f[_0x5f560d(0x197)]('\x0a\x0a');_0x1e778f=_0x39ee81[_0x5f560d(0x223)]()||'';for(let _0x23cf8d of _0x39ee81){let _0x5327da=_0x23cf8d[_0x5f560d(0x197)]('\x0a')[_0x5f560d(0x1a1)](_0x3f0030=>_0x3f0030[_0x5f560d(0x1fd)](_0x5f560d(0x1bd)));if(!_0x5327da)continue;try{let _0x3d3dbb=JSON[_0x5f560d(0x1cb)](_0x5327da[_0x5f560d(0x20d)](0x6));if(await A(_0x3d3dbb),_0x3d3dbb[_0x5f560d(0x1b2)]===_0x5f560d(0x1fa)){if(_0x5a889c=null,!_0x467333)await m();_0x467333=!0x1;}}catch(_0x13f210){z('parse\x20error:\x20'+_0x13f210);}}}z('SSE\x20stream\x20ended,\x20reconnecting...');}catch(_0x31208b){z(_0x5f560d(0x1a5)+_0x31208b);}if(_0x5a889c=_0x5a889c??Date[_0x5f560d(0x192)](),Date['now']()-_0x5a889c>O){z(_0x5f560d(0x20c)+Y+_0x5f560d(0x1af));return;}await i(_0x5bb519),_0x5bb519=Math['min'](_0x5bb519*0x2,v);}}async function A(_0x3522f4){const _0x2327ce=a0_0x2c4552;if(_0x3522f4[_0x2327ce(0x1b2)]===_0x2327ce(0x1fa)){z(_0x2327ce(0x1b3)+p+'\x22');return;}if(_0x3522f4[_0x2327ce(0x1b2)]===_0x2327ce(0x1c5)){if(z(_0x2327ce(0x1b0)+_0x3522f4[_0x2327ce(0x1f5)]+':\x20'+_0x3522f4[_0x2327ce(0x1cc)][_0x2327ce(0x20d)](0x0,0x3c)),await K[_0x2327ce(0x1c3)]({'method':_0x2327ce(0x189),'params':{'content':_0x3522f4[_0x2327ce(0x1cc)],'meta':{'sender':_0x3522f4[_0x2327ce(0x1f5)]||_0x2327ce(0x1a7),'sender_id':_0x2327ce(0x20a),'user':_0x3522f4['from']||_0x2327ce(0x1a7),'priority':_0x2327ce(0x1ac)}}}),_0x3522f4[_0x2327ce(0x211)])await Q(_0x2327ce(0x226),{'alias':p,'message_id':_0x3522f4[_0x2327ce(0x211)]});return;}if(_0x3522f4[_0x2327ce(0x1b2)]===_0x2327ce(0x18a)||_0x3522f4[_0x2327ce(0x1b2)]==='broadcast'){z('←\x20'+_0x3522f4['type']+_0x2327ce(0x210)+_0x3522f4[_0x2327ce(0x19f)]+'\x20priority='+(_0x3522f4[_0x2327ce(0x188)]||'normal'));let _0x30292b=await Q(_0x2327ce(0x184),{'alias':p,'limit':0x5});if(_0x30292b?.['ok']&&_0x30292b[_0x2327ce(0x1cf)]?.[_0x2327ce(0x1e4)]>0x0)for(let _0x5eba3c of _0x30292b[_0x2327ce(0x1cf)]){let _0x304692={'sender':_0x5eba3c['from_session']||_0x2327ce(0x1a7),'sender_id':_0x2327ce(0x20a),'user':_0x5eba3c[_0x2327ce(0x1ee)]||'hub','task_id':_0x5eba3c['id'],'priority':_0x5eba3c['priority']||_0x2327ce(0x1ac)};G['set'](_0x5eba3c['id'],_0x5eba3c[_0x2327ce(0x1ee)]||'hub'),await K[_0x2327ce(0x1c3)]({'method':_0x2327ce(0x189),'params':{'content':_0x5eba3c['content'],'meta':_0x304692}}),z(_0x2327ce(0x1b5)+_0x5eba3c['id'][_0x2327ce(0x20d)](0x0,0x8)+_0x2327ce(0x1a3)+_0x5eba3c[_0x2327ce(0x1ee)]+':\x20'+_0x5eba3c['content']['slice'](0x0,0x3c)),await Q(_0x2327ce(0x226),{'alias':p,'message_id':_0x5eba3c['id']});}}}async function t(){const _0x17a8e7=a0_0x2c4552;let _0x4ef0db=new a0_0x2e972b();await K[_0x17a8e7(0x198)](_0x4ef0db),z(_0x17a8e7(0x1fc)),z(_0x17a8e7(0x1c9)),l()[_0x17a8e7(0x225)](_0x3d2499=>z(_0x17a8e7(0x1ca)+_0x3d2499)),Q(_0x17a8e7(0x21a),{'resume_id':V,'alias':p,'status':_0x17a8e7(0x1f4),'server':a0_0x2b7f10(),'hostname':a0_0x2b7f10(),'agent':'claude-code','project_dir':process['cwd'](),'tmux_name':j||void 0x0})[_0x17a8e7(0x1d4)](()=>z(_0x17a8e7(0x203)+p+_0x17a8e7(0x1e9)+V['slice'](0x0,0x8)+')'))[_0x17a8e7(0x225)](_0x3bd44c=>z(_0x17a8e7(0x1ed)+_0x3bd44c)),setInterval(()=>{const _0x53f364=_0x17a8e7;Q(_0x53f364(0x21a),{'resume_id':V,'alias':p,'status':'idle','server':a0_0x2b7f10(),'hostname':a0_0x2b7f10(),'agent':_0x53f364(0x1ff),'project_dir':process['cwd'](),'tmux_name':j||void 0x0})['catch'](_0x37eb18=>z(_0x53f364(0x1bb)+_0x37eb18));},0x2bf20),z('ready\x20—\x20waiting\x20for\x20events');}t()['catch'](_0x5667be=>{const _0x50eea1=a0_0x2c4552;z(_0x50eea1(0x183)+_0x5667be),process[_0x50eea1(0x1a0)](0x1);});async function b(){const _0x3b3bad=a0_0x2c4552;z(_0x3b3bad(0x1b6)),await Q(_0x3b3bad(0x21a),{'resume_id':V,'alias':p,'status':_0x3b3bad(0x222),'task':_0x3b3bad(0x1ec)})[_0x3b3bad(0x225)](()=>{}),process[_0x3b3bad(0x1a0)](0x0);}process[a0_0x2c4552(0x1a9)]['on']('end',()=>b()),process['on'](a0_0x2c4552(0x205),()=>b()),process['on'](a0_0x2c4552(0x208),()=>b());var d=process[a0_0x2c4552(0x1ae)];if(d&&d>0x1){let h=setInterval(()=>{const _0x4c20f8=a0_0x2c4552;if(process[_0x4c20f8(0x1ae)]===0x1&&d!==0x1){z('parent\x20claude\x20died\x20(reparented\x20to\x20PID\x201\x20from\x20'+d+_0x4c20f8(0x1d1)),b();return;}try{process[_0x4c20f8(0x1ab)](d,0x0);}catch(_0x23cf66){if(_0x23cf66?.[_0x4c20f8(0x1fb)]===_0x4c20f8(0x187))z('parent\x20claude\x20pid='+d+_0x4c20f8(0x1eb)),b();}},0x7530);if(typeof h[a0_0x2c4552(0x212)]==='function')h['unref']();}
@@ -0,0 +1,58 @@
1
+ /** Lowest tmux version whose `new-session` understands `-e KEY=VALUE`. */
2
+ export declare const MIN_TMUX_MAJOR = 3;
3
+ export declare const MIN_TMUX_MINOR = 2;
4
+ export interface TmuxVersion {
5
+ major: number;
6
+ minor: number;
7
+ /** Trailing letter suffix, e.g. the "a" of "3.0a". Not used for ordering. */
8
+ suffix: string;
9
+ raw: string;
10
+ }
11
+ /**
12
+ * Parse the output of `tmux -V`, e.g.:
13
+ * "tmux 3.2a" → { major: 3, minor: 2, suffix: "a" }
14
+ * "tmux 3.0a" → { major: 3, minor: 0, suffix: "a" }
15
+ * "tmux 3.4" → { major: 3, minor: 4, suffix: "" }
16
+ * "tmux next-3.4" → { major: 3, minor: 4, suffix: "" }
17
+ * "tmux 2.9" → { major: 2, minor: 9, suffix: "" }
18
+ *
19
+ * Returns null when no version can be extracted (unknown build, empty
20
+ * output, `tmux master` with no numbers). Callers must treat null as
21
+ * "unknown" and NOT as "too old" — refusing to start on an unparseable
22
+ * version string would break hosts whose tmux is perfectly capable.
23
+ */
24
+ export declare function parseTmuxVersion(raw: string): TmuxVersion | null;
25
+ /**
26
+ * True when this version's `new-session` supports `-e KEY=VALUE` (>= 3.2).
27
+ * Note 3.0a / 3.1c sort BELOW 3.2 — the letter suffix is a patch marker,
28
+ * never a minor bump, so it must not participate in the comparison.
29
+ */
30
+ export declare function tmuxSupportsSessionEnv(v: TmuxVersion): boolean;
31
+ export type TmuxCapabilityVerdict = {
32
+ kind: "ok";
33
+ version: TmuxVersion;
34
+ } | {
35
+ kind: "unknown";
36
+ detail: string;
37
+ } | {
38
+ kind: "too_old";
39
+ version: TmuxVersion;
40
+ detail: string;
41
+ remedy: string[];
42
+ } | {
43
+ kind: "missing";
44
+ detail: string;
45
+ remedy: string[];
46
+ };
47
+ /**
48
+ * Pure decision function — `runVersionCmd` returns `tmux -V` output, or
49
+ * throws if tmux is absent/unrunnable. Split from the printing/exiting
50
+ * wrapper so tests drive every branch without a tmux binary.
51
+ */
52
+ export declare function checkTmuxCapability(runVersionCmd: () => string): TmuxCapabilityVerdict;
53
+ /**
54
+ * cli.ts wrapper: run the check, print an actionable message, and exit
55
+ * non-zero when tmux cannot carry the marker. `unknown` is deliberately
56
+ * permissive — we log and continue.
57
+ */
58
+ export declare function assertTmuxSupportsSessionEnv(runVersionCmd: () => string, log: (msg: string) => void, fail: (msg: string) => never): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network",
3
- "version": "2.3.0-preview.35",
3
+ "version": "2.3.0-preview.37",
4
4
  "description": "AI Agent Network CLI — Local-first multi-agent orchestration across 6 runtimes (Claude Code CLI / Claude Agent SDK / Codex SDK / Codex app-server / Grok Build ACP / OpenCode CLI) and 8+ LLM providers. Apache 2.0.",
5
5
  "type": "module",
6
6
  "main": "dist/src/client.js",