@quukk/opencode-clawmessenger 0.2.0 → 1.0.3

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.
Files changed (106) hide show
  1. package/README.md +71 -623
  2. package/bin/opencode-clawmessenger +2 -2
  3. package/bin/opencode-clawmessenger-setup +5 -5
  4. package/dist/cli.d.ts +0 -1
  5. package/dist/cli.js +1 -288
  6. package/dist/core/auto-register.d.ts +0 -1
  7. package/dist/core/auto-register.js +1 -174
  8. package/dist/core/auto-serve.d.ts +13 -0
  9. package/dist/core/auto-serve.js +1 -0
  10. package/dist/core/config.d.ts +2 -3
  11. package/dist/core/config.js +1 -80
  12. package/dist/core/daemon.d.ts +0 -1
  13. package/dist/core/daemon.js +1 -77
  14. package/dist/core/dedup.d.ts +0 -1
  15. package/dist/core/dedup.js +1 -25
  16. package/dist/core/hook-manager.d.ts +0 -1
  17. package/dist/core/hook-manager.js +1 -33
  18. package/dist/core/logger.d.ts +0 -1
  19. package/dist/core/logger.js +1 -49
  20. package/dist/core/mac-address.d.ts +0 -1
  21. package/dist/core/mac-address.js +1 -43
  22. package/dist/core/message-handler.d.ts +1 -1
  23. package/dist/core/message-handler.js +1 -984
  24. package/dist/core/ops-assistant.d.ts +0 -1
  25. package/dist/core/ops-assistant.js +1 -270
  26. package/dist/core/qr-crypto.d.ts +0 -1
  27. package/dist/core/qr-crypto.js +1 -66
  28. package/dist/core/session-manager.d.ts +0 -1
  29. package/dist/core/session-manager.js +1 -144
  30. package/dist/core/types.d.ts +1 -2
  31. package/dist/core/types.js +1 -26
  32. package/dist/index.d.ts +0 -1
  33. package/dist/index.js +1 -16
  34. package/dist/openclaw/client.d.ts +0 -1
  35. package/dist/openclaw/client.js +1 -494
  36. package/dist/opencode/client.d.ts +0 -1
  37. package/dist/opencode/client.js +1 -279
  38. package/dist/opencode/event-handler.d.ts +0 -1
  39. package/dist/opencode/event-handler.js +1 -467
  40. package/dist/plugin.d.ts +0 -1
  41. package/dist/plugin.js +1 -148
  42. package/dist/rongcloud/client.d.ts +0 -1
  43. package/dist/rongcloud/client.js +1 -292
  44. package/dist/rongcloud/env-polyfill.d.ts +0 -1
  45. package/dist/rongcloud/env-polyfill.js +1 -107
  46. package/dist/rongcloud/server-api.d.ts +0 -1
  47. package/dist/rongcloud/server-api.js +1 -157
  48. package/dist/standalone.d.ts +0 -1
  49. package/dist/standalone.js +1 -229
  50. package/dist/types/plugin.d.ts +0 -1
  51. package/dist/types/plugin.js +1 -2
  52. package/dist/websocket/client.d.ts +0 -1
  53. package/dist/websocket/client.js +1 -88
  54. package/dist/websocket/server-client.d.ts +0 -1
  55. package/dist/websocket/server-client.js +1 -98
  56. package/package.json +83 -81
  57. package/dist/cli.d.ts.map +0 -1
  58. package/dist/cli.js.map +0 -1
  59. package/dist/core/auto-register.d.ts.map +0 -1
  60. package/dist/core/auto-register.js.map +0 -1
  61. package/dist/core/config.d.ts.map +0 -1
  62. package/dist/core/config.js.map +0 -1
  63. package/dist/core/daemon.d.ts.map +0 -1
  64. package/dist/core/daemon.js.map +0 -1
  65. package/dist/core/dedup.d.ts.map +0 -1
  66. package/dist/core/dedup.js.map +0 -1
  67. package/dist/core/hook-manager.d.ts.map +0 -1
  68. package/dist/core/hook-manager.js.map +0 -1
  69. package/dist/core/logger.d.ts.map +0 -1
  70. package/dist/core/logger.js.map +0 -1
  71. package/dist/core/mac-address.d.ts.map +0 -1
  72. package/dist/core/mac-address.js.map +0 -1
  73. package/dist/core/message-handler.d.ts.map +0 -1
  74. package/dist/core/message-handler.js.map +0 -1
  75. package/dist/core/ops-assistant.d.ts.map +0 -1
  76. package/dist/core/ops-assistant.js.map +0 -1
  77. package/dist/core/qr-crypto.d.ts.map +0 -1
  78. package/dist/core/qr-crypto.js.map +0 -1
  79. package/dist/core/session-manager.d.ts.map +0 -1
  80. package/dist/core/session-manager.js.map +0 -1
  81. package/dist/core/types.d.ts.map +0 -1
  82. package/dist/core/types.js.map +0 -1
  83. package/dist/index.d.ts.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/openclaw/client.d.ts.map +0 -1
  86. package/dist/openclaw/client.js.map +0 -1
  87. package/dist/opencode/client.d.ts.map +0 -1
  88. package/dist/opencode/client.js.map +0 -1
  89. package/dist/opencode/event-handler.d.ts.map +0 -1
  90. package/dist/opencode/event-handler.js.map +0 -1
  91. package/dist/plugin.d.ts.map +0 -1
  92. package/dist/plugin.js.map +0 -1
  93. package/dist/rongcloud/client.d.ts.map +0 -1
  94. package/dist/rongcloud/client.js.map +0 -1
  95. package/dist/rongcloud/env-polyfill.d.ts.map +0 -1
  96. package/dist/rongcloud/env-polyfill.js.map +0 -1
  97. package/dist/rongcloud/server-api.d.ts.map +0 -1
  98. package/dist/rongcloud/server-api.js.map +0 -1
  99. package/dist/standalone.d.ts.map +0 -1
  100. package/dist/standalone.js.map +0 -1
  101. package/dist/types/plugin.d.ts.map +0 -1
  102. package/dist/types/plugin.js.map +0 -1
  103. package/dist/websocket/client.d.ts.map +0 -1
  104. package/dist/websocket/client.js.map +0 -1
  105. package/dist/websocket/server-client.d.ts.map +0 -1
  106. package/dist/websocket/server-client.js.map +0 -1
@@ -1,107 +1 @@
1
- import 'fake-indexeddb/auto';
2
- import { JSDOM } from 'jsdom';
3
- import WebSocket from 'ws';
4
- import * as http from 'http';
5
- import * as https from 'https';
6
- const dom = new JSDOM('<!DOCTYPE html><html><body></body></html>', {
7
- url: 'http://localhost',
8
- pretendToBeVisual: true,
9
- userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
10
- });
11
- const win = dom.window;
12
- ['indexedDB', 'IDBKeyRange', 'IDBRequest', 'IDBDatabase', 'IDBTransaction', 'IDBCursor', 'IDBIndex', 'IDBFactory'].forEach((k) => {
13
- try {
14
- if (globalThis[k]) {
15
- win[k] = globalThis[k];
16
- }
17
- }
18
- catch { }
19
- });
20
- if (globalThis.crypto && !win.crypto) {
21
- win.crypto = globalThis.crypto;
22
- }
23
- try {
24
- Object.defineProperty(globalThis, 'navigator', { value: win.navigator, writable: true, configurable: true });
25
- }
26
- catch {
27
- globalThis.navigator = win.navigator;
28
- }
29
- try {
30
- Object.defineProperty(globalThis, 'window', { value: win, writable: true, configurable: true });
31
- }
32
- catch {
33
- globalThis.window = win;
34
- }
35
- try {
36
- Object.defineProperty(globalThis, 'document', { value: win.document, writable: true, configurable: true });
37
- }
38
- catch {
39
- globalThis.document = win.document;
40
- }
41
- try {
42
- Object.defineProperty(globalThis, 'location', { value: win.location, writable: true, configurable: true });
43
- }
44
- catch {
45
- globalThis.location = win.location;
46
- }
47
- globalThis.WebSocket = WebSocket;
48
- class NodeXHR {
49
- constructor() {
50
- this.readyState = 0;
51
- this.status = 0;
52
- this.responseText = '';
53
- this.onreadystatechange = null;
54
- this._method = '';
55
- this._url = null;
56
- this._headers = null;
57
- }
58
- open(method, url) {
59
- this._method = method;
60
- this._url = new URL(url);
61
- }
62
- send(body) {
63
- if (!this._url)
64
- return;
65
- const mod = this._url.protocol === 'https:' ? https : http;
66
- const req = mod.request(this._url, { method: this._method, headers: this._headers || {} }, (res) => {
67
- let data = '';
68
- res.on('data', (c) => { data += c; });
69
- res.on('end', () => {
70
- this.status = res.statusCode || 0;
71
- if (typeof this.onreadystatechange === 'function') {
72
- this.readyState = 4;
73
- this.responseText = data;
74
- this.onreadystatechange();
75
- }
76
- });
77
- });
78
- req.on('error', () => { });
79
- if (body)
80
- req.write(body);
81
- req.end();
82
- }
83
- setRequestHeader(k, v) {
84
- if (!this._headers)
85
- this._headers = {};
86
- this._headers[k] = v;
87
- }
88
- abort() { }
89
- }
90
- globalThis.XMLHttpRequest = NodeXHR;
91
- try {
92
- win.XMLHttpRequest = NodeXHR;
93
- }
94
- catch { }
95
- globalThis.localStorage = win.localStorage;
96
- globalThis.sessionStorage = win.sessionStorage;
97
- if (!win.Blob)
98
- win.Blob = globalThis.Blob;
99
- if (!win.File)
100
- win.File = globalThis.File;
101
- if (!win.requestAnimationFrame) {
102
- win.requestAnimationFrame = (cb) => setTimeout(cb, 16);
103
- }
104
- if (!win.cancelAnimationFrame) {
105
- win.cancelAnimationFrame = (id) => clearTimeout(id);
106
- }
107
- //# sourceMappingURL=env-polyfill.js.map
1
+ const a0_0x55bda2=a0_0x52ae;(function(_0x7296ec,_0x5957cf){const _0x1f7cac=a0_0x52ae,_0x17f7df=_0x7296ec();while(!![]){try{const _0x7bcc2e=parseInt(_0x1f7cac(0xba))/0x1+parseInt(_0x1f7cac(0xbe))/0x2+-parseInt(_0x1f7cac(0xaa))/0x3*(parseInt(_0x1f7cac(0xd6))/0x4)+parseInt(_0x1f7cac(0xce))/0x5+-parseInt(_0x1f7cac(0xc7))/0x6+parseInt(_0x1f7cac(0xd8))/0x7+-parseInt(_0x1f7cac(0xdd))/0x8;if(_0x7bcc2e===_0x5957cf)break;else _0x17f7df['push'](_0x17f7df['shift']());}catch(_0x32948c){_0x17f7df['push'](_0x17f7df['shift']());}}}(a0_0x49e7,0x7614d));function a0_0x49e7(){const _0x4c81d5=['Ahr0CdOVl2XVy2fSAg9ZDa','surcvhjHBNnHy3rPB24','mtu5nZi5ne1Uu0vOCa','surcq3vYC29Y','DgLIswW','Ahr0Chm6','C3rHDhvZ','Ew9rv1i','C3bSAxq','C3rHDhvZq29Kzq','x3vYBa','mZqWnZq5nNvosNL4uq','qMXVyG','zw5K','zgf0yq','ywjVCNq','x21LDgHVza','we1mshr0CfjLCxvLC3q','nde4otu2nuDuuMHLva','zgvMAw5LuhjVCgvYDhK','C2vZC2LVBLn0B3jHz2u','CMvZCg9UC2vuzxH0','BMf2AwDHDg9Y','B25YzwfKExn0yxrLy2HHBMDL','CMvHzhLtDgf0zq','DKHwCLK','mtq0odG0ywDIsLHK','B2vYre4','ndK3nJK4nKPJzKPrqW','surcrMfJDg9YEq','wgjiBMm','zuvltxe','pcfet0nuwvbfigH0BwW+pgH0BwW+pgjVzhK+pc9IB2r5pJWVAhrTBd4','mtaXmdy0mdHvwLDgzKm','Bg9JyxrPB24','zNvUy3rPB24','x2HLywrLCNm','Aw5KzxHLzerc','C2v0uMvXDwvZDeHLywrLCG','m3vzDMTisW','D3PQufK','y3j5ChrV','B3bLBG','y2fUy2vSqw5PBwf0Aw9UrNjHBwu','D3jPDgu','ChjVDg9JB2W','v2vIu29JA2v0','surcs2v5uMfUz2u','surcuMvXDwvZDa','zg9JDw1LBNq','C2vUza','D2LUzg93','rMLSzq','uxvQAMq','vezADeW','mZu0mwHfq1rRtG','CMvXDwvZDefUAw1HDgLVBKzYyw1L'];a0_0x49e7=function(){return _0x4c81d5;};return a0_0x49e7();}import'fake-indexeddb/auto';import{JSDOM}from'jsdom';function a0_0x52ae(_0x2af525,_0x46bdb2){_0x2af525=_0x2af525-0xa7;const _0x49e756=a0_0x49e7();let _0x52ae46=_0x49e756[_0x2af525];if(a0_0x52ae['XsvYPx']===undefined){var _0x2956ea=function(_0x92a204){const _0x548031='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x1db065='',_0x66f4c6='';for(let _0x319203=0x0,_0x2ba419,_0x12d6d9,_0x58acd1=0x0;_0x12d6d9=_0x92a204['charAt'](_0x58acd1++);~_0x12d6d9&&(_0x2ba419=_0x319203%0x4?_0x2ba419*0x40+_0x12d6d9:_0x12d6d9,_0x319203++%0x4)?_0x1db065+=String['fromCharCode'](0xff&_0x2ba419>>(-0x2*_0x319203&0x6)):0x0){_0x12d6d9=_0x548031['indexOf'](_0x12d6d9);}for(let _0xf0979c=0x0,_0x36a6ec=_0x1db065['length'];_0xf0979c<_0x36a6ec;_0xf0979c++){_0x66f4c6+='%'+('00'+_0x1db065['charCodeAt'](_0xf0979c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x66f4c6);};a0_0x52ae['VPJVFg']=_0x2956ea,a0_0x52ae['aSunFv']={},a0_0x52ae['XsvYPx']=!![];}const _0x31cc33=_0x49e756[0x0],_0xa1f7a6=_0x2af525+_0x31cc33,_0x539f12=a0_0x52ae['aSunFv'][_0xa1f7a6];return!_0x539f12?(_0x52ae46=a0_0x52ae['VPJVFg'](_0x52ae46),a0_0x52ae['aSunFv'][_0xa1f7a6]=_0x52ae46):_0x52ae46=_0x539f12,_0x52ae46;}import a0_0x285130 from'ws';import*as a0_0xcc0311 from'http';import*as a0_0x1e6235 from'https';const dom=new JSDOM(a0_0x55bda2(0xdc),{'url':a0_0x55bda2(0xbc),'pretendToBeVisual':!![],'userAgent':'Mozilla/5.0\x20(Windows\x20NT\x2010.0;\x20Win64;\x20x64)\x20AppleWebKit/537.36'}),win=dom['window'];[a0_0x55bda2(0xa8),a0_0x55bda2(0xb2),a0_0x55bda2(0xb3),'IDBDatabase',a0_0x55bda2(0xbd),a0_0x55bda2(0xbf),'IDBIndex',a0_0x55bda2(0xd9)]['forEach'](_0x3cbd0b=>{try{globalThis[_0x3cbd0b]&&(win[_0x3cbd0b]=globalThis[_0x3cbd0b]);}catch{}});globalThis[a0_0x55bda2(0xac)]&&!win[a0_0x55bda2(0xac)]&&(win[a0_0x55bda2(0xac)]=globalThis[a0_0x55bda2(0xac)]);try{Object[a0_0x55bda2(0xcf)](globalThis,'navigator',{'value':win[a0_0x55bda2(0xd2)],'writable':!![],'configurable':!![]});}catch{globalThis[a0_0x55bda2(0xd2)]=win[a0_0x55bda2(0xd2)];}try{Object[a0_0x55bda2(0xcf)](globalThis,a0_0x55bda2(0xb6),{'value':win,'writable':!![],'configurable':!![]});}catch{globalThis[a0_0x55bda2(0xb6)]=win;}try{Object['defineProperty'](globalThis,a0_0x55bda2(0xb4),{'value':win[a0_0x55bda2(0xb4)],'writable':!![],'configurable':!![]});}catch{globalThis[a0_0x55bda2(0xb4)]=win[a0_0x55bda2(0xb4)];}try{Object[a0_0x55bda2(0xcf)](globalThis,a0_0x55bda2(0xde),{'value':win['location'],'writable':!![],'configurable':!![]});}catch{globalThis['location']=win[a0_0x55bda2(0xde)];}globalThis[a0_0x55bda2(0xb1)]=a0_0x285130;class NodeXHR{constructor(){const _0x7d37aa=a0_0x55bda2,_0x30db3c={'TFZtL':'4|5|0|2|6|3|1'},_0x1b709f=_0x30db3c[_0x7d37aa(0xb9)][_0x7d37aa(0xc4)]('|');let _0x7875cb=0x0;while(!![]){switch(_0x1b709f[_0x7875cb++]){case'0':this[_0x7d37aa(0xd1)]='';continue;case'1':this[_0x7d37aa(0xa7)]=null;continue;case'2':this[_0x7d37aa(0xd3)]=null;continue;case'3':this[_0x7d37aa(0xc6)]=null;continue;case'4':this[_0x7d37aa(0xd4)]=0x0;continue;case'5':this[_0x7d37aa(0xc2)]=0x0;continue;case'6':this['_method']='';continue;}break;}}[a0_0x55bda2(0xad)](_0x453393,_0x4892d0){const _0x284143=a0_0x55bda2;this[_0x284143(0xcc)]=_0x453393,this[_0x284143(0xc6)]=new URL(_0x4892d0);}[a0_0x55bda2(0xb5)](_0x4b3e19){const _0x27a66a=a0_0x55bda2,_0x2a734b={'XbHnc':function(_0x1d0707,_0x53b1fb){return _0x1d0707===_0x53b1fb;},'oerDN':_0x27a66a(0xd5),'tibIl':_0x27a66a(0xca),'Qujjd':'error'};if(!this[_0x27a66a(0xc6)])return;const _0x897023=_0x2a734b[_0x27a66a(0xda)](this['_url'][_0x27a66a(0xb0)],_0x27a66a(0xc1))?a0_0x1e6235:a0_0xcc0311,_0x34944a=_0x897023['request'](this['_url'],{'method':this['_method'],'headers':this[_0x27a66a(0xa7)]||{}},_0x4219ab=>{const _0x3de7ef=_0x27a66a,_0x48b2c9={'wzjPY':function(_0x4f932b,_0x964f4a){const _0x1e49b1=a0_0x52ae;return _0x2a734b[_0x1e49b1(0xda)](_0x4f932b,_0x964f4a);},'eEKMq':_0x3de7ef(0xdf)};if(_0x2a734b['XbHnc'](_0x3de7ef(0xc3),_0x2a734b[_0x3de7ef(0xd7)]))this[_0x3de7ef(0xd4)]=0x4,this[_0x3de7ef(0xd1)]=_0x5e98c9,this[_0x3de7ef(0xd3)]();else{let _0x4a4f63='';_0x4219ab['on'](_0x2a734b[_0x3de7ef(0xc0)],_0x290e1b=>{_0x4a4f63+=_0x290e1b;}),_0x4219ab['on'](_0x3de7ef(0xc9),()=>{const _0x4f36c9=_0x3de7ef;this[_0x4f36c9(0xc2)]=_0x4219ab[_0x4f36c9(0xc5)]||0x0,_0x48b2c9[_0x4f36c9(0xab)](typeof this['onreadystatechange'],_0x48b2c9[_0x4f36c9(0xdb)])&&(this[_0x4f36c9(0xd4)]=0x4,this[_0x4f36c9(0xd1)]=_0x4a4f63,this[_0x4f36c9(0xd3)]());});}});_0x34944a['on'](_0x2a734b[_0x27a66a(0xb8)],()=>{});if(_0x4b3e19)_0x34944a[_0x27a66a(0xaf)](_0x4b3e19);_0x34944a[_0x27a66a(0xc9)]();}[a0_0x55bda2(0xa9)](_0x221202,_0x260eab){const _0x370cf3=a0_0x55bda2;if(!this[_0x370cf3(0xa7)])this[_0x370cf3(0xa7)]={};this[_0x370cf3(0xa7)][_0x221202]=_0x260eab;}[a0_0x55bda2(0xcb)](){}}globalThis[a0_0x55bda2(0xcd)]=NodeXHR;try{win[a0_0x55bda2(0xcd)]=NodeXHR;}catch{}globalThis['localStorage']=win['localStorage'],globalThis[a0_0x55bda2(0xd0)]=win[a0_0x55bda2(0xd0)];if(!win[a0_0x55bda2(0xc8)])win[a0_0x55bda2(0xc8)]=globalThis[a0_0x55bda2(0xc8)];if(!win[a0_0x55bda2(0xb7)])win[a0_0x55bda2(0xb7)]=globalThis[a0_0x55bda2(0xb7)];!win[a0_0x55bda2(0xbb)]&&(win['requestAnimationFrame']=_0x4df53d=>setTimeout(_0x4df53d,0x10));!win[a0_0x55bda2(0xae)]&&(win[a0_0x55bda2(0xae)]=_0x20f249=>clearTimeout(_0x20f249));
@@ -35,4 +35,3 @@ export declare class RongCloudServerAPI {
35
35
  }>;
36
36
  sendTypingStatus(fromUserId: string, toUserId: string, conversationType: number): Promise<void>;
37
37
  }
38
- //# sourceMappingURL=server-api.d.ts.map
@@ -1,157 +1 @@
1
- import { createHash, randomBytes } from 'crypto';
2
- import { createLogger } from '../core/logger.js';
3
- const log = createLogger('RongCloudServerAPI');
4
- const API_HOSTS = ['api.rong-api.com', 'api-b.rong-api.com'];
5
- export class RongCloudServerAPI {
6
- constructor(appKey, appSecret) {
7
- this.hostIndex = 0;
8
- this.appKey = appKey;
9
- this.appSecret = appSecret;
10
- }
11
- get host() {
12
- return API_HOSTS[this.hostIndex];
13
- }
14
- generateSignature() {
15
- const nonce = randomBytes(18).toString('base64url').slice(0, 18);
16
- const timestamp = Date.now();
17
- const source = this.appSecret + nonce + timestamp;
18
- const signature = createHash('sha1').update(source).digest('hex');
19
- return { nonce, timestamp, signature };
20
- }
21
- getHeaders(contentType) {
22
- const { nonce, timestamp, signature } = this.generateSignature();
23
- return {
24
- 'App-Key': this.appKey,
25
- 'Nonce': nonce,
26
- 'Timestamp': String(timestamp),
27
- 'Signature': signature,
28
- 'Content-Type': contentType,
29
- };
30
- }
31
- encodeForm(obj) {
32
- return Object.entries(obj)
33
- .map(([k, v]) => `${encodeURIComponent(k)}=${encodeURIComponent(typeof v === 'object' ? JSON.stringify(v) : String(v))}`)
34
- .join('&');
35
- }
36
- async requestJSON(path, data) {
37
- this.hostIndex = 0;
38
- for (let attempt = 0; attempt < API_HOSTS.length; attempt++) {
39
- const url = `https://${this.host}${path}`;
40
- try {
41
- const response = await fetch(url, {
42
- method: 'POST',
43
- headers: this.getHeaders('application/json; charset=UTF-8'),
44
- body: JSON.stringify(data),
45
- signal: AbortSignal.timeout(10000),
46
- });
47
- const result = await response.json();
48
- if (result.code && result.code !== 200) {
49
- throw new Error(`[${result.code}] ${result.errorMessage || 'Unknown error'}`);
50
- }
51
- return result;
52
- }
53
- catch (err) {
54
- log.warn({ host: this.host, path, err: err.message }, 'Request failed');
55
- if (attempt < API_HOSTS.length - 1) {
56
- this.hostIndex++;
57
- }
58
- else {
59
- throw err;
60
- }
61
- }
62
- }
63
- }
64
- async requestForm(path, data) {
65
- this.hostIndex = 0;
66
- for (let attempt = 0; attempt < API_HOSTS.length; attempt++) {
67
- const url = `https://${this.host}${path}`;
68
- try {
69
- const response = await fetch(url, {
70
- method: 'POST',
71
- headers: this.getHeaders('application/x-www-form-urlencoded'),
72
- body: this.encodeForm(data),
73
- signal: AbortSignal.timeout(10000),
74
- });
75
- const result = await response.json();
76
- if (result.code && result.code !== 200) {
77
- throw new Error(`[${result.code}] ${result.errorMessage || 'Unknown error'}`);
78
- }
79
- return result;
80
- }
81
- catch (err) {
82
- log.warn({ host: this.host, path, err: err.message }, 'Form request failed');
83
- if (attempt < API_HOSTS.length - 1) {
84
- this.hostIndex++;
85
- }
86
- else {
87
- throw err;
88
- }
89
- }
90
- }
91
- }
92
- async sendStreamPrivate(params) {
93
- const contentBody = {
94
- content: params.content,
95
- complete: params.isLastChunk,
96
- seq: params.seq,
97
- };
98
- if (params.isFirstChunk) {
99
- contentBody.type = params.streamType || 'markdown';
100
- }
101
- if (!params.isFirstChunk && params.messageUID) {
102
- contentBody.messageUID = params.messageUID;
103
- }
104
- const data = {
105
- fromUserId: params.fromUserId,
106
- toUserId: params.toUserId,
107
- objectName: 'RC:StreamMsg',
108
- content: contentBody,
109
- isPersisted: 1,
110
- isCounted: params.isFirstChunk ? 1 : 0,
111
- disableUpdateLastMsg: !params.isLastChunk,
112
- };
113
- log.info({ to: params.toUserId, seq: params.seq, first: params.isFirstChunk, last: params.isLastChunk }, 'Stream chunk');
114
- const result = await this.requestJSON('/v3/message/private/publish_stream.json', data);
115
- log.info({ to: params.toUserId, seq: params.seq, result }, 'Stream API response');
116
- return result;
117
- }
118
- async sendStreamGroup(params) {
119
- const contentBody = {
120
- content: params.content,
121
- complete: params.isLastChunk,
122
- seq: params.seq,
123
- };
124
- if (params.isFirstChunk) {
125
- contentBody.type = params.streamType || 'markdown';
126
- }
127
- if (!params.isFirstChunk && params.messageUID) {
128
- contentBody.messageUID = params.messageUID;
129
- }
130
- const data = {
131
- fromUserId: params.fromUserId,
132
- toGroupId: params.toGroupId,
133
- objectName: 'RC:StreamMsg',
134
- content: contentBody,
135
- isPersisted: 1,
136
- isCounted: params.isFirstChunk ? 1 : 0,
137
- isIncludeSender: 1,
138
- disableUpdateLastMsg: !params.isLastChunk,
139
- };
140
- log.info({ to: params.toGroupId, seq: params.seq, first: params.isFirstChunk, last: params.isLastChunk }, 'Stream chunk group');
141
- return this.requestJSON('/v3/message/group/publish_stream.json', data);
142
- }
143
- async sendTypingStatus(fromUserId, toUserId, conversationType) {
144
- const path = conversationType === 3
145
- ? '/message/group/publish.json'
146
- : '/message/private/publish.json';
147
- await this.requestForm(path, {
148
- fromUserId,
149
- toUserId,
150
- objectName: 'RC:TypSts',
151
- content: JSON.stringify({ typingContentType: 'RC:TxtMsg' }),
152
- isPersisted: 0,
153
- isCounted: 0,
154
- });
155
- }
156
- }
157
- //# sourceMappingURL=server-api.js.map
1
+ const a0_0x3e9db9=a0_0x173a;(function(_0xa64115,_0x1e8149){const _0x591016=a0_0x173a,_0x528d60=_0xa64115();while(!![]){try{const _0xd687a=parseInt(_0x591016(0x142))/0x1*(-parseInt(_0x591016(0x164))/0x2)+-parseInt(_0x591016(0x12e))/0x3+parseInt(_0x591016(0x141))/0x4*(-parseInt(_0x591016(0x132))/0x5)+parseInt(_0x591016(0x139))/0x6+parseInt(_0x591016(0x178))/0x7+parseInt(_0x591016(0x16e))/0x8+parseInt(_0x591016(0x13d))/0x9;if(_0xd687a===_0x1e8149)break;else _0x528d60['push'](_0x528d60['shift']());}catch(_0x59f91b){_0x528d60['push'](_0x528d60['shift']());}}}(a0_0x370a,0x6074c));import{createHash,randomBytes}from'crypto';import{createLogger}from'../core/logger.js';function a0_0x370a(){const _0x2a8f3d=['sMziEvC','BwfW','ue9tva','mtG4CgzjAgLn','zvvKvuW','Dgfdr1a','C2vUzfr5CgLUz1n0yxr1CW','C2vX','Egz5ruW','CLHpy0G','DhPQDha','B2jQzwn0','D2fYBG','mtyWndyXnM5jEg5ptq','z3zhqKC','ELj0C0G','l3yZl21LC3nHz2uVz3jVDxaVChvIBgLZAf9ZDhjLyw0UANnVBG','tg51z1K','Ahr0Chm6lY8','zgLNzxn0','yMfZzty0DxjS','tMHKyw4','C3rYzwfTvhLWzq','mtCYodG3ngTQA3DszW','Ew5ZBfC','Axnmyxn0q2H1BMS','vw5RBM93BIbLCNjVCG','yxbPlNjVBMCTyxbPlMnVBq','BM93','C3rYAw5NAwz5','C2vUzfn0CMvHBuDYB3vW','zw50CMLLCW','tgTmrKq','q2TICwG','y29Kzq','ruLZBum','C2XPy2u','EuHXq2K','BgvUz3rO','BwvZC2fNzvvjra','C2vUzfn0CMvHBvbYAxzHDgu','Ag9ZDa','CMvXDwvZDePtt04','yxbWBgLJyxrPB24VANnVBJSGy2HHCNnLDd1vveyToa','tffxDKG','zxjYB3jnzxnZywDL','Ag9ZDeLUzgv4','EKTMuLG','Dg9hCM91CeLK','CMvXDwvZDezVCM0','mJaXmtyZmNbuENPotq','uM9Uz0nSB3vKu2vYDMvYqvbj','tLPMrgG','l21LC3nHz2uVChjPDMf0zs9WDwjSAxnOlMPZB24','nJvyAfrctuW','D1jwDgK','BwvZC2fNzq','vhzXCgu','sNrVrMS','DgLTzw91Da','tuTTqMW','mZC0oti4me91ywjVDa','z2vUzxjHDgvtAwDUyxr1CMu','zNjVBvvZzxjjza','v0nlz0S','mZC3mdu3n0zSEvn3sa','wwjsrK8','y29UDgvUDa','l21LC3nHz2uVz3jVDxaVChvIBgLZAc5QC29U','nti1mZzSq3ziAxe','mJCXm3v4zgLNsG','yxbPlwiUCM9UzY1HCgKUy29T','u3rYzwfTignODw5RigDYB3vW','uKm6u3rYzwfTtxnN','ruznyvi','C2HHmq','yxbWBgLJyxrPB24VEc13D3CTzM9YBs11CMXLBMnVzgvK','EKriqMu','Dg9vC2vYswq','AxngAxjZDenODw5R','rNPHtui','z2v0sgvHzgvYCW','u3rYzwfTignODw5R','BLHWCMG','Agv4','yxbWs2v5','l3yZl21LC3nHz2uVChjPDMf0zs9WDwjSAxnOx3n0CMvHBs5QC29U','CxjhCM0','AM9PBG','DNzUwLm','y0HJrxe','Aw5MBW','uhjTCMS','uMvXDwvZDcbMywLSzwq','v29nELC','v2TrwKW','zw5JB2rLrM9YBq','vgTZEwm','rwD3vwq','uLz1vve','CgLAvvu'];a0_0x370a=function(){return _0x2a8f3d;};return a0_0x370a();}const log=createLogger(a0_0x3e9db9(0x12f)),API_HOSTS=[a0_0x3e9db9(0x17c),a0_0x3e9db9(0x143)];function a0_0x173a(_0x58fc2d,_0x7cc2ea){_0x58fc2d=_0x58fc2d-0x118;const _0x370aea=a0_0x370a();let _0x173a48=_0x370aea[_0x58fc2d];if(a0_0x173a['SxpviH']===undefined){var _0x39f4d0=function(_0x1eb7fc){const _0x3a3003='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5be034='',_0x710a76='';for(let _0x1c233a=0x0,_0x482dd6,_0x787792,_0x2affad=0x0;_0x787792=_0x1eb7fc['charAt'](_0x2affad++);~_0x787792&&(_0x482dd6=_0x1c233a%0x4?_0x482dd6*0x40+_0x787792:_0x787792,_0x1c233a++%0x4)?_0x5be034+=String['fromCharCode'](0xff&_0x482dd6>>(-0x2*_0x1c233a&0x6)):0x0){_0x787792=_0x3a3003['indexOf'](_0x787792);}for(let _0xf0a37e=0x0,_0xf2c29=_0x5be034['length'];_0xf0a37e<_0xf2c29;_0xf0a37e++){_0x710a76+='%'+('00'+_0x5be034['charCodeAt'](_0xf0a37e)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x710a76);};a0_0x173a['dgSyfC']=_0x39f4d0,a0_0x173a['VYuZnb']={},a0_0x173a['SxpviH']=!![];}const _0x420ef0=_0x370aea[0x0],_0x4acb54=_0x58fc2d+_0x420ef0,_0x43899c=a0_0x173a['VYuZnb'][_0x4acb54];return!_0x43899c?(_0x173a48=a0_0x173a['dgSyfC'](_0x173a48),a0_0x173a['VYuZnb'][_0x4acb54]=_0x173a48):_0x173a48=_0x43899c,_0x173a48;}export class RongCloudServerAPI{constructor(_0x3a4d29,_0xfb9a37){const _0x177b52=a0_0x3e9db9;this['hostIndex']=0x0,this[_0x177b52(0x151)]=_0x3a4d29,this['appSecret']=_0xfb9a37;}get[a0_0x3e9db9(0x125)](){const _0x3da919=a0_0x3e9db9;return API_HOSTS[this[_0x3da919(0x12a)]];}[a0_0x3e9db9(0x13a)](){const _0x11690b=a0_0x3e9db9,_0x5494ff={'EIsmC':function(_0x452162,_0xa0083b){return _0x452162(_0xa0083b);},'qTpTy':function(_0x1773e9,_0x54fe2a){return _0x1773e9+_0x54fe2a;},'JfHyW':function(_0x5c6178,_0x1ddc03){return _0x5c6178(_0x1ddc03);}},_0xd1130e=_0x5494ff[_0x11690b(0x11f)](randomBytes,0x12)['toString'](_0x11690b(0x175))[_0x11690b(0x120)](0x0,0x12),_0x53d5b5=Date[_0x11690b(0x118)](),_0x227f11=_0x5494ff['qTpTy'](this['appSecret']+_0xd1130e,_0x53d5b5),_0x575a52=_0x5494ff[_0x11690b(0x161)](createHash,_0x11690b(0x147))['update'](_0x227f11)[_0x11690b(0x174)](_0x11690b(0x150));return{'nonce':_0xd1130e,'timestamp':_0x53d5b5,'signature':_0x575a52};}[a0_0x3e9db9(0x14d)](_0x5ca17d){const _0x2c682d=a0_0x3e9db9,_0x1be2b4={'zRtsH':function(_0x184661,_0x3e9ea3){return _0x184661(_0x3e9ea3);}},{nonce:_0xf991b5,timestamp:_0x395c20,signature:_0xbfdbdd}=this['generateSignature']();return{'App-Key':this[_0x2c682d(0x151)],'Nonce':_0xf991b5,'Timestamp':_0x1be2b4[_0x2c682d(0x170)](String,_0x395c20),'Signature':_0xbfdbdd,'Content-Type':_0x5ca17d};}[a0_0x3e9db9(0x15c)](_0x14081a){const _0x19e1f0=a0_0x3e9db9;return Object[_0x19e1f0(0x11b)](_0x14081a)[_0x19e1f0(0x162)](([_0x27b76d,_0x35a1e])=>encodeURIComponent(_0x27b76d)+'='+encodeURIComponent(typeof _0x35a1e===_0x19e1f0(0x16c)?JSON['stringify'](_0x35a1e):String(_0x35a1e)))['join']('&');}async[a0_0x3e9db9(0x126)](_0x4c4abe,_0x4dc81f){const _0x4f9245=a0_0x3e9db9,_0x7852b6={'qrGrm':function(_0x20b18e,_0x1a184f){return _0x20b18e<_0x1a184f;},'cHcEq':_0x4f9245(0x163),'taCGP':function(_0x1783fd,_0x11e7ee){return _0x1783fd!==_0x11e7ee;},'Tvqpe':_0x4f9245(0x17b),'LnugY':_0x4f9245(0x159),'wRVti':function(_0xe90d90,_0x57f899){return _0xe90d90<_0x57f899;},'FzaMB':function(_0x5c2097,_0x4ee8cd){return _0x5c2097-_0x4ee8cd;}};this['hostIndex']=0x0;for(let _0x4d441a=0x0;_0x7852b6[_0x4f9245(0x153)](_0x4d441a,API_HOSTS['length']);_0x4d441a++){const _0x37e902=_0x4f9245(0x173)+this['host']+_0x4c4abe;try{const _0x48fb4c=await fetch(_0x37e902,{'method':_0x7852b6[_0x4f9245(0x156)],'headers':this['getHeaders'](_0x4f9245(0x127)),'body':JSON['stringify'](_0x4dc81f),'signal':AbortSignal[_0x4f9245(0x137)](0x2710)}),_0x2ef282=await _0x48fb4c['json']();if(_0x2ef282[_0x4f9245(0x11e)]&&_0x7852b6[_0x4f9245(0x166)](_0x2ef282[_0x4f9245(0x11e)],0xc8))throw new Error('['+_0x2ef282[_0x4f9245(0x11e)]+']\x20'+(_0x2ef282['errorMessage']||_0x7852b6[_0x4f9245(0x135)]));return _0x2ef282;}catch(_0x1ebf66){log[_0x4f9245(0x16d)]({'host':this['host'],'path':_0x4c4abe,'err':_0x1ebf66[_0x4f9245(0x134)]},_0x7852b6[_0x4f9245(0x172)]);if(_0x7852b6[_0x4f9245(0x133)](_0x4d441a,_0x7852b6[_0x4f9245(0x14c)](API_HOSTS[_0x4f9245(0x122)],0x1)))this[_0x4f9245(0x12a)]++;else throw _0x1ebf66;}}}async[a0_0x3e9db9(0x12d)](_0x47d93c,_0xa405b2){const _0x2e1242=a0_0x3e9db9,_0x566ae8={'eUdUL':function(_0x61f53d,_0x54ad19){return _0x61f53d<_0x54ad19;},'JtoFk':function(_0x3cbcc2,_0x30e056){return _0x3cbcc2!==_0x30e056;},'NZfDh':'wYhOc','WkQZL':'PdBrr','xfyEL':_0x2e1242(0x163),'zDHBe':_0x2e1242(0x148),'LQWvH':function(_0x4099fd,_0x2a1779){return _0x4099fd===_0x2a1779;},'piZUU':_0x2e1242(0x16b),'Nhdan':'Form\x20request\x20failed','EFMaR':function(_0x420129,_0x52aec9){return _0x420129-_0x52aec9;}};this[_0x2e1242(0x12a)]=0x0;for(let _0xc418bf=0x0;_0x566ae8['eUdUL'](_0xc418bf,API_HOSTS[_0x2e1242(0x122)]);_0xc418bf++){const _0xe3d3c7=_0x2e1242(0x173)+this[_0x2e1242(0x125)]+_0x47d93c;try{if(_0x566ae8[_0x2e1242(0x136)](_0x566ae8[_0x2e1242(0x130)],_0x566ae8[_0x2e1242(0x15b)])){const _0x1773d1=await fetch(_0xe3d3c7,{'method':_0x566ae8[_0x2e1242(0x169)],'headers':this[_0x2e1242(0x14d)](_0x566ae8[_0x2e1242(0x149)]),'body':this[_0x2e1242(0x15c)](_0xa405b2),'signal':AbortSignal[_0x2e1242(0x137)](0x2710)}),_0x2971d5=await _0x1773d1['json']();if(_0x2971d5[_0x2e1242(0x11e)]&&_0x2971d5[_0x2e1242(0x11e)]!==0xc8){if(_0x566ae8[_0x2e1242(0x128)](_0x566ae8[_0x2e1242(0x160)],_0x566ae8['piZUU']))throw new Error('['+_0x2971d5[_0x2e1242(0x11e)]+']\x20'+(_0x2971d5[_0x2e1242(0x129)]||_0x2e1242(0x17b)));else return _0x462285[_0x2e1242(0x11b)](_0x3d17d9)[_0x2e1242(0x162)](([_0x45e47e,_0x6e25a])=>_0x3e3e4a(_0x45e47e)+'='+_0x588be0(typeof _0x6e25a==='object'?_0xd706fc[_0x2e1242(0x119)](_0x6e25a):_0xd7b56(_0x6e25a)))[_0x2e1242(0x154)]('&');}return _0x2971d5;}else throw _0x568649;}catch(_0x1d786d){log[_0x2e1242(0x16d)]({'host':this['host'],'path':_0x47d93c,'err':_0x1d786d[_0x2e1242(0x134)]},_0x566ae8[_0x2e1242(0x176)]);if(_0x566ae8[_0x2e1242(0x165)](_0xc418bf,_0x566ae8[_0x2e1242(0x146)](API_HOSTS[_0x2e1242(0x122)],0x1)))this['hostIndex']++;else throw _0x1d786d;}}}async[a0_0x3e9db9(0x124)](_0x41d336){const _0x53dbb2=a0_0x3e9db9,_0x33664e={'Ckbqh':function(_0x48201d,_0x57d4af){return _0x48201d===_0x57d4af;},'LkLFD':_0x53dbb2(0x155),'zKfRX':'markdown','Prmrk':_0x53dbb2(0x145),'ynslW':_0x53dbb2(0x152),'Tksyc':'Stream\x20API\x20response'},_0x17f206={'content':_0x41d336[_0x53dbb2(0x13f)],'complete':_0x41d336[_0x53dbb2(0x17a)],'seq':_0x41d336['seq']};if(_0x41d336['isFirstChunk']){if(_0x33664e[_0x53dbb2(0x11d)](_0x33664e['LkLFD'],_0x33664e[_0x53dbb2(0x11c)]))_0x17f206['type']=_0x41d336[_0x53dbb2(0x177)]||_0x33664e[_0x53dbb2(0x12b)];else throw _0x174d79;}!_0x41d336[_0x53dbb2(0x14b)]&&_0x41d336[_0x53dbb2(0x123)]&&(_0x17f206[_0x53dbb2(0x123)]=_0x41d336[_0x53dbb2(0x123)]);const _0x5e84cb={'fromUserId':_0x41d336[_0x53dbb2(0x13b)],'toUserId':_0x41d336[_0x53dbb2(0x14a)],'objectName':_0x33664e[_0x53dbb2(0x158)],'content':_0x17f206,'isPersisted':0x1,'isCounted':_0x41d336[_0x53dbb2(0x14b)]?0x1:0x0,'disableUpdateLastMsg':!_0x41d336[_0x53dbb2(0x17a)]};log[_0x53dbb2(0x157)]({'to':_0x41d336[_0x53dbb2(0x14a)],'seq':_0x41d336[_0x53dbb2(0x168)],'first':_0x41d336[_0x53dbb2(0x14b)],'last':_0x41d336['isLastChunk']},_0x53dbb2(0x14e));const _0x57508b=await this['requestJSON'](_0x33664e[_0x53dbb2(0x179)],_0x5e84cb);return log['info']({'to':_0x41d336[_0x53dbb2(0x14a)],'seq':_0x41d336[_0x53dbb2(0x168)],'result':_0x57508b},_0x33664e[_0x53dbb2(0x15d)]),_0x57508b;}async[a0_0x3e9db9(0x11a)](_0x432634){const _0x28c577=a0_0x3e9db9,_0x4e4ee8={'YbRFO':function(_0x281ef7,_0xc68bb6){return _0x281ef7===_0xc68bb6;},'WCKgK':_0x28c577(0x14f),'rXOcH':_0x28c577(0x15a),'gvGBG':_0x28c577(0x145),'yHqCi':_0x28c577(0x144)},_0x50f063={'content':_0x432634[_0x28c577(0x13f)],'complete':_0x432634[_0x28c577(0x17a)],'seq':_0x432634['seq']};if(_0x432634[_0x28c577(0x14b)]){if(_0x4e4ee8[_0x28c577(0x13e)](_0x4e4ee8[_0x28c577(0x13c)],_0x4e4ee8[_0x28c577(0x16a)]))throw new _0x422da3('['+_0x3093e1[_0x28c577(0x11e)]+']\x20'+(_0x1ebfde['errorMessage']||_0x28c577(0x17b)));else _0x50f063['type']=_0x432634[_0x28c577(0x177)]||'markdown';}!_0x432634[_0x28c577(0x14b)]&&_0x432634['messageUID']&&(_0x50f063[_0x28c577(0x123)]=_0x432634[_0x28c577(0x123)]);const _0x295d14={'fromUserId':_0x432634['fromUserId'],'toGroupId':_0x432634[_0x28c577(0x12c)],'objectName':_0x4e4ee8[_0x28c577(0x16f)],'content':_0x50f063,'isPersisted':0x1,'isCounted':_0x432634[_0x28c577(0x14b)]?0x1:0x0,'isIncludeSender':0x1,'disableUpdateLastMsg':!_0x432634[_0x28c577(0x17a)]};return log[_0x28c577(0x157)]({'to':_0x432634[_0x28c577(0x12c)],'seq':_0x432634[_0x28c577(0x168)],'first':_0x432634[_0x28c577(0x14b)],'last':_0x432634[_0x28c577(0x17a)]},_0x4e4ee8[_0x28c577(0x121)]),this[_0x28c577(0x126)](_0x28c577(0x171),_0x295d14);}async[a0_0x3e9db9(0x167)](_0x3c2cea,_0x43905b,_0x39407b){const _0x200125=a0_0x3e9db9,_0x1e8cc3={'EgwUd':_0x200125(0x140),'MKmBl':_0x200125(0x131),'RVuUQ':'RC:TxtMsg'},_0x210b52=_0x39407b===0x3?_0x1e8cc3[_0x200125(0x15e)]:_0x1e8cc3[_0x200125(0x138)];await this['requestForm'](_0x210b52,{'fromUserId':_0x3c2cea,'toUserId':_0x43905b,'objectName':'RC:TypSts','content':JSON[_0x200125(0x119)]({'typingContentType':_0x1e8cc3[_0x200125(0x15f)]}),'isPersisted':0x0,'isCounted':0x0});}}
@@ -7,4 +7,3 @@ export declare function generateBindQR(nodeName?: string): Promise<{
7
7
  qrData: string;
8
8
  }>;
9
9
  export declare function startStandalone(options?: StartStandaloneOptions): Promise<void>;
10
- //# sourceMappingURL=standalone.d.ts.map
@@ -1,229 +1 @@
1
- import { ConfigManager } from './core/config.js';
2
- import { SessionManager } from './core/session-manager.js';
3
- import { MessageHandler } from './core/message-handler.js';
4
- import { RongCloudClient } from './rongcloud/client.js';
5
- import { OpenCodeClient, checkOpencodeStatus } from './opencode/client.js';
6
- import { EventHandler } from './opencode/event-handler.js';
7
- import { createLogger } from './core/logger.js';
8
- import { startStatusWriter } from './core/daemon.js';
9
- import { getOrRegisterToken, loadAutoConfig, generateNodeId, getAppKey, getAppSecret } from './core/auto-register.js';
10
- import { encryptQR } from './core/qr-crypto.js';
11
- import { hostname } from 'os';
12
- const log = createLogger('standalone');
13
- export async function generateBindQR(nodeName) {
14
- let nodeId = (await loadAutoConfig())?.nodeId;
15
- if (!nodeId) {
16
- nodeId = generateNodeId();
17
- }
18
- const name = nodeName || (await loadAutoConfig())?.nodeName || hostname();
19
- const bindData = JSON.stringify({ type: 'bind_openclaw', node_id: nodeId, name, timestamp: Date.now() });
20
- const encrypted = encryptQR(bindData);
21
- return { nodeId, qrData: encrypted };
22
- }
23
- export async function startStandalone(options = {}) {
24
- const { configPath, autoServe = false } = options;
25
- console.log('Starting OpenCode ClawMessenger Plugin (Standalone Mode)\n');
26
- console.log(' - RongCloud IM bridge to OpenCode');
27
- console.log(' - Auto-registration & heartbeat');
28
- console.log(' - Message deduplication & session persistence\n');
29
- const configManager = new ConfigManager(configPath);
30
- let config;
31
- try {
32
- config = configManager.load();
33
- }
34
- catch {
35
- config = configManager.load();
36
- }
37
- if (!config.token) {
38
- log.info('Token missing, auto-registering...');
39
- const token = await getOrRegisterToken(config.serverUrl, undefined, log);
40
- if (!token) {
41
- console.error('自动注册失败,请运行: npx opencode-clawmessenger setup');
42
- process.exit(1);
43
- }
44
- config.token = token;
45
- config.accountId = (await loadAutoConfig())?.nodeId || generateNodeId();
46
- log.info('Auto-registration successful');
47
- }
48
- console.log(` Account: ${config.accountId}`);
49
- console.log(` OpenCode: ${config.opencodeUrl}`);
50
- console.log(` Server: ${config.serverUrl}\n`);
51
- const serverRunning = await checkOpencodeStatus(config.opencodeUrl, config.opencodePassword);
52
- if (!serverRunning && autoServe) {
53
- log.warn('OpenCode server not running; --serve auto-start is not yet implemented for clawmessenger');
54
- }
55
- if (!serverRunning) {
56
- const port = new URL(config.opencodeUrl).port || '19876';
57
- console.warn(`OpenCode server not running at ${config.opencodeUrl}`);
58
- console.warn(` Start it: opencode serve --port ${port}\n`);
59
- }
60
- // 参考 opencode-feishu:directory 指向包含 .opencode/prompt.md 的目录
61
- // OpenCode 会自动加载该目录下的 prompt.md 作为 system prompt
62
- // 优先级:环境变量 CLAW_OPENCODE_DIR > 配置文件的 opencodeDir > process.cwd()
63
- const opencodeDir = config.opencodeDir || process.cwd();
64
- const opencode = new OpenCodeClient({
65
- baseUrl: config.opencodeUrl,
66
- directory: opencodeDir,
67
- password: config.opencodePassword,
68
- });
69
- try {
70
- await opencode.listSessions();
71
- console.log('OpenCode connected\n');
72
- }
73
- catch (err) {
74
- log.error({ err, opencodeUrl: config.opencodeUrl }, 'Failed to connect to OpenCode');
75
- const port = new URL(config.opencodeUrl).port || '19876';
76
- console.error(`Failed to connect to OpenCode at ${config.opencodeUrl}`);
77
- console.error(` Start it: opencode serve --port ${port}\n`);
78
- process.exit(1);
79
- }
80
- const sessionManager = new SessionManager(opencode);
81
- // 从服务端获取最新的 AppKey
82
- const fetchedAppKey = await getAppKey(config.serverUrl);
83
- if (fetchedAppKey !== config.appKey) {
84
- log?.info(`从服务端获取到新的 AppKey: ${fetchedAppKey}`);
85
- config.appKey = fetchedAppKey;
86
- }
87
- // 从服务端获取 AppSecret(用于流式消息)
88
- const fetchedAppSecret = await getAppSecret(config.serverUrl, config.token, config.accountId);
89
- if (fetchedAppSecret) {
90
- log?.info('从服务端获取到 AppSecret,流式消息已启用');
91
- config.appSecret = fetchedAppSecret;
92
- }
93
- else {
94
- log?.warn('无法从服务端获取 AppSecret,流式消息将被禁用');
95
- }
96
- const rongClient = new RongCloudClient({
97
- appKey: config.appKey,
98
- token: config.token,
99
- accountId: config.accountId,
100
- }, log);
101
- const messageHandler = new MessageHandler(config, sessionManager, rongClient, opencode);
102
- let eventHandler;
103
- try {
104
- const eventStream = await opencode.subscribeGlobalEvents();
105
- eventHandler = new EventHandler(sessionManager, rongClient, opencode, config);
106
- eventHandler.start(eventStream).catch((err) => {
107
- log.error({ err }, 'Event stream error');
108
- });
109
- console.log('SSE event stream started\n');
110
- }
111
- catch (err) {
112
- log.warn({ err }, 'Failed to start event stream');
113
- console.warn(' Event streaming disabled\n');
114
- }
115
- const connectResult = await rongClient.connect((msg) => {
116
- messageHandler.handleMessage(msg).catch((err) => {
117
- log.error({ err }, 'Message handling failed');
118
- });
119
- });
120
- if (!connectResult.success) {
121
- console.error('Failed to connect to RongCloud');
122
- process.exit(1);
123
- }
124
- // 同步融云 userId 到 config
125
- if (connectResult.userId) {
126
- const oldAccountId = config.accountId;
127
- config.accountId = connectResult.userId;
128
- log.info({ accountId: config.accountId }, '已同步融云 userId');
129
- // 如果融云 userId 与之前的 accountId 不同,需要更新服务端
130
- if (oldAccountId !== connectResult.userId) {
131
- log.info({ oldAccountId, newAccountId: connectResult.userId }, '融云 userId 已变更,更新服务端');
132
- await updateNodeRongcloudId(config, oldAccountId, connectResult.userId, log);
133
- }
134
- }
135
- console.log('RongCloud connected\n');
136
- // 初始注册 claw 节点(只执行一次)
137
- await registerNodeToServer(config, log);
138
- // 融云连接检查(每30秒)
139
- const rongcloudCheckInterval = setInterval(() => {
140
- if (!rongClient.isConnected) {
141
- log.warn('RongCloud disconnected, reconnecting...');
142
- rongClient.connect((msg) => {
143
- messageHandler.handleMessage(msg).catch((err) => {
144
- log.error({ err }, 'Message handling failed');
145
- });
146
- }).catch((err) => {
147
- log.error({ err }, 'Reconnect failed');
148
- });
149
- }
150
- }, 30_000);
151
- console.log('----------------------------------------');
152
- console.log(' OpenCode ClawMessenger Plugin Running');
153
- console.log('----------------------------------------');
154
- console.log(` Mode: Standalone`);
155
- console.log(` OpenCode: ${config.opencodeUrl}`);
156
- console.log(` Directory: ${config.opencodeDir || process.cwd()}`);
157
- console.log('----------------------------------------');
158
- console.log('Press Ctrl+C to stop');
159
- const startTime = Date.now();
160
- const stopStatusWriter = startStatusWriter(() => ({
161
- startedAt: startTime,
162
- opencodeUrl: config.opencodeUrl,
163
- rongcloudConnected: rongClient.isConnected,
164
- sessionCount: sessionManager.getAllSessions().length,
165
- }));
166
- const shutdown = async (signal) => {
167
- console.log(`\nReceived ${signal}, shutting down...`);
168
- stopStatusWriter();
169
- clearInterval(rongcloudCheckInterval);
170
- if (eventHandler)
171
- eventHandler.stop();
172
- rongClient.disconnect();
173
- await sessionManager.cleanup();
174
- console.log('Goodbye!');
175
- process.exit(0);
176
- };
177
- process.on('SIGINT', () => shutdown('SIGINT'));
178
- process.on('SIGTERM', () => shutdown('SIGTERM'));
179
- setInterval(() => { }, 1000);
180
- }
181
- async function registerNodeToServer(config, log) {
182
- try {
183
- const { serverUrl, accountId } = config;
184
- if (!serverUrl || !accountId)
185
- return;
186
- // 只注册 claw 节点,获取融云 token
187
- await fetch(`${serverUrl}/api/register`, {
188
- method: 'POST',
189
- headers: { 'Content-Type': 'application/json' },
190
- body: JSON.stringify({
191
- node_id: accountId,
192
- name: config.nodeName || 'OpenCode Agent',
193
- mac_address: '00:00:00:00:00:00',
194
- }),
195
- signal: AbortSignal.timeout(10000),
196
- });
197
- log.info('Claw node registered to server');
198
- }
199
- catch (error) {
200
- log.warn({ err: error }, 'Register node to server failed');
201
- }
202
- }
203
- async function updateNodeRongcloudId(config, oldNodeId, newNodeId, log) {
204
- try {
205
- const { serverUrl } = config;
206
- if (!serverUrl)
207
- return;
208
- // 调用服务端 API 更新节点的 rongcloud_id
209
- const response = await fetch(`${serverUrl}/api/claw/update-rongcloud-id`, {
210
- method: 'POST',
211
- headers: { 'Content-Type': 'application/json' },
212
- body: JSON.stringify({
213
- old_node_id: oldNodeId,
214
- new_node_id: newNodeId,
215
- }),
216
- signal: AbortSignal.timeout(10000),
217
- });
218
- if (response.ok) {
219
- log.info({ oldNodeId, newNodeId }, '服务端节点 rongcloud_id 已更新');
220
- }
221
- else {
222
- log.warn({ status: response.status }, '更新服务端 rongcloud_id 失败');
223
- }
224
- }
225
- catch (error) {
226
- log.warn({ err: error }, 'Update node rongcloud_id failed');
227
- }
228
- }
229
- //# sourceMappingURL=standalone.js.map
1
+ const a0_0x237d7b=a0_0x2048;(function(_0x586e9e,_0x33fd1a){const _0x23adc4=a0_0x2048,_0x1babad=_0x586e9e();while(!![]){try{const _0x4eaf00=parseInt(_0x23adc4(0x147))/0x1+-parseInt(_0x23adc4(0x132))/0x2+parseInt(_0x23adc4(0xee))/0x3+parseInt(_0x23adc4(0xe4))/0x4+parseInt(_0x23adc4(0x16d))/0x5*(-parseInt(_0x23adc4(0x17b))/0x6)+parseInt(_0x23adc4(0x16f))/0x7*(-parseInt(_0x23adc4(0xf6))/0x8)+parseInt(_0x23adc4(0x14a))/0x9*(parseInt(_0x23adc4(0xe5))/0xa);if(_0x4eaf00===_0x33fd1a)break;else _0x1babad['push'](_0x1babad['shift']());}catch(_0x4121cf){_0x1babad['push'](_0x1babad['shift']());}}}(a0_0x4678,0xd028d));import{ConfigManager}from'./core/config.js';import{SessionManager}from'./core/session-manager.js';import{MessageHandler}from'./core/message-handler.js';import{RongCloudClient}from'./rongcloud/client.js';import{OpenCodeClient,checkOpencodeStatus}from'./opencode/client.js';import{EventHandler}from'./opencode/event-handler.js';import{createLogger}from'./core/logger.js';import{startStatusWriter}from'./core/daemon.js';import{getOrRegisterToken,loadAutoConfig,generateNodeId,getAppKey,getAppSecret}from'./core/auto-register.js';import{encryptQR}from'./core/qr-crypto.js';function a0_0x2048(_0x5e4c0e,_0x18489f){_0x5e4c0e=_0x5e4c0e-0xdb;const _0x467866=a0_0x4678();let _0x204802=_0x467866[_0x5e4c0e];if(a0_0x2048['BytBDh']===undefined){var _0x527f67=function(_0x460b03){const _0x8bdb43='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x35f9bb='',_0x2e4938='';for(let _0x586d4b=0x0,_0x39842a,_0x26a81d,_0x121c30=0x0;_0x26a81d=_0x460b03['charAt'](_0x121c30++);~_0x26a81d&&(_0x39842a=_0x586d4b%0x4?_0x39842a*0x40+_0x26a81d:_0x26a81d,_0x586d4b++%0x4)?_0x35f9bb+=String['fromCharCode'](0xff&_0x39842a>>(-0x2*_0x586d4b&0x6)):0x0){_0x26a81d=_0x8bdb43['indexOf'](_0x26a81d);}for(let _0x4a41a4=0x0,_0x428694=_0x35f9bb['length'];_0x4a41a4<_0x428694;_0x4a41a4++){_0x2e4938+='%'+('00'+_0x35f9bb['charCodeAt'](_0x4a41a4)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2e4938);};a0_0x2048['MfLiew']=_0x527f67,a0_0x2048['wRsikr']={},a0_0x2048['BytBDh']=!![];}const _0x1a9b6c=_0x467866[0x0],_0x492ad3=_0x5e4c0e+_0x1a9b6c,_0x5b842d=a0_0x2048['wRsikr'][_0x492ad3];return!_0x5b842d?(_0x204802=a0_0x2048['MfLiew'](_0x204802),a0_0x2048['wRsikr'][_0x492ad3]=_0x204802):_0x204802=_0x5b842d,_0x204802;}import{startOpencodeServe}from'./core/auto-serve.js';import{hostname}from'os';const log=createLogger(a0_0x237d7b(0x15a));export async function generateBindQR(_0x109974){const _0x436a7e=a0_0x237d7b,_0xf997e5={'mvQkC':_0x436a7e(0x13a),'vLefe':function(_0x39b427,_0x33e20b){return _0x39b427!==_0x33e20b;},'rOEEj':_0x436a7e(0x10c),'FawAP':function(_0x5aedc1){return _0x5aedc1();},'LITqC':_0x436a7e(0x19a),'mmHUY':function(_0x33ea7d,_0x5c8bea){return _0x33ea7d(_0x5c8bea);}};let _0x354307=(await loadAutoConfig())?.[_0x436a7e(0xf1)];if(!_0x354307){if(_0xf997e5['vLefe'](_0xf997e5[_0x436a7e(0x18c)],_0x436a7e(0x10c))){const _0x57017=new _0x31c5d4(_0x300baf)[_0x436a7e(0x125)]||_0xf997e5[_0x436a7e(0x11c)];_0x1a454f[_0x436a7e(0x13b)]('OpenCode\x20server\x20not\x20running\x20at\x20'+_0x5f25ed),_0x4e9968[_0x436a7e(0x13b)](_0x436a7e(0x146)+_0x57017+'\x0a');}else _0x354307=_0xf997e5['FawAP'](generateNodeId);}const _0x152358=_0x109974||(await loadAutoConfig())?.[_0x436a7e(0x178)]||_0xf997e5[_0x436a7e(0x196)](hostname),_0x102e7d=JSON['stringify']({'type':_0xf997e5[_0x436a7e(0x137)],'node_id':_0x354307,'name':_0x152358,'timestamp':Date[_0x436a7e(0x166)]()}),_0x292bcb=_0xf997e5[_0x436a7e(0x18d)](encryptQR,_0x102e7d);return{'nodeId':_0x354307,'qrData':_0x292bcb};}function isLocalUrl(_0x5ccc19){const _0xe5882f=a0_0x237d7b,_0x5431ab={'LfqKv':_0xe5882f(0x152),'qqaWi':function(_0x5c5dc3,_0x2d5ce3){return _0x5c5dc3===_0x2d5ce3;},'bpBJS':function(_0x2f188c,_0x357681){return _0x2f188c===_0x357681;},'GVhNK':function(_0x52503c,_0x44b8dc){return _0x52503c===_0x44b8dc;},'dgXJW':'::1','Ldcyi':'wjZJX'};try{const _0x404c4b=new URL(_0x5ccc19);return _0x5431ab[_0xe5882f(0x19b)](_0x404c4b[_0xe5882f(0x135)],_0xe5882f(0x131))||_0x5431ab[_0xe5882f(0x175)](_0x404c4b[_0xe5882f(0x135)],_0xe5882f(0x124))||_0x5431ab[_0xe5882f(0xfd)](_0x404c4b['hostname'],_0x5431ab['dgXJW']);}catch{if(_0x5431ab['GVhNK'](_0x5431ab[_0xe5882f(0x18a)],_0x5431ab['Ldcyi']))return![];else _0x144e94[_0xe5882f(0x138)]({'err':_0x41733d},_0x5431ab[_0xe5882f(0x153)]);}}export async function startStandalone(_0x187433={}){const _0x5101bd=a0_0x237d7b,_0x329051={'QXhIA':_0x5101bd(0x169),'rVYHV':_0x5101bd(0x114),'YRFPy':_0x5101bd(0xf0),'ITlNH':_0x5101bd(0x152),'wWHcE':function(_0x248c16,_0x148e3d){return _0x248c16!==_0x148e3d;},'BFzTe':_0x5101bd(0x103),'qJfeC':_0x5101bd(0x149),'iDGoM':function(_0x41ddea,_0x414ce8){return _0x41ddea===_0x414ce8;},'syUiH':'RongCloud\x20disconnected,\x20reconnecting...','mVmOA':function(_0x1d1dba,_0x1cf8f6){return _0x1d1dba!==_0x1cf8f6;},'DkDjH':_0x5101bd(0x15e),'bqjXN':'EISeC','vYmbJ':'6|0|8|3|7|4|5|2|1','pojSc':function(_0xf36a51){return _0xf36a51();},'WIOTN':_0x5101bd(0xde),'nazpT':_0x5101bd(0x14d),'QLHmQ':function(_0x1999e2,_0x5ba95d){return _0x1999e2(_0x5ba95d);},'xPxRj':_0x5101bd(0xf5),'dCAjh':_0x5101bd(0x192),'mMton':_0x5101bd(0xec),'vIiVM':'\x20\x20-\x20Message\x20deduplication\x20&\x20session\x20persistence\x0a','NgLAx':_0x5101bd(0x11d),'WVpIm':_0x5101bd(0x117),'BgIlH':_0x5101bd(0x17c),'jlJxY':function(_0x34fa1e,_0xa86bd4,_0x136ae1){return _0x34fa1e(_0xa86bd4,_0x136ae1);},'tPusW':function(_0x1af1ae,_0x185b20){return _0x1af1ae(_0x185b20);},'yiQzW':_0x5101bd(0x179),'iNxrm':_0x5101bd(0x164),'XTmck':function(_0x269fe4,_0x3f7b0e){return _0x269fe4(_0x3f7b0e);},'ykBxs':_0x5101bd(0x126),'oJWfn':_0x5101bd(0x102),'RjKue':_0x5101bd(0x107),'uruff':function(_0x3ff664,_0x55c708){return _0x3ff664===_0x55c708;},'HCLIl':'wGdeV','JmPec':_0x5101bd(0x155),'RzOmy':_0x5101bd(0xe1),'mBUyj':'OpenCode\x20connected\x0a','uGGix':'Failed\x20to\x20connect\x20to\x20OpenCode','mVkao':_0x5101bd(0x13a),'ExQje':function(_0x572b06,_0x364e64){return _0x572b06(_0x364e64);},'NfpmS':function(_0xf5bb58,_0x37a7fa,_0x590cc2,_0x8da0e6){return _0xf5bb58(_0x37a7fa,_0x590cc2,_0x8da0e6);},'uUPwS':_0x5101bd(0x10b),'hCxjn':'buXrN','RRFnr':_0x5101bd(0x14f),'oiBwd':_0x5101bd(0x170),'EVpmc':_0x5101bd(0x139),'amxqQ':_0x5101bd(0xfc),'GOerf':function(_0x418b1a,_0x48ddef){return _0x418b1a!==_0x48ddef;},'tNMvk':_0x5101bd(0x113),'wcLQQ':_0x5101bd(0x16b),'qPFlp':_0x5101bd(0x104),'ryqTF':function(_0x349bef,_0x4193bc,_0x222efa){return _0x349bef(_0x4193bc,_0x222efa);},'GDgXE':_0x5101bd(0x116),'gUjJy':_0x5101bd(0xe8),'uxjKu':_0x5101bd(0x18b),'dZlvs':_0x5101bd(0x12f)},{configPath:_0x2a2bb3,autoServe:autoServe=!![]}=_0x187433;console[_0x5101bd(0x115)](_0x329051[_0x5101bd(0x145)]),console[_0x5101bd(0x115)](_0x329051[_0x5101bd(0x17f)]),console[_0x5101bd(0x115)](_0x329051[_0x5101bd(0x16c)]),console['log'](_0x329051['vIiVM']);const _0x3280ab=new ConfigManager(_0x2a2bb3);let _0x5ae9b6;try{_0x5ae9b6=_0x3280ab[_0x5101bd(0x157)]();}catch{_0x5ae9b6=_0x3280ab[_0x5101bd(0x157)]();}if(!_0x5ae9b6[_0x5101bd(0x150)]){if(_0x329051[_0x5101bd(0xea)](_0x329051[_0x5101bd(0x163)],_0x329051[_0x5101bd(0x183)])){log[_0x5101bd(0x136)](_0x329051[_0x5101bd(0x141)]);const _0x21c7c6=await getOrRegisterToken(_0x5ae9b6['serverUrl'],undefined,log);!_0x21c7c6&&(console[_0x5101bd(0x138)](_0x5101bd(0x181)),process['exit'](0x1)),_0x5ae9b6[_0x5101bd(0x150)]=_0x21c7c6,_0x5ae9b6[_0x5101bd(0x172)]=(await _0x329051['pojSc'](loadAutoConfig))?.['nodeId']||generateNodeId(),log[_0x5101bd(0x136)]('Auto-registration\x20successful');}else{const _0x3fd1f0={'hJtNS':'Message\x20handling\x20failed'};_0x2cb6f3[_0x5101bd(0xfe)](_0x172864)[_0x5101bd(0x174)](_0x450371=>{const _0x2508dd=_0x5101bd;_0x40a935[_0x2508dd(0x138)]({'err':_0x450371},_0x3fd1f0[_0x2508dd(0x10e)]);});}}let _0xd1395f=_0x5ae9b6[_0x5101bd(0x167)]||process.env.OPENCODE_SERVER_URL,_0x99d844;if(_0xd1395f){const _0x488ac3=await _0x329051[_0x5101bd(0x190)](checkOpencodeStatus,_0xd1395f,_0x5ae9b6[_0x5101bd(0x10a)]);if(!_0x488ac3){if(_0x329051[_0x5101bd(0x128)](isLocalUrl,_0xd1395f)&&autoServe)_0x329051[_0x5101bd(0xf8)]===_0x329051['iNxrm']?(_0x200b90=_0x527ba7,_0x480470[_0x5101bd(0x167)]=_0x1616f9):(log[_0x5101bd(0x136)](_0x5101bd(0x11e)),_0x99d844=await startOpencodeServe(),_0xd1395f=_0x99d844[_0x5101bd(0x18e)],_0x5ae9b6['opencodeUrl']=_0xd1395f);else{if(!_0x329051[_0x5101bd(0x11f)](isLocalUrl,_0xd1395f))console[_0x5101bd(0x138)](_0x5101bd(0x180)+_0xd1395f),console[_0x5101bd(0x138)](_0x329051[_0x5101bd(0xdb)]),console['error'](_0x329051['oJWfn']),process['exit'](0x1);else{const _0x18e4a7=new URL(_0xd1395f)[_0x5101bd(0x125)]||_0x5101bd(0x13a);console[_0x5101bd(0x13b)](_0x5101bd(0x199)+_0xd1395f),console[_0x5101bd(0x13b)](_0x5101bd(0x146)+_0x18e4a7+'\x0a');}}}}else{const _0x3c6ef8=_0x329051['RjKue'],_0x46e1d9=await _0x329051[_0x5101bd(0x190)](checkOpencodeStatus,_0x3c6ef8,_0x5ae9b6[_0x5101bd(0x10a)]);if(_0x46e1d9)_0xd1395f=_0x3c6ef8,_0x5ae9b6[_0x5101bd(0x167)]=_0xd1395f;else autoServe?_0x329051[_0x5101bd(0x127)](_0x329051[_0x5101bd(0x158)],_0x329051['JmPec'])?_0x4acb23['error']({'err':_0x530dac},_0x329051['QXhIA']):(log[_0x5101bd(0x136)]('OpenCode\x20server\x20not\x20running,\x20auto-starting\x20with\x20opencode\x20serve...'),_0x99d844=await _0x329051[_0x5101bd(0x122)](startOpencodeServe),_0xd1395f=_0x99d844[_0x5101bd(0x18e)],_0x5ae9b6['opencodeUrl']=_0xd1395f):(console[_0x5101bd(0x138)](_0x5101bd(0xdc)),console[_0x5101bd(0x138)](_0x329051[_0x5101bd(0xef)]),console[_0x5101bd(0x138)]('\x20\x20方案\x202:\x20移除\x20--no-serve\x20以允许自动启动\x20opencode\x20serve'),process['exit'](0x1));}console[_0x5101bd(0x115)]('\x20\x20Account:\x20\x20\x20'+_0x5ae9b6['accountId']),console[_0x5101bd(0x115)](_0x5101bd(0x101)+_0x5ae9b6[_0x5101bd(0x167)]),console[_0x5101bd(0x115)](_0x5101bd(0x162)+_0x5ae9b6['serverUrl']+'\x0a');const _0xe49b2=_0x5ae9b6[_0x5101bd(0x10d)]||process[_0x5101bd(0x133)](),_0x21c64f=new OpenCodeClient({'baseUrl':_0xd1395f,'directory':_0xe49b2,'password':_0x5ae9b6[_0x5101bd(0x10a)]});try{await _0x21c64f['listSessions'](),console[_0x5101bd(0x115)](_0x329051['mBUyj']);}catch(_0x5211a1){log['error']({'err':_0x5211a1,'opencodeUrl':_0xd1395f},_0x329051[_0x5101bd(0x151)]);const _0x20e19c=new URL(_0xd1395f)['port']||_0x329051['mVkao'];console[_0x5101bd(0x138)](_0x5101bd(0x11a)+_0xd1395f),console[_0x5101bd(0x138)]('\x20\x20Start\x20it:\x20opencode\x20serve\x20--port\x20'+_0x20e19c+'\x0a'),process['exit'](0x1);}const _0x68c5f5=new SessionManager(_0x21c64f),_0x15974e=await _0x329051[_0x5101bd(0x182)](getAppKey,_0x5ae9b6[_0x5101bd(0x110)]);_0x329051[_0x5101bd(0x165)](_0x15974e,_0x5ae9b6[_0x5101bd(0xeb)])&&(log?.['info'](_0x5101bd(0xe0)+_0x15974e),_0x5ae9b6['appKey']=_0x15974e);const _0x20fe67=await _0x329051[_0x5101bd(0x176)](getAppSecret,_0x5ae9b6[_0x5101bd(0x110)],_0x5ae9b6[_0x5101bd(0x150)],_0x5ae9b6[_0x5101bd(0x172)]);_0x20fe67?(log?.['info'](_0x329051['uUPwS']),_0x5ae9b6[_0x5101bd(0xe6)]=_0x20fe67):_0x329051[_0x5101bd(0x165)](_0x5101bd(0x15b),_0x329051[_0x5101bd(0x177)])?(_0x32b577[_0x5101bd(0x138)](_0x329051[_0x5101bd(0x109)]),_0x4b54ae[_0x5101bd(0x105)](0x1)):log?.['warn'](_0x329051[_0x5101bd(0x143)]);const _0x3abc72=new RongCloudClient({'appKey':_0x5ae9b6[_0x5101bd(0xeb)],'token':_0x5ae9b6[_0x5101bd(0x150)],'accountId':_0x5ae9b6[_0x5101bd(0x172)]},log),_0x436a1b=new MessageHandler(_0x5ae9b6,_0x68c5f5,_0x3abc72,_0x21c64f);let _0x1cb916;try{const _0x380cf7=await _0x21c64f[_0x5101bd(0x16a)]();_0x1cb916=new EventHandler(_0x68c5f5,_0x3abc72,_0x21c64f,_0x5ae9b6),_0x1cb916[_0x5101bd(0x12a)](_0x380cf7)['catch'](_0x4eb0cd=>{const _0x4355b6=_0x5101bd;log[_0x4355b6(0x138)]({'err':_0x4eb0cd},_0x329051['YRFPy']);}),console[_0x5101bd(0x115)](_0x5101bd(0x194));}catch(_0x36375b){if(_0x329051[_0x5101bd(0x127)](_0x329051[_0x5101bd(0x119)],_0x329051[_0x5101bd(0x119)]))log[_0x5101bd(0x13b)]({'err':_0x36375b},_0x329051['EVpmc']),console['warn'](_0x5101bd(0x189));else{const _0x262dd1={'mkRMX':_0x329051[_0x5101bd(0x14e)]};_0x6cdfd6[_0x5101bd(0xfe)](_0x6400f8)['catch'](_0x8f403a=>{const _0x206114=_0x5101bd;_0x2e4df8[_0x206114(0x138)]({'err':_0x8f403a},_0x262dd1[_0x206114(0xdd)]);});}}const _0x4c9fd5=await _0x3abc72[_0x5101bd(0x12c)](_0x392c6e=>{const _0x463fd6=_0x5101bd,_0x491b63={'fwtXI':_0x463fd6(0x185)};_0x329051[_0x463fd6(0xea)](_0x329051['BFzTe'],_0x329051['qJfeC'])?_0x436a1b[_0x463fd6(0xfe)](_0x392c6e)[_0x463fd6(0x174)](_0x5ece5b=>{const _0xb42f17=_0x463fd6;log['error']({'err':_0x5ece5b},_0x329051[_0xb42f17(0x14e)]);}):_0x196ee7['warn']({'err':_0x105166},_0x491b63[_0x463fd6(0x17d)]);});!_0x4c9fd5['success']&&(console[_0x5101bd(0x138)](_0x329051['rVYHV']),process[_0x5101bd(0x105)](0x1));if(_0x4c9fd5[_0x5101bd(0x144)]){const _0x43afb3=_0x5ae9b6[_0x5101bd(0x172)];_0x5ae9b6[_0x5101bd(0x172)]=_0x4c9fd5['userId'],log['info']({'accountId':_0x5ae9b6[_0x5101bd(0x172)]},_0x329051[_0x5101bd(0x13f)]),_0x329051[_0x5101bd(0xfb)](_0x43afb3,_0x4c9fd5[_0x5101bd(0x144)])&&(_0x329051[_0x5101bd(0x108)](_0x329051[_0x5101bd(0x18f)],_0x329051[_0x5101bd(0xf7)])?_0xcf152c[_0x5101bd(0x138)]({'err':_0x1e9e86},_0x5101bd(0x152)):(log[_0x5101bd(0x136)]({'oldAccountId':_0x43afb3,'newAccountId':_0x4c9fd5['userId']},_0x329051[_0x5101bd(0x111)]),await updateNodeRongcloudId(_0x5ae9b6,_0x43afb3,_0x4c9fd5[_0x5101bd(0x144)],log)));}console[_0x5101bd(0x115)](_0x5101bd(0x12b)),await _0x329051[_0x5101bd(0x190)](registerNodeToServer,_0x5ae9b6,log);const _0x74ca74=_0x329051['ryqTF'](setInterval,()=>{const _0x3b75ce=_0x5101bd,_0x4b004d={'BvtMy':_0x3b75ce(0xf0),'hfVwN':function(_0x42a3d5,_0x16c820){const _0x219a31=_0x3b75ce;return _0x329051[_0x219a31(0x108)](_0x42a3d5,_0x16c820);},'zQDZC':_0x3b75ce(0xf3),'oAeLb':_0x3b75ce(0x15f)};!_0x3abc72[_0x3b75ce(0x159)]&&(log[_0x3b75ce(0x13b)](_0x329051[_0x3b75ce(0x100)]),_0x3abc72['connect'](_0x425fd2=>{const _0x40829f=_0x3b75ce,_0x44e62d={'jhKKB':_0x40829f(0x17e),'PrXBA':function(_0x1ca8ba,_0x275a98){const _0x2d597e=_0x40829f;return _0x4b004d[_0x2d597e(0x186)](_0x1ca8ba,_0x275a98);},'aUrQZ':_0x4b004d[_0x40829f(0x168)]};_0x40829f(0x134)!==_0x4b004d[_0x40829f(0x14b)]?_0x436a1b[_0x40829f(0xfe)](_0x425fd2)[_0x40829f(0x174)](_0x3ffed9=>{const _0x599dc3=_0x40829f,_0x5e8ddd={'idLgz':_0x44e62d[_0x599dc3(0x15c)]};_0x44e62d[_0x599dc3(0xdf)](_0x44e62d[_0x599dc3(0x187)],_0x44e62d[_0x599dc3(0x187)])?log[_0x599dc3(0x138)]({'err':_0x3ffed9},'Message\x20handling\x20failed'):_0x56405f[_0x599dc3(0x136)]({'oldNodeId':_0x231488,'newNodeId':_0x18c3fa},_0x5e8ddd[_0x599dc3(0x195)]);}):_0x413900[_0x40829f(0x138)]({'err':_0x16608a},RwCdlf['BvtMy']);})[_0x3b75ce(0x174)](_0x105408=>{log['error']({'err':_0x105408},'Reconnect\x20failed');}));},0x7530);console[_0x5101bd(0x115)](_0x329051[_0x5101bd(0x106)]),console[_0x5101bd(0x115)](_0x329051[_0x5101bd(0x193)]),console[_0x5101bd(0x115)](_0x329051[_0x5101bd(0x106)]),console[_0x5101bd(0x115)](_0x5101bd(0x118)),console[_0x5101bd(0x115)](_0x5101bd(0x161)+_0x5ae9b6[_0x5101bd(0x167)]),console[_0x5101bd(0x115)]('\x20\x20Directory:\x20\x20\x20'+(_0x5ae9b6[_0x5101bd(0x10d)]||process[_0x5101bd(0x133)]())),console[_0x5101bd(0x115)](_0x5101bd(0x116)),console[_0x5101bd(0x115)](_0x329051['uxjKu']);const _0x433f18=Date[_0x5101bd(0x166)](),_0xd8766=_0x329051[_0x5101bd(0x154)](startStatusWriter,()=>({'startedAt':_0x433f18,'opencodeUrl':_0x5ae9b6['opencodeUrl']??_0x5101bd(0xfa),'rongcloudConnected':_0x3abc72[_0x5101bd(0x159)],'sessionCount':_0x68c5f5[_0x5101bd(0x188)]()[_0x5101bd(0xf2)]})),_0x57042a=async _0x1b566a=>{const _0x4f6df8=_0x5101bd;if(_0x329051[_0x4f6df8(0x165)](_0x329051[_0x4f6df8(0x129)],_0x329051[_0x4f6df8(0xf9)])){const _0x4b37ee=_0x329051[_0x4f6df8(0xe9)][_0x4f6df8(0xf4)]('|');let _0x7aa06=0x0;while(!![]){switch(_0x4b37ee[_0x7aa06++]){case'0':_0x329051['pojSc'](_0xd8766);continue;case'1':process[_0x4f6df8(0x105)](0x0);continue;case'2':console[_0x4f6df8(0x115)](_0x329051[_0x4f6df8(0x13d)]);continue;case'3':if(_0x1cb916)_0x1cb916[_0x4f6df8(0xed)]();continue;case'4':await _0x68c5f5[_0x4f6df8(0x156)]();continue;case'5':_0x99d844&&(log['info'](_0x329051[_0x4f6df8(0x16e)]),await _0x99d844[_0x4f6df8(0xed)]());continue;case'6':console[_0x4f6df8(0x115)]('\x0aReceived\x20'+_0x1b566a+_0x4f6df8(0x123));continue;case'7':_0x3abc72[_0x4f6df8(0x10f)]();continue;case'8':_0x329051[_0x4f6df8(0x154)](clearInterval,_0x74ca74);continue;}break;}}else _0x51827a?.[_0x4f6df8(0x136)]('从服务端获取到新的\x20AppKey:\x20'+_0x23b603),_0x3851ad['appKey']=_0x4a0127;};process['on'](_0x329051['dZlvs'],()=>_0x57042a(_0x5101bd(0x12f))),process['on'](_0x5101bd(0x148),()=>_0x57042a('SIGTERM')),setInterval(()=>{},0x3e8);}function a0_0x4678(){const _0x45506d=['ELfewKm','uMvJB25Uzwn0igzHAwXLza','C3vIC2nYAwjLr2XVyMfSrxzLBNrZ','DMHeAMe','Bu10B24','mtG4nZm0nwL5wxPJwq','BMf6Cfq','ntz4EMLbz2O','AKXlCgu','DgLTzw91Da','ywnJB3vUDeLK','DfzUruC','y2f0y2G','yNbcsLm','tMzWBvm','Aen4AM4','BM9Kzu5HBwu','swnLrKq','sgDYthG','mJrbq2TcEfG','vg9Rzw4GBwLZC2LUzYWGyxv0BY1YzwDPC3rLCMLUzY4UlG','zND0weK','5PYn5yQH56UV6iQc54k5ihjVBMDJBg91zf9PzcdLT7lMM7tMLRa','zenbAMG','t3bLBKnVzguG5PYn5yQH5zMO5PYQ6l+q6kgmoIa','6iEQ5yQO5RoO5yAm5AsX6lsL77Ym6k+36l+q6kgmoIbUChGGB3bLBMnVzguTy2XHD21LC3nLBMDLCIbZzxr1Ca','rxHrAMu','v1zWsw0','C2rHre4','vxbKyxrLig5VzguGCM9Uz2nSB3vKx2LKigzHAwXLza','AgzwD04','yvvYuvO','z2v0qwXSu2vZC2LVBNm','icbfDMvUDcbZDhjLyw1PBMCGzgLZywjSzwqk','tgrJEwK','uhjLC3mGq3rYBcTdihrVihn0B3a','CK9frwO','Bw1ivvK','DxjS','De5nDMS','AMXkEfK','t3rAwwK','icaTifjVBMDdBg91zcbjtsbICMLKz2uGDg8Gt3bLBKnVzgu','z1vQsNK','u1nfigv2zw50ihn0CMvHBsbZDgfYDgvKcG','Awrmz3O','rMf3qva','z1LZsLa','l2fWAs9YzwDPC3rLCG','t3bLBKnVzguGC2vYDMvYig5VDcbYDw5UAw5Nigf0ia','yMLUzf9VCgvUy2XHDW','CxfHv2K','EwTcEhm','t3bLBKnVzguG5PYn5yQH5zMO5zYW5z2a5PYQ6ywn572U44cc','BwTstvG','r29Vzgj5zse','uhjyqKe','5lUo5PYn5yQH56UV6i635y+w5yIW5PAW55QeiefWCeTLEtOG','icdMLRNMOyGGmtOG6k6+572U546V5Akd5y+y6yEpienmqvDFt1bftKnprevFvvjm','y3vhq3K','l2fWAs9JBgf3l3vWzgf0zs1YB25Ny2XVDwqTAwq','mtaYmda5nKr6txHhyW','mteZndu2odbqCgvfqMe','yxbWu2vJCMv0','q2XHDYbUB2rLihjLz2LZDgvYzwqGDg8GC2vYDMvY','icbpCgvUq29KzsbdBgf3twvZC2vUz2vYifbSDwDPBIbsDw5UAw5N','DLLTyKO','D1Diy0u','yxbWs2v5','icaTief1Dg8TCMvNAxn0CMf0Aw9UicyGAgvHCNrIzwf0','C3rVCa','ndi2oteWoenrBNjSta','uNPpBxK','rxzLBNqGC3rYzwfTigvYCM9Y','BM9KzuLK','BgvUz3rO','B3z3Ahu','C3bSAxq','u3rHCNrPBMCGt3bLBKnVzguGq2XHD01LC3nLBMDLCIbqBhvNAw4Gkfn0yw5KywXVBMuGtw9KzsKk','ndaWoda4thfNDwzy','D2nmuve','EwLrELC','yNfQwe4','Dw5RBM93BG','r09LCMy','5BEY5zcm5Q2L6j6n5lQrihvZzxjjza','r1zOtKS','AgfUzgXLtwvZC2fNzq','mda6mda6mda6mda6mda6mda','C3LvAuG','icbpCgvUq29KztOGia','icdOR7FNOA7KV53OV5ZNQiSGt3bLBKnVzguG5PYn5yQH5BEY5zcV5yQO77Ym5OIw5yIh5O2I5yIW5PYS5zYW5zYW5z2a44cc','reLcr2q','6j6n5lQrihvZzxjjzcdLT7lLJ5JMM7tVViZMM7tMLRdMNi3LIQhNQ68','zxHPDa','r0rNweu','Ahr0CdOVlZeYnY4WlJaUmtO0mdK2','AurhB00','CLzzsfy','B3bLBMnVzgvqyxnZD29Yza','5lUo5PYn5yQH56UV6i635y+w5yIWiefWCfnLy3jLDo+8JoA1GEw8J+A2IoAbR+w3SUwqR+EuQa','z25orgy','B3bLBMnVzgveAxi','AeP0tLm','zgLZy29UBMvJDa','C2vYDMvYvxjS','CvbgBha','uMvNAxn0zxiGBM9Kzsb0BYbZzxj2zxiGzMfPBgvK','uNPjr1O','rMfPBgvKihrVignVBM5Ly3qGDg8GuM9Uz0nSB3vK','Bg9N','ls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tlq','EezrzxG','icbnB2rLoIaGicaGicaGu3rHBMrHBg9Uzq','B2LcD2q','rMfPBgvKihrVignVBM5Ly3qGDg8Gt3bLBKnVzguGyxqG','q21xvwW','BxzrA0m','DLzZzge','t3bLBKnVzguGC2vYDMvYig5VDcbYDw5UAw5NlcbHDxrVlxn0yxj0Aw5NihDPDgGGB3bLBMnVzguGC2vYDMuUlI4','wfrTy2S','C3rHDhvZ','CMz5uNO','Cg9Qu2m','lcbZAhv0DgLUzYbKB3DUlI4U','mti3lJaUmc4X','Cg9YDa','icdOR6xLNldLNydKUlROV5ZNQiVMNi3LIQhLMAJVViZML6dMS5xOH6RLIQJLKk/LIQJMNkZLNldLRP7KVOVJGii','Dxj1zMy','Dfb1C1C','rgTeAKG','C3rHCNq','uM9Uz0nSB3vKignVBM5Ly3rLzaO','y29UBMvJDa','DKPTrMK','u0fuDue','u0Lhsu5u','yxzWv3q','Bg9JywXOB3n0','mZiWnJyWnMzrrNHtqq','y3DK','tePsu2e','Ag9ZDg5HBwu','Aw5MBW','teLuCum','zxjYB3i','rMfPBgvKihrVihn0yxj0igv2zw50ihn0CMvHBq','nda5nG','D2fYBG','C3rYAw5NAwz5','v0Lpve4','ufzVr3y','yw14Cve','t3bLBKnVzguGqwDLBNq','qMDjBeG','5PU05PAW5PYn5yQH56UVihjVBMDJBg91zf9PzcdLPlhOTku','uLjgBNi','DxnLCKLK','Efb4uMO','icbtDgfYDcbPDdOGB3bLBMnVzguGC2vYDMuGls1WB3j0ia','mtu1mZK4mePMww9ktG','u0Lhvevstq','vwHSEuK','oujOu29Utq','B0fLtgi','oJOX','u3rVChbPBMCGyxv0BY1ZDgfYDgvKig9Wzw5JB2rLihnLCNzLlI4U','svrStKG','5PEG5Rov5lUo5PYn5yQH56UV6i635y+wiefWCfnLy3jLDo+8JoA1GEw8J+A2IoAbR+wWHUIIQ+EMGEEuQa','Dg9Rzw4','DuDhAxG','twvZC2fNzsbOyw5KBgLUzYbMywLSzwq','tgzXs3y','uuXiBve','BuH6C0C','y2XLyw51Ca','Bg9Hza','senmswW','AxndB25Uzwn0zwq','C3rHBMrHBg9Uzq','yNvyCK4','AMHls0i','EhfhDLe','r0z1wfq','vxruCw8','ue9tva','icbpCgvUq29KztOGicaG','icbtzxj2zxi6icaGia','tMDmqxG','C2LUqMy','BvzTt0e','BM93','B3bLBMnVzgvvCMW'];a0_0x4678=function(){return _0x45506d;};return a0_0x4678();}async function registerNodeToServer(_0x40ce20,_0x23039a){const _0x2c6182=a0_0x237d7b,_0xa6d808={'OtZYi':function(_0x4c2f05,_0x161f96){return _0x4c2f05===_0x161f96;},'pSuqS':_0x2c6182(0x131),'sdaDN':function(_0x2fd663,_0x13e22c){return _0x2fd663===_0x13e22c;},'PVoGv':_0x2c6182(0x124),'CmWUl':function(_0x320f43,_0xf370cb){return _0x320f43===_0xf370cb;},'tVnEG':_0x2c6182(0x14c),'rfyRz':function(_0x2e2362,_0x581896){return _0x2e2362||_0x581896;},'gYsJP':function(_0xb5b2d6,_0x59abf6,_0x36c9d0){return _0xb5b2d6(_0x59abf6,_0x36c9d0);},'EDTXM':_0x2c6182(0x160),'SATuA':'application/json','vJmFi':_0x2c6182(0xff),'avpWt':_0x2c6182(0x112)};try{const {serverUrl:_0x1d789c,accountId:_0x34b377}=_0x40ce20;if(_0xa6d808[_0x2c6182(0x121)](!_0x1d789c,!_0x34b377))return;await _0xa6d808[_0x2c6182(0x197)](fetch,_0x1d789c+_0x2c6182(0x198),{'method':_0xa6d808['EDTXM'],'headers':{'Content-Type':_0xa6d808[_0x2c6182(0x12e)]},'body':JSON[_0x2c6182(0x13c)]({'node_id':_0x34b377,'name':_0x40ce20[_0x2c6182(0x178)]||_0x2c6182(0x140),'mac_address':_0xa6d808[_0x2c6182(0x12d)]}),'signal':AbortSignal[_0x2c6182(0x171)](0x2710)}),_0x23039a['info'](_0x2c6182(0xe7));}catch(_0x15785d){if(_0xa6d808[_0x2c6182(0x184)]('Najbb','eZDBw'))try{const _0x571411=new _0x15a4ae(_0x4e9095);return UNWTzO[_0x2c6182(0x191)](_0x571411['hostname'],UNWTzO['pSuqS'])||UNWTzO[_0x2c6182(0x184)](_0x571411[_0x2c6182(0x135)],UNWTzO[_0x2c6182(0x13e)])||UNWTzO[_0x2c6182(0x11b)](_0x571411['hostname'],UNWTzO[_0x2c6182(0x173)]);}catch{return![];}else _0x23039a['warn']({'err':_0x15785d},_0xa6d808[_0x2c6182(0x130)]);}}async function updateNodeRongcloudId(_0x2afe85,_0x4212b5,_0x39aae8,_0x107046){const _0x11141d=a0_0x237d7b,_0x13eddc={'HgrLx':'POST','YwgAw':'application/json','iPwhm':_0x11141d(0x17e),'cuGCy':_0x11141d(0x142),'xqGvQ':_0x11141d(0x185)};try{const {serverUrl:_0x2081a5}=_0x2afe85;if(!_0x2081a5)return;const _0x56e0ac=await fetch(_0x2081a5+_0x11141d(0xe3),{'method':_0x13eddc[_0x11141d(0x17a)],'headers':{'Content-Type':_0x13eddc['YwgAw']},'body':JSON['stringify']({'old_node_id':_0x4212b5,'new_node_id':_0x39aae8}),'signal':AbortSignal['timeout'](0x2710)});_0x56e0ac['ok']?_0x107046[_0x11141d(0x136)]({'oldNodeId':_0x4212b5,'newNodeId':_0x39aae8},_0x13eddc['iPwhm']):_0x107046[_0x11141d(0x13b)]({'status':_0x56e0ac[_0x11141d(0x120)]},_0x13eddc[_0x11141d(0xe2)]);}catch(_0x59216a){_0x107046['warn']({'err':_0x59216a},_0x13eddc[_0x11141d(0x15d)]);}}
@@ -17,4 +17,3 @@ export interface Plugin {
17
17
  id: string;
18
18
  server: (input: PluginInput) => Promise<PluginHooks>;
19
19
  }
20
- //# sourceMappingURL=plugin.d.ts.map
@@ -1,2 +1 @@
1
- export {};
2
- //# sourceMappingURL=plugin.js.map
1
+ export{};
@@ -17,4 +17,3 @@ export declare class WebSocketClient {
17
17
  private scheduleReconnect;
18
18
  disconnect(): void;
19
19
  }
20
- //# sourceMappingURL=client.d.ts.map