@sleep2agi/agent-network 2.3.0-preview.36 → 2.3.0-preview.38
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/README.md +35 -334
- package/dist/bin/cli.js +1 -1
- package/dist/src/client.js +1 -1
- package/dist/src/im/feishu/worker.js +163 -154
- package/dist/src/node-server.js +1 -1
- package/dist/src/opencode-agent-node-pair.d.ts +1 -1
- package/package.json +1 -1
package/dist/src/node-server.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
const a0_0x3998da=a0_0x497d;(function(_0x51f69e,_0xb5e54a){const _0x5aa0d3=a0_0x497d,_0x14ecfb=_0x51f69e();while(!![]){try{const _0x3c4231=parseInt(_0x5aa0d3(0x12c))/0x1*(parseInt(_0x5aa0d3(0x119))/0x2)+-parseInt(_0x5aa0d3(0x105))/0x3+-parseInt(_0x5aa0d3(0x15c))/0x4+parseInt(_0x5aa0d3(0x10b))/0x5+parseInt(_0x5aa0d3(0x185))/0x6+parseInt(_0x5aa0d3(0x17d))/0x7+parseInt(_0x5aa0d3(0x141))/0x8*(-parseInt(_0x5aa0d3(0x113))/0x9);if(_0x3c4231===_0xb5e54a)break;else _0x14ecfb['push'](_0x14ecfb['shift']());}catch(_0x176713){_0x14ecfb['push'](_0x14ecfb['shift']());}}}(a0_0x5b0c,0x297fb));import{readFileSync as a0_0xb14a48,existsSync as a0_0x4e597a}from'fs';import{randomUUID as a0_0x59272c}from'crypto';import{join as a0_0x3fa273}from'path';import{hostname as a0_0xd1cc4e}from'os';import{execSync as a0_0x2e0630}from'child_process';function B(_0xcd48dc){const _0x23a6ed=a0_0x497d;let _0x3d2961=_0xcd48dc['replace'](/[^a-zA-Z0-9\-_]/g,'-');return _0x3d2961===''?_0x23a6ed(0xff):_0x3d2961;}import{Server as a0_0x417339}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0xc4434c}from'@modelcontextprotocol/sdk/server/stdio.js';import{ListToolsRequestSchema as a0_0x5b019d,CallToolRequestSchema as a0_0x44159d}from'@modelcontextprotocol/sdk/types.js';function T(_0x30c0d8){const _0x8bc4c8=a0_0x497d;if(!a0_0x4e597a(_0x30c0d8))return;for(let _0x22a5a7 of a0_0xb14a48(_0x30c0d8,_0x8bc4c8(0x180))[_0x8bc4c8(0x132)]('\x0a')){let _0x2064ba=_0x22a5a7[_0x8bc4c8(0xfc)]();if(!_0x2064ba||_0x2064ba[_0x8bc4c8(0x16f)]('#'))continue;let _0x561314=_0x2064ba[_0x8bc4c8(0x179)]('=');if(_0x561314<0x0)continue;let _0x36fc57=_0x2064ba[_0x8bc4c8(0x193)](0x0,_0x561314)[_0x8bc4c8(0xfc)](),_0x32b677=_0x2064ba[_0x8bc4c8(0x193)](_0x561314+0x1)[_0x8bc4c8(0xfc)]()[_0x8bc4c8(0x139)](/^["']|["']$/g,'');if(!process.env[_0x36fc57])process.env[_0x36fc57]=_0x32b677;}}var C=process.env.HOME||'~',r=a0_0x3fa273(C,'.claude/channels/commhub');function a0_0x5b0c(){const _0x36d998=['utf-8','Session\x20alias:\x20','unref',']\x20[commhub]\x20','Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates','1087032XHTiqc','failed','content','commhub_report_status',')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','none','2.0','send_task','Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','SSE\x20error:\x20','\x20RESUME_ID=','notification','low','cwd','slice','connected','get','text','catch','high','task',':\x20inbox_count=','trim','send_reply','read','unknown','messages','2025-03-26','length','/events/','Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','149097VzEDbr','Task\x20content','type','working','set','re-register\x20failed:\x20','574205DPGnXJ','now','code','\x20PROJECT_ENV=','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.','Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','decode','statusText','9OeJacA','normal','commhub_send_task','POST','Current\x20task\x20description','parent\x20claude\x20died\x20(reparented\x20to\x20PID\x201\x20from\x20','6ANKPhy','→\x20injected\x20task\x20','send_message','unknown\x20tool','blocked','SSE\x20连续\x20>1h\x20连不上\x20hub\x20(','.anet','Reply\x20text\x20/\x20result\x20summary','stdin','ppid','result','commhub_reply','commhub','report_status','warning:\x20could\x20not\x20register:\x20','SSE\x20connected\x20as\x20\x22','commhub_get_all_status','Progress\x200-100','completed','16202DdDXvL','parse','message_id','MCP\x20stdio\x20connected','\x20ALIAS=','session\x20disconnected','split','setRequestHandler','claude-code','function','http://127.0.0.1:9200','commhub-channel','SSE\x20connection\x20error:\x20','replace','replied','pid','Bearer\x20','registered\x20as\x20\x22','SSE\x20fatal:\x20','(none)','initialize','2996296peoWYW','toTimeString','find','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','/mcp','SIGTERM','notifications/claude/channel','application/json','data:\x20','ack_inbox','0.3.0','\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全网规则).','then','connect','[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20','min','\x20/\x20hostname=','priority','stringify','write','SIGINT','You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','exit','kill','shutting\x20down,\x20reporting\x20offline...','hub','\x20CWD=','308764SeRrgP','idle','Priority\x20(default:\x20normal)','message','no\x20response','end','.env','from','fatal:\x20','pop','ENV:\x20URL=','params','init\x20failed:\x20','config.json','status','tools/call','heartbeat\x20failed:\x20','from_session','cancelled','startsWith','new_message','parent\x20claude\x20pid=','tmux\x20display-message\x20-p\x20\x27#S\x27','in_progress','string','\x22\x20after\x20SSE\x20reconnect','token','ready\x20—\x20waiting\x20for\x20events','starting\x20SSE\x20listener...','indexOf','stderr','Target\x20session\x20alias','unattributed-','2287509jtjsOm','object','error'];a0_0x5b0c=function(){return _0x36d998;};return a0_0x5b0c();}T(a0_0x3fa273(r,a0_0x3998da(0x162)));var H=B(process[a0_0x3998da(0x192)]());T(a0_0x3fa273(r,H,a0_0x3998da(0x162)));function E(){const _0x30a24b=a0_0x3998da;try{return a0_0x2e0630(_0x30a24b(0x172),{'encoding':_0x30a24b(0x180),'timeout':0x7d0})[_0x30a24b(0xfc)]();}catch{return'';}}function _(){const _0x80465=a0_0x3998da;try{let _0x4684b4=a0_0x3fa273(C,_0x80465(0x11f),_0x80465(0x169));if(a0_0x4e597a(_0x4684b4))return JSON[_0x80465(0x12d)](a0_0xb14a48(_0x4684b4,_0x80465(0x180)));}catch{}return{};}var R=_(),Y=process.env.COMMHUB_URL||R[a0_0x3998da(0x15a)]||a0_0x3998da(0x136),j=process.env.COMMHUB_TMUX||E();function a0_0x497d(_0x2b7237,_0x1da58b){_0x2b7237=_0x2b7237-0xf5;const _0x5b0c1d=a0_0x5b0c();let _0x497d38=_0x5b0c1d[_0x2b7237];return _0x497d38;}function S(){const _0xf8d3ec=a0_0x3998da;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS['trim']())return process.env.COMMHUB_ALIAS['trim']();return process[_0xf8d3ec(0x17a)][_0xf8d3ec(0x154)](_0xf8d3ec(0x14f)+('would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME='+(j||_0xf8d3ec(0x13f))+_0xf8d3ec(0x151)+a0_0xd1cc4e()+'.\x20Restart\x20node\x20via\x20`anet\x20node\x20start\x20<alias>`\x20so\x20the\x20env\x20is\x20set\x20explicitly\x20(#203).\x0a')),_0xf8d3ec(0x17c)+process[_0xf8d3ec(0x13b)];}var p=S(),V=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0x59272c(),k=process.env.COMMHUB_TOKEN||R[a0_0x3998da(0x176)]||'';function z(_0x21b7ba){const _0x1538bd=a0_0x3998da;let _0x322f6b=new Date()[_0x1538bd(0x142)]()[_0x1538bd(0x193)](0x0,0x8);process[_0x1538bd(0x17a)]['write']('['+_0x322f6b+_0x1538bd(0x183)+_0x21b7ba+'\x0a');}function i(_0xddae49){return new Promise(_0x32bd71=>setTimeout(_0x32bd71,_0xddae49));}z(a0_0x3998da(0x166)+Y+a0_0x3998da(0x130)+p+a0_0x3998da(0x18f)+V[a0_0x3998da(0x193)](0x0,0x8)+'...\x20TMUX='+(j||a0_0x3998da(0x18a))+a0_0x3998da(0x15b)+process[a0_0x3998da(0x192)]()+a0_0x3998da(0x10e)+H);var G=new Map(),K=new a0_0x417339({'name':a0_0x3998da(0x137),'version':'0.3.0'},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x3998da(0x144),'These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.','Reply\x20routing\x20(IMPORTANT\x20—\x20the\x20tool\x20you\x20pick\x20determines\x20whether\x20the\x20receiver\x20actually\x20gets\x20woken\x20up):',a0_0x3998da(0x14c),'\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.',a0_0x3998da(0x156),a0_0x3998da(0x181)+p]['join']('\x0a')});K[a0_0x3998da(0x133)](a0_0x5b019d,async()=>({'tools':[{'name':a0_0x3998da(0x124),'description':a0_0x3998da(0x10f),'inputSchema':{'type':a0_0x3998da(0x17e),'properties':{'task_id':{'type':'string','description':'The\x20task_id\x20from\x20the\x20channel\x20message\x20(or\x20\x27hub\x27\x20for\x20general)'},'text':{'type':a0_0x3998da(0x174),'description':a0_0x3998da(0x120)},'status':{'type':a0_0x3998da(0x174),'enum':[a0_0x3998da(0x12b),a0_0x3998da(0x186),a0_0x3998da(0x16e),'blocked',a0_0x3998da(0x17f),a0_0x3998da(0x173)],'description':a0_0x3998da(0x184)}},'required':[a0_0x3998da(0xf7)]}},{'name':a0_0x3998da(0x188),'description':'Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','inputSchema':{'type':a0_0x3998da(0x17e),'properties':{'status':{'type':a0_0x3998da(0x174),'enum':['working','idle','blocked',a0_0x3998da(0x17f)]},'task':{'type':a0_0x3998da(0x174),'description':a0_0x3998da(0x117)},'progress':{'type':'number','description':a0_0x3998da(0x12a)}},'required':[a0_0x3998da(0x16a)]}},{'name':a0_0x3998da(0x115),'description':a0_0x3998da(0x104),'inputSchema':{'type':a0_0x3998da(0x17e),'properties':{'alias':{'type':'string','description':'Target\x20session\x20alias'},'task':{'type':'string','description':a0_0x3998da(0x106)},'priority':{'type':a0_0x3998da(0x174),'enum':[a0_0x3998da(0xf9),'normal',a0_0x3998da(0x191)],'description':a0_0x3998da(0x15e)}},'required':['alias',a0_0x3998da(0xfa)]}},{'name':'commhub_send_message','description':a0_0x3998da(0x18d),'inputSchema':{'type':a0_0x3998da(0x17e),'properties':{'alias':{'type':'string','description':a0_0x3998da(0x17b)},'message':{'type':a0_0x3998da(0x174),'description':'Message\x20content'}},'required':['alias',a0_0x3998da(0x15f)]}},{'name':'commhub_get_all_status','description':a0_0x3998da(0x110),'inputSchema':{'type':'object','properties':{}}}]}));async function Q(_0x1315ba,_0x40a4cf){const _0x7811c8=a0_0x3998da;let _0x3a4dd7=await fetch(Y+_0x7811c8(0x145),{'method':_0x7811c8(0x116),'headers':{'Content-Type':_0x7811c8(0x148),'Accept':'application/json,\x20text/event-stream',...k?{'Authorization':_0x7811c8(0x13c)+k}:{}},'body':JSON[_0x7811c8(0x153)]({'jsonrpc':_0x7811c8(0x18b),'id':0x1,'method':_0x7811c8(0x140),'params':{'protocolVersion':_0x7811c8(0x101),'capabilities':{},'clientInfo':{'name':_0x7811c8(0x137),'version':_0x7811c8(0x14b)}}})});if(!_0x3a4dd7['ok']){let _0x1b5ea0=await _0x3a4dd7[_0x7811c8(0xf7)]();return z('CommHub\x20init\x20failed:\x20'+_0x3a4dd7[_0x7811c8(0x16a)]+'\x20'+_0x1b5ea0[_0x7811c8(0x193)](0x0,0x64)),{'ok':!0x1,'error':_0x7811c8(0x168)+_0x3a4dd7['status']};}await _0x3a4dd7[_0x7811c8(0xf7)]();let _0x9e7fcd=(await(await fetch(Y+_0x7811c8(0x145),{'method':_0x7811c8(0x116),'headers':{'Content-Type':_0x7811c8(0x148),'Accept':'application/json,\x20text/event-stream',...k?{'Authorization':'Bearer\x20'+k}:{}},'body':JSON['stringify']({'jsonrpc':_0x7811c8(0x18b),'id':0x2,'method':_0x7811c8(0x16b),'params':{'name':_0x1315ba,'arguments':_0x40a4cf}})}))[_0x7811c8(0xf7)]())[_0x7811c8(0x132)]('\x0a')[_0x7811c8(0x143)](_0x206328=>_0x206328['startsWith'](_0x7811c8(0x149)));if(_0x9e7fcd){let _0x42a9a8=JSON[_0x7811c8(0x12d)](_0x9e7fcd[_0x7811c8(0x193)](0x6));return _0x42a9a8?.[_0x7811c8(0x123)]?.[_0x7811c8(0x187)]?.[0x0]?.[_0x7811c8(0xf7)]?JSON[_0x7811c8(0x12d)](_0x42a9a8[_0x7811c8(0x123)]['content'][0x0][_0x7811c8(0xf7)]):_0x42a9a8;}return{'ok':!0x1,'error':_0x7811c8(0x160)};}K['setRequestHandler'](a0_0x44159d,async _0x571893=>{const _0x4bc984=a0_0x3998da;let {name:_0xad1f02,arguments:_0x1e0f64}=_0x571893[_0x4bc984(0x167)];if(_0xad1f02===_0x4bc984(0x124)){let {task_id:_0x1a76c0,text:_0x4913cc,status:_0x35803a}=_0x1e0f64;if(_0x35803a===_0x4bc984(0x12b)||_0x35803a===_0x4bc984(0x186)||_0x35803a==='cancelled'){let _0x57a8fa=_0x35803a===_0x4bc984(0x12b)?_0x4bc984(0x13a):_0x35803a,_0x559a54=_0x1a76c0?G[_0x4bc984(0xf6)](_0x1a76c0)||_0x4bc984(0x15a):'hub',_0x49fc23=await Q(_0x4bc984(0xfd),{'alias':_0x559a54,'text':_0x4913cc,'in_reply_to':_0x1a76c0||void 0x0,'status':_0x57a8fa,'from_session':p});if(_0x1a76c0)G['delete'](_0x1a76c0);return{'content':[{'type':_0x4bc984(0xf7),'text':JSON['stringify'](_0x49fc23)}]};}let _0x5a5262=await Q('report_status',{'resume_id':V,'alias':p,'status':_0x35803a===_0x4bc984(0x11d)?_0x4bc984(0x11d):_0x35803a===_0x4bc984(0x17f)?_0x4bc984(0x17f):_0x4bc984(0x108),'task':_0x4913cc[_0x4bc984(0x193)](0x0,0xc8),'output':_0x4913cc});return{'content':[{'type':_0x4bc984(0xf7),'text':JSON['stringify'](_0x5a5262)}]};}if(_0xad1f02===_0x4bc984(0x188)){let {status:_0x589d8a,task:_0x5d08e1,progress:_0x1e2639}=_0x1e0f64,_0x22f75d=await Q('report_status',{'resume_id':V,'alias':p,'status':_0x589d8a,'task':_0x5d08e1,'progress':_0x1e2639});return{'content':[{'type':_0x4bc984(0xf7),'text':JSON['stringify'](_0x22f75d)}]};}if(_0xad1f02==='commhub_send_task'){let {alias:_0x5a415f,task:_0x1ea4a4,priority:_0x5d9ca9}=_0x1e0f64,_0x4aeec9=await Q(_0x4bc984(0x18c),{'alias':_0x5a415f,'task':_0x1ea4a4,'priority':_0x5d9ca9||_0x4bc984(0x114),'from_session':p});return{'content':[{'type':_0x4bc984(0xf7),'text':JSON[_0x4bc984(0x153)](_0x4aeec9)}]};}if(_0xad1f02==='commhub_send_message'){let {alias:_0x24b048,message:_0x5b11d0}=_0x1e0f64,_0x44ee77=await Q(_0x4bc984(0x11b),{'alias':_0x24b048,'message':_0x5b11d0,'from_session':p});return{'content':[{'type':_0x4bc984(0xf7),'text':JSON[_0x4bc984(0x153)](_0x44ee77)}]};}if(_0xad1f02===_0x4bc984(0x129)){let _0x21e99d=await Q('get_all_status',{});return{'content':[{'type':_0x4bc984(0xf7),'text':JSON['stringify'](_0x21e99d)}]};}return{'content':[{'type':_0x4bc984(0xf7),'text':JSON['stringify']({'error':_0x4bc984(0x11c)})}]};});var D=0x3e8,v=0x7530,O=0x36ee80;async function m(){const _0x1d9abe=a0_0x3998da;try{await Q(_0x1d9abe(0x126),{'resume_id':V,'alias':p,'status':_0x1d9abe(0x15d),'server':a0_0xd1cc4e(),'hostname':a0_0xd1cc4e(),'agent':_0x1d9abe(0x134),'project_dir':process[_0x1d9abe(0x192)](),'tmux_name':j||void 0x0}),z('re-registered\x20as\x20\x22'+p+_0x1d9abe(0x175));}catch(_0x439e42){z(_0x1d9abe(0x10a)+_0x439e42);}}async function l(){const _0x3cc62f=a0_0x3998da;let _0xea8e30=Y+_0x3cc62f(0x103)+encodeURIComponent(p),_0x53aa0f={};if(k)_0x53aa0f['Authorization']=_0x3cc62f(0x13c)+k;z('connecting\x20to\x20'+_0xea8e30);let _0x4c6ff5=D,_0x5ebb04=!0x0,_0x3c462b=null;while(!0x0){try{let _0xbf13d4=await fetch(_0xea8e30,{'headers':_0x53aa0f});if(!_0xbf13d4['ok']){if(z(_0x3cc62f(0x18e)+_0xbf13d4[_0x3cc62f(0x16a)]+'\x20'+_0xbf13d4[_0x3cc62f(0x112)]),_0x3c462b=_0x3c462b??Date[_0x3cc62f(0x10c)](),Date['now']()-_0x3c462b>O){z('SSE\x20连续\x20>1h\x20连不上\x20hub\x20('+Y+')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。');return;}await i(_0x4c6ff5),_0x4c6ff5=Math['min'](_0x4c6ff5*0x2,v);continue;}let _0x4c11da=_0xbf13d4['body']['getReader'](),_0x5b6ff4=new TextDecoder(),_0x366469='';_0x4c6ff5=D;while(!0x0){let {done:_0x2f6554,value:_0x575fe2}=await _0x4c11da[_0x3cc62f(0xfe)]();if(_0x2f6554)break;_0x366469+=_0x5b6ff4[_0x3cc62f(0x111)](_0x575fe2,{'stream':!0x0});let _0x5b76a2=_0x366469[_0x3cc62f(0x132)]('\x0a\x0a');_0x366469=_0x5b76a2[_0x3cc62f(0x165)]()||'';for(let _0x26f2f6 of _0x5b76a2){let _0x2a5cbf=_0x26f2f6[_0x3cc62f(0x132)]('\x0a')[_0x3cc62f(0x143)](_0x3f56d7=>_0x3f56d7[_0x3cc62f(0x16f)]('data:\x20'));if(!_0x2a5cbf)continue;try{let _0x33d77b=JSON['parse'](_0x2a5cbf[_0x3cc62f(0x193)](0x6));if(await A(_0x33d77b),_0x33d77b[_0x3cc62f(0x107)]===_0x3cc62f(0xf5)){if(_0x3c462b=null,!_0x5ebb04)await m();_0x5ebb04=!0x1;}}catch(_0x308181){z('parse\x20error:\x20'+_0x308181);}}}z('SSE\x20stream\x20ended,\x20reconnecting...');}catch(_0x5f3642){z(_0x3cc62f(0x138)+_0x5f3642);}if(_0x3c462b=_0x3c462b??Date[_0x3cc62f(0x10c)](),Date[_0x3cc62f(0x10c)]()-_0x3c462b>O){z(_0x3cc62f(0x11e)+Y+_0x3cc62f(0x189));return;}await i(_0x4c6ff5),_0x4c6ff5=Math[_0x3cc62f(0x150)](_0x4c6ff5*0x2,v);}}async function A(_0x26c82c){const _0x4fc10b=a0_0x3998da;if(_0x26c82c[_0x4fc10b(0x107)]===_0x4fc10b(0xf5)){z(_0x4fc10b(0x128)+p+'\x22');return;}if(_0x26c82c[_0x4fc10b(0x107)]===_0x4fc10b(0x170)){if(z('←\x20message\x20from\x20'+_0x26c82c[_0x4fc10b(0x163)]+':\x20'+_0x26c82c['message']['slice'](0x0,0x3c)),await K[_0x4fc10b(0x190)]({'method':'notifications/claude/channel','params':{'content':_0x26c82c[_0x4fc10b(0x15f)],'meta':{'sender':_0x26c82c[_0x4fc10b(0x163)]||'hub','sender_id':_0x4fc10b(0x125),'user':_0x26c82c[_0x4fc10b(0x163)]||_0x4fc10b(0x15a),'priority':_0x4fc10b(0x114)}}}),_0x26c82c[_0x4fc10b(0x12e)])await Q(_0x4fc10b(0x14a),{'alias':p,'message_id':_0x26c82c[_0x4fc10b(0x12e)]});return;}if(_0x26c82c[_0x4fc10b(0x107)]==='new_task'||_0x26c82c[_0x4fc10b(0x107)]==='broadcast'){z('←\x20'+_0x26c82c[_0x4fc10b(0x107)]+_0x4fc10b(0xfb)+_0x26c82c['inbox_count']+'\x20priority='+(_0x26c82c[_0x4fc10b(0x152)]||_0x4fc10b(0x114)));let _0x10054b=await Q('get_inbox',{'alias':p,'limit':0x5});if(_0x10054b?.['ok']&&_0x10054b[_0x4fc10b(0x100)]?.[_0x4fc10b(0x102)]>0x0)for(let _0x3c4839 of _0x10054b[_0x4fc10b(0x100)]){let _0x553fd1={'sender':_0x3c4839['from_session']||_0x4fc10b(0x15a),'sender_id':'commhub','user':_0x3c4839[_0x4fc10b(0x16d)]||_0x4fc10b(0x15a),'task_id':_0x3c4839['id'],'priority':_0x3c4839[_0x4fc10b(0x152)]||_0x4fc10b(0x114)};G[_0x4fc10b(0x109)](_0x3c4839['id'],_0x3c4839['from_session']||'hub'),await K[_0x4fc10b(0x190)]({'method':_0x4fc10b(0x147),'params':{'content':_0x3c4839[_0x4fc10b(0x187)],'meta':_0x553fd1}}),z(_0x4fc10b(0x11a)+_0x3c4839['id'][_0x4fc10b(0x193)](0x0,0x8)+'\x20from\x20'+_0x3c4839[_0x4fc10b(0x16d)]+':\x20'+_0x3c4839[_0x4fc10b(0x187)][_0x4fc10b(0x193)](0x0,0x3c)),await Q(_0x4fc10b(0x14a),{'alias':p,'message_id':_0x3c4839['id']});}}}async function t(){const _0x2ef511=a0_0x3998da;let _0x32af90=new a0_0xc4434c();await K[_0x2ef511(0x14e)](_0x32af90),z(_0x2ef511(0x12f)),z(_0x2ef511(0x178)),l()[_0x2ef511(0xf8)](_0x78b2f0=>z(_0x2ef511(0x13e)+_0x78b2f0)),Q(_0x2ef511(0x126),{'resume_id':V,'alias':p,'status':_0x2ef511(0x15d),'server':a0_0xd1cc4e(),'hostname':a0_0xd1cc4e(),'agent':_0x2ef511(0x134),'project_dir':process[_0x2ef511(0x192)](),'tmux_name':j||void 0x0})[_0x2ef511(0x14d)](()=>z(_0x2ef511(0x13d)+p+'\x22\x20('+V['slice'](0x0,0x8)+')'))[_0x2ef511(0xf8)](_0x2948cd=>z(_0x2ef511(0x127)+_0x2948cd)),setInterval(()=>{const _0x52493b=_0x2ef511;Q(_0x52493b(0x126),{'resume_id':V,'alias':p,'status':_0x52493b(0x15d),'server':a0_0xd1cc4e(),'hostname':a0_0xd1cc4e(),'agent':'claude-code','project_dir':process[_0x52493b(0x192)](),'tmux_name':j||void 0x0})[_0x52493b(0xf8)](_0x5311a8=>z(_0x52493b(0x16c)+_0x5311a8));},0x2bf20),z(_0x2ef511(0x177));}t()[a0_0x3998da(0xf8)](_0x219017=>{const _0x3c6010=a0_0x3998da;z(_0x3c6010(0x164)+_0x219017),process[_0x3c6010(0x157)](0x1);});async function b(){const _0x174360=a0_0x3998da;z(_0x174360(0x159)),await Q('report_status',{'resume_id':V,'alias':p,'status':'offline','task':_0x174360(0x131)})[_0x174360(0xf8)](()=>{}),process['exit'](0x0);}process[a0_0x3998da(0x121)]['on'](a0_0x3998da(0x161),()=>b()),process['on'](a0_0x3998da(0x146),()=>b()),process['on'](a0_0x3998da(0x155),()=>b());var d=process['ppid'];if(d&&d>0x1){let h=setInterval(()=>{const _0x1554d0=a0_0x3998da;if(process[_0x1554d0(0x122)]===0x1&&d!==0x1){z(_0x1554d0(0x118)+d+')\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat'),b();return;}try{process[_0x1554d0(0x158)](d,0x0);}catch(_0x325ac9){if(_0x325ac9?.[_0x1554d0(0x10d)]==='ESRCH')z(_0x1554d0(0x171)+d+'\x20no\x20longer\x20exists\x20(kill-0\x20ESRCH)\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat'),b();}},0x7530);if(typeof h[a0_0x3998da(0x182)]===a0_0x3998da(0x135))h[a0_0x3998da(0x182)]();}
|
|
2
|
+
const a0_0x4ee3e0=a0_0x5ae1;(function(_0x21f592,_0x550adc){const _0x1bb4b6=a0_0x5ae1,_0x185374=_0x21f592();while(!![]){try{const _0x15d868=-parseInt(_0x1bb4b6(0x12c))/0x1+parseInt(_0x1bb4b6(0x12a))/0x2+parseInt(_0x1bb4b6(0x158))/0x3*(parseInt(_0x1bb4b6(0xf2))/0x4)+parseInt(_0x1bb4b6(0x16c))/0x5*(parseInt(_0x1bb4b6(0xe1))/0x6)+-parseInt(_0x1bb4b6(0x153))/0x7+parseInt(_0x1bb4b6(0xeb))/0x8+-parseInt(_0x1bb4b6(0x114))/0x9;if(_0x15d868===_0x550adc)break;else _0x185374['push'](_0x185374['shift']());}catch(_0xfb8f40){_0x185374['push'](_0x185374['shift']());}}}(a0_0x2a69,0xf2092));import{readFileSync as a0_0x1acbb3,existsSync as a0_0x350f8a}from'fs';import{randomUUID as a0_0xcba0e0}from'crypto';import{join as a0_0x400161}from'path';import{hostname as a0_0x3964f1}from'os';import{execSync as a0_0x7c693c}from'child_process';function B(_0x4cb1cf){const _0x16d4a5=a0_0x5ae1;let _0x3830cd=_0x4cb1cf[_0x16d4a5(0x11c)](/[^a-zA-Z0-9\-_]/g,'-');return _0x3830cd===''?'unknown':_0x3830cd;}import{Server as a0_0x25d19c}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0x5d40c7}from'@modelcontextprotocol/sdk/server/stdio.js';function a0_0x5ae1(_0x14c599,_0x5706dc){_0x14c599=_0x14c599-0xdc;const _0x2a6905=a0_0x2a69();let _0x5ae197=_0x2a6905[_0x14c599];return _0x5ae197;}import{ListToolsRequestSchema as a0_0x1fb0b7,CallToolRequestSchema as a0_0x563c14}from'@modelcontextprotocol/sdk/types.js';function T(_0x5c2d5d){const _0x445630=a0_0x5ae1;if(!a0_0x350f8a(_0x5c2d5d))return;for(let _0xab4d69 of a0_0x1acbb3(_0x5c2d5d,_0x445630(0x15b))[_0x445630(0x16f)]('\x0a')){let _0x1cb376=_0xab4d69[_0x445630(0x124)]();if(!_0x1cb376||_0x1cb376[_0x445630(0x126)]('#'))continue;let _0x4b299d=_0x1cb376[_0x445630(0x122)]('=');if(_0x4b299d<0x0)continue;let _0x18d165=_0x1cb376[_0x445630(0x128)](0x0,_0x4b299d)[_0x445630(0x124)](),_0x202d44=_0x1cb376[_0x445630(0x128)](_0x4b299d+0x1)[_0x445630(0x124)]()[_0x445630(0x11c)](/^["']|["']$/g,'');if(!process.env[_0x18d165])process.env[_0x18d165]=_0x202d44;}}var C=process.env.HOME||'~',r=a0_0x400161(C,a0_0x4ee3e0(0x137));T(a0_0x400161(r,'.env'));var H=B(process['cwd']());T(a0_0x400161(r,H,a0_0x4ee3e0(0x14a)));function E(){const _0x40bf85=a0_0x4ee3e0;try{return a0_0x7c693c('tmux\x20display-message\x20-p\x20\x27#S\x27',{'encoding':_0x40bf85(0x15b),'timeout':0x7d0})[_0x40bf85(0x124)]();}catch{return'';}}function _(){const _0x3a41cf=a0_0x4ee3e0;try{let _0x524fd8=a0_0x400161(C,_0x3a41cf(0x13c),'config.json');if(a0_0x350f8a(_0x524fd8))return JSON[_0x3a41cf(0x141)](a0_0x1acbb3(_0x524fd8,_0x3a41cf(0x15b)));}catch{}return{};}var R=_(),Y=process.env.COMMHUB_URL||R['hub']||a0_0x4ee3e0(0x120),j=process.env.COMMHUB_TMUX||E();function S(){const _0x508799=a0_0x4ee3e0;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS['trim']())return process.env.COMMHUB_ALIAS[_0x508799(0x124)]();return process[_0x508799(0x150)][_0x508799(0x105)](_0x508799(0x11d)+(_0x508799(0xea)+(j||_0x508799(0xe2))+_0x508799(0x12d)+a0_0x3964f1()+_0x508799(0x178))),_0x508799(0x170)+process[_0x508799(0x16e)];}var p=S(),V=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0xcba0e0(),k=process.env.COMMHUB_TOKEN||R['token']||'';function z(_0x592ff7){const _0x30e6c2=a0_0x4ee3e0;let _0x2227cf=new Date()[_0x30e6c2(0x127)]()[_0x30e6c2(0x128)](0x0,0x8);process[_0x30e6c2(0x150)][_0x30e6c2(0x105)]('['+_0x2227cf+_0x30e6c2(0xef)+_0x592ff7+'\x0a');}function i(_0x5a32a0){return new Promise(_0x17e0fa=>setTimeout(_0x17e0fa,_0x5a32a0));}z('ENV:\x20URL='+Y+'\x20ALIAS='+p+a0_0x4ee3e0(0xe6)+V[a0_0x4ee3e0(0x128)](0x0,0x8)+a0_0x4ee3e0(0x10d)+(j||a0_0x4ee3e0(0xf8))+a0_0x4ee3e0(0x159)+process[a0_0x4ee3e0(0xf0)]()+'\x20PROJECT_ENV='+H);var G=new Map(),K=new a0_0x25d19c({'name':a0_0x4ee3e0(0xfb),'version':'0.3.0'},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x4ee3e0(0x12f),'These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.',a0_0x4ee3e0(0xdd),'\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全网规则).',a0_0x4ee3e0(0xff),a0_0x4ee3e0(0x139),a0_0x4ee3e0(0x11e)+p]['join']('\x0a')});K[a0_0x4ee3e0(0x11f)](a0_0x1fb0b7,async()=>({'tools':[{'name':'commhub_reply','description':'Reply\x20to\x20a\x20Dashboard/UI-originated\x20CommHub\x20task.\x20\u26A0\x20For\x20agent-to-agent\x20replies\x20use\x20commhub_send_task\x20instead\x20\u2014\x20commhub_reply\x20does\x20NOT\x20wake\x20agent\x20peers\x20via\x20SSE\x20(Vincent\x202026-07-28\x20\u5168\u7F51\u89C4\u5219).\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.','inputSchema':{'type':a0_0x4ee3e0(0xf5),'properties':{'task_id':{'type':a0_0x4ee3e0(0x102),'description':a0_0x4ee3e0(0xec)},'text':{'type':a0_0x4ee3e0(0x102),'description':a0_0x4ee3e0(0xed)},'status':{'type':a0_0x4ee3e0(0x102),'enum':[a0_0x4ee3e0(0x108),a0_0x4ee3e0(0x154),a0_0x4ee3e0(0xf1),a0_0x4ee3e0(0x109),a0_0x4ee3e0(0x125),a0_0x4ee3e0(0x100)],'description':a0_0x4ee3e0(0x117)}},'required':[a0_0x4ee3e0(0x14e)]}},{'name':a0_0x4ee3e0(0x17b),'description':a0_0x4ee3e0(0x148),'inputSchema':{'type':'object','properties':{'status':{'type':a0_0x4ee3e0(0x102),'enum':[a0_0x4ee3e0(0x13a),a0_0x4ee3e0(0xfc),'blocked','error']},'task':{'type':'string','description':'Current\x20task\x20description'},'progress':{'type':a0_0x4ee3e0(0x167),'description':a0_0x4ee3e0(0x14b)}},'required':[a0_0x4ee3e0(0x14f)]}},{'name':a0_0x4ee3e0(0x15c),'description':a0_0x4ee3e0(0xf7),'inputSchema':{'type':a0_0x4ee3e0(0xf5),'properties':{'alias':{'type':a0_0x4ee3e0(0x102),'description':a0_0x4ee3e0(0x134)},'task':{'type':a0_0x4ee3e0(0x102),'description':a0_0x4ee3e0(0x144)},'priority':{'type':a0_0x4ee3e0(0x102),'enum':[a0_0x4ee3e0(0x166),a0_0x4ee3e0(0xe4),a0_0x4ee3e0(0x14d)],'description':'Priority\x20(default:\x20normal)'}},'required':[a0_0x4ee3e0(0x10a),a0_0x4ee3e0(0x12b)]}},{'name':'commhub_send_message','description':a0_0x4ee3e0(0x174),'inputSchema':{'type':'object','properties':{'alias':{'type':a0_0x4ee3e0(0x102),'description':'Target\x20session\x20alias'},'message':{'type':'string','description':a0_0x4ee3e0(0xfd)}},'required':['alias','message']}},{'name':'commhub_get_all_status','description':'Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','inputSchema':{'type':a0_0x4ee3e0(0xf5),'properties':{}}}]}));async function Q(_0x246fa5,_0x24af39){const _0xf095f2=a0_0x4ee3e0;let _0x2e5c1=await fetch(Y+_0xf095f2(0x156),{'method':_0xf095f2(0x163),'headers':{'Content-Type':'application/json','Accept':_0xf095f2(0x131),...k?{'Authorization':_0xf095f2(0x152)+k}:{}},'body':JSON['stringify']({'jsonrpc':'2.0','id':0x1,'method':_0xf095f2(0x164),'params':{'protocolVersion':_0xf095f2(0x136),'capabilities':{},'clientInfo':{'name':_0xf095f2(0xfb),'version':'0.3.0'}}})});if(!_0x2e5c1['ok']){let _0x6e715d=await _0x2e5c1[_0xf095f2(0x14e)]();return z(_0xf095f2(0x10b)+_0x2e5c1[_0xf095f2(0x14f)]+'\x20'+_0x6e715d[_0xf095f2(0x128)](0x0,0x64)),{'ok':!0x1,'error':_0xf095f2(0x15d)+_0x2e5c1[_0xf095f2(0x14f)]};}await _0x2e5c1[_0xf095f2(0x14e)]();let _0x1cda5d=(await(await fetch(Y+'/mcp',{'method':'POST','headers':{'Content-Type':_0xf095f2(0x101),'Accept':_0xf095f2(0x131),...k?{'Authorization':_0xf095f2(0x152)+k}:{}},'body':JSON[_0xf095f2(0x133)]({'jsonrpc':_0xf095f2(0xfa),'id':0x2,'method':_0xf095f2(0x15a),'params':{'name':_0x246fa5,'arguments':_0x24af39}})}))[_0xf095f2(0x14e)]())[_0xf095f2(0x16f)]('\x0a')[_0xf095f2(0x10e)](_0x553885=>_0x553885[_0xf095f2(0x126)](_0xf095f2(0xfe)));if(_0x1cda5d){let _0x1211a2=JSON['parse'](_0x1cda5d['slice'](0x6));return _0x1211a2?.['result']?.[_0xf095f2(0x172)]?.[0x0]?.[_0xf095f2(0x14e)]?JSON[_0xf095f2(0x141)](_0x1211a2[_0xf095f2(0x11b)][_0xf095f2(0x172)][0x0][_0xf095f2(0x14e)]):_0x1211a2;}return{'ok':!0x1,'error':'no\x20response'};}function a0_0x2a69(){const _0x47e1a3=[')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','...\x20TMUX=','find','hub','send_message','exit','re-register\x20failed:\x20','decode','17201916pWEaID','catch','kill','Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates','\x20no\x20longer\x20exists\x20(kill-0\x20ESRCH)\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat','starting\x20SSE\x20listener...','ready\x20—\x20waiting\x20for\x20events','result','replace','[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20','Session\x20alias:\x20','setRequestHandler','http://127.0.0.1:9200','SIGINT','indexOf','connecting\x20to\x20','trim','error','startsWith','toTimeString','slice','commhub','810284kshMKq','task','354526SbzYzU','\x20/\x20hostname=','messages','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','SSE\x20stream\x20ended,\x20reconnecting...','application/json,\x20text/event-stream','parse\x20error:\x20','stringify','Target\x20session\x20alias','→\x20injected\x20task\x20','2025-03-26','.claude/channels/commhub','send_task','You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','working','shutting\x20down,\x20reporting\x20offline...','.anet','send_reply','notification','function','from','parse','message_id','min','Task\x20content','fatal:\x20','new_message','report_status','Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','getReader','.env','Progress\x200-100','SSE\x20connected\x20as\x20\x22','low','text','status','stderr','now','Bearer\x20','374087FFnehZ','failed','type','/mcp','\x20from\x20','7968Pumwgn','\x20CWD=','tools/call','utf-8','commhub_send_task','init\x20failed:\x20','connect','get_inbox','end','\x22\x20(','session\x20disconnected','POST','initialize','claude-code','high','number','SSE\x20fatal:\x20','get','notifications/claude/channel','delete','9020WjXcvk','ESRCH','pid','split','unattributed-','SSE\x20error:\x20','content','SSE\x20connection\x20error:\x20','Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','priority','commhub_get_all_status','set','.\x20Restart\x20node\x20via\x20`anet\x20node\x20start\x20<alias>`\x20so\x20the\x20env\x20is\x20set\x20explicitly\x20(#203).\x0a','from_session','statusText','commhub_report_status','read','Reply\x20routing\x20(IMPORTANT\x20—\x20the\x20tool\x20you\x20pick\x20determines\x20whether\x20the\x20receiver\x20actually\x20gets\x20woken\x20up):','connected','heartbeat\x20failed:\x20','re-registered\x20as\x20\x22','492fmwUEE','(none)','SIGTERM','normal','/events/','\x20RESUME_ID=','stdin','replied','registered\x20as\x20\x22','would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME=','8122104ePPMwn','The\x20task_id\x20from\x20the\x20channel\x20message\x20(or\x20\x27hub\x27\x20for\x20general)','Reply\x20text\x20/\x20result\x20summary','unref',']\x20[commhub]\x20','cwd','cancelled','2624guLSZn','then','unknown\x20tool','object','Authorization','Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','none','get_all_status','2.0','commhub-channel','idle','Message\x20content','data:\x20','\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.','in_progress','application/json','string','message','params','write','warning:\x20could\x20not\x20register:\x20','ppid','completed','blocked','alias','CommHub\x20init\x20failed:\x20'];a0_0x2a69=function(){return _0x47e1a3;};return a0_0x2a69();}K[a0_0x4ee3e0(0x11f)](a0_0x563c14,async _0x2a2295=>{const _0xd934ba=a0_0x4ee3e0;let {name:_0x2dea0b,arguments:_0x45fb25}=_0x2a2295[_0xd934ba(0x104)];if(_0x2dea0b==='commhub_reply'){let {task_id:_0x3ae184,text:_0x4b0eb0,status:_0x307e9c}=_0x45fb25;if(_0x307e9c===_0xd934ba(0x108)||_0x307e9c==='failed'||_0x307e9c==='cancelled'){let _0x880f67=_0x307e9c===_0xd934ba(0x108)?_0xd934ba(0xe8):_0x307e9c,_0x2a5d66=_0x3ae184?G[_0xd934ba(0x169)](_0x3ae184)||_0xd934ba(0x10f):_0xd934ba(0x10f),_0x41c890=await Q(_0xd934ba(0x13d),{'alias':_0x2a5d66,'text':_0x4b0eb0,'in_reply_to':_0x3ae184||void 0x0,'status':_0x880f67,'from_session':p});if(_0x3ae184)G[_0xd934ba(0x16b)](_0x3ae184);return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)](_0x41c890)}]};}let _0x594aaf=await Q(_0xd934ba(0x147),{'resume_id':V,'alias':p,'status':_0x307e9c==='blocked'?'blocked':_0x307e9c===_0xd934ba(0x125)?_0xd934ba(0x125):_0xd934ba(0x13a),'task':_0x4b0eb0['slice'](0x0,0xc8),'output':_0x4b0eb0});return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)](_0x594aaf)}]};}if(_0x2dea0b===_0xd934ba(0x17b)){let {status:_0x17303c,task:_0x203e06,progress:_0x3cb254}=_0x45fb25,_0x2831da=await Q('report_status',{'resume_id':V,'alias':p,'status':_0x17303c,'task':_0x203e06,'progress':_0x3cb254});return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)](_0x2831da)}]};}if(_0x2dea0b===_0xd934ba(0x15c)){let {alias:_0x36c717,task:_0x3138a9,priority:_0x5f2208}=_0x45fb25,_0x4807b3=await Q(_0xd934ba(0x138),{'alias':_0x36c717,'task':_0x3138a9,'priority':_0x5f2208||'normal','from_session':p});return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)](_0x4807b3)}]};}if(_0x2dea0b==='commhub_send_message'){let {alias:_0x465633,message:_0x1678a7}=_0x45fb25,_0x30686b=await Q(_0xd934ba(0x110),{'alias':_0x465633,'message':_0x1678a7,'from_session':p});return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)](_0x30686b)}]};}if(_0x2dea0b===_0xd934ba(0x176)){let _0x6193a8=await Q(_0xd934ba(0xf9),{});return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)](_0x6193a8)}]};}return{'content':[{'type':_0xd934ba(0x14e),'text':JSON[_0xd934ba(0x133)]({'error':_0xd934ba(0xf4)})}]};});var D=0x3e8,v=0x7530,O=0x36ee80;async function m(){const _0x3fef30=a0_0x4ee3e0;try{await Q(_0x3fef30(0x147),{'resume_id':V,'alias':p,'status':_0x3fef30(0xfc),'server':a0_0x3964f1(),'hostname':a0_0x3964f1(),'agent':_0x3fef30(0x165),'project_dir':process[_0x3fef30(0xf0)](),'tmux_name':j||void 0x0}),z(_0x3fef30(0xe0)+p+'\x22\x20after\x20SSE\x20reconnect');}catch(_0x244cd0){z(_0x3fef30(0x112)+_0x244cd0);}}async function l(){const _0x51875a=a0_0x4ee3e0;let _0x39bfd0=Y+_0x51875a(0xe5)+encodeURIComponent(p),_0x80a81a={};if(k)_0x80a81a[_0x51875a(0xf6)]=_0x51875a(0x152)+k;z(_0x51875a(0x123)+_0x39bfd0);let _0x54240b=D,_0x4aaa43=!0x0,_0x1a24a1=null;while(!0x0){try{let _0x1cb52d=await fetch(_0x39bfd0,{'headers':_0x80a81a});if(!_0x1cb52d['ok']){if(z(_0x51875a(0x171)+_0x1cb52d[_0x51875a(0x14f)]+'\x20'+_0x1cb52d[_0x51875a(0x17a)]),_0x1a24a1=_0x1a24a1??Date[_0x51875a(0x151)](),Date[_0x51875a(0x151)]()-_0x1a24a1>O){z('SSE\x20连续\x20>1h\x20连不上\x20hub\x20('+Y+_0x51875a(0x10c));return;}await i(_0x54240b),_0x54240b=Math[_0x51875a(0x143)](_0x54240b*0x2,v);continue;}let _0x5d6f66=_0x1cb52d['body'][_0x51875a(0x149)](),_0x4f0322=new TextDecoder(),_0x183d88='';_0x54240b=D;while(!0x0){let {done:_0x537919,value:_0x9e02e0}=await _0x5d6f66[_0x51875a(0xdc)]();if(_0x537919)break;_0x183d88+=_0x4f0322[_0x51875a(0x113)](_0x9e02e0,{'stream':!0x0});let _0x109618=_0x183d88['split']('\x0a\x0a');_0x183d88=_0x109618['pop']()||'';for(let _0x37f149 of _0x109618){let _0x7655=_0x37f149[_0x51875a(0x16f)]('\x0a')[_0x51875a(0x10e)](_0x84b827=>_0x84b827['startsWith'](_0x51875a(0xfe)));if(!_0x7655)continue;try{let _0x571795=JSON[_0x51875a(0x141)](_0x7655[_0x51875a(0x128)](0x6));if(await A(_0x571795),_0x571795[_0x51875a(0x155)]===_0x51875a(0xde)){if(_0x1a24a1=null,!_0x4aaa43)await m();_0x4aaa43=!0x1;}}catch(_0x400b07){z(_0x51875a(0x132)+_0x400b07);}}}z(_0x51875a(0x130));}catch(_0x3d1ec1){z(_0x51875a(0x173)+_0x3d1ec1);}if(_0x1a24a1=_0x1a24a1??Date['now'](),Date[_0x51875a(0x151)]()-_0x1a24a1>O){z('SSE\x20连续\x20>1h\x20连不上\x20hub\x20('+Y+_0x51875a(0x10c));return;}await i(_0x54240b),_0x54240b=Math['min'](_0x54240b*0x2,v);}}async function A(_0x592f6f){const _0xbf8119=a0_0x4ee3e0;if(_0x592f6f[_0xbf8119(0x155)]===_0xbf8119(0xde)){z(_0xbf8119(0x14c)+p+'\x22');return;}if(_0x592f6f[_0xbf8119(0x155)]===_0xbf8119(0x146)){if(z('←\x20message\x20from\x20'+_0x592f6f[_0xbf8119(0x140)]+':\x20'+_0x592f6f[_0xbf8119(0x103)][_0xbf8119(0x128)](0x0,0x3c)),await K[_0xbf8119(0x13e)]({'method':_0xbf8119(0x16a),'params':{'content':_0x592f6f['message'],'meta':{'sender':_0x592f6f[_0xbf8119(0x140)]||'hub','sender_id':_0xbf8119(0x129),'user':_0x592f6f[_0xbf8119(0x140)]||_0xbf8119(0x10f),'priority':_0xbf8119(0xe4)}}}),_0x592f6f[_0xbf8119(0x142)])await Q('ack_inbox',{'alias':p,'message_id':_0x592f6f[_0xbf8119(0x142)]});return;}if(_0x592f6f['type']==='new_task'||_0x592f6f[_0xbf8119(0x155)]==='broadcast'){z('←\x20'+_0x592f6f[_0xbf8119(0x155)]+':\x20inbox_count='+_0x592f6f['inbox_count']+'\x20priority='+(_0x592f6f['priority']||_0xbf8119(0xe4)));let _0x540707=await Q(_0xbf8119(0x15f),{'alias':p,'limit':0x5});if(_0x540707?.['ok']&&_0x540707[_0xbf8119(0x12e)]?.['length']>0x0)for(let _0x51663b of _0x540707[_0xbf8119(0x12e)]){let _0x29bc54={'sender':_0x51663b['from_session']||_0xbf8119(0x10f),'sender_id':'commhub','user':_0x51663b[_0xbf8119(0x179)]||_0xbf8119(0x10f),'task_id':_0x51663b['id'],'priority':_0x51663b[_0xbf8119(0x175)]||_0xbf8119(0xe4)};G[_0xbf8119(0x177)](_0x51663b['id'],_0x51663b['from_session']||'hub'),await K['notification']({'method':_0xbf8119(0x16a),'params':{'content':_0x51663b[_0xbf8119(0x172)],'meta':_0x29bc54}}),z(_0xbf8119(0x135)+_0x51663b['id'][_0xbf8119(0x128)](0x0,0x8)+_0xbf8119(0x157)+_0x51663b['from_session']+':\x20'+_0x51663b[_0xbf8119(0x172)][_0xbf8119(0x128)](0x0,0x3c)),await Q('ack_inbox',{'alias':p,'message_id':_0x51663b['id']});}}}async function t(){const _0x138b96=a0_0x4ee3e0;let _0x59616b=new a0_0x5d40c7();await K[_0x138b96(0x15e)](_0x59616b),z('MCP\x20stdio\x20connected'),z(_0x138b96(0x119)),l()[_0x138b96(0x115)](_0x30b217=>z(_0x138b96(0x168)+_0x30b217)),Q(_0x138b96(0x147),{'resume_id':V,'alias':p,'status':_0x138b96(0xfc),'server':a0_0x3964f1(),'hostname':a0_0x3964f1(),'agent':_0x138b96(0x165),'project_dir':process['cwd'](),'tmux_name':j||void 0x0})[_0x138b96(0xf3)](()=>z(_0x138b96(0xe9)+p+_0x138b96(0x161)+V[_0x138b96(0x128)](0x0,0x8)+')'))[_0x138b96(0x115)](_0x53b10a=>z(_0x138b96(0x106)+_0x53b10a)),setInterval(()=>{const _0x40053a=_0x138b96;Q(_0x40053a(0x147),{'resume_id':V,'alias':p,'status':_0x40053a(0xfc),'server':a0_0x3964f1(),'hostname':a0_0x3964f1(),'agent':'claude-code','project_dir':process[_0x40053a(0xf0)](),'tmux_name':j||void 0x0})['catch'](_0x3edae5=>z(_0x40053a(0xdf)+_0x3edae5));},0x2bf20),z(_0x138b96(0x11a));}t()[a0_0x4ee3e0(0x115)](_0x1f4bcf=>{const _0x26eea7=a0_0x4ee3e0;z(_0x26eea7(0x145)+_0x1f4bcf),process[_0x26eea7(0x111)](0x1);});async function b(){const _0x5d5a04=a0_0x4ee3e0;z(_0x5d5a04(0x13b)),await Q(_0x5d5a04(0x147),{'resume_id':V,'alias':p,'status':'offline','task':_0x5d5a04(0x162)})[_0x5d5a04(0x115)](()=>{}),process[_0x5d5a04(0x111)](0x0);}process[a0_0x4ee3e0(0xe7)]['on'](a0_0x4ee3e0(0x160),()=>b()),process['on'](a0_0x4ee3e0(0xe3),()=>b()),process['on'](a0_0x4ee3e0(0x121),()=>b());var d=process[a0_0x4ee3e0(0x107)];if(d&&d>0x1){let h=setInterval(()=>{const _0x103e71=a0_0x4ee3e0;if(process[_0x103e71(0x107)]===0x1&&d!==0x1){z('parent\x20claude\x20died\x20(reparented\x20to\x20PID\x201\x20from\x20'+d+')\x20—\x20self-exit\x20to\x20avoid\x20ghost\x20heart-beat'),b();return;}try{process[_0x103e71(0x116)](d,0x0);}catch(_0x5a0e5b){if(_0x5a0e5b?.['code']===_0x103e71(0x16d))z('parent\x20claude\x20pid='+d+_0x103e71(0x118)),b();}},0x7530);if(typeof h[a0_0x4ee3e0(0xee)]===a0_0x4ee3e0(0x13f))h[a0_0x4ee3e0(0xee)]();}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const OPENCODE_AGENT_NETWORK_VERSION = "2.3.0-preview.
|
|
1
|
+
export declare const OPENCODE_AGENT_NETWORK_VERSION = "2.3.0-preview.34";
|
|
2
2
|
export declare const OPENCODE_AGENT_NODE_VERSION = "2.5.0-preview.26";
|
|
3
3
|
export declare const OPENCODE_AGENT_NODE_SPEC = "@sleep2agi/agent-node@2.5.0-preview.26";
|
|
4
4
|
export declare function opencodeExactPairInstallCommand(): string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sleep2agi/agent-network",
|
|
3
|
-
"version": "2.3.0-preview.
|
|
3
|
+
"version": "2.3.0-preview.38",
|
|
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",
|