@sleep2agi/agent-network 2.3.0-preview.14 → 2.3.0-preview.16

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.
@@ -72,13 +72,42 @@ export interface NormalizedIMEvent {
72
72
  mentioned: boolean;
73
73
  content: {
74
74
  text?: string;
75
- /** Local filesystem paths to already-downloaded images. */
75
+ /** Local filesystem paths to already-downloaded images.
76
+ *
77
+ * RFC-020 §17 backward-compat shim: the new richer
78
+ * `attachments[]` field below is the canonical source going
79
+ * forward. `images` stays a `string[]` of paths so an older
80
+ * agent-node worker reading this envelope across a rolling
81
+ * upgrade doesn't crash. New workers prefer `attachments`,
82
+ * old workers ignore it and keep using `images`. */
76
83
  images?: string[];
77
84
  files?: {
78
85
  name: string;
79
86
  path?: string;
80
87
  url?: string;
81
88
  }[];
89
+ /** RFC-020 §17 cross-machine attachment descriptors.
90
+ *
91
+ * Each entry mirrors `meta.attachments[]` on commhub tasks
92
+ * (`{ type, file_id?, path?, mime?, name?, size? }`). The
93
+ * feishu bridge populates `file_id` by uploading inbound
94
+ * files to `/api/upload` so cross-host agents delegated via
95
+ * `commhub_send_task(meta.attachments=...)` can fetch via
96
+ * `/api/files/<id>`. When upload fails, `file_id` is absent
97
+ * and the descriptor degrades to path-only (single-host
98
+ * still works via local Read; no regression vs pre-fix
99
+ * baseline).
100
+ *
101
+ * Always populated alongside `images` for the same files —
102
+ * duplication is intentional for rolling-upgrade safety. */
103
+ attachments?: Array<{
104
+ type: "image" | "file";
105
+ path?: string;
106
+ file_id?: string;
107
+ mime?: string;
108
+ name?: string;
109
+ size?: number;
110
+ }>;
82
111
  };
83
112
  /**
84
113
  * Original platform payload. Default: held in memory only and dropped after
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env bun
2
- function a0_0x53e0(){const _0x1821f6=['replace','POST','exit','tmux\x20display-message\x20-p\x20\x27#S\x27','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','type','connect','hub','\x22\x20after\x20SSE\x20reconnect','cwd','...\x20TMUX=','toTimeString','string','new_message','/events/','report_status','1163994vzJPsI','SSE\x20connection\x20error:\x20','offline','76472fylBjk','content','heartbeat\x20failed:\x20','failed','read','getReader','Current\x20task\x20description','32VpEwjz','result','send_message','.claude/channels/commhub','messages','\x20CWD=','Message\x20content','SIGTERM','blocked','SSE\x20fatal:\x20','Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','connected','CommHub\x20init\x20failed:\x20','Authorization','notification','[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20','ack_inbox','commhub_send_task','error',':\x20inbox_count=','startsWith','MCP\x20stdio\x20connected','SIGINT','←\x20message\x20from\x20','Task\x20content','tools/call','delete','send_task','trim','http://127.0.0.1:9200','length','\x20priority=','2.0','commhub','join','unattributed-','utf-8','split','params','commhub_report_status','application/json,\x20text/event-stream','0.3.0','setRequestHandler','1507WIhpTS','working','registered\x20as\x20\x22','normal','slice','token','commhub_reply','\x20/\x20hostname=','→\x20injected\x20task\x20','commhub-channel','shutting\x20down,\x20reporting\x20offline...','stringify','9mpchDd','text','\x20PROJECT_ENV=','These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.','high',')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','re-register\x20failed:\x20','message','35081rIDWoN','set','connecting\x20to\x20','get_all_status','Priority\x20(default:\x20normal)','find','get','SSE\x20error:\x20','end','replied','pop','Target\x20session\x20alias','451068NqDmUW','from','min','priority','581QmbHXX','init\x20failed:\x20','Reply\x20to\x20a\x20CommHub\x20task\x20—\x20report\x20completion\x20or\x20send\x20a\x20message\x20back\x20to\x20the\x20hub.','Reply\x20using\x20the\x20commhub_reply\x20tool\x20to\x20report\x20status\x20or\x20results\x20back.','Bearer\x20','low','SSE\x20连续\x20>1h\x20连不上\x20hub\x20(','decode','now','/mcp','Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','get_inbox','data:\x20','object',']\x20[commhub]\x20','commhub_get_all_status','457495gpXoim','alias','\x22\x20(','completed','SSE\x20stream\x20ended,\x20reconnecting...','unknown\x20tool','re-registered\x20as\x20\x22','\x20ALIAS=','indexOf','notifications/claude/channel','then','\x20RESUME_ID=','Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','from_session','cancelled','new_task','Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','session\x20disconnected','application/json','claude-code','message_id','6gyfEAf','inbox_count','config.json','commhub_send_message','write','(none)','status','send_reply','.env','starting\x20SSE\x20listener...','Progress\x200-100','Reply\x20text\x20/\x20result\x20summary','number','.\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)','stderr','would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME=','\x20from\x20','idle','63708TxAVnv','11033120SvTgzh','statusText','parse','pid','catch','ENV:\x20URL=','fatal:\x20'];a0_0x53e0=function(){return _0x1821f6;};return a0_0x53e0();}const a0_0x741f3f=a0_0x7c29;(function(_0x5d3a7c,_0x35364a){const _0xf6cee5=a0_0x7c29,_0x226804=_0x5d3a7c();while(!![]){try{const _0x5286db=-parseInt(_0xf6cee5(0x185))/0x1+parseInt(_0xf6cee5(0x13c))/0x2+parseInt(_0xf6cee5(0x191))/0x3*(-parseInt(_0xf6cee5(0x146))/0x4)+parseInt(_0xf6cee5(0x1a5))/0x5*(parseInt(_0xf6cee5(0x111))/0x6)+-parseInt(_0xf6cee5(0x195))/0x7*(-parseInt(_0xf6cee5(0x13f))/0x8)+-parseInt(_0xf6cee5(0x17d))/0x9*(-parseInt(_0xf6cee5(0x125))/0xa)+-parseInt(_0xf6cee5(0x171))/0xb*(parseInt(_0xf6cee5(0x124))/0xc);if(_0x5286db===_0x35364a)break;else _0x226804['push'](_0x226804['shift']());}catch(_0x368c5a){_0x226804['push'](_0x226804['shift']());}}}(a0_0x53e0,0x93b0f));import{readFileSync as a0_0x25ab67,existsSync as a0_0x2e4474}from'fs';import{randomUUID as a0_0x9b5245}from'crypto';import{join as a0_0x42db3c}from'path';import{hostname as a0_0x22bf54}from'os';import{execSync as a0_0xf851a5}from'child_process';import{Server as a0_0x3c7581}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0x2f7ff0}from'@modelcontextprotocol/sdk/server/stdio.js';import{ListToolsRequestSchema as a0_0x4a2d25,CallToolRequestSchema as a0_0x3fbdf0}from'@modelcontextprotocol/sdk/types.js';function I(_0x3f116f){const _0x3b2b49=a0_0x7c29;if(!a0_0x2e4474(_0x3f116f))return;for(let _0x5ab821 of a0_0x25ab67(_0x3f116f,_0x3b2b49(0x16a))[_0x3b2b49(0x16b)]('\x0a')){let _0x2ba39b=_0x5ab821[_0x3b2b49(0x162)]();if(!_0x2ba39b||_0x2ba39b[_0x3b2b49(0x15a)]('#'))continue;let _0x506df8=_0x2ba39b[_0x3b2b49(0x104)]('=');if(_0x506df8<0x0)continue;let _0x657808=_0x2ba39b['slice'](0x0,_0x506df8)[_0x3b2b49(0x162)](),_0x37620e=_0x2ba39b[_0x3b2b49(0x175)](_0x506df8+0x1)[_0x3b2b49(0x162)]()[_0x3b2b49(0x12c)](/^["']|["']$/g,'');if(!process.env[_0x657808])process.env[_0x657808]=_0x37620e;}}var L=process.env.HOME||'~',U=a0_0x42db3c(L,a0_0x741f3f(0x149));I(a0_0x42db3c(U,a0_0x741f3f(0x119)));var v=process['cwd']()['replace'](/\//g,'-');I(a0_0x42db3c(U,v,a0_0x741f3f(0x119)));function d(){const _0x385e67=a0_0x741f3f;try{return a0_0xf851a5(_0x385e67(0x12f),{'encoding':'utf-8','timeout':0x7d0})[_0x385e67(0x162)]();}catch{return'';}}function m(){const _0x3be837=a0_0x741f3f;try{let _0x3abf55=a0_0x42db3c(L,'.anet',_0x3be837(0x113));if(a0_0x2e4474(_0x3abf55))return JSON[_0x3be837(0x127)](a0_0x25ab67(_0x3abf55,_0x3be837(0x16a)));}catch{}return{};}var u=m(),j=process.env.COMMHUB_URL||u[a0_0x741f3f(0x133)]||a0_0x741f3f(0x163),f=process.env.COMMHUB_TMUX||d();function a0_0x7c29(_0xc7dc9a,_0x5afd25){_0xc7dc9a=_0xc7dc9a-0x104;const _0x53e028=a0_0x53e0();let _0x7c299c=_0x53e028[_0xc7dc9a];return _0x7c299c;}function r(){const _0x26e90a=a0_0x741f3f;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS[_0x26e90a(0x162)]())return process.env.COMMHUB_ALIAS['trim']();return process[_0x26e90a(0x120)][_0x26e90a(0x115)](_0x26e90a(0x155)+(_0x26e90a(0x121)+(f||_0x26e90a(0x116))+_0x26e90a(0x178)+a0_0x22bf54()+_0x26e90a(0x11e))),_0x26e90a(0x169)+process[_0x26e90a(0x128)];}var G=r(),K=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0x9b5245(),F=process.env.COMMHUB_TOKEN||u[a0_0x741f3f(0x176)]||'';function W(_0x2a5491){const _0x2f8abb=a0_0x741f3f;let _0x1743c9=new Date()[_0x2f8abb(0x137)]()[_0x2f8abb(0x175)](0x0,0x8);process[_0x2f8abb(0x120)][_0x2f8abb(0x115)]('['+_0x1743c9+_0x2f8abb(0x1a3)+_0x2a5491+'\x0a');}function N(_0x286347){return new Promise(_0x13e25d=>setTimeout(_0x13e25d,_0x286347));}W(a0_0x741f3f(0x12a)+j+a0_0x741f3f(0x1ac)+G+a0_0x741f3f(0x107)+K['slice'](0x0,0x8)+a0_0x741f3f(0x136)+(f||'none')+a0_0x741f3f(0x14b)+process[a0_0x741f3f(0x135)]()+a0_0x741f3f(0x17f)+v);var D=new Map(),x=new a0_0x3c7581({'name':a0_0x741f3f(0x17a),'version':a0_0x741f3f(0x16f)},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x741f3f(0x130),a0_0x741f3f(0x180),a0_0x741f3f(0x198),'You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','Session\x20alias:\x20'+G][a0_0x741f3f(0x168)]('\x0a')});x[a0_0x741f3f(0x170)](a0_0x4a2d25,async()=>({'tools':[{'name':a0_0x741f3f(0x177),'description':a0_0x741f3f(0x197),'inputSchema':{'type':a0_0x741f3f(0x1a2),'properties':{'task_id':{'type':a0_0x741f3f(0x138),'description':a0_0x741f3f(0x11f)},'text':{'type':'string','description':a0_0x741f3f(0x11c)},'status':{'type':a0_0x741f3f(0x138),'enum':[a0_0x741f3f(0x1a8),a0_0x741f3f(0x142),a0_0x741f3f(0x10a),'blocked','error','in_progress'],'description':'Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates'}},'required':[a0_0x741f3f(0x17e)]}},{'name':a0_0x741f3f(0x16d),'description':a0_0x741f3f(0x150),'inputSchema':{'type':a0_0x741f3f(0x1a2),'properties':{'status':{'type':a0_0x741f3f(0x138),'enum':[a0_0x741f3f(0x172),a0_0x741f3f(0x123),a0_0x741f3f(0x14e),a0_0x741f3f(0x158)]},'task':{'type':a0_0x741f3f(0x138),'description':a0_0x741f3f(0x145)},'progress':{'type':a0_0x741f3f(0x11d),'description':a0_0x741f3f(0x11b)}},'required':[a0_0x741f3f(0x117)]}},{'name':a0_0x741f3f(0x157),'description':a0_0x741f3f(0x10c),'inputSchema':{'type':a0_0x741f3f(0x1a2),'properties':{'alias':{'type':a0_0x741f3f(0x138),'description':a0_0x741f3f(0x190)},'task':{'type':'string','description':a0_0x741f3f(0x15e)},'priority':{'type':a0_0x741f3f(0x138),'enum':[a0_0x741f3f(0x181),a0_0x741f3f(0x174),a0_0x741f3f(0x19a)],'description':a0_0x741f3f(0x189)}},'required':[a0_0x741f3f(0x1a6),'task']}},{'name':'commhub_send_message','description':a0_0x741f3f(0x108),'inputSchema':{'type':a0_0x741f3f(0x1a2),'properties':{'alias':{'type':a0_0x741f3f(0x138),'description':a0_0x741f3f(0x190)},'message':{'type':a0_0x741f3f(0x138),'description':a0_0x741f3f(0x14c)}},'required':[a0_0x741f3f(0x1a6),a0_0x741f3f(0x184)]}},{'name':'commhub_get_all_status','description':a0_0x741f3f(0x19f),'inputSchema':{'type':a0_0x741f3f(0x1a2),'properties':{}}}]}));async function Y(_0x292117,_0x92f899){const _0x344dab=a0_0x741f3f;let _0x195ba1=await fetch(j+'/mcp',{'method':_0x344dab(0x12d),'headers':{'Content-Type':_0x344dab(0x10e),'Accept':_0x344dab(0x16e),...F?{'Authorization':'Bearer\x20'+F}:{}},'body':JSON[_0x344dab(0x17c)]({'jsonrpc':_0x344dab(0x166),'id':0x1,'method':'initialize','params':{'protocolVersion':'2025-03-26','capabilities':{},'clientInfo':{'name':'commhub-channel','version':_0x344dab(0x16f)}}})});if(!_0x195ba1['ok']){let _0x3d8125=await _0x195ba1['text']();return W(_0x344dab(0x152)+_0x195ba1[_0x344dab(0x117)]+'\x20'+_0x3d8125['slice'](0x0,0x64)),{'ok':!0x1,'error':_0x344dab(0x196)+_0x195ba1['status']};}await _0x195ba1['text']();let _0x22b705=(await(await fetch(j+_0x344dab(0x19e),{'method':_0x344dab(0x12d),'headers':{'Content-Type':_0x344dab(0x10e),'Accept':'application/json,\x20text/event-stream',...F?{'Authorization':_0x344dab(0x199)+F}:{}},'body':JSON[_0x344dab(0x17c)]({'jsonrpc':_0x344dab(0x166),'id':0x2,'method':_0x344dab(0x15f),'params':{'name':_0x292117,'arguments':_0x92f899}})}))[_0x344dab(0x17e)]())['split']('\x0a')[_0x344dab(0x18a)](_0x50ad65=>_0x50ad65['startsWith'](_0x344dab(0x1a1)));if(_0x22b705){let _0x417a0e=JSON['parse'](_0x22b705['slice'](0x6));return _0x417a0e?.[_0x344dab(0x147)]?.['content']?.[0x0]?.[_0x344dab(0x17e)]?JSON['parse'](_0x417a0e['result'][_0x344dab(0x140)][0x0]['text']):_0x417a0e;}return{'ok':!0x1,'error':'no\x20response'};}x['setRequestHandler'](a0_0x3fbdf0,async _0x407a4c=>{const _0x20cb96=a0_0x741f3f;let {name:_0x182122,arguments:_0x1baa83}=_0x407a4c[_0x20cb96(0x16c)];if(_0x182122===_0x20cb96(0x177)){let {task_id:_0x2e78dc,text:_0x150ece,status:_0x584453}=_0x1baa83;if(_0x584453===_0x20cb96(0x1a8)||_0x584453===_0x20cb96(0x142)||_0x584453===_0x20cb96(0x10a)){let _0x43d1e6=_0x584453===_0x20cb96(0x1a8)?_0x20cb96(0x18e):_0x584453,_0x27f288=_0x2e78dc?D[_0x20cb96(0x18b)](_0x2e78dc)||_0x20cb96(0x133):_0x20cb96(0x133),_0x4c1ff1=await Y(_0x20cb96(0x118),{'alias':_0x27f288,'text':_0x150ece,'in_reply_to':_0x2e78dc||void 0x0,'status':_0x43d1e6,'from_session':G});if(_0x2e78dc)D[_0x20cb96(0x160)](_0x2e78dc);return{'content':[{'type':_0x20cb96(0x17e),'text':JSON['stringify'](_0x4c1ff1)}]};}let _0x527927=await Y(_0x20cb96(0x13b),{'resume_id':K,'alias':G,'status':_0x584453===_0x20cb96(0x14e)?_0x20cb96(0x14e):_0x584453===_0x20cb96(0x158)?'error':_0x20cb96(0x172),'task':_0x150ece['slice'](0x0,0xc8),'output':_0x150ece});return{'content':[{'type':_0x20cb96(0x17e),'text':JSON[_0x20cb96(0x17c)](_0x527927)}]};}if(_0x182122===_0x20cb96(0x16d)){let {status:_0x2f9623,task:_0x8d428a,progress:_0x5bd72b}=_0x1baa83,_0x37bf1b=await Y(_0x20cb96(0x13b),{'resume_id':K,'alias':G,'status':_0x2f9623,'task':_0x8d428a,'progress':_0x5bd72b});return{'content':[{'type':'text','text':JSON[_0x20cb96(0x17c)](_0x37bf1b)}]};}if(_0x182122===_0x20cb96(0x157)){let {alias:_0x2a1da1,task:_0x279065,priority:_0x2e21ad}=_0x1baa83,_0x3dd0cd=await Y(_0x20cb96(0x161),{'alias':_0x2a1da1,'task':_0x279065,'priority':_0x2e21ad||_0x20cb96(0x174),'from_session':G});return{'content':[{'type':_0x20cb96(0x17e),'text':JSON[_0x20cb96(0x17c)](_0x3dd0cd)}]};}if(_0x182122===_0x20cb96(0x114)){let {alias:_0x1458e7,message:_0x11c3a8}=_0x1baa83,_0x5c3038=await Y(_0x20cb96(0x148),{'alias':_0x1458e7,'message':_0x11c3a8,'from_session':G});return{'content':[{'type':_0x20cb96(0x17e),'text':JSON[_0x20cb96(0x17c)](_0x5c3038)}]};}if(_0x182122===_0x20cb96(0x1a4)){let _0x69f370=await Y(_0x20cb96(0x188),{});return{'content':[{'type':_0x20cb96(0x17e),'text':JSON[_0x20cb96(0x17c)](_0x69f370)}]};}return{'content':[{'type':'text','text':JSON[_0x20cb96(0x17c)]({'error':_0x20cb96(0x1aa)})}]};});var O=0x3e8,R=0x7530,T=0x36ee80;async function l(){const _0x473776=a0_0x741f3f;try{await Y(_0x473776(0x13b),{'resume_id':K,'alias':G,'status':_0x473776(0x123),'server':a0_0x22bf54(),'hostname':a0_0x22bf54(),'agent':_0x473776(0x10f),'project_dir':process[_0x473776(0x135)](),'tmux_name':f||void 0x0}),W(_0x473776(0x1ab)+G+_0x473776(0x134));}catch(_0x13ba06){W(_0x473776(0x183)+_0x13ba06);}}async function o(){const _0x121d8b=a0_0x741f3f;let _0xb90aca=j+_0x121d8b(0x13a)+encodeURIComponent(G),_0x164c6f={};if(F)_0x164c6f[_0x121d8b(0x153)]=_0x121d8b(0x199)+F;W(_0x121d8b(0x187)+_0xb90aca);let _0x138487=O,_0x4b9f5d=!0x0,_0x27cbae=null;while(!0x0){try{let _0x14c94d=await fetch(_0xb90aca,{'headers':_0x164c6f});if(!_0x14c94d['ok']){if(W(_0x121d8b(0x18c)+_0x14c94d['status']+'\x20'+_0x14c94d[_0x121d8b(0x126)]),_0x27cbae=_0x27cbae??Date[_0x121d8b(0x19d)](),Date['now']()-_0x27cbae>T){W(_0x121d8b(0x19b)+j+')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。');return;}await N(_0x138487),_0x138487=Math[_0x121d8b(0x193)](_0x138487*0x2,R);continue;}let _0xf44fdd=_0x14c94d['body'][_0x121d8b(0x144)](),_0x172440=new TextDecoder(),_0x1d0fee='';_0x138487=O;while(!0x0){let {done:_0x3f202d,value:_0x1d4ef7}=await _0xf44fdd[_0x121d8b(0x143)]();if(_0x3f202d)break;_0x1d0fee+=_0x172440[_0x121d8b(0x19c)](_0x1d4ef7,{'stream':!0x0});let _0x54ae3f=_0x1d0fee[_0x121d8b(0x16b)]('\x0a\x0a');_0x1d0fee=_0x54ae3f[_0x121d8b(0x18f)]()||'';for(let _0x539953 of _0x54ae3f){let _0x47813f=_0x539953[_0x121d8b(0x16b)]('\x0a')['find'](_0x469d0d=>_0x469d0d[_0x121d8b(0x15a)](_0x121d8b(0x1a1)));if(!_0x47813f)continue;try{let _0x38e215=JSON[_0x121d8b(0x127)](_0x47813f[_0x121d8b(0x175)](0x6));if(await a(_0x38e215),_0x38e215[_0x121d8b(0x131)]==='connected'){if(_0x27cbae=null,!_0x4b9f5d)await l();_0x4b9f5d=!0x1;}}catch(_0x2c529f){W('parse\x20error:\x20'+_0x2c529f);}}}W(_0x121d8b(0x1a9));}catch(_0xc3b305){W(_0x121d8b(0x13d)+_0xc3b305);}if(_0x27cbae=_0x27cbae??Date[_0x121d8b(0x19d)](),Date[_0x121d8b(0x19d)]()-_0x27cbae>T){W('SSE\x20连续\x20>1h\x20连不上\x20hub\x20('+j+_0x121d8b(0x182));return;}await N(_0x138487),_0x138487=Math[_0x121d8b(0x193)](_0x138487*0x2,R);}}async function a(_0x231cce){const _0x571de5=a0_0x741f3f;if(_0x231cce[_0x571de5(0x131)]===_0x571de5(0x151)){W('SSE\x20connected\x20as\x20\x22'+G+'\x22');return;}if(_0x231cce[_0x571de5(0x131)]===_0x571de5(0x139)){if(W(_0x571de5(0x15d)+_0x231cce['from']+':\x20'+_0x231cce['message'][_0x571de5(0x175)](0x0,0x3c)),await x[_0x571de5(0x154)]({'method':_0x571de5(0x105),'params':{'content':_0x231cce[_0x571de5(0x184)],'meta':{'sender':_0x231cce[_0x571de5(0x192)]||'hub','sender_id':_0x571de5(0x167),'user':_0x231cce[_0x571de5(0x192)]||_0x571de5(0x133),'priority':_0x571de5(0x174)}}}),_0x231cce[_0x571de5(0x110)])await Y(_0x571de5(0x156),{'alias':G,'message_id':_0x231cce['message_id']});return;}if(_0x231cce['type']===_0x571de5(0x10b)||_0x231cce['type']==='broadcast'){W('←\x20'+_0x231cce[_0x571de5(0x131)]+_0x571de5(0x159)+_0x231cce[_0x571de5(0x112)]+_0x571de5(0x165)+(_0x231cce[_0x571de5(0x194)]||_0x571de5(0x174)));let _0x49bafb=await Y(_0x571de5(0x1a0),{'alias':G,'limit':0x5});if(_0x49bafb?.['ok']&&_0x49bafb[_0x571de5(0x14a)]?.[_0x571de5(0x164)]>0x0)for(let _0x243b60 of _0x49bafb[_0x571de5(0x14a)]){let _0x2c461e={'sender':_0x243b60[_0x571de5(0x109)]||_0x571de5(0x133),'sender_id':_0x571de5(0x167),'user':_0x243b60[_0x571de5(0x109)]||_0x571de5(0x133),'task_id':_0x243b60['id'],'priority':_0x243b60[_0x571de5(0x194)]||'normal'};D[_0x571de5(0x186)](_0x243b60['id'],_0x243b60[_0x571de5(0x109)]||'hub'),await x[_0x571de5(0x154)]({'method':_0x571de5(0x105),'params':{'content':_0x243b60[_0x571de5(0x140)],'meta':_0x2c461e}}),W(_0x571de5(0x179)+_0x243b60['id'][_0x571de5(0x175)](0x0,0x8)+_0x571de5(0x122)+_0x243b60[_0x571de5(0x109)]+':\x20'+_0x243b60[_0x571de5(0x140)][_0x571de5(0x175)](0x0,0x3c)),await Y(_0x571de5(0x156),{'alias':G,'message_id':_0x243b60['id']});}}}async function n(){const _0x3fc603=a0_0x741f3f;let _0x150a96=new a0_0x2f7ff0();await x[_0x3fc603(0x132)](_0x150a96),W(_0x3fc603(0x15b)),W(_0x3fc603(0x11a)),o()['catch'](_0x31ff9e=>W(_0x3fc603(0x14f)+_0x31ff9e)),Y(_0x3fc603(0x13b),{'resume_id':K,'alias':G,'status':'idle','server':a0_0x22bf54(),'hostname':a0_0x22bf54(),'agent':_0x3fc603(0x10f),'project_dir':process[_0x3fc603(0x135)](),'tmux_name':f||void 0x0})[_0x3fc603(0x106)](()=>W(_0x3fc603(0x173)+G+_0x3fc603(0x1a7)+K[_0x3fc603(0x175)](0x0,0x8)+')'))['catch'](_0x1e483e=>W('warning:\x20could\x20not\x20register:\x20'+_0x1e483e)),setInterval(()=>{const _0x1e3b66=_0x3fc603;Y(_0x1e3b66(0x13b),{'resume_id':K,'alias':G,'status':'idle','server':a0_0x22bf54(),'hostname':a0_0x22bf54(),'agent':_0x1e3b66(0x10f),'project_dir':process[_0x1e3b66(0x135)](),'tmux_name':f||void 0x0})['catch'](_0x517e48=>W(_0x1e3b66(0x141)+_0x517e48));},0x2bf20),W('ready\x20—\x20waiting\x20for\x20events');}n()['catch'](_0x425fa8=>{const _0x43164b=a0_0x741f3f;W(_0x43164b(0x12b)+_0x425fa8),process['exit'](0x1);});async function b(){const _0x34773f=a0_0x741f3f;W(_0x34773f(0x17b)),await Y(_0x34773f(0x13b),{'resume_id':K,'alias':G,'status':_0x34773f(0x13e),'task':_0x34773f(0x10d)})[_0x34773f(0x129)](()=>{}),process[_0x34773f(0x12e)](0x0);}process['stdin']['on'](a0_0x741f3f(0x18d),()=>b()),process['on'](a0_0x741f3f(0x14d),()=>b()),process['on'](a0_0x741f3f(0x15c),()=>b());
2
+ const a0_0x33e67d=a0_0x43a0;(function(_0x597c6f,_0x28a852){const _0x3d907f=a0_0x43a0,_0xab79d1=_0x597c6f();while(!![]){try{const _0x28bf0d=-parseInt(_0x3d907f(0x194))/0x1*(-parseInt(_0x3d907f(0x20b))/0x2)+-parseInt(_0x3d907f(0x1e6))/0x3*(parseInt(_0x3d907f(0x214))/0x4)+parseInt(_0x3d907f(0x1c8))/0x5*(parseInt(_0x3d907f(0x225))/0x6)+-parseInt(_0x3d907f(0x1fb))/0x7+parseInt(_0x3d907f(0x1de))/0x8+parseInt(_0x3d907f(0x192))/0x9*(-parseInt(_0x3d907f(0x1f6))/0xa)+parseInt(_0x3d907f(0x1e1))/0xb*(parseInt(_0x3d907f(0x1d2))/0xc);if(_0x28bf0d===_0x28a852)break;else _0xab79d1['push'](_0xab79d1['shift']());}catch(_0x3c3b24){_0xab79d1['push'](_0xab79d1['shift']());}}}(a0_0x10cd,0x48563));function a0_0x10cd(){const _0x125c75=['trim','string','\x20priority=','would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME=','broadcast','Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','688eSxaGe','ack_inbox','slice','hub','result','\x20CWD=','Progress\x200-100','(none)','get','re-register\x20failed:\x20','from','Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','Bearer\x20','.env','cancelled','ENV:\x20URL=','pid','6EweufI','2025-03-26','The\x20task_id\x20from\x20the\x20channel\x20message\x20(or\x20\x27hub\x27\x20for\x20general)','decode','object','/events/','normal',':\x20inbox_count=','Priority\x20(default:\x20normal)','report_status','Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','message_id','params','19305LLlKnh','get_inbox','10zumqLB','commhub_get_all_status','Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','SIGINT','SSE\x20stream\x20ended,\x20reconnecting...','re-registered\x20as\x20\x22','write','Session\x20alias:\x20','application/json','registered\x20as\x20\x22','min',']\x20[commhub]\x20','SSE\x20fatal:\x20','tmux\x20display-message\x20-p\x20\x27#S\x27','commhub_send_message','fatal:\x20','[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20','Reply\x20to\x20a\x20CommHub\x20task\x20—\x20report\x20completion\x20or\x20send\x20a\x20message\x20back\x20to\x20the\x20hub.','notifications/claude/channel','completed','http://127.0.0.1:9200',')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','←\x20message\x20from\x20','commhub','Reply\x20text\x20/\x20result\x20summary','low','0.3.0','commhub_send_task','type','\x20from\x20','find','These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.','task','in_progress','stderr','working','application/json,\x20text/event-stream','failed','replied','split','delete','starting\x20SSE\x20listener...','token','connected','from_session','initialize','alias','high','idle','statusText','SIGTERM','Target\x20session\x20alias','2051045PTcLyR','data:\x20','parse','MCP\x20stdio\x20connected','/mcp','toTimeString','SSE\x20连续\x20>1h\x20连不上\x20hub\x20(','catch','get_all_status','2.0','1538364XPJcnB','no\x20response','utf-8','cwd','You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','stringify','unknown\x20tool','send_message','new_message','Current\x20task\x20description','notification','priority','3429672ZlFDBC','body','setRequestHandler','11fRQYTV','text','\x22\x20after\x20SSE\x20reconnect','connect','number','5883UAVsOQ','Reply\x20using\x20the\x20commhub_reply\x20tool\x20to\x20report\x20status\x20or\x20results\x20back.','new_task','message','claude-code','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','offline','SSE\x20connection\x20error:\x20','replace','indexOf','ready\x20—\x20waiting\x20for\x20events','warning:\x20could\x20not\x20register:\x20','blocked','...\x20TMUX=','unattributed-','init\x20failed:\x20','2580RLPyEd','now','Task\x20content','messages','\x20RESUME_ID=','1479184TwTJuB','\x20/\x20hostname=','POST','status','SSE\x20error:\x20','.anet','error','Message\x20content','startsWith','send_task','exit','read','content','CommHub\x20init\x20failed:\x20','\x20PROJECT_ENV=','SSE\x20connected\x20as\x20\x22','86238NfkApv','inbox_count','Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates'];a0_0x10cd=function(){return _0x125c75;};return a0_0x10cd();}import{readFileSync as a0_0xe2471f,existsSync as a0_0x5e0fa8}from'fs';import{randomUUID as a0_0x4f7a61}from'crypto';import{join as a0_0xe05de6}from'path';import{hostname as a0_0x463c9b}from'os';import{execSync as a0_0x31e1c7}from'child_process';import{Server as a0_0x6462c4}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0x334c66}from'@modelcontextprotocol/sdk/server/stdio.js';import{ListToolsRequestSchema as a0_0x54552c,CallToolRequestSchema as a0_0x4c376e}from'@modelcontextprotocol/sdk/types.js';function I(_0xefe8d0){const _0x50368a=a0_0x43a0;if(!a0_0x5e0fa8(_0xefe8d0))return;for(let _0x3a432a of a0_0xe2471f(_0xefe8d0,_0x50368a(0x1d4))[_0x50368a(0x1bb)]('\x0a')){let _0x132b6d=_0x3a432a[_0x50368a(0x20e)]();if(!_0x132b6d||_0x132b6d['startsWith']('#'))continue;let _0x416e77=_0x132b6d[_0x50368a(0x1ef)]('=');if(_0x416e77<0x0)continue;let _0x4125e4=_0x132b6d[_0x50368a(0x216)](0x0,_0x416e77)[_0x50368a(0x20e)](),_0x1e0e0f=_0x132b6d[_0x50368a(0x216)](_0x416e77+0x1)[_0x50368a(0x20e)]()[_0x50368a(0x1ee)](/^["']|["']$/g,'');if(!process.env[_0x4125e4])process.env[_0x4125e4]=_0x1e0e0f;}}var L=process.env.HOME||'~',U=a0_0xe05de6(L,'.claude/channels/commhub');I(a0_0xe05de6(U,a0_0x33e67d(0x221)));var v=process[a0_0x33e67d(0x1d5)]()[a0_0x33e67d(0x1ee)](/\//g,'-');I(a0_0xe05de6(U,v,'.env'));function d(){const _0x518f61=a0_0x33e67d;try{return a0_0x31e1c7(_0x518f61(0x1a1),{'encoding':_0x518f61(0x1d4),'timeout':0x7d0})[_0x518f61(0x20e)]();}catch{return'';}}function m(){const _0x3cdb2e=a0_0x33e67d;try{let _0x28ded7=a0_0xe05de6(L,_0x3cdb2e(0x200),'config.json');if(a0_0x5e0fa8(_0x28ded7))return JSON[_0x3cdb2e(0x1ca)](a0_0xe2471f(_0x28ded7,'utf-8'));}catch{}return{};}var u=m(),j=process.env.COMMHUB_URL||u[a0_0x33e67d(0x217)]||a0_0x33e67d(0x1a8),f=process.env.COMMHUB_TMUX||d();function r(){const _0x20d7c1=a0_0x33e67d;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS[_0x20d7c1(0x20e)]())return process.env.COMMHUB_ALIAS['trim']();return process['stderr'][_0x20d7c1(0x19a)](_0x20d7c1(0x1a4)+(_0x20d7c1(0x211)+(f||_0x20d7c1(0x21b))+_0x20d7c1(0x1fc)+a0_0x463c9b()+'.\x20Restart\x20node\x20via\x20`anet\x20node\x20start\x20<alias>`\x20so\x20the\x20env\x20is\x20set\x20explicitly\x20(#203).\x0a')),_0x20d7c1(0x1f4)+process[_0x20d7c1(0x224)];}var G=r(),K=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0x4f7a61(),F=process.env.COMMHUB_TOKEN||u[a0_0x33e67d(0x1be)]||'';function W(_0x6f361b){const _0x3fa7f0=a0_0x33e67d;let _0x15cc86=new Date()[_0x3fa7f0(0x1cd)]()[_0x3fa7f0(0x216)](0x0,0x8);process[_0x3fa7f0(0x1b6)][_0x3fa7f0(0x19a)]('['+_0x15cc86+_0x3fa7f0(0x19f)+_0x6f361b+'\x0a');}function N(_0x26643b){return new Promise(_0x688da2=>setTimeout(_0x688da2,_0x26643b));}W(a0_0x33e67d(0x223)+j+'\x20ALIAS='+G+a0_0x33e67d(0x1fa)+K[a0_0x33e67d(0x216)](0x0,0x8)+a0_0x33e67d(0x1f3)+(f||'none')+a0_0x33e67d(0x219)+process[a0_0x33e67d(0x1d5)]()+a0_0x33e67d(0x209)+v);var D=new Map(),x=new a0_0x6462c4({'name':'commhub-channel','version':a0_0x33e67d(0x1ae)},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x33e67d(0x1eb),a0_0x33e67d(0x1b3),a0_0x33e67d(0x1e7),a0_0x33e67d(0x1d6),a0_0x33e67d(0x19b)+G]['join']('\x0a')});x['setRequestHandler'](a0_0x54552c,async()=>({'tools':[{'name':'commhub_reply','description':a0_0x33e67d(0x1a5),'inputSchema':{'type':a0_0x33e67d(0x229),'properties':{'task_id':{'type':'string','description':a0_0x33e67d(0x227)},'text':{'type':a0_0x33e67d(0x20f),'description':a0_0x33e67d(0x1ac)},'status':{'type':a0_0x33e67d(0x20f),'enum':[a0_0x33e67d(0x1a7),a0_0x33e67d(0x1b9),a0_0x33e67d(0x222),a0_0x33e67d(0x1f2),'error',a0_0x33e67d(0x1b5)],'description':a0_0x33e67d(0x20d)}},'required':[a0_0x33e67d(0x1e2)]}},{'name':'commhub_report_status','description':a0_0x33e67d(0x21f),'inputSchema':{'type':a0_0x33e67d(0x229),'properties':{'status':{'type':a0_0x33e67d(0x20f),'enum':['working',a0_0x33e67d(0x1c4),a0_0x33e67d(0x1f2),a0_0x33e67d(0x201)]},'task':{'type':a0_0x33e67d(0x20f),'description':a0_0x33e67d(0x1db)},'progress':{'type':a0_0x33e67d(0x1e5),'description':a0_0x33e67d(0x21a)}},'required':[a0_0x33e67d(0x1fe)]}},{'name':a0_0x33e67d(0x1af),'description':a0_0x33e67d(0x22f),'inputSchema':{'type':a0_0x33e67d(0x229),'properties':{'alias':{'type':a0_0x33e67d(0x20f),'description':'Target\x20session\x20alias'},'task':{'type':a0_0x33e67d(0x20f),'description':a0_0x33e67d(0x1f8)},'priority':{'type':a0_0x33e67d(0x20f),'enum':[a0_0x33e67d(0x1c3),a0_0x33e67d(0x22b),a0_0x33e67d(0x1ad)],'description':a0_0x33e67d(0x22d)}},'required':[a0_0x33e67d(0x1c2),a0_0x33e67d(0x1b4)]}},{'name':a0_0x33e67d(0x1a2),'description':a0_0x33e67d(0x213),'inputSchema':{'type':'object','properties':{'alias':{'type':a0_0x33e67d(0x20f),'description':a0_0x33e67d(0x1c7)},'message':{'type':a0_0x33e67d(0x20f),'description':a0_0x33e67d(0x202)}},'required':[a0_0x33e67d(0x1c2),a0_0x33e67d(0x1e9)]}},{'name':a0_0x33e67d(0x195),'description':a0_0x33e67d(0x196),'inputSchema':{'type':a0_0x33e67d(0x229),'properties':{}}}]}));async function Y(_0x4c8273,_0x1da9aa){const _0x3add54=a0_0x33e67d;let _0x2b9535=await fetch(j+'/mcp',{'method':_0x3add54(0x1fd),'headers':{'Content-Type':_0x3add54(0x19c),'Accept':_0x3add54(0x1b8),...F?{'Authorization':'Bearer\x20'+F}:{}},'body':JSON[_0x3add54(0x1d7)]({'jsonrpc':_0x3add54(0x1d1),'id':0x1,'method':_0x3add54(0x1c1),'params':{'protocolVersion':_0x3add54(0x226),'capabilities':{},'clientInfo':{'name':'commhub-channel','version':_0x3add54(0x1ae)}}})});if(!_0x2b9535['ok']){let _0x5e8124=await _0x2b9535[_0x3add54(0x1e2)]();return W(_0x3add54(0x208)+_0x2b9535['status']+'\x20'+_0x5e8124[_0x3add54(0x216)](0x0,0x64)),{'ok':!0x1,'error':_0x3add54(0x1f5)+_0x2b9535[_0x3add54(0x1fe)]};}await _0x2b9535['text']();let _0x4a2557=(await(await fetch(j+_0x3add54(0x1cc),{'method':_0x3add54(0x1fd),'headers':{'Content-Type':_0x3add54(0x19c),'Accept':'application/json,\x20text/event-stream',...F?{'Authorization':_0x3add54(0x220)+F}:{}},'body':JSON['stringify']({'jsonrpc':_0x3add54(0x1d1),'id':0x2,'method':'tools/call','params':{'name':_0x4c8273,'arguments':_0x1da9aa}})}))['text']())[_0x3add54(0x1bb)]('\x0a')[_0x3add54(0x1b2)](_0x345362=>_0x345362[_0x3add54(0x203)](_0x3add54(0x1c9)));if(_0x4a2557){let _0x37801c=JSON[_0x3add54(0x1ca)](_0x4a2557[_0x3add54(0x216)](0x6));return _0x37801c?.[_0x3add54(0x218)]?.[_0x3add54(0x207)]?.[0x0]?.[_0x3add54(0x1e2)]?JSON['parse'](_0x37801c[_0x3add54(0x218)][_0x3add54(0x207)][0x0][_0x3add54(0x1e2)]):_0x37801c;}return{'ok':!0x1,'error':_0x3add54(0x1d3)};}x[a0_0x33e67d(0x1e0)](a0_0x4c376e,async _0x49875d=>{const _0x15df2c=a0_0x33e67d;let {name:_0x1935e7,arguments:_0x363324}=_0x49875d[_0x15df2c(0x231)];if(_0x1935e7==='commhub_reply'){let {task_id:_0x1c75c8,text:_0x2a813c,status:_0xb0d80b}=_0x363324;if(_0xb0d80b==='completed'||_0xb0d80b==='failed'||_0xb0d80b===_0x15df2c(0x222)){let _0x157720=_0xb0d80b===_0x15df2c(0x1a7)?_0x15df2c(0x1ba):_0xb0d80b,_0x15e7da=_0x1c75c8?D[_0x15df2c(0x21c)](_0x1c75c8)||_0x15df2c(0x217):_0x15df2c(0x217),_0x3d30c2=await Y('send_reply',{'alias':_0x15e7da,'text':_0x2a813c,'in_reply_to':_0x1c75c8||void 0x0,'status':_0x157720,'from_session':G});if(_0x1c75c8)D[_0x15df2c(0x1bc)](_0x1c75c8);return{'content':[{'type':_0x15df2c(0x1e2),'text':JSON['stringify'](_0x3d30c2)}]};}let _0x48fafe=await Y('report_status',{'resume_id':K,'alias':G,'status':_0xb0d80b===_0x15df2c(0x1f2)?_0x15df2c(0x1f2):_0xb0d80b===_0x15df2c(0x201)?_0x15df2c(0x201):_0x15df2c(0x1b7),'task':_0x2a813c['slice'](0x0,0xc8),'output':_0x2a813c});return{'content':[{'type':_0x15df2c(0x1e2),'text':JSON[_0x15df2c(0x1d7)](_0x48fafe)}]};}if(_0x1935e7==='commhub_report_status'){let {status:_0x4ababa,task:_0xcc04e0,progress:_0x57d1b7}=_0x363324,_0x3c4830=await Y(_0x15df2c(0x22e),{'resume_id':K,'alias':G,'status':_0x4ababa,'task':_0xcc04e0,'progress':_0x57d1b7});return{'content':[{'type':_0x15df2c(0x1e2),'text':JSON['stringify'](_0x3c4830)}]};}if(_0x1935e7===_0x15df2c(0x1af)){let {alias:_0x134419,task:_0x2fdd06,priority:_0x4d6574}=_0x363324,_0x16f29d=await Y(_0x15df2c(0x204),{'alias':_0x134419,'task':_0x2fdd06,'priority':_0x4d6574||'normal','from_session':G});return{'content':[{'type':'text','text':JSON[_0x15df2c(0x1d7)](_0x16f29d)}]};}if(_0x1935e7===_0x15df2c(0x1a2)){let {alias:_0x1df3fd,message:_0x1a20a7}=_0x363324,_0x2590c7=await Y(_0x15df2c(0x1d9),{'alias':_0x1df3fd,'message':_0x1a20a7,'from_session':G});return{'content':[{'type':_0x15df2c(0x1e2),'text':JSON[_0x15df2c(0x1d7)](_0x2590c7)}]};}if(_0x1935e7===_0x15df2c(0x195)){let _0x4ec393=await Y(_0x15df2c(0x1d0),{});return{'content':[{'type':_0x15df2c(0x1e2),'text':JSON[_0x15df2c(0x1d7)](_0x4ec393)}]};}return{'content':[{'type':_0x15df2c(0x1e2),'text':JSON[_0x15df2c(0x1d7)]({'error':_0x15df2c(0x1d8)})}]};});var O=0x3e8,R=0x7530,T=0x36ee80;async function l(){const _0x871b2f=a0_0x33e67d;try{await Y('report_status',{'resume_id':K,'alias':G,'status':_0x871b2f(0x1c4),'server':a0_0x463c9b(),'hostname':a0_0x463c9b(),'agent':'claude-code','project_dir':process['cwd'](),'tmux_name':f||void 0x0}),W(_0x871b2f(0x199)+G+_0x871b2f(0x1e3));}catch(_0x1c95f7){W(_0x871b2f(0x21d)+_0x1c95f7);}}function a0_0x43a0(_0x1169fc,_0x2dafed){_0x1169fc=_0x1169fc-0x192;const _0x10cdce=a0_0x10cd();let _0x43a050=_0x10cdce[_0x1169fc];return _0x43a050;}async function o(){const _0x40b34a=a0_0x33e67d;let _0x40bb3a=j+_0x40b34a(0x22a)+encodeURIComponent(G),_0x3b2000={};if(F)_0x3b2000['Authorization']=_0x40b34a(0x220)+F;W('connecting\x20to\x20'+_0x40bb3a);let _0x306c4c=O,_0x341986=!0x0,_0x20ca50=null;while(!0x0){try{let _0x5afa03=await fetch(_0x40bb3a,{'headers':_0x3b2000});if(!_0x5afa03['ok']){if(W(_0x40b34a(0x1ff)+_0x5afa03[_0x40b34a(0x1fe)]+'\x20'+_0x5afa03[_0x40b34a(0x1c5)]),_0x20ca50=_0x20ca50??Date[_0x40b34a(0x1f7)](),Date['now']()-_0x20ca50>T){W(_0x40b34a(0x1ce)+j+')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。');return;}await N(_0x306c4c),_0x306c4c=Math[_0x40b34a(0x19e)](_0x306c4c*0x2,R);continue;}let _0x4355e9=_0x5afa03[_0x40b34a(0x1df)]['getReader'](),_0x46e4a6=new TextDecoder(),_0x32f9f2='';_0x306c4c=O;while(!0x0){let {done:_0x8e4284,value:_0x4d0e74}=await _0x4355e9[_0x40b34a(0x206)]();if(_0x8e4284)break;_0x32f9f2+=_0x46e4a6[_0x40b34a(0x228)](_0x4d0e74,{'stream':!0x0});let _0x2f158d=_0x32f9f2['split']('\x0a\x0a');_0x32f9f2=_0x2f158d['pop']()||'';for(let _0x15dd33 of _0x2f158d){let _0x55c668=_0x15dd33[_0x40b34a(0x1bb)]('\x0a')[_0x40b34a(0x1b2)](_0x1eb34e=>_0x1eb34e[_0x40b34a(0x203)]('data:\x20'));if(!_0x55c668)continue;try{let _0x1eeae1=JSON[_0x40b34a(0x1ca)](_0x55c668[_0x40b34a(0x216)](0x6));if(await a(_0x1eeae1),_0x1eeae1['type']===_0x40b34a(0x1bf)){if(_0x20ca50=null,!_0x341986)await l();_0x341986=!0x1;}}catch(_0x31a02a){W('parse\x20error:\x20'+_0x31a02a);}}}W(_0x40b34a(0x198));}catch(_0x2f4144){W(_0x40b34a(0x1ed)+_0x2f4144);}if(_0x20ca50=_0x20ca50??Date[_0x40b34a(0x1f7)](),Date[_0x40b34a(0x1f7)]()-_0x20ca50>T){W(_0x40b34a(0x1ce)+j+_0x40b34a(0x1a9));return;}await N(_0x306c4c),_0x306c4c=Math['min'](_0x306c4c*0x2,R);}}async function a(_0x4086af){const _0x93a0af=a0_0x33e67d;if(_0x4086af[_0x93a0af(0x1b0)]===_0x93a0af(0x1bf)){W(_0x93a0af(0x20a)+G+'\x22');return;}if(_0x4086af['type']===_0x93a0af(0x1da)){if(W(_0x93a0af(0x1aa)+_0x4086af[_0x93a0af(0x21e)]+':\x20'+_0x4086af[_0x93a0af(0x1e9)][_0x93a0af(0x216)](0x0,0x3c)),await x[_0x93a0af(0x1dc)]({'method':_0x93a0af(0x1a6),'params':{'content':_0x4086af[_0x93a0af(0x1e9)],'meta':{'sender':_0x4086af[_0x93a0af(0x21e)]||_0x93a0af(0x217),'sender_id':_0x93a0af(0x1ab),'user':_0x4086af[_0x93a0af(0x21e)]||_0x93a0af(0x217),'priority':_0x93a0af(0x22b)}}}),_0x4086af[_0x93a0af(0x230)])await Y(_0x93a0af(0x215),{'alias':G,'message_id':_0x4086af[_0x93a0af(0x230)]});return;}if(_0x4086af[_0x93a0af(0x1b0)]===_0x93a0af(0x1e8)||_0x4086af[_0x93a0af(0x1b0)]===_0x93a0af(0x212)){W('←\x20'+_0x4086af[_0x93a0af(0x1b0)]+_0x93a0af(0x22c)+_0x4086af[_0x93a0af(0x20c)]+_0x93a0af(0x210)+(_0x4086af[_0x93a0af(0x1dd)]||'normal'));let _0x1d4566=await Y(_0x93a0af(0x193),{'alias':G,'limit':0x5});if(_0x1d4566?.['ok']&&_0x1d4566[_0x93a0af(0x1f9)]?.['length']>0x0)for(let _0x1b147a of _0x1d4566[_0x93a0af(0x1f9)]){let _0x211758={'sender':_0x1b147a[_0x93a0af(0x1c0)]||'hub','sender_id':'commhub','user':_0x1b147a['from_session']||_0x93a0af(0x217),'task_id':_0x1b147a['id'],'priority':_0x1b147a['priority']||_0x93a0af(0x22b)};D['set'](_0x1b147a['id'],_0x1b147a['from_session']||_0x93a0af(0x217)),await x[_0x93a0af(0x1dc)]({'method':_0x93a0af(0x1a6),'params':{'content':_0x1b147a[_0x93a0af(0x207)],'meta':_0x211758}}),W('→\x20injected\x20task\x20'+_0x1b147a['id'][_0x93a0af(0x216)](0x0,0x8)+_0x93a0af(0x1b1)+_0x1b147a['from_session']+':\x20'+_0x1b147a[_0x93a0af(0x207)][_0x93a0af(0x216)](0x0,0x3c)),await Y('ack_inbox',{'alias':G,'message_id':_0x1b147a['id']});}}}async function n(){const _0xa42110=a0_0x33e67d;let _0x357808=new a0_0x334c66();await x[_0xa42110(0x1e4)](_0x357808),W(_0xa42110(0x1cb)),W(_0xa42110(0x1bd)),o()[_0xa42110(0x1cf)](_0x36627d=>W(_0xa42110(0x1a0)+_0x36627d)),Y(_0xa42110(0x22e),{'resume_id':K,'alias':G,'status':_0xa42110(0x1c4),'server':a0_0x463c9b(),'hostname':a0_0x463c9b(),'agent':_0xa42110(0x1ea),'project_dir':process[_0xa42110(0x1d5)](),'tmux_name':f||void 0x0})['then'](()=>W(_0xa42110(0x19d)+G+'\x22\x20('+K[_0xa42110(0x216)](0x0,0x8)+')'))['catch'](_0xf75d12=>W(_0xa42110(0x1f1)+_0xf75d12)),setInterval(()=>{const _0x5cb476=_0xa42110;Y(_0x5cb476(0x22e),{'resume_id':K,'alias':G,'status':_0x5cb476(0x1c4),'server':a0_0x463c9b(),'hostname':a0_0x463c9b(),'agent':'claude-code','project_dir':process[_0x5cb476(0x1d5)](),'tmux_name':f||void 0x0})[_0x5cb476(0x1cf)](_0x5db0ff=>W('heartbeat\x20failed:\x20'+_0x5db0ff));},0x2bf20),W(_0xa42110(0x1f0));}n()[a0_0x33e67d(0x1cf)](_0x2d59f8=>{const _0x27aca8=a0_0x33e67d;W(_0x27aca8(0x1a3)+_0x2d59f8),process[_0x27aca8(0x205)](0x1);});async function b(){const _0x3c3c25=a0_0x33e67d;W('shutting\x20down,\x20reporting\x20offline...'),await Y(_0x3c3c25(0x22e),{'resume_id':K,'alias':G,'status':_0x3c3c25(0x1ec),'task':'session\x20disconnected'})[_0x3c3c25(0x1cf)](()=>{}),process[_0x3c3c25(0x205)](0x0);}process['stdin']['on']('end',()=>b()),process['on'](a0_0x33e67d(0x1c6),()=>b()),process['on'](a0_0x33e67d(0x197),()=>b());
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sleep2agi/agent-network",
3
- "version": "2.3.0-preview.14",
3
+ "version": "2.3.0-preview.16",
4
4
  "description": "AI Agent Network CLI — Local-first multi-agent orchestration across 4 runtimes (Claude Code CLI / Claude Agent SDK / Codex SDK / Grok Build ACP) and 8+ LLM providers (Anthropic / OpenAI / xAI Grok / MiniMax / DeepSeek / GLM / Kimi / InternLM / Xiaomi MiMo / OpenRouter). Apache 2.0.",
5
5
  "type": "module",
6
6
  "main": "dist/src/client.js",