@sleep2agi/agent-network 2.3.0-preview.15 → 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.
- package/dist/bin/cli.js +1 -1
- package/dist/src/client.js +1 -1
- package/dist/src/im/feishu/hub-upload.d.ts +88 -0
- package/dist/src/im/feishu/worker.js +140 -128
- package/dist/src/im/types.d.ts +30 -1
- package/dist/src/node-server.js +1 -1
- package/package.json +1 -1
package/dist/src/im/types.d.ts
CHANGED
|
@@ -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
|
package/dist/src/node-server.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
|
-
const a0_0x4af176=a0_0x545f;(function(_0x511c95,_0x48b1f6){const _0x2bc64b=a0_0x545f,_0x50e01d=_0x511c95();while(!![]){try{const _0x3d1d54=-parseInt(_0x2bc64b(0x101))/0x1+-parseInt(_0x2bc64b(0x92))/0x2*(-parseInt(_0x2bc64b(0x98))/0x3)+parseInt(_0x2bc64b(0xa3))/0x4+-parseInt(_0x2bc64b(0xd4))/0x5+-parseInt(_0x2bc64b(0xd9))/0x6*(-parseInt(_0x2bc64b(0xce))/0x7)+-parseInt(_0x2bc64b(0x107))/0x8*(parseInt(_0x2bc64b(0xa8))/0x9)+parseInt(_0x2bc64b(0xe9))/0xa;if(_0x3d1d54===_0x48b1f6)break;else _0x50e01d['push'](_0x50e01d['shift']());}catch(_0x204359){_0x50e01d['push'](_0x50e01d['shift']());}}}(a0_0x22f8,0xd0e4f));import{readFileSync as a0_0x4c6eab,existsSync as a0_0x503a76}from'fs';import{randomUUID as a0_0xa33948}from'crypto';import{join as a0_0x2d6bf0}from'path';import{hostname as a0_0xfed9a0}from'os';function a0_0x545f(_0x2cd6ff,_0x5bb3f3){_0x2cd6ff=_0x2cd6ff-0x77;const _0x22f85b=a0_0x22f8();let _0x545f98=_0x22f85b[_0x2cd6ff];return _0x545f98;}import{execSync as a0_0x3b2733}from'child_process';import{Server as a0_0x48c90d}from'@modelcontextprotocol/sdk/server/index.js';import{StdioServerTransport as a0_0xfdc6e8}from'@modelcontextprotocol/sdk/server/stdio.js';import{ListToolsRequestSchema as a0_0x51a7e5,CallToolRequestSchema as a0_0x1de7a4}from'@modelcontextprotocol/sdk/types.js';function I(_0x33b14d){const _0x4ef175=a0_0x545f;if(!a0_0x503a76(_0x33b14d))return;for(let _0x5729ec of a0_0x4c6eab(_0x33b14d,_0x4ef175(0xdb))['split']('\x0a')){let _0x5a35dd=_0x5729ec[_0x4ef175(0xc7)]();if(!_0x5a35dd||_0x5a35dd[_0x4ef175(0xbe)]('#'))continue;let _0x46a7b6=_0x5a35dd[_0x4ef175(0x112)]('=');if(_0x46a7b6<0x0)continue;let _0x306fc0=_0x5a35dd[_0x4ef175(0xf4)](0x0,_0x46a7b6)[_0x4ef175(0xc7)](),_0x4a8711=_0x5a35dd[_0x4ef175(0xf4)](_0x46a7b6+0x1)[_0x4ef175(0xc7)]()[_0x4ef175(0x10d)](/^["']|["']$/g,'');if(!process.env[_0x306fc0])process.env[_0x306fc0]=_0x4a8711;}}var L=process.env.HOME||'~',U=a0_0x2d6bf0(L,a0_0x4af176(0xcc));I(a0_0x2d6bf0(U,a0_0x4af176(0x8a)));function a0_0x22f8(){const _0x48e437=['parse','5635828ywbXkv','from_session','SSE\x20fatal:\x20','2025-03-26','SIGINT','18Rlmqhh','application/json','claude-code','new_task','re-registered\x20as\x20\x22','hub','replied','broadcast','\x20from\x20','normal','low','Send\x20a\x20message\x20to\x20another\x20session\x20(no\x20task\x20lifecycle,\x20just\x20chat).\x20Use\x20for\x20replies\x20and\x20status\x20updates.','type','heartbeat\x20failed:\x20','tools/call',']\x20[commhub]\x20',':\x20inbox_count=','shutting\x20down,\x20reporting\x20offline...','then','(none)','token','get_inbox','startsWith','result','completed','exit','working','now','report_status','error','length','trim','join','Task\x20content','new_message','none','.claude/channels/commhub','\x20/\x20hostname=','77VeLCSO','ready\x20—\x20waiting\x20for\x20events','message_id','offline','session\x20disconnected','Messages\x20from\x20CommHub\x20arrive\x20as\x20<channel\x20source=\x22commhub\x22\x20task_id=\x22...\x22\x20priority=\x22...\x22\x20from=\x22...\x22>','1362115aoPPwj','warning:\x20could\x20not\x20register:\x20','unknown\x20tool','\x20CWD=','Session\x20alias:\x20','299244fsShCy','MCP\x20stdio\x20connected','utf-8','connect','notification','application/json,\x20text/event-stream','commhub_get_all_status','Reply\x20text\x20/\x20result\x20summary','data:\x20','parse\x20error:\x20','idle','cancelled','catch','Current\x20task\x20description','These\x20are\x20tasks\x20dispatched\x20by\x20the\x20hub\x20or\x20other\x20sessions\x20via\x20the\x20CommHub\x20Server.','commhub_send_message','19911630mvrUcM','setRequestHandler','in_progress','/events/','cwd','SSE\x20连续\x20>1h\x20连不上\x20hub\x20(','Send\x20a\x20task\x20to\x20another\x20session\x20via\x20CommHub.','priority','SIGTERM','commhub_reply','.anet','slice','ack_inbox','status','params','connected','2.0','read','from','\x20priority=','getReader','notifications/claude/channel','\x20ALIAS=','Bearer\x20','1388087kxqasz','object','0.3.0','SSE\x20connection\x20error:\x20','commhub_report_status','POST','5808576Gmlxvi','message','The\x20task_id\x20from\x20the\x20channel\x20message\x20(or\x20\x27hub\x27\x20for\x20general)','commhub','stderr','alias','replace','Task\x20outcome:\x20completed/failed/cancelled\x20for\x20final\x20results,\x20blocked/error/in_progress\x20for\x20status\x20updates','CommHub\x20init\x20failed:\x20','high','→\x20injected\x20task\x20','indexOf','find','min','tmux\x20display-message\x20-p\x20\x27#S\x27','pid','Priority\x20(default:\x20normal)','commhub-channel','\x20RESUME_ID=','Reply\x20using\x20the\x20commhub_reply\x20tool\x20to\x20report\x20status\x20or\x20results\x20back.','Reply\x20to\x20a\x20CommHub\x20task\x20—\x20report\x20completion\x20or\x20send\x20a\x20message\x20back\x20to\x20the\x20hub.','toTimeString','failed','Update\x20this\x20session\x27s\x20status\x20in\x20CommHub\x20(working/idle/blocked/error).\x20Returns\x20inbox_count.','Target\x20session\x20alias','pop','split','would\x20mis-attribute.\x20Refusing\x20to\x20guess\x20from\x20TMUX_NAME=','unattributed-','blocked','←\x20message\x20from\x20','You\x20can\x20also\x20use\x20commhub_report_status\x20to\x20update\x20your\x20session\x20status.','fatal:\x20','.env','text','send_message','string','commhub_send_task','ENV:\x20URL=',')\x20—\x20放弃自动重连。手动\x20anet\x20node\x20start\x20恢复。','delete','294zWAlnK','number','get_all_status','config.json','send_reply','\x22\x20(','399KitvtH','content','SSE\x20error:\x20','write','send_task','messages','stringify','SSE\x20stream\x20ended,\x20reconnecting...','body','initialize'];a0_0x22f8=function(){return _0x48e437;};return a0_0x22f8();}var v=process[a0_0x4af176(0xed)]()[a0_0x4af176(0x10d)](/\//g,'-');I(a0_0x2d6bf0(U,v,a0_0x4af176(0x8a)));function d(){const _0x23a65a=a0_0x4af176;try{return a0_0x3b2733(_0x23a65a(0x77),{'encoding':_0x23a65a(0xdb),'timeout':0x7d0})['trim']();}catch{return'';}}function m(){const _0x1eb84e=a0_0x4af176;try{let _0x4dfdc3=a0_0x2d6bf0(L,_0x1eb84e(0xf3),_0x1eb84e(0x95));if(a0_0x503a76(_0x4dfdc3))return JSON['parse'](a0_0x4c6eab(_0x4dfdc3,'utf-8'));}catch{}return{};}var u=m(),j=process.env.COMMHUB_URL||u['hub']||'http://127.0.0.1:9200',f=process.env.COMMHUB_TMUX||d();function r(){const _0x1d555e=a0_0x4af176;if(process.env.COMMHUB_ALIAS&&process.env.COMMHUB_ALIAS['trim']())return process.env.COMMHUB_ALIAS[_0x1d555e(0xc7)]();return process[_0x1d555e(0x10b)][_0x1d555e(0x9b)]('[commhub]\x20WARN:\x20COMMHUB_ALIAS\x20env\x20var\x20is\x20unset\x20—\x20outbound\x20from_session\x20'+(_0x1d555e(0x84)+(f||_0x1d555e(0xbb))+_0x1d555e(0xcd)+a0_0xfed9a0()+'.\x20Restart\x20node\x20via\x20`anet\x20node\x20start\x20<alias>`\x20so\x20the\x20env\x20is\x20set\x20explicitly\x20(#203).\x0a')),_0x1d555e(0x85)+process[_0x1d555e(0x78)];}var G=r(),K=process.env.COMMHUB_RESUME_ID||process.env.CLAUDE_RESUME_ID||a0_0xa33948(),F=process.env.COMMHUB_TOKEN||u[a0_0x4af176(0xbc)]||'';function W(_0xd99f9b){const _0x4a7a30=a0_0x4af176;let _0xb05abb=new Date()[_0x4a7a30(0x7e)]()[_0x4a7a30(0xf4)](0x0,0x8);process[_0x4a7a30(0x10b)]['write']('['+_0xb05abb+_0x4a7a30(0xb7)+_0xd99f9b+'\x0a');}function N(_0x31de4b){return new Promise(_0x4654bc=>setTimeout(_0x4654bc,_0x31de4b));}W(a0_0x4af176(0x8f)+j+a0_0x4af176(0xff)+G+a0_0x4af176(0x7b)+K[a0_0x4af176(0xf4)](0x0,0x8)+'...\x20TMUX='+(f||a0_0x4af176(0xcb))+a0_0x4af176(0xd7)+process[a0_0x4af176(0xed)]()+'\x20PROJECT_ENV='+v);var D=new Map(),x=new a0_0x48c90d({'name':a0_0x4af176(0x7a),'version':a0_0x4af176(0x103)},{'capabilities':{'experimental':{'claude/channel':{}},'tools':{}},'instructions':[a0_0x4af176(0xd3),a0_0x4af176(0xe7),a0_0x4af176(0x7c),a0_0x4af176(0x88),a0_0x4af176(0xd8)+G][a0_0x4af176(0xc8)]('\x0a')});x[a0_0x4af176(0xea)](a0_0x51a7e5,async()=>({'tools':[{'name':a0_0x4af176(0xf2),'description':a0_0x4af176(0x7d),'inputSchema':{'type':a0_0x4af176(0x102),'properties':{'task_id':{'type':a0_0x4af176(0x8d),'description':a0_0x4af176(0x109)},'text':{'type':a0_0x4af176(0x8d),'description':a0_0x4af176(0xe0)},'status':{'type':'string','enum':[a0_0x4af176(0xc0),'failed',a0_0x4af176(0xe4),'blocked',a0_0x4af176(0xc5),a0_0x4af176(0xeb)],'description':a0_0x4af176(0x10e)}},'required':[a0_0x4af176(0x8b)]}},{'name':a0_0x4af176(0x105),'description':a0_0x4af176(0x80),'inputSchema':{'type':'object','properties':{'status':{'type':a0_0x4af176(0x8d),'enum':[a0_0x4af176(0xc2),a0_0x4af176(0xe3),'blocked',a0_0x4af176(0xc5)]},'task':{'type':'string','description':a0_0x4af176(0xe6)},'progress':{'type':a0_0x4af176(0x93),'description':'Progress\x200-100'}},'required':[a0_0x4af176(0xf6)]}},{'name':a0_0x4af176(0x8e),'description':a0_0x4af176(0xef),'inputSchema':{'type':a0_0x4af176(0x102),'properties':{'alias':{'type':a0_0x4af176(0x8d),'description':'Target\x20session\x20alias'},'task':{'type':'string','description':a0_0x4af176(0xc9)},'priority':{'type':a0_0x4af176(0x8d),'enum':[a0_0x4af176(0x110),a0_0x4af176(0xb1),a0_0x4af176(0xb2)],'description':a0_0x4af176(0x79)}},'required':['alias','task']}},{'name':a0_0x4af176(0xe8),'description':a0_0x4af176(0xb3),'inputSchema':{'type':'object','properties':{'alias':{'type':'string','description':a0_0x4af176(0x81)},'message':{'type':a0_0x4af176(0x8d),'description':'Message\x20content'}},'required':[a0_0x4af176(0x10c),a0_0x4af176(0x108)]}},{'name':a0_0x4af176(0xdf),'description':'Get\x20status\x20of\x20all\x20sessions\x20from\x20CommHub.','inputSchema':{'type':a0_0x4af176(0x102),'properties':{}}}]}));async function Y(_0x3b01fc,_0x2aacb5){const _0x532a85=a0_0x4af176;let _0x286ce7=await fetch(j+'/mcp',{'method':_0x532a85(0x106),'headers':{'Content-Type':_0x532a85(0xa9),'Accept':_0x532a85(0xde),...F?{'Authorization':'Bearer\x20'+F}:{}},'body':JSON['stringify']({'jsonrpc':_0x532a85(0xf9),'id':0x1,'method':_0x532a85(0xa1),'params':{'protocolVersion':_0x532a85(0xa6),'capabilities':{},'clientInfo':{'name':_0x532a85(0x7a),'version':_0x532a85(0x103)}}})});if(!_0x286ce7['ok']){let _0x46e917=await _0x286ce7[_0x532a85(0x8b)]();return W(_0x532a85(0x10f)+_0x286ce7[_0x532a85(0xf6)]+'\x20'+_0x46e917[_0x532a85(0xf4)](0x0,0x64)),{'ok':!0x1,'error':'init\x20failed:\x20'+_0x286ce7['status']};}await _0x286ce7['text']();let _0x58705b=(await(await fetch(j+'/mcp',{'method':'POST','headers':{'Content-Type':_0x532a85(0xa9),'Accept':'application/json,\x20text/event-stream',...F?{'Authorization':_0x532a85(0x100)+F}:{}},'body':JSON[_0x532a85(0x9e)]({'jsonrpc':_0x532a85(0xf9),'id':0x2,'method':_0x532a85(0xb6),'params':{'name':_0x3b01fc,'arguments':_0x2aacb5}})}))[_0x532a85(0x8b)]())[_0x532a85(0x83)]('\x0a')[_0x532a85(0x113)](_0x6bcdac=>_0x6bcdac[_0x532a85(0xbe)](_0x532a85(0xe1)));if(_0x58705b){let _0x4c6a3a=JSON[_0x532a85(0xa2)](_0x58705b[_0x532a85(0xf4)](0x6));return _0x4c6a3a?.[_0x532a85(0xbf)]?.[_0x532a85(0x99)]?.[0x0]?.[_0x532a85(0x8b)]?JSON['parse'](_0x4c6a3a['result'][_0x532a85(0x99)][0x0][_0x532a85(0x8b)]):_0x4c6a3a;}return{'ok':!0x1,'error':'no\x20response'};}x[a0_0x4af176(0xea)](a0_0x1de7a4,async _0x2ac923=>{const _0x5ee869=a0_0x4af176;let {name:_0x3de94b,arguments:_0x387073}=_0x2ac923[_0x5ee869(0xf7)];if(_0x3de94b===_0x5ee869(0xf2)){let {task_id:_0x4320ef,text:_0x5a162a,status:_0x5c1b28}=_0x387073;if(_0x5c1b28==='completed'||_0x5c1b28===_0x5ee869(0x7f)||_0x5c1b28===_0x5ee869(0xe4)){let _0x1c03de=_0x5c1b28===_0x5ee869(0xc0)?_0x5ee869(0xae):_0x5c1b28,_0x486fb2=_0x4320ef?D['get'](_0x4320ef)||_0x5ee869(0xad):_0x5ee869(0xad),_0x338335=await Y(_0x5ee869(0x96),{'alias':_0x486fb2,'text':_0x5a162a,'in_reply_to':_0x4320ef||void 0x0,'status':_0x1c03de,'from_session':G});if(_0x4320ef)D[_0x5ee869(0x91)](_0x4320ef);return{'content':[{'type':_0x5ee869(0x8b),'text':JSON[_0x5ee869(0x9e)](_0x338335)}]};}let _0x37251a=await Y(_0x5ee869(0xc4),{'resume_id':K,'alias':G,'status':_0x5c1b28===_0x5ee869(0x86)?'blocked':_0x5c1b28==='error'?_0x5ee869(0xc5):_0x5ee869(0xc2),'task':_0x5a162a[_0x5ee869(0xf4)](0x0,0xc8),'output':_0x5a162a});return{'content':[{'type':'text','text':JSON['stringify'](_0x37251a)}]};}if(_0x3de94b===_0x5ee869(0x105)){let {status:_0x256ccd,task:_0x33e6a2,progress:_0x11b6d7}=_0x387073,_0xbf9692=await Y('report_status',{'resume_id':K,'alias':G,'status':_0x256ccd,'task':_0x33e6a2,'progress':_0x11b6d7});return{'content':[{'type':_0x5ee869(0x8b),'text':JSON[_0x5ee869(0x9e)](_0xbf9692)}]};}if(_0x3de94b===_0x5ee869(0x8e)){let {alias:_0x378f0f,task:_0x5aed6f,priority:_0x769f9d}=_0x387073,_0x46a09c=await Y(_0x5ee869(0x9c),{'alias':_0x378f0f,'task':_0x5aed6f,'priority':_0x769f9d||_0x5ee869(0xb1),'from_session':G});return{'content':[{'type':_0x5ee869(0x8b),'text':JSON[_0x5ee869(0x9e)](_0x46a09c)}]};}if(_0x3de94b==='commhub_send_message'){let {alias:_0x1b9789,message:_0x185627}=_0x387073,_0x3cb0c0=await Y(_0x5ee869(0x8c),{'alias':_0x1b9789,'message':_0x185627,'from_session':G});return{'content':[{'type':_0x5ee869(0x8b),'text':JSON[_0x5ee869(0x9e)](_0x3cb0c0)}]};}if(_0x3de94b===_0x5ee869(0xdf)){let _0x477c4c=await Y(_0x5ee869(0x94),{});return{'content':[{'type':_0x5ee869(0x8b),'text':JSON[_0x5ee869(0x9e)](_0x477c4c)}]};}return{'content':[{'type':_0x5ee869(0x8b),'text':JSON[_0x5ee869(0x9e)]({'error':_0x5ee869(0xd6)})}]};});var O=0x3e8,R=0x7530,T=0x36ee80;async function l(){const _0x167234=a0_0x4af176;try{await Y(_0x167234(0xc4),{'resume_id':K,'alias':G,'status':_0x167234(0xe3),'server':a0_0xfed9a0(),'hostname':a0_0xfed9a0(),'agent':'claude-code','project_dir':process[_0x167234(0xed)](),'tmux_name':f||void 0x0}),W(_0x167234(0xac)+G+'\x22\x20after\x20SSE\x20reconnect');}catch(_0x1b1e01){W('re-register\x20failed:\x20'+_0x1b1e01);}}async function o(){const _0x32c244=a0_0x4af176;let _0x1224ac=j+_0x32c244(0xec)+encodeURIComponent(G),_0x45fecd={};if(F)_0x45fecd['Authorization']=_0x32c244(0x100)+F;W('connecting\x20to\x20'+_0x1224ac);let _0x3adfda=O,_0x337a20=!0x0,_0x127c57=null;while(!0x0){try{let _0x36f2fd=await fetch(_0x1224ac,{'headers':_0x45fecd});if(!_0x36f2fd['ok']){if(W(_0x32c244(0x9a)+_0x36f2fd['status']+'\x20'+_0x36f2fd['statusText']),_0x127c57=_0x127c57??Date['now'](),Date[_0x32c244(0xc3)]()-_0x127c57>T){W(_0x32c244(0xee)+j+_0x32c244(0x90));return;}await N(_0x3adfda),_0x3adfda=Math[_0x32c244(0x114)](_0x3adfda*0x2,R);continue;}let _0x3df1c2=_0x36f2fd[_0x32c244(0xa0)][_0x32c244(0xfd)](),_0x2485d4=new TextDecoder(),_0x41ee6e='';_0x3adfda=O;while(!0x0){let {done:_0x591d98,value:_0x115fd2}=await _0x3df1c2[_0x32c244(0xfa)]();if(_0x591d98)break;_0x41ee6e+=_0x2485d4['decode'](_0x115fd2,{'stream':!0x0});let _0x218fd9=_0x41ee6e[_0x32c244(0x83)]('\x0a\x0a');_0x41ee6e=_0x218fd9[_0x32c244(0x82)]()||'';for(let _0x207717 of _0x218fd9){let _0x4c603f=_0x207717[_0x32c244(0x83)]('\x0a')['find'](_0x3f8a9b=>_0x3f8a9b[_0x32c244(0xbe)](_0x32c244(0xe1)));if(!_0x4c603f)continue;try{let _0x306acb=JSON[_0x32c244(0xa2)](_0x4c603f['slice'](0x6));if(await a(_0x306acb),_0x306acb['type']===_0x32c244(0xf8)){if(_0x127c57=null,!_0x337a20)await l();_0x337a20=!0x1;}}catch(_0x2988d2){W(_0x32c244(0xe2)+_0x2988d2);}}}W(_0x32c244(0x9f));}catch(_0xc2db2a){W(_0x32c244(0x104)+_0xc2db2a);}if(_0x127c57=_0x127c57??Date['now'](),Date[_0x32c244(0xc3)]()-_0x127c57>T){W(_0x32c244(0xee)+j+_0x32c244(0x90));return;}await N(_0x3adfda),_0x3adfda=Math[_0x32c244(0x114)](_0x3adfda*0x2,R);}}async function a(_0x45ae6e){const _0x488c48=a0_0x4af176;if(_0x45ae6e[_0x488c48(0xb4)]===_0x488c48(0xf8)){W('SSE\x20connected\x20as\x20\x22'+G+'\x22');return;}if(_0x45ae6e[_0x488c48(0xb4)]===_0x488c48(0xca)){if(W(_0x488c48(0x87)+_0x45ae6e[_0x488c48(0xfb)]+':\x20'+_0x45ae6e[_0x488c48(0x108)][_0x488c48(0xf4)](0x0,0x3c)),await x[_0x488c48(0xdd)]({'method':'notifications/claude/channel','params':{'content':_0x45ae6e['message'],'meta':{'sender':_0x45ae6e[_0x488c48(0xfb)]||'hub','sender_id':_0x488c48(0x10a),'user':_0x45ae6e['from']||'hub','priority':_0x488c48(0xb1)}}}),_0x45ae6e[_0x488c48(0xd0)])await Y(_0x488c48(0xf5),{'alias':G,'message_id':_0x45ae6e['message_id']});return;}if(_0x45ae6e[_0x488c48(0xb4)]===_0x488c48(0xab)||_0x45ae6e[_0x488c48(0xb4)]===_0x488c48(0xaf)){W('←\x20'+_0x45ae6e[_0x488c48(0xb4)]+_0x488c48(0xb8)+_0x45ae6e['inbox_count']+_0x488c48(0xfc)+(_0x45ae6e['priority']||'normal'));let _0x2b77ea=await Y(_0x488c48(0xbd),{'alias':G,'limit':0x5});if(_0x2b77ea?.['ok']&&_0x2b77ea[_0x488c48(0x9d)]?.[_0x488c48(0xc6)]>0x0)for(let _0x429689 of _0x2b77ea[_0x488c48(0x9d)]){let _0x2ab5d5={'sender':_0x429689['from_session']||_0x488c48(0xad),'sender_id':_0x488c48(0x10a),'user':_0x429689[_0x488c48(0xa4)]||_0x488c48(0xad),'task_id':_0x429689['id'],'priority':_0x429689[_0x488c48(0xf0)]||'normal'};D['set'](_0x429689['id'],_0x429689[_0x488c48(0xa4)]||'hub'),await x[_0x488c48(0xdd)]({'method':_0x488c48(0xfe),'params':{'content':_0x429689['content'],'meta':_0x2ab5d5}}),W(_0x488c48(0x111)+_0x429689['id'][_0x488c48(0xf4)](0x0,0x8)+_0x488c48(0xb0)+_0x429689[_0x488c48(0xa4)]+':\x20'+_0x429689['content'][_0x488c48(0xf4)](0x0,0x3c)),await Y(_0x488c48(0xf5),{'alias':G,'message_id':_0x429689['id']});}}}async function n(){const _0x2da011=a0_0x4af176;let _0x302113=new a0_0xfdc6e8();await x[_0x2da011(0xdc)](_0x302113),W(_0x2da011(0xda)),W('starting\x20SSE\x20listener...'),o()['catch'](_0x5b8a5f=>W(_0x2da011(0xa5)+_0x5b8a5f)),Y(_0x2da011(0xc4),{'resume_id':K,'alias':G,'status':_0x2da011(0xe3),'server':a0_0xfed9a0(),'hostname':a0_0xfed9a0(),'agent':_0x2da011(0xaa),'project_dir':process[_0x2da011(0xed)](),'tmux_name':f||void 0x0})[_0x2da011(0xba)](()=>W('registered\x20as\x20\x22'+G+_0x2da011(0x97)+K[_0x2da011(0xf4)](0x0,0x8)+')'))[_0x2da011(0xe5)](_0x1b7260=>W(_0x2da011(0xd5)+_0x1b7260)),setInterval(()=>{const _0x2066ca=_0x2da011;Y(_0x2066ca(0xc4),{'resume_id':K,'alias':G,'status':_0x2066ca(0xe3),'server':a0_0xfed9a0(),'hostname':a0_0xfed9a0(),'agent':_0x2066ca(0xaa),'project_dir':process['cwd'](),'tmux_name':f||void 0x0})[_0x2066ca(0xe5)](_0xc0d8a=>W(_0x2066ca(0xb5)+_0xc0d8a));},0x2bf20),W(_0x2da011(0xcf));}n()[a0_0x4af176(0xe5)](_0x355a17=>{const _0x2d7fe7=a0_0x4af176;W(_0x2d7fe7(0x89)+_0x355a17),process[_0x2d7fe7(0xc1)](0x1);});async function b(){const _0x2dfcc9=a0_0x4af176;W(_0x2dfcc9(0xb9)),await Y(_0x2dfcc9(0xc4),{'resume_id':K,'alias':G,'status':_0x2dfcc9(0xd1),'task':_0x2dfcc9(0xd2)})[_0x2dfcc9(0xe5)](()=>{}),process['exit'](0x0);}process['stdin']['on']('end',()=>b()),process['on'](a0_0x4af176(0xf1),()=>b()),process['on'](a0_0x4af176(0xa7),()=>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.
|
|
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",
|