@quukk/opencode-clawmessenger 0.3.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 +0 -1
  23. package/dist/core/message-handler.js +1 -988
  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
package/dist/cli.d.ts CHANGED
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.js CHANGED
@@ -1,288 +1 @@
1
- import { Command } from 'commander';
2
- import { readFileSync, existsSync, openSync, readSync, closeSync, mkdirSync } from 'fs';
3
- import { join, dirname } from 'path';
4
- import { homedir } from 'os';
5
- import { fileURLToPath } from 'url';
6
- import { startStandalone } from './standalone.js';
7
- import { createLogger } from './core/logger.js';
8
- import { PID_FILE, spawnDaemon, writePid, readPid, isProcessAlive, readStatus, statusFileAgeMs, HEARTBEAT_STALE_AFTER_MS, cleanupPid } from './core/daemon.js';
9
- // Windows UTF-8 encoding fix - must be at the very top
10
- if (process.platform === 'win32') {
11
- try {
12
- const { execSync } = require('child_process');
13
- execSync('chcp 65001', { stdio: 'ignore' });
14
- // @ts-ignore
15
- process.env.FORCE_UTF8 = '1';
16
- }
17
- catch { }
18
- }
19
- const log = createLogger('cli');
20
- function getVersion() {
21
- try {
22
- const pkgPath = join(dirname(fileURLToPath(import.meta.url)), '..', 'package.json');
23
- return JSON.parse(readFileSync(pkgPath, 'utf-8')).version;
24
- }
25
- catch {
26
- return 'unknown';
27
- }
28
- }
29
- const program = new Command();
30
- program
31
- .name('opencode-clawmessenger')
32
- .description('OpenCode ClawMessenger Integration Plugin')
33
- .version(getVersion());
34
- program
35
- .command('start')
36
- .description('Start the ClawMessenger plugin. Use --daemon to run as background service.')
37
- .option('-c, --config <path>', 'Configuration file path')
38
- .option('-u, --url <url>', 'OpenCode server URL')
39
- .option('-d, --daemon', 'Run as a background daemon')
40
- .option('-s, --serve', 'Auto-start opencode serve if not running')
41
- .action(async (options) => {
42
- try {
43
- const isDaemonChild = process.env.CLAW_DAEMONIZED === '1';
44
- if (!isDaemonChild && existsSync(PID_FILE)) {
45
- const pid = parseInt(readFileSync(PID_FILE, 'utf-8').trim());
46
- try {
47
- process.kill(pid, 0);
48
- console.error(`Plugin already running (PID ${pid}). Use "opencode-clawmessenger stop" first.`);
49
- process.exit(1);
50
- }
51
- catch {
52
- cleanupPid();
53
- }
54
- }
55
- if (options.daemon && !isDaemonChild) {
56
- spawnDaemon(process.argv.slice(2));
57
- process.exit(0);
58
- }
59
- const pidDir = join(homedir(), '.config', 'opencode');
60
- if (!existsSync(pidDir))
61
- mkdirSync(pidDir, { recursive: true });
62
- writePid(process.pid);
63
- await startStandalone({ configPath: options.config, autoServe: options.serve });
64
- }
65
- catch (err) {
66
- log.error({ err }, 'Failed to start');
67
- process.exit(1);
68
- }
69
- });
70
- program
71
- .command('status')
72
- .description('Check plugin status')
73
- .option('--json', 'Emit JSON output')
74
- .action((options) => {
75
- const pid = readPid();
76
- const alive = pid != null && isProcessAlive(pid);
77
- const snap = readStatus();
78
- const age = statusFileAgeMs();
79
- const stale = age != null && age > HEARTBEAT_STALE_AFTER_MS;
80
- const state = !pid ? 'stopped' :
81
- !alive ? 'zombie' :
82
- stale ? 'stale' :
83
- 'running';
84
- if (options.json) {
85
- process.stdout.write(JSON.stringify({ state, pid, snap, heartbeatAgeMs: age }, null, 2) + '\n');
86
- process.exit(state === 'running' ? 0 : 1);
87
- }
88
- switch (state) {
89
- case 'stopped':
90
- console.log('Plugin is not running');
91
- console.log(' Start it: opencode-clawmessenger start [--daemon]');
92
- break;
93
- case 'zombie':
94
- console.log(`PID file points to ${pid}, but process is not running`);
95
- console.log(' Clean up: opencode-clawmessenger stop');
96
- break;
97
- case 'stale':
98
- console.log(`Plugin PID ${pid} alive but heartbeat stale (${Math.round((age || 0) / 1000)}s old)`);
99
- break;
100
- case 'running':
101
- console.log('Plugin running');
102
- console.log(` PID: ${pid}`);
103
- if (snap) {
104
- const uptimeSec = Math.floor((Date.now() - snap.startedAt) / 1000);
105
- console.log(` Uptime: ${formatUptime(uptimeSec)}`);
106
- console.log(` OpenCode: ${snap.opencodeUrl}`);
107
- console.log(` RongCloud: ${snap.rongcloudConnected ? 'connected' : 'disconnected'}`);
108
- console.log(` Sessions: ${snap.sessionCount}`);
109
- }
110
- break;
111
- }
112
- process.exit(state === 'running' ? 0 : 1);
113
- });
114
- program
115
- .command('stop')
116
- .description('Stop the ClawMessenger plugin')
117
- .action(() => {
118
- if (!existsSync(PID_FILE)) {
119
- console.log('Plugin is not running');
120
- return;
121
- }
122
- try {
123
- const pid = parseInt(readFileSync(PID_FILE, 'utf-8').trim());
124
- process.kill(pid, 'SIGTERM');
125
- console.log(`Stopped plugin (PID: ${pid})`);
126
- }
127
- catch (err) {
128
- if (err.code === 'ESRCH') {
129
- console.log('Process not found, cleaning up PID file');
130
- }
131
- else {
132
- console.error('Failed to stop plugin:', err.message);
133
- }
134
- }
135
- finally {
136
- cleanupPid();
137
- }
138
- });
139
- program
140
- .command('logs')
141
- .description('Show recent plugin logs')
142
- .option('-n, --lines <n>', 'Lines to show from tail', '50')
143
- .option('-f, --follow', 'Follow the log')
144
- .action(async (options) => {
145
- const logPath = process.env.CLAW_LOG_FILE || join(homedir(), '.config', 'opencode', 'clawmessenger.log');
146
- if (!existsSync(logPath)) {
147
- process.stderr.write(`Log file not found: ${logPath}\n`);
148
- process.exit(1);
149
- }
150
- const n = parseInt(options.lines, 10) || 50;
151
- const data = readFileSync(logPath, 'utf-8');
152
- const lines = data.split('\n').filter(l => l.length > 0);
153
- const tail = lines.slice(-n);
154
- for (const line of tail) {
155
- process.stdout.write(line + '\n');
156
- }
157
- if (options.follow) {
158
- const { watchFile, unwatchFile, statSync } = await import('fs');
159
- let prevSize = statSync(logPath).size;
160
- watchFile(logPath, { interval: 500 }, (curr) => {
161
- if (curr.size > prevSize) {
162
- const fd = openSync(logPath, 'r');
163
- const buf = Buffer.alloc(curr.size - prevSize);
164
- readSync(fd, buf, 0, buf.length, prevSize);
165
- closeSync(fd);
166
- const newLines = buf.toString('utf-8').split('\n').filter(l => l.length > 0);
167
- for (const l of newLines)
168
- process.stdout.write(l + '\n');
169
- prevSize = curr.size;
170
- }
171
- else if (curr.size < prevSize) {
172
- prevSize = curr.size;
173
- }
174
- });
175
- process.on('SIGINT', () => { unwatchFile(logPath); process.exit(0); });
176
- await new Promise(() => { });
177
- }
178
- });
179
- program
180
- .command('setup')
181
- .description('Configure the ClawMessenger plugin (auto-register + QR binding)')
182
- .action(async () => {
183
- const { getOrRegisterToken, loadAutoConfig, registerNode } = await import('./core/auto-register.js');
184
- const { getServerUrl } = await import('./core/auto-register.js');
185
- const { ConfigManager } = await import('./core/config.js');
186
- const { generateBindQR } = await import('./standalone.js');
187
- const rl = (await import('readline')).createInterface({
188
- input: process.stdin,
189
- output: process.stdout,
190
- });
191
- const question = (prompt) => new Promise(resolve => rl.question(prompt, resolve));
192
- console.log('opencode-clawmessenger Setup Wizard\n');
193
- let configManager = new ConfigManager();
194
- let hasExisting = false;
195
- try {
196
- hasExisting = configManager.exists();
197
- if (hasExisting) {
198
- const cfg = configManager.load();
199
- if (cfg.token) {
200
- console.log('Existing config found:');
201
- console.log(` Node ID: ${cfg.accountId || 'unknown'}`);
202
- console.log(` Server: ${cfg.serverUrl}`);
203
- console.log(` OpenCode: ${cfg.opencodeUrl}\n`);
204
- const reset = await question('Re-register? (y/N): ');
205
- if (reset.toLowerCase() !== 'y') {
206
- console.log('\n========================================');
207
- console.log(' Current Binding QR Code');
208
- console.log('========================================\n');
209
- const { nodeId, qrData } = await generateBindQR();
210
- try {
211
- const QRCode = await import('qrcode');
212
- // 生成终端 ASCII 二维码
213
- const qrString = await QRCode.toString(qrData, { type: 'terminal', small: false });
214
- console.log('\n' + qrString + '\n');
215
- }
216
- catch {
217
- console.log('QR Data:', qrData);
218
- }
219
- console.log(`Node ID: ${nodeId}`);
220
- console.log('Tip: Open App -> AI Assistant -> Scan QR to Add');
221
- rl.close();
222
- return;
223
- }
224
- }
225
- }
226
- }
227
- catch { }
228
- const defaultName = (await import('os')).hostname();
229
- const nameInput = await question(`Node name [${defaultName}]: `);
230
- const nodeName = nameInput.trim() || defaultName;
231
- console.log(`\nRegistering node: ${nodeName}...`);
232
- const serverUrl = getServerUrl();
233
- const result = await registerNode(serverUrl, nodeName);
234
- if (!result.success) {
235
- console.error('Registration failed. Check network connectivity.');
236
- rl.close();
237
- process.exit(1);
238
- }
239
- console.log(`Registration successful!`);
240
- console.log(` Node ID: ${result.nodeId}`);
241
- configManager = new ConfigManager();
242
- configManager.save({
243
- token: result.token,
244
- accountId: result.nodeId,
245
- nodeName,
246
- });
247
- console.log('\n========================================');
248
- console.log(' Scan QR Code with ClawMessenger App');
249
- console.log('========================================\n');
250
- const { nodeId, qrData } = await generateBindQR(nodeName);
251
- // 方法1: 生成终端 ASCII 二维码(最兼容)
252
- try {
253
- const QRCode = await import('qrcode');
254
- const qrString = await QRCode.toString(qrData, { type: 'terminal', small: false });
255
- console.log('\n' + qrString + '\n');
256
- }
257
- catch (err) {
258
- console.log('QR Code generation failed:', err);
259
- }
260
- console.log('\n----------------------------------------');
261
- console.log('Alternative binding methods:');
262
- console.log('----------------------------------------');
263
- console.log(`Node ID: ${nodeId}`);
264
- console.log(`Encrypted: ${qrData.substring(0, 50)}...`);
265
- console.log('\nIf QR scan fails, use manual input in app');
266
- console.log('Tip: Open App -> OpenClaw -> Manual Add');
267
- console.log('\nStart the plugin: opencode-clawmessenger start');
268
- rl.close();
269
- });
270
- function formatUptime(s) {
271
- const d = Math.floor(s / 86400);
272
- const h = Math.floor((s % 86400) / 3600);
273
- const m = Math.floor((s % 3600) / 60);
274
- const parts = [];
275
- if (d)
276
- parts.push(`${d}d`);
277
- if (h)
278
- parts.push(`${h}h`);
279
- if (m)
280
- parts.push(`${m}m`);
281
- parts.push(`${s % 60}s`);
282
- return parts.join(' ');
283
- }
284
- program.parse();
285
- if (!process.argv.slice(2).length) {
286
- program.outputHelp();
287
- }
288
- //# sourceMappingURL=cli.js.map
1
+ function a0_0x3607(_0x475c65,_0x117bcb){_0x475c65=_0x475c65-0x198;const _0x42cdd6=a0_0x42cd();let _0x360748=_0x42cdd6[_0x475c65];if(a0_0x3607['gOTyzX']===undefined){var _0xab8a88=function(_0x4e67cd){const _0x5b2dd3='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0xb8c47d='',_0x36bcb3='';for(let _0x35d07e=0x0,_0x4fa0bf,_0x498595,_0x1a89df=0x0;_0x498595=_0x4e67cd['charAt'](_0x1a89df++);~_0x498595&&(_0x4fa0bf=_0x35d07e%0x4?_0x4fa0bf*0x40+_0x498595:_0x498595,_0x35d07e++%0x4)?_0xb8c47d+=String['fromCharCode'](0xff&_0x4fa0bf>>(-0x2*_0x35d07e&0x6)):0x0){_0x498595=_0x5b2dd3['indexOf'](_0x498595);}for(let _0x17b322=0x0,_0x59edcd=_0xb8c47d['length'];_0x17b322<_0x59edcd;_0x17b322++){_0x36bcb3+='%'+('00'+_0xb8c47d['charCodeAt'](_0x17b322)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x36bcb3);};a0_0x3607['KlQmvF']=_0xab8a88,a0_0x3607['oUbMQU']={},a0_0x3607['gOTyzX']=!![];}const _0x24618b=_0x42cdd6[0x0],_0x35411f=_0x475c65+_0x24618b,_0x3caabc=a0_0x3607['oUbMQU'][_0x35411f];return!_0x3caabc?(_0x360748=a0_0x3607['KlQmvF'](_0x360748),a0_0x3607['oUbMQU'][_0x35411f]=_0x360748):_0x360748=_0x3caabc,_0x360748;}const a0_0x4e9470=a0_0x3607;(function(_0x4f8bf3,_0x1d45c9){const _0x7db77a=a0_0x3607,_0x5cf8c4=_0x4f8bf3();while(!![]){try{const _0x2184cd=-parseInt(_0x7db77a(0x212))/0x1+parseInt(_0x7db77a(0x1ce))/0x2+-parseInt(_0x7db77a(0x1fa))/0x3*(-parseInt(_0x7db77a(0x207))/0x4)+parseInt(_0x7db77a(0x1b6))/0x5*(-parseInt(_0x7db77a(0x1d0))/0x6)+-parseInt(_0x7db77a(0x1c3))/0x7+-parseInt(_0x7db77a(0x25a))/0x8+parseInt(_0x7db77a(0x199))/0x9;if(_0x2184cd===_0x1d45c9)break;else _0x5cf8c4['push'](_0x5cf8c4['shift']());}catch(_0x2c698b){_0x5cf8c4['push'](_0x5cf8c4['shift']());}}}(a0_0x42cd,0x29b4c));import{Command}from'commander';import{readFileSync,existsSync,openSync,readSync,closeSync,mkdirSync}from'fs';import{join,dirname}from'path';import{homedir}from'os';import{fileURLToPath}from'url';import{startStandalone}from'./standalone.js';import{createLogger}from'./core/logger.js';import{PID_FILE,spawnDaemon,writePid,readPid,isProcessAlive,readStatus,statusFileAgeMs,HEARTBEAT_STALE_AFTER_MS,cleanupPid}from'./core/daemon.js';if(process['platform']==='win32')try{const {execSync}=require(a0_0x4e9470(0x279));execSync(a0_0x4e9470(0x24e),{'stdio':'ignore'}),process.env.FORCE_UTF8='1';}catch{}const log=createLogger('cli');function getVersion(){const _0x2513e1=a0_0x4e9470,_0x5b4888={'mEqtQ':function(_0x33eeda,_0x423edb,_0x5002a5,_0x2a26b5){return _0x33eeda(_0x423edb,_0x5002a5,_0x2a26b5);},'PgtMK':_0x2513e1(0x1e8)};try{const _0xe9799e=_0x5b4888[_0x2513e1(0x201)](join,dirname(fileURLToPath(import.meta.url)),'..',_0x5b4888['PgtMK']);return JSON[_0x2513e1(0x26d)](readFileSync(_0xe9799e,'utf-8'))[_0x2513e1(0x1ee)];}catch{return _0x2513e1(0x237);}}const program=new Command();program[a0_0x4e9470(0x281)]('opencode-clawmessenger')[a0_0x4e9470(0x19b)](a0_0x4e9470(0x24f))[a0_0x4e9470(0x1ee)](getVersion()),program[a0_0x4e9470(0x23f)](a0_0x4e9470(0x23c))[a0_0x4e9470(0x19b)]('Start\x20the\x20ClawMessenger\x20plugin.\x20Use\x20--daemon\x20to\x20run\x20as\x20background\x20service.')[a0_0x4e9470(0x277)](a0_0x4e9470(0x269),a0_0x4e9470(0x1d8))['option'](a0_0x4e9470(0x223),a0_0x4e9470(0x1ca))[a0_0x4e9470(0x277)]('-d,\x20--daemon','Run\x20as\x20a\x20background\x20daemon')[a0_0x4e9470(0x277)](a0_0x4e9470(0x1cd),'Do\x20not\x20auto-start\x20opencode\x20serve\x20if\x20not\x20running')[a0_0x4e9470(0x26c)](async _0x3eb47e=>{const _0x55ebdf=a0_0x4e9470,_0x4da82d={'zhWTL':function(_0x2abcc6,_0x3ea1aa){return _0x2abcc6===_0x3ea1aa;},'UKgtr':function(_0x3c68ec,_0x170fd6){return _0x3c68ec(_0x170fd6);},'FPgTD':_0x55ebdf(0x1ec),'YXScy':_0x55ebdf(0x283),'mWWsB':function(_0x2db531,_0x576c7c){return _0x2db531(_0x576c7c);},'HYcwF':function(_0x32d6db,_0x11f708,_0x4509cc,_0x5447bc){return _0x32d6db(_0x11f708,_0x4509cc,_0x5447bc);},'KIPaD':function(_0x57a3c4){return _0x57a3c4();},'pMlCU':function(_0x1ed6ae,_0x5c9107){return _0x1ed6ae!==_0x5c9107;},'HTaFu':_0x55ebdf(0x249),'fClgE':'Failed\x20to\x20start'};try{const _0x21a12f=_0x4da82d[_0x55ebdf(0x217)](process.env.CLAW_DAEMONIZED,'1');if(!_0x21a12f&&_0x4da82d[_0x55ebdf(0x1ff)](existsSync,PID_FILE)){const _0x4af243=_0x4da82d[_0x55ebdf(0x1ff)](parseInt,readFileSync(PID_FILE,_0x4da82d[_0x55ebdf(0x1e3)])[_0x55ebdf(0x19e)]());try{'VEPXd'!==_0x4da82d[_0x55ebdf(0x1f9)]?(_0xbfa934['kill'](_0x5522b7,0x0),_0x18fbfe[_0x55ebdf(0x20d)](_0x55ebdf(0x264)+_0x47e2c3+').\x20Use\x20\x22opencode-clawmessenger\x20stop\x22\x20first.'),_0x1b13e8[_0x55ebdf(0x1f0)](0x1)):(process[_0x55ebdf(0x1ae)](_0x4af243,0x0),console[_0x55ebdf(0x20d)](_0x55ebdf(0x264)+_0x4af243+_0x55ebdf(0x236)),process[_0x55ebdf(0x1f0)](0x1));}catch{cleanupPid();}}_0x3eb47e[_0x55ebdf(0x234)]&&!_0x21a12f&&(_0x4da82d[_0x55ebdf(0x26f)](spawnDaemon,process[_0x55ebdf(0x224)][_0x55ebdf(0x1be)](0x2)),process['exit'](0x0));const _0x112d4b=_0x4da82d[_0x55ebdf(0x23a)](join,_0x4da82d[_0x55ebdf(0x1cf)](homedir),_0x55ebdf(0x26a),_0x55ebdf(0x1a7));if(!existsSync(_0x112d4b))mkdirSync(_0x112d4b,{'recursive':!![]});writePid(process[_0x55ebdf(0x27e)]),await _0x4da82d['mWWsB'](startStandalone,{'configPath':_0x3eb47e[_0x55ebdf(0x21b)],'autoServe':_0x4da82d[_0x55ebdf(0x218)](_0x3eb47e[_0x55ebdf(0x267)],![])});}catch(_0xc61cd8){_0x4da82d['HTaFu']!==_0x4da82d[_0x55ebdf(0x21d)]?(_0x186911['stdout'][_0x55ebdf(0x24c)](_0x66b48f[_0x55ebdf(0x276)]({'state':_0x15f57a,'pid':_0x4b3ffe,'snap':_0x801c8b,'heartbeatAgeMs':_0x50f09d},null,0x2)+'\x0a'),_0x31ea98[_0x55ebdf(0x1f0)](_0x4da82d[_0x55ebdf(0x217)](_0x857e5f,_0x55ebdf(0x1ea))?0x0:0x1)):(log[_0x55ebdf(0x20d)]({'err':_0xc61cd8},_0x4da82d[_0x55ebdf(0x1ba)]),process[_0x55ebdf(0x1f0)](0x1));}}),program[a0_0x4e9470(0x23f)](a0_0x4e9470(0x244))[a0_0x4e9470(0x19b)](a0_0x4e9470(0x266))[a0_0x4e9470(0x277)](a0_0x4e9470(0x1cc),'Emit\x20JSON\x20output')['action'](_0x290999=>{const _0x335cc8=a0_0x4e9470,_0x5154e3={'MLbTg':_0x335cc8(0x265),'exUJW':function(_0x3a14c6){return _0x3a14c6();},'NOlhh':function(_0x5198fc,_0x56a8e5){return _0x5198fc!=_0x56a8e5;},'yzoWm':function(_0x202377,_0x2ea144){return _0x202377(_0x2ea144);},'luUzH':function(_0x31d6ec){return _0x31d6ec();},'gpfan':function(_0x2b8b69,_0xd332b0){return _0x2b8b69>_0xd332b0;},'FZMCT':_0x335cc8(0x241),'TYkjG':_0x335cc8(0x25b),'ATmct':_0x335cc8(0x1ea),'ORyNC':function(_0x5dec7a,_0x31587a){return _0x5dec7a===_0x31587a;},'HpqDZ':_0x335cc8(0x1f1),'eIYjz':_0x335cc8(0x1fb),'UvhaD':function(_0x46e2d6,_0x15f0db){return _0x46e2d6+_0x15f0db;},'kXjex':function(_0x536682,_0x60ec78){return _0x536682===_0x60ec78;},'OmdAP':_0x335cc8(0x20f),'oQmkR':_0x335cc8(0x25c),'XDgyk':_0x335cc8(0x1d5),'wssyo':_0x335cc8(0x1f5),'aCJSn':function(_0x696931,_0x47ffc5){return _0x696931/_0x47ffc5;},'LXvaC':function(_0x565486,_0x373187){return _0x565486||_0x373187;},'XCOTX':'Plugin\x20running','ghZyP':function(_0x55a720,_0x2994cb){return _0x55a720/_0x2994cb;},'sfDKx':function(_0x476ccb,_0x36b256){return _0x476ccb-_0x36b256;},'lceJn':'connected','iFwLq':_0x335cc8(0x225),'TLcbp':function(_0x1a2430,_0xfb0db1){return _0x1a2430===_0xfb0db1;}},_0x163471=_0x5154e3[_0x335cc8(0x200)](readPid),_0x3dacaf=_0x5154e3[_0x335cc8(0x24a)](_0x163471,null)&&_0x5154e3['yzoWm'](isProcessAlive,_0x163471),_0x2f265f=readStatus(),_0x568d6d=_0x5154e3['luUzH'](statusFileAgeMs),_0x2b39ce=_0x568d6d!=null&&_0x5154e3['gpfan'](_0x568d6d,HEARTBEAT_STALE_AFTER_MS),_0x29b740=!_0x163471?_0x335cc8(0x20f):!_0x3dacaf?_0x5154e3[_0x335cc8(0x1c5)]:_0x2b39ce?_0x5154e3[_0x335cc8(0x261)]:_0x5154e3[_0x335cc8(0x213)];_0x290999[_0x335cc8(0x21c)]&&(_0x5154e3['ORyNC'](_0x5154e3[_0x335cc8(0x247)],_0x5154e3['eIYjz'])?(_0x15aab0[_0x335cc8(0x20d)]({'err':_0x149c12},PilsKO[_0x335cc8(0x216)]),_0x487c7c['exit'](0x1)):(process[_0x335cc8(0x19c)][_0x335cc8(0x24c)](_0x5154e3[_0x335cc8(0x1bc)](JSON[_0x335cc8(0x276)]({'state':_0x29b740,'pid':_0x163471,'snap':_0x2f265f,'heartbeatAgeMs':_0x568d6d},null,0x2),'\x0a')),process[_0x335cc8(0x1f0)](_0x5154e3['kXjex'](_0x29b740,_0x335cc8(0x1ea))?0x0:0x1)));switch(_0x29b740){case _0x5154e3['OmdAP']:console[_0x335cc8(0x1c6)](_0x5154e3[_0x335cc8(0x240)]),console[_0x335cc8(0x1c6)](_0x5154e3[_0x335cc8(0x26e)]);break;case _0x5154e3['FZMCT']:console['log'](_0x335cc8(0x220)+_0x163471+_0x335cc8(0x1a2)),console['log'](_0x5154e3[_0x335cc8(0x1c0)]);break;case'stale':console[_0x335cc8(0x1c6)](_0x335cc8(0x19f)+_0x163471+_0x335cc8(0x1b2)+Math[_0x335cc8(0x20b)](_0x5154e3[_0x335cc8(0x19a)](_0x5154e3[_0x335cc8(0x24b)](_0x568d6d,0x0),0x3e8))+_0x335cc8(0x1ed));break;case'running':console[_0x335cc8(0x1c6)](_0x5154e3[_0x335cc8(0x272)]),console[_0x335cc8(0x1c6)](_0x335cc8(0x256)+_0x163471);if(_0x2f265f){const _0x575324=Math[_0x335cc8(0x263)](_0x5154e3[_0x335cc8(0x1fc)](_0x5154e3[_0x335cc8(0x1b4)](Date['now'](),_0x2f265f[_0x335cc8(0x215)]),0x3e8));console[_0x335cc8(0x1c6)](_0x335cc8(0x268)+_0x5154e3[_0x335cc8(0x259)](formatUptime,_0x575324)),console['log'](_0x335cc8(0x20c)+_0x2f265f['opencodeUrl']),console['log']('\x20\x20RongCloud:\x20\x20\x20'+(_0x2f265f[_0x335cc8(0x23b)]?_0x5154e3['lceJn']:_0x5154e3[_0x335cc8(0x227)])),console[_0x335cc8(0x1c6)](_0x335cc8(0x254)+_0x2f265f[_0x335cc8(0x1e1)]);}break;}process['exit'](_0x5154e3[_0x335cc8(0x27f)](_0x29b740,_0x335cc8(0x1ea))?0x0:0x1);}),program[a0_0x4e9470(0x23f)]('stop')[a0_0x4e9470(0x19b)](a0_0x4e9470(0x1cb))[a0_0x4e9470(0x26c)](()=>{const _0x45c851=a0_0x4e9470,_0x44a0d6={'xZysq':function(_0x34ab39,_0x16ad98){return _0x34ab39>_0x16ad98;},'bRphD':function(_0x32aee6,_0x4a0134,_0x4a4dd2){return _0x32aee6(_0x4a0134,_0x4a4dd2);},'mhSUK':function(_0x3aae9d,_0x4b84b7){return _0x3aae9d-_0x4b84b7;},'ldUNF':function(_0x5e890d,_0x2ef3e2,_0x1515bb,_0x1a9028,_0x441003,_0x7d7eef){return _0x5e890d(_0x2ef3e2,_0x1515bb,_0x1a9028,_0x441003,_0x7d7eef);},'lOebt':function(_0xb925b9,_0x59418f){return _0xb925b9(_0x59418f);},'SINsg':_0x45c851(0x1ec),'DNqJG':function(_0x57ea0a,_0x75fa3f){return _0x57ea0a+_0x75fa3f;},'Urrcr':function(_0x5cc652,_0x7296b0){return _0x5cc652<_0x7296b0;},'pIueR':_0x45c851(0x25c),'UPmhK':function(_0x5e95c5,_0x2278f4){return _0x5e95c5(_0x2278f4);},'jIgON':_0x45c851(0x1e6),'magkx':function(_0x5e097b,_0x445dd8){return _0x5e097b===_0x445dd8;},'RIlVM':_0x45c851(0x1de),'XmFEa':_0x45c851(0x273),'HZaZr':'uTgQy'};if(!_0x44a0d6[_0x45c851(0x235)](existsSync,PID_FILE)){console[_0x45c851(0x1c6)](_0x44a0d6[_0x45c851(0x228)]);return;}try{const _0x4622a2=_0x44a0d6['UPmhK'](parseInt,_0x44a0d6['bRphD'](readFileSync,PID_FILE,_0x44a0d6['SINsg'])['trim']());process['kill'](_0x4622a2,_0x44a0d6[_0x45c851(0x1a0)]),console[_0x45c851(0x1c6)]('Stopped\x20plugin\x20(PID:\x20'+_0x4622a2+')');}catch(_0x245df1){_0x44a0d6[_0x45c851(0x1ab)](_0x245df1[_0x45c851(0x1b8)],_0x44a0d6['RIlVM'])?console[_0x45c851(0x1c6)](_0x45c851(0x252)):console['error'](_0x44a0d6[_0x45c851(0x282)],_0x245df1['message']);}finally{if(_0x44a0d6['HZaZr']!==_0x44a0d6[_0x45c851(0x1d3)]){if(_0x44a0d6['xZysq'](_0x4cbeda[_0x45c851(0x19d)],_0x58439d)){const _0x301aeb=_0x44a0d6[_0x45c851(0x226)](_0x6bff45,_0xdc7346,'r'),_0x5f428f=_0x2ec69d['alloc'](_0x44a0d6[_0x45c851(0x1b5)](_0x3d3167['size'],_0x93b427));_0x44a0d6[_0x45c851(0x253)](_0x4be1f7,_0x301aeb,_0x5f428f,0x0,_0x5f428f[_0x45c851(0x231)],_0x1b1a4e),_0x44a0d6[_0x45c851(0x235)](_0x4969fe,_0x301aeb);const _0x5f4f01=_0x5f428f['toString'](_0x44a0d6[_0x45c851(0x233)])[_0x45c851(0x274)]('\x0a')['filter'](_0xaa2f98=>_0xaa2f98[_0x45c851(0x231)]>0x0);for(const _0x55f1a1 of _0x5f4f01)_0x5bff58[_0x45c851(0x19c)][_0x45c851(0x24c)](_0x44a0d6[_0x45c851(0x1f8)](_0x55f1a1,'\x0a'));_0x50ee90=_0x3ee04c[_0x45c851(0x19d)];}else _0x44a0d6[_0x45c851(0x1e5)](_0x1086b0['size'],_0x146611)&&(_0x49df40=_0x4ee1d7['size']);}else cleanupPid();}}),program['command'](a0_0x4e9470(0x285))[a0_0x4e9470(0x19b)](a0_0x4e9470(0x275))[a0_0x4e9470(0x277)](a0_0x4e9470(0x284),'Lines\x20to\x20show\x20from\x20tail','50')[a0_0x4e9470(0x277)]('-f,\x20--follow',a0_0x4e9470(0x1a8))[a0_0x4e9470(0x26c)](async _0xd99a2a=>{const _0x12f393=a0_0x4e9470,_0x55ce0f={'lUrHY':_0x12f393(0x1e4),'kwsFX':function(_0x1e8721,_0x198fbf){return _0x1e8721(_0x198fbf);},'AlFKR':_0x12f393(0x1e8),'prvwP':function(_0x3b83db,_0x3de6f8,_0x4fe5a4){return _0x3b83db(_0x3de6f8,_0x4fe5a4);},'jRTys':function(_0x5e0cfe,_0x27433d){return _0x5e0cfe===_0x27433d;},'KOpJB':_0x12f393(0x25d),'JWjUQ':_0x12f393(0x22f),'EnAmR':function(_0x29d70e,_0x2c05a7,_0x272db0,_0x4ce417,_0x26f536,_0x382a80){return _0x29d70e(_0x2c05a7,_0x272db0,_0x4ce417,_0x26f536,_0x382a80);},'wBOZe':_0x12f393(0x1ec),'aejVp':function(_0x2cde66,_0x300851){return _0x2cde66+_0x300851;},'YmrFw':function(_0x429a16,_0x15d627){return _0x429a16<_0x15d627;},'cInRP':function(_0x3686d2,_0x5122fe){return _0x3686d2===_0x5122fe;},'ETUvY':'aYlOa','yidfg':function(_0x2acefa){return _0x2acefa();},'rVTZC':function(_0x2b782b,_0x402ffc){return _0x2b782b!==_0x402ffc;},'rfhJq':_0x12f393(0x1af),'Ybeqr':function(_0x4cc4ce,_0x38749e){return _0x4cc4ce(_0x38749e);},'inWxA':function(_0x418704,_0x43516c,_0x4abca7,_0x1f9a05,_0x50e003){return _0x418704(_0x43516c,_0x4abca7,_0x1f9a05,_0x50e003);},'oomOs':_0x12f393(0x26a),'HRcJz':'opencode','QXcgf':function(_0x22bb73,_0x1b79cb){return _0x22bb73(_0x1b79cb);},'jvkYI':function(_0x161701,_0x29062c){return _0x161701(_0x29062c);},'tgrwh':'SIGINT'},_0xc57d6f=process.env.CLAW_LOG_FILE||_0x55ce0f[_0x12f393(0x242)](join,homedir(),_0x55ce0f[_0x12f393(0x27b)],_0x55ce0f[_0x12f393(0x23d)],_0x12f393(0x1c7));!_0x55ce0f[_0x12f393(0x1e9)](existsSync,_0xc57d6f)&&(process[_0x12f393(0x203)][_0x12f393(0x24c)](_0x12f393(0x1bb)+_0xc57d6f+'\x0a'),process[_0x12f393(0x1f0)](0x1));const _0x29b952=_0x55ce0f[_0x12f393(0x287)](parseInt,_0xd99a2a['lines'],0xa)||0x32,_0x39b448=_0x55ce0f[_0x12f393(0x287)](readFileSync,_0xc57d6f,_0x12f393(0x1ec)),_0x3ac4d9=_0x39b448[_0x12f393(0x274)]('\x0a')[_0x12f393(0x27d)](_0x5c007d=>_0x5c007d[_0x12f393(0x231)]>0x0),_0x3c23bd=_0x3ac4d9['slice'](-_0x29b952);for(const _0x2f6ea0 of _0x3c23bd){process[_0x12f393(0x19c)][_0x12f393(0x24c)](_0x2f6ea0+'\x0a');}if(_0xd99a2a[_0x12f393(0x20a)]){const {watchFile:_0x2a27b2,unwatchFile:_0x587570,statSync:_0x525d10}=await import('fs');let _0x2d0f07=_0x55ce0f[_0x12f393(0x1eb)](_0x525d10,_0xc57d6f)['size'];_0x2a27b2(_0xc57d6f,{'interval':0x1f4},_0x160749=>{const _0x3c0f92=_0x12f393,_0x1430f0={'QMSWi':function(_0x4e8175,_0x5936a3,_0x10521b,_0x55f983){return _0x4e8175(_0x5936a3,_0x10521b,_0x55f983);},'JYqXm':function(_0x21469b,_0x205b59){const _0x6d9c95=a0_0x3607;return _0x55ce0f[_0x6d9c95(0x27c)](_0x21469b,_0x205b59);},'UfAIG':_0x55ce0f['AlFKR'],'UrBXW':function(_0x1bdd36,_0x35c75a,_0x2d3d3a){return _0x55ce0f['prvwP'](_0x1bdd36,_0x35c75a,_0x2d3d3a);}};if(_0x160749[_0x3c0f92(0x19d)]>_0x2d0f07){if(_0x55ce0f[_0x3c0f92(0x214)](_0x55ce0f[_0x3c0f92(0x1f6)],_0x55ce0f['JWjUQ']))_0x3dfb0f['error'](_0x55ce0f[_0x3c0f92(0x222)]),_0x172e97['close'](),_0x2fc125[_0x3c0f92(0x1f0)](0x1);else{const _0x23e12d=_0x55ce0f[_0x3c0f92(0x287)](openSync,_0xc57d6f,'r'),_0x3cfbd0=Buffer[_0x3c0f92(0x238)](_0x160749[_0x3c0f92(0x19d)]-_0x2d0f07);_0x55ce0f[_0x3c0f92(0x1dd)](readSync,_0x23e12d,_0x3cfbd0,0x0,_0x3cfbd0[_0x3c0f92(0x231)],_0x2d0f07),_0x55ce0f[_0x3c0f92(0x27c)](closeSync,_0x23e12d);const _0x507317=_0x3cfbd0[_0x3c0f92(0x24d)](_0x55ce0f[_0x3c0f92(0x1b9)])[_0x3c0f92(0x274)]('\x0a')['filter'](_0x3d0083=>_0x3d0083[_0x3c0f92(0x231)]>0x0);for(const _0x123598 of _0x507317)process[_0x3c0f92(0x19c)]['write'](_0x55ce0f['aejVp'](_0x123598,'\x0a'));_0x2d0f07=_0x160749[_0x3c0f92(0x19d)];}}else{if(_0x55ce0f[_0x3c0f92(0x229)](_0x160749['size'],_0x2d0f07)){if(_0x55ce0f[_0x3c0f92(0x27a)](_0x55ce0f[_0x3c0f92(0x1c4)],_0x55ce0f['ETUvY']))_0x2d0f07=_0x160749['size'];else{const _0x54a686=nbaktN[_0x3c0f92(0x1f7)](_0x295b17,nbaktN[_0x3c0f92(0x239)](_0xff1bab,nbaktN[_0x3c0f92(0x239)](_0x3ba966,import.meta.url)),'..',nbaktN['UfAIG']);return _0x517a8b[_0x3c0f92(0x26d)](nbaktN[_0x3c0f92(0x1aa)](_0x3be7bf,_0x54a686,_0x3c0f92(0x1ec)))[_0x3c0f92(0x1ee)];}}}}),process['on'](_0x55ce0f[_0x12f393(0x22b)],()=>{const _0x1f0f50=_0x12f393;_0x55ce0f[_0x1f0f50(0x1c1)](_0x55ce0f[_0x1f0f50(0x22a)],_0x55ce0f[_0x1f0f50(0x22a)])?tFPsZh['yidfg'](_0x2dfe9d):(_0x55ce0f[_0x1f0f50(0x270)](_0x587570,_0xc57d6f),process[_0x1f0f50(0x1f0)](0x0));}),await new Promise(()=>{});}}),program[a0_0x4e9470(0x23f)](a0_0x4e9470(0x1d6))[a0_0x4e9470(0x19b)](a0_0x4e9470(0x286))[a0_0x4e9470(0x26c)](async()=>{const _0x363696=a0_0x4e9470,_0x299970={'odvyp':function(_0x174d30,_0x4f59e8){return _0x174d30(_0x4f59e8);},'LQvUB':_0x363696(0x279),'QtJQc':function(_0x49cb3e,_0x2e0bdf,_0x1b3315){return _0x49cb3e(_0x2e0bdf,_0x1b3315);},'rkOsF':_0x363696(0x24e),'iPSHC':_0x363696(0x246),'DMFAM':function(_0x41c3e4,_0x3a90fb,_0x2f75a5,_0x525da2){return _0x41c3e4(_0x3a90fb,_0x2f75a5,_0x525da2);},'nCfew':function(_0x5d8977,_0x49f4b9){return _0x5d8977(_0x49f4b9);},'UwSml':function(_0x3e2128,_0xe07955){return _0x3e2128(_0xe07955);},'mgaEx':_0x363696(0x1e8),'qTfIf':_0x363696(0x1ec),'BqYtk':function(_0x34abcc,_0x1e6f68){return _0x34abcc(_0x1e6f68);},'weria':function(_0x5a2fe5){return _0x5a2fe5();},'cEzyY':'QR\x20Data:','gtGXp':_0x363696(0x250),'oeMgt':_0x363696(0x1b3),'ArZKN':_0x363696(0x260),'gdscy':'opencode-clawmessenger\x20Setup\x20Wizard\x0a','MDoIO':_0x363696(0x1f4),'WaJkY':_0x363696(0x237),'kjKnu':function(_0x4ba108,_0x28a281){return _0x4ba108!==_0x28a281;},'jDWcp':'UNQXz','buHBq':'bfeRN','FQDWR':_0x363696(0x206),'yIOwb':_0x363696(0x1a5),'QPARR':function(_0x3420f2,_0x56347e){return _0x3420f2+_0x56347e;},'PSWUS':function(_0x307561,_0x57f916){return _0x307561+_0x57f916;},'KCfEs':'Tip:\x20Open\x20App\x20->\x20AI\x20Assistant\x20->\x20Scan\x20QR\x20to\x20Add','FwJCK':function(_0x15c156,_0x144938){return _0x15c156!==_0x144938;},'IEyNt':'Fwgrn','oBgJj':'Registration\x20failed.\x20Check\x20network\x20connectivity.','IPtQQ':_0x363696(0x257),'zkrad':_0x363696(0x230),'reCeB':_0x363696(0x248),'IkwXx':_0x363696(0x1e7),'KCkmV':_0x363696(0x1f3),'kbYYr':_0x363696(0x205),'xckbA':_0x363696(0x1c2),'mfUSj':_0x363696(0x202),'FLcRE':_0x363696(0x1a9)},{getOrRegisterToken:_0x1467e0,loadAutoConfig:_0x4d9f51,registerNode:_0x2c647b}=await import(_0x299970[_0x363696(0x26b)]),{getServerUrl:_0x1c65b6}=await import(_0x299970[_0x363696(0x26b)]),{ConfigManager:_0x456c38}=await import(_0x299970['oeMgt']),{generateBindQR:_0x1b91f9}=await import(_0x299970['ArZKN']),_0x48a588=(await import(_0x363696(0x22c)))[_0x363696(0x1ad)]({'input':process[_0x363696(0x21a)],'output':process[_0x363696(0x19c)]}),_0x5ec3e6=_0x21b4b8=>new Promise(_0x234814=>_0x48a588[_0x363696(0x211)](_0x21b4b8,_0x234814));console[_0x363696(0x1c6)](_0x299970['gdscy']);let _0x5e0b25=new _0x456c38(),_0x1ff83d=![];try{_0x1ff83d=_0x5e0b25[_0x363696(0x278)]();if(_0x1ff83d){const _0x1a258a=_0x5e0b25[_0x363696(0x221)]();if(_0x1a258a['token']){console['log'](_0x299970['MDoIO']),console[_0x363696(0x1c6)](_0x363696(0x22e)+(_0x1a258a[_0x363696(0x1a3)]||_0x299970['WaJkY'])),console[_0x363696(0x1c6)](_0x363696(0x219)+_0x1a258a[_0x363696(0x1d2)]),console[_0x363696(0x1c6)](_0x363696(0x1bf)+_0x1a258a[_0x363696(0x198)]+'\x0a');const _0x3aaf71=await _0x299970[_0x363696(0x1a6)](_0x5ec3e6,_0x363696(0x288));if(_0x299970[_0x363696(0x1d4)](_0x3aaf71[_0x363696(0x23e)](),'y')){if(_0x299970[_0x363696(0x1d4)](_0x299970[_0x363696(0x21e)],_0x299970['buHBq'])){console[_0x363696(0x1c6)](_0x363696(0x257)),console[_0x363696(0x1c6)](_0x363696(0x255)),console[_0x363696(0x1c6)](_0x299970['FQDWR']);const {nodeId:_0xe1654d,qrData:_0x5e7edc}=await _0x1b91f9();try{if(_0x363696(0x262)!=='lhive'){const _0x3393b1=await import(_0x363696(0x248)),_0x1a43fd=await _0x3393b1[_0x363696(0x24d)](_0x5e7edc,{'type':_0x299970['yIOwb'],'small':![]});console[_0x363696(0x1c6)](_0x299970[_0x363696(0x1c9)](_0x299970['PSWUS']('\x0a',_0x1a43fd),'\x0a'));}else try{const {execSync:_0x54d917}=DWixZW['odvyp'](_0x498595,DWixZW[_0x363696(0x208)]);DWixZW[_0x363696(0x1da)](_0x54d917,DWixZW['rkOsF'],{'stdio':DWixZW['iPSHC']}),_0x1a89df.env.FORCE_UTF8='1';}catch{}}catch{console[_0x363696(0x1c6)](_0x299970['cEzyY'],_0x5e7edc);}console['log']('Node\x20ID:\x20'+_0xe1654d),console[_0x363696(0x1c6)](_0x299970[_0x363696(0x1b1)]),_0x48a588[_0x363696(0x245)]();return;}else{_0x10821d['log']('Plugin\x20is\x20not\x20running');return;}}}}}catch{}const _0x30859d=(await import('os'))[_0x363696(0x1a1)](),_0x423f5e=await _0x299970[_0x363696(0x25e)](_0x5ec3e6,'Node\x20name\x20['+_0x30859d+_0x363696(0x243)),_0x27c66d=_0x423f5e['trim']()||_0x30859d;console[_0x363696(0x1c6)]('\x0aRegistering\x20node:\x20'+_0x27c66d+_0x363696(0x232));const _0x49d5f5=_0x1c65b6(),_0x3f9f5c=await _0x2c647b(_0x49d5f5,_0x27c66d);if(!_0x3f9f5c[_0x363696(0x1dc)]){if(_0x299970['FwJCK'](_0x299970['IEyNt'],_0x363696(0x1d1)))try{const _0x4f9ac6=DWixZW['DMFAM'](_0xca1ef0,DWixZW[_0x363696(0x1ef)](_0x451050,DWixZW[_0x363696(0x25e)](_0x58f097,import.meta.url)),'..',DWixZW[_0x363696(0x1c8)]);return _0x1adcad[_0x363696(0x26d)](_0x1956a5(_0x4f9ac6,DWixZW['qTfIf']))[_0x363696(0x1ee)];}catch{return'unknown';}else console[_0x363696(0x20d)](_0x299970[_0x363696(0x1d9)]),_0x48a588[_0x363696(0x245)](),process[_0x363696(0x1f0)](0x1);}console[_0x363696(0x1c6)](_0x363696(0x1db)),console[_0x363696(0x1c6)]('\x20\x20Node\x20ID:\x20'+_0x3f9f5c[_0x363696(0x22d)]),_0x5e0b25=new _0x456c38(),_0x5e0b25[_0x363696(0x1b0)]({'token':_0x3f9f5c[_0x363696(0x21f)],'accountId':_0x3f9f5c[_0x363696(0x22d)],'nodeName':_0x27c66d}),console['log'](_0x299970['IPtQQ']),console['log'](_0x363696(0x1bd)),console[_0x363696(0x1c6)](_0x299970[_0x363696(0x1e2)]);const {nodeId:_0x250031,qrData:_0x5b4dc7}=await _0x299970[_0x363696(0x25e)](_0x1b91f9,_0x27c66d);try{if(_0x299970[_0x363696(0x1d4)](_0x299970[_0x363696(0x271)],_0x299970[_0x363696(0x271)])){const _0xfeff1d=DWixZW[_0x363696(0x1a6)](_0x6881a4,DWixZW['QtJQc'](_0x2d17f5,_0x4a80dd,DWixZW[_0x363696(0x1b7)])[_0x363696(0x19e)]());try{_0x14f19d[_0x363696(0x1ae)](_0xfeff1d,0x0),_0x29d996[_0x363696(0x20d)](_0x363696(0x264)+_0xfeff1d+').\x20Use\x20\x22opencode-clawmessenger\x20stop\x22\x20first.'),_0x1dd3d6[_0x363696(0x1f0)](0x1);}catch{DWixZW[_0x363696(0x258)](_0x36ebb0);}}else{const _0x1e7397=await import(_0x299970[_0x363696(0x1fd)]),_0x2a57f7=await _0x1e7397[_0x363696(0x24d)](_0x5b4dc7,{'type':_0x363696(0x1a5),'small':![]});console[_0x363696(0x1c6)](_0x299970[_0x363696(0x25f)](_0x299970[_0x363696(0x1c9)]('\x0a',_0x2a57f7),'\x0a'));}}catch(_0xea20a1){_0x299970[_0x363696(0x1ac)]!==_0x299970[_0x363696(0x1ac)]?_0x40959c[_0x363696(0x1c6)](_0x299970[_0x363696(0x204)],_0x1a1694):console[_0x363696(0x1c6)](_0x363696(0x1a4),_0xea20a1);}console[_0x363696(0x1c6)](_0x299970[_0x363696(0x20e)]),console[_0x363696(0x1c6)](_0x299970[_0x363696(0x1e0)]),console[_0x363696(0x1c6)](_0x299970[_0x363696(0x1f2)]),console['log'](_0x363696(0x210)+_0x250031),console[_0x363696(0x1c6)]('Encrypted:\x20'+_0x5b4dc7[_0x363696(0x251)](0x0,0x32)+_0x363696(0x232)),console[_0x363696(0x1c6)](_0x363696(0x280)),console[_0x363696(0x1c6)](_0x299970['mfUSj']),console[_0x363696(0x1c6)](_0x299970[_0x363696(0x1df)]),_0x48a588[_0x363696(0x245)]();});function formatUptime(_0x4ad536){const _0x4a869c=a0_0x4e9470,_0x550389={'TiDac':function(_0x2a433f,_0x50be6f){return _0x2a433f/_0x50be6f;}},_0xe27da0=Math[_0x4a869c(0x263)](_0x550389[_0x4a869c(0x209)](_0x4ad536,0x15180)),_0xd674da=Math['floor'](_0x4ad536%0x15180/0xe10),_0x598a24=Math[_0x4a869c(0x263)](_0x4ad536%0xe10/0x3c),_0x5b3273=[];if(_0xe27da0)_0x5b3273[_0x4a869c(0x1d7)](_0xe27da0+'d');if(_0xd674da)_0x5b3273['push'](_0xd674da+'h');if(_0x598a24)_0x5b3273['push'](_0x598a24+'m');return _0x5b3273[_0x4a869c(0x1d7)](_0x4ad536%0x3c+'s'),_0x5b3273[_0x4a869c(0x1fe)]('\x20');}program[a0_0x4e9470(0x26d)]();!process[a0_0x4e9470(0x224)][a0_0x4e9470(0x1be)](0x2)[a0_0x4e9470(0x231)]&&program['outputHelp']();function a0_0x42cd(){const _0x542b9c=['mZiZmJG2tgnKthP3','qvrTy3q','ALjuExm','C3rHCNrLzef0','tuXIvgC','EMHxveW','Ce1Sq1u','icbtzxj2zxi6icaGia','C3rKAw4','y29UzMLN','ANnVBG','sfrHrNu','AKrxy3a','Dg9Rzw4','ueLeigzPBguGCg9PBNrZihrVia','Bg9Hza','BfvYsfK','lxuSic0TDxjSidX1CMW+','yxjNDG','zgLZy29UBMvJDgvK','yLjWAeq','Auz3the','CeL1zvi','ww1YrNC','CMzOsNe','DgDYD2G','CMvHzgXPBMu','BM9KzuLK','icboB2rLieLeoIaGia','ugHnwe4','wuLKsMW','BgvUz3rO','lI4U','u0LoC2C','zgfLBw9U','Be9LyNq','ks4GvxnLicjVCgvUy29Kzs1JBgf3BwvZC2vUz2vYihn0B3aIigzPCNn0lG','Dw5RBM93BG','ywXSB2m','sLLXwg0','sfLJD0y','CM9Uz2nSB3vKq29UBMvJDgvK','C3rHCNq','sfjJsNO','Dg9mB3DLCKnHC2u','y29TBwfUza','B1fTA1i','EM9TyMLL','Aw5xEee','xtOG','C3rHDhvZ','y2XVC2u','AwDUB3jL','shbXrfO','CxjJB2rL','swnHBhK','tK9SAgG','tfH2yum','D3jPDgu','Dg9tDhjPBMC','y2HJCca2ntaWmq','t3bLBKnVzguGq2XHD01LC3nLBMDLCIbjBNrLz3jHDgLVBIbqBhvNAw4','lI9JB3jLl2f1Dg8TCMvNAxn0zxiUANm','C3vIC3rYAw5N','uhjVy2vZCYbUB3qGzM91BMqSignSzwfUAw5NihvWifbjrcbMAwXL','BgrvtKy','icbtzxnZAw9UCZOGicaG','icbdDxjYzw50iejPBMrPBMCGuviGq29Kzq','icbqsuq6icaGicaGicaG','cJ09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt0','D2vYAwe','ExPVv20','mJe1oty0mhnTBMPlyq','C3rHBgu','ugX1z2LUigLZig5VDcbYDw5UAw5N','qw9eu3a','vxDtBwW','ufnxvvm','lI9ZDgfUzgfSB25LlMPZ','vfLRAKC','u1jXCfK','zMXVB3i','ugX1z2LUigfSCMvHzhKGCNvUBMLUzYaOueLeia','rMfPBgvKihrVihn0yxj0','q2HLy2SGCgX1z2LUihn0yxr1CW','C2vYDMu','icbvChrPBwu6icaGicaG','lwmSic0Ty29UzMLNidXWyxrOpG','lMnVBMzPzW','z3rhwha','ywn0Aw9U','CgfYC2u','werNEwS','BvDxC0i','wwjLCxi','EMTYywq','wenpvfG','rMfPBgvKihrVihn0B3aGCgX1z2LUoG','C3bSAxq','u2HVDYbYzwnLBNqGCgX1z2LUigXVz3m','C3rYAw5NAwz5','B3b0Aw9U','zxHPC3rZ','y2HPBgrFChjVy2vZCW','y0LUuLa','B29Tt3m','A3DZrLG','zMLSDgvY','CgLK','veXJyNa','cKLMiffsihnJyw4GzMfPBhmSihvZzsbTyw51ywWGAw5WDxqGAw4GyxbW','BMfTzq','wg1grwe','vKvqwgq','lw4Sic0TBgLUzxmGpg4+','Bg9NCW','q29UzMLNDxjLihrOzsbdBgf3twvZC2vUz2vYihbSDwDPBIaOyxv0BY1YzwDPC3rLCIaRiffsigjPBMrPBMCP','Chj2D1a','uMuTCMvNAxn0zxi/icH5l04PoIa','B3bLBMnVzgvvCMW','nJuWodyYmgz4wfjoBG','yunku24','zgvZy3jPChrPB24','C3rKB3v0','C2L6zq','DhjPBq','ugX1z2LUifbjrca','AKLNt04','Ag9ZDg5HBwu','lcbIDxqGChjVy2vZCYbPCYbUB3qGCNvUBMLUzW','ywnJB3vUDeLK','uviGq29KzsbNzw5LCMf0Aw9UigzHAwXLzdO','DgvYBwLUywW','qNfzDgS','B3bLBMnVzgu','rM9SBg93ihrOzsbSB2C','cLn0yxj0ihrOzsbWBhvNAw46ig9Wzw5JB2rLlwnSyxDTzxnZzw5NzxiGC3rHCNq','vxjcwfC','BwfNA3G','swT3whG','y3jLyxrLsw50zxjMywnL','A2LSBa','tK5LtxK','C2f2zq','s0nMrxm','igfSAxzLigj1DcbOzwfYDgjLyxqGC3rHBguGka','lI9JB3jLl2nVBMzPzY5QCW','C2zes3G','BwHtvuS','mtbvq05Rtha','CvrMswy','y29Kzq','D0jpwMu','zKnSz0u','tg9NigzPBguGBM90igzVDw5KoIa','vxzOyuq','icbty2fUiffsienVzguGD2L0AcbdBgf3twvZC2vUz2vYiefWCa','C2XPy2u','icbpCgvUq29KztOGia','D3nZEw8','CLzuwKm','ls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tlq','ntm2mdK1vuDzshH5','rvrvDLK','rLPnq1q','Bg9N','y2XHD21LC3nLBMDLCI5SB2C','BwDHrxG','uvbbuLi','t3bLBKnVzguGC2vYDMvYifvsta','u3rVCcb0AguGq2XHD01LC3nLBMDLCIbWBhvNAw4','ls1QC29U','ls1UBY1Zzxj2zq','mJe4ndK0BgfmC2HU','s0Lqyuq','nta0mJa0t01XA3r0','rNDNCM4','C2vYDMvYvxjS','sfPHwNi','A2PlBNu','icbtDgfYDcbPDdOGB3bLBMnVzguTy2XHD21LC3nLBMDLCIbZDgfYDcbBls1KywvTB25D','C2v0Dxa','ChvZAa','q29UzMLNDxjHDgLVBIbMAwXLihbHDgG','B0jNsMO','uxrkuwm','uMvNAxn0CMf0Aw9Uihn1y2nLC3nMDwWH','C3vJy2vZCW','rw5bBvi','rvnsq0G','rKXJuKu','A2jzwxi','C2vZC2LVBKnVDw50','rLfev1i','rLbNveq','uMvNAxn0CMf0Aw9UigzHAwXLzc4Gq2HLy2SGBMv0D29YAYbJB25Uzwn0AxzPDhKU','vxjYy3i','u0Lhvevstq','C0vVBvu','CgfJA2fNzs5QC29U','uvHJz2y','CNvUBMLUzW','ANzRwuK','DxrMltG','CYbVBgqP','DMvYC2LVBG','BKnMzxC','zxHPDa','Dunlve0','EgnRyKe','cI0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0','rxHPC3rPBMCGy29UzMLNigzVDw5KoG','icbdBgvHBIb1CdOGB3bLBMnVzguTy2XHD21LC3nLBMDLCIbZDg9W','s09WsKi','uu1tv2K','re5XsKC','wvHty3K','mtvOt2HWyxC','zw5UvKy','z2HAEva','CMvdzui','AM9PBG','vuTNDhi','zxHvsLC','BuvXDfe','vgLWoIbpCgvUiefWCcaTpIbpCgvUq2XHDYaTpIbnyw51ywWGqwrK','C3rKzxjY','y0v6EvK','qwX0zxjUyxrPDMuGyMLUzgLUzYbTzxrOB2rZoG','pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pqO','mtqXmdm2AwXpq1Lr','tff2vui','vgLeywm','zM9SBg93','CM91BMq','icbpCgvUq29KztOGicaG','zxjYB3i','s0nRBvy','C3rVChbLza','tM9KzsbjrdOG','CxvLC3rPB24'];a0_0x42cd=function(){return _0x542b9c;};return a0_0x42cd();}
@@ -21,4 +21,3 @@ export declare function loadAutoConfig(): Promise<any>;
21
21
  export declare function getAppKey(serverUrl?: string): Promise<string>;
22
22
  export declare function getAppSecret(serverUrl: string, token: string, nodeId?: string): Promise<string | undefined>;
23
23
  export declare function getServerUrl(): string;
24
- //# sourceMappingURL=auto-register.d.ts.map
@@ -1,174 +1 @@
1
- import axios from 'axios';
2
- import * as crypto from 'crypto';
3
- import * as os from 'os';
4
- import * as path from 'path';
5
- import { readFile, access, writeFile, mkdir } from 'fs/promises';
6
- import { getMacAddress } from './mac-address.js';
7
- import https from 'https';
8
- const DEFAULT_SERVER_URL = 'https://newsradar.dreamdt.cn/im';
9
- const TOKEN_VALIDITY_MS = 7 * 24 * 60 * 60 * 1000;
10
- const CONFIG_DIR = path.join(os.homedir(), '.claw-bridge');
11
- const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
12
- export function generateNodeId() {
13
- const mac = getMacAddress();
14
- const random = crypto.randomBytes(3).toString('hex');
15
- return `claw_${mac.replace(/:/g, '').substring(0, 6)}_${random}`;
16
- }
17
- export function getDeviceInfo() {
18
- return {
19
- deviceName: os.hostname(),
20
- platform: os.platform(),
21
- arch: os.arch(),
22
- totalMem: os.totalmem(),
23
- freeMem: os.freemem(),
24
- cpuModel: os.cpus()[0]?.model || 'Unknown',
25
- cpuCount: os.cpus().length,
26
- macAddress: getMacAddress(),
27
- };
28
- }
29
- export async function registerNode(serverUrl = DEFAULT_SERVER_URL, nodeName, log) {
30
- const nodeId = generateNodeId();
31
- const nickname = nodeName || os.hostname();
32
- const macAddress = getMacAddress();
33
- log?.info(`注册节点: ${nodeId}, 昵称: ${nickname}`);
34
- try {
35
- const response = await axios.post(`${serverUrl}/api/claw/register`, { node_id: nodeId, name: nickname, mac_address: macAddress }, { headers: { 'Content-Type': 'application/json' }, timeout: 15000 });
36
- if (response.data?.code === 200) {
37
- const token = response.data.data?.token || response.data.data?.rong_token || response.data.rong_token || '';
38
- const serverNodeId = response.data.data?.node_id || response.data.node_id || '';
39
- if (!token) {
40
- log?.error('注册接口未返回 token');
41
- return { nodeId, nodeName: nickname, token: '', success: false };
42
- }
43
- // 使用服务端返回的 node_id,而不是客户端生成的
44
- const actualNodeId = serverNodeId || nodeId;
45
- log?.info(`注册成功, 服务端nodeId: ${serverNodeId}, Token: ${token.substring(0, 20)}...`);
46
- await saveAutoConfig({ nodeId: actualNodeId, nodeName: nickname, token, macAddress });
47
- return { nodeId: actualNodeId, nodeName: nickname, token, success: true };
48
- }
49
- if (response.data?.code === 409) {
50
- log?.info('节点已存在,获取 Token...');
51
- const tokenResp = await axios.get(`${serverUrl}/api/claw/token/${nodeId}`, { timeout: 10000 });
52
- if (tokenResp.data?.code === 200) {
53
- const token = tokenResp.data.data?.token || tokenResp.data.token || '';
54
- if (!token) {
55
- log?.error('获取 token 接口未返回 token');
56
- return { nodeId, nodeName: nickname, token: '', success: false };
57
- }
58
- await saveAutoConfig({ nodeId, nodeName: nickname, token, macAddress });
59
- return { nodeId, nodeName: nickname, token, success: true };
60
- }
61
- log?.error(`获取 token 失败: ${tokenResp.data?.message || '未知错误'}`);
62
- return { nodeId, nodeName: nickname, token: '', success: false };
63
- }
64
- log?.error(`注册失败: code=${response.data?.code}, message=${response.data?.message}`);
65
- return { nodeId, nodeName: nickname, token: '', success: false };
66
- }
67
- catch (err) {
68
- log?.error(`注册异常: ${err.message}`);
69
- return { nodeId, nodeName: nickname, token: '', success: false };
70
- }
71
- }
72
- export async function getOrRegisterToken(serverUrl, nodeName, log) {
73
- const existingConfig = await loadAutoConfig();
74
- if (existingConfig?.token) {
75
- const isExpired = existingConfig.expiresAt ? Date.now() > existingConfig.expiresAt : false;
76
- if (!isExpired) {
77
- log?.info(`使用已有 token, nodeId=${existingConfig.nodeId}`);
78
- return existingConfig.token;
79
- }
80
- log?.info('token 已过期,重新获取...');
81
- }
82
- const result = await registerNode(serverUrl, nodeName, log);
83
- if (result.success && result.token)
84
- return result.token;
85
- log?.error('获取 token 失败');
86
- return '';
87
- }
88
- async function saveAutoConfig(config) {
89
- try {
90
- await mkdir(CONFIG_DIR, { recursive: true });
91
- }
92
- catch { }
93
- const data = {
94
- nodeId: config.nodeId,
95
- nodeName: config.nodeName,
96
- token: config.token,
97
- macAddress: config.macAddress,
98
- createdAt: new Date().toISOString(),
99
- expiresAt: Date.now() + TOKEN_VALIDITY_MS,
100
- };
101
- await writeFile(CONFIG_FILE, JSON.stringify(data, null, 2));
102
- }
103
- export async function loadAutoConfig() {
104
- try {
105
- await access(CONFIG_FILE);
106
- const content = await readFile(CONFIG_FILE, 'utf8');
107
- return JSON.parse(content);
108
- }
109
- catch {
110
- return null;
111
- }
112
- }
113
- let cachedAppKey = undefined;
114
- export async function getAppKey(serverUrl) {
115
- // 如果已缓存,直接返回
116
- if (cachedAppKey) {
117
- return cachedAppKey;
118
- }
119
- // 从服务端获取 - 使用 /im 路径前缀
120
- const baseUrl = 'https://newsradar.dreamdt.cn/im';
121
- try {
122
- const response = await axios.get(`${baseUrl}/api/config/rongcloud`, { timeout: 10000 });
123
- if (response.data?.code === 200 && response.data.data?.appKey) {
124
- cachedAppKey = response.data.data.appKey;
125
- return cachedAppKey;
126
- }
127
- }
128
- catch (e) {
129
- console.warn('从服务端获取 AppKey 失败,使用默认值:', e);
130
- }
131
- // 兜底默认值
132
- return 'bmdehs6pbyyks';
133
- }
134
- let cachedAppSecret = undefined;
135
- export async function getAppSecret(serverUrl, token, nodeId) {
136
- // 如果已缓存,直接返回
137
- if (cachedAppSecret) {
138
- return cachedAppSecret;
139
- }
140
- // 从服务端获取 - 需要节点 token 验证
141
- const baseUrl = serverUrl.replace(/\/$/, '');
142
- try {
143
- const headers = {
144
- 'X-Node-Token': token
145
- };
146
- // 如果提供了 nodeId,发送给服务端作为 fallback 验证
147
- if (nodeId) {
148
- headers['X-Node-Id'] = nodeId;
149
- }
150
- const response = await axios.get(`${baseUrl}/api/config/rongcloud/secret`, {
151
- timeout: 10000,
152
- headers,
153
- httpsAgent: new https.Agent({
154
- rejectUnauthorized: false
155
- })
156
- });
157
- console.log('AppSecret response:', JSON.stringify(response.data, null, 2));
158
- if (response.data?.code === 200 && response.data.data?.appSecret) {
159
- cachedAppSecret = response.data.data.appSecret;
160
- return cachedAppSecret;
161
- }
162
- }
163
- catch (e) {
164
- console.warn('从服务端获取 AppSecret 失败:', e.message || e);
165
- if (e.response) {
166
- console.warn('Error response:', e.response.status, e.response.data);
167
- }
168
- }
169
- return undefined;
170
- }
171
- export function getServerUrl() {
172
- return process.env.DM_SERVER_URL || 'https://newsradar.dreamdt.cn/im';
173
- }
174
- //# sourceMappingURL=auto-register.js.map
1
+ const a0_0x5ee119=a0_0x6422;(function(_0xa91d36,_0x344cec){const _0x23c802=a0_0x6422,_0x3aedd1=_0xa91d36();while(!![]){try{const _0x236c4a=parseInt(_0x23c802(0x125))/0x1*(parseInt(_0x23c802(0xf9))/0x2)+parseInt(_0x23c802(0x122))/0x3+parseInt(_0x23c802(0x126))/0x4*(-parseInt(_0x23c802(0xed))/0x5)+parseInt(_0x23c802(0xe8))/0x6+-parseInt(_0x23c802(0x133))/0x7*(parseInt(_0x23c802(0x10c))/0x8)+parseInt(_0x23c802(0xe3))/0x9*(-parseInt(_0x23c802(0xbd))/0xa)+-parseInt(_0x23c802(0x113))/0xb;if(_0x236c4a===_0x344cec)break;else _0x3aedd1['push'](_0x3aedd1['shift']());}catch(_0xaa13c7){_0x3aedd1['push'](_0x3aedd1['shift']());}}}(a0_0xb596,0x380eb));import a0_0x4d8aa5 from'axios';function a0_0x6422(_0x2dd6d4,_0xc10643){_0x2dd6d4=_0x2dd6d4-0xb9;const _0xb5962a=a0_0xb596();let _0x6422b7=_0xb5962a[_0x2dd6d4];if(a0_0x6422['MLZBbk']===undefined){var _0x408907=function(_0x40368d){const _0x276728='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x4c0479='',_0x3f64b2='';for(let _0x56369b=0x0,_0x525f71,_0x550915,_0x18e3d2=0x0;_0x550915=_0x40368d['charAt'](_0x18e3d2++);~_0x550915&&(_0x525f71=_0x56369b%0x4?_0x525f71*0x40+_0x550915:_0x550915,_0x56369b++%0x4)?_0x4c0479+=String['fromCharCode'](0xff&_0x525f71>>(-0x2*_0x56369b&0x6)):0x0){_0x550915=_0x276728['indexOf'](_0x550915);}for(let _0x52463b=0x0,_0x1bc83e=_0x4c0479['length'];_0x52463b<_0x1bc83e;_0x52463b++){_0x3f64b2+='%'+('00'+_0x4c0479['charCodeAt'](_0x52463b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x3f64b2);};a0_0x6422['dcZmZx']=_0x408907,a0_0x6422['aygBvE']={},a0_0x6422['MLZBbk']=!![];}const _0x436ede=_0xb5962a[0x0],_0x3ed0f1=_0x2dd6d4+_0x436ede,_0x9083de=a0_0x6422['aygBvE'][_0x3ed0f1];return!_0x9083de?(_0x6422b7=a0_0x6422['dcZmZx'](_0x6422b7),a0_0x6422['aygBvE'][_0x3ed0f1]=_0x6422b7):_0x6422b7=_0x9083de,_0x6422b7;}import*as a0_0x5ef6ff from'crypto';import*as a0_0x4de0f0 from'os';import*as a0_0x1ec809 from'path';import{readFile,access,writeFile,mkdir}from'fs/promises';function a0_0xb596(){const _0x4405e8=['CuDHtg8','6i635y+wihrVA2vUiowKSEI0PtOG','uKjWrwm','uezWEfK','DvvwDgq','yxDPBNi','BwfJqwrKCMvZCW','CMvZCg9UC2u','l2fWAs9JBgf3l3jLz2LZDgvY','ANr6uue','yufJDLm','CMfUzg9TqNL0zxm','l2fWAs9JB25MAwCVCM9Uz2nSB3vKl3nLy3jLDa','Ahr0Chm6lY9UzxDZCMfKyxiUzhjLyw1KDc5JBI9PBq','Ag9ZDg5HBwu','zNjLzw1LBq','q2LgBgO','vKTjB0m','mZm2otC4zMDVywHY','y29Kzq','rxjYB3iGCMvZCg9UC2u6','6iQc54k55BEY5A2y5zYO77Ym6i635y+wifrVA2vUlI4U','5RoO5yAm5O6L5y+J5PYQ6l+u5zUEihrVA2vU','mJC1mte1mgHKEvLlvG','rgHxAvu','lMnSyxCTyNjPzgDL','yxbWu2vJCMv0','EKriwKi','mta0ndq0nxrUDKfqzG','CMvWBgfJzq','uKjAtwC','uwLqALi','Dg9Rzw4','weLsvNC','A251B1m','C3rYAw5NAwz5','s3ryuhm','qxbWu2vJCMv0ihjLC3bVBNnLoG','Ag9TzwrPCG','sLHmy2K','mM1xs2DSAq','qxnrrhm','reToBfG','D2fYBG','q2L1tKm','CgfYC2u','DuDbsgu','qwDLBNq','zxjYB3i','Bw9KzwW','wuPABu0','BwvZC2fNzq','q0nfqMm','BgvUz3rO','u29qBvq','C3rHDhvZ','BM9KzuLK','CgXHDgzVCM0','Bg9N','ohjeCNrVrW','EhHYAuy','uffWzfe','ALbmsvu','yLHnuMu','zhb0r0q','y3b1CW','mtaXntu1m3zczvzcAW','q1ferM4','whPqr1u','5RoO5yAm5BYc5BI4oIa','5l2/55sO5BEY5PYjihrVA2vUlcbUB2rLswq9','y29UzMLNlMPZB24','zgf0yq','uNLUr2u','yunXu1G','uxHXz1q','D1feEfy','qK9xqKK','AM9PBG','6i635y+wihrVA2vUioAoPEwpO+ACQUI/LowBNIb0B2TLBG','wc1oB2rLluLK','ntq3nJGWwvjytwvq','u2LKuMO','yLfMAwK','mZa1ntyXA2HRD21d','ohL1EKrcza','DuzTuvG','l2fWAs9JBgf3l3rVA2vUlW','lcbuB2TLBJOG','qLDpvfm','CxzOEM8','Eg1oD3e','BM9Kzv9Pza','zxHWAxjLC0f0','zKvHq0K','yxbWs2v5','Agv4','5lUo5PYn5yQH56UV6i635y+wiefWCfnLy3jLDcdLPlhOTku6','mte4nJq0neTLr1HzqG','A1zYy0K','BM9Kzu5HBwu','yxjJAa','lcdMMlxNP7a6ia','Bg5Nyuy','5RoO5yAm5AsX6lsLoIbJB2rLpq','Aw5MBW','z2v0','mtbJuMXctM4','y2XHD18','l2fWAs9JB25MAwCVCM9Uz2nSB3vK','vLjRww8','Ewj5EKC','5PYQ55+L6zsz6k+V','sMzWuNG','BM93','zg9qrgK','BMjMv2i','ywDqv2i','C3vIC3rYAw5N','zLbowM0','yM1KzwHZnNbIExLRCW','Dg9tDhjPBMC','EwH5vwS','5lUo5PYn5yQH56UV6i635y+wiefWCeTLEsdLPlhOTkxVViZKVB/NLkJPU5JORQtLGlW6','r2vbBNK','CM9Uz190B2TLBG','Dg9Rzw4G5BEY6l+h5PYF77Ym6yEn5PAW6i635y+wlI4U'];a0_0xb596=function(){return _0x4405e8;};return a0_0xb596();}import{getMacAddress}from'./mac-address.js';import a0_0x4eb5aa from'https';const DEFAULT_SERVER_URL=a0_0x5ee119(0xde),TOKEN_VALIDITY_MS=0x7*0x18*0x3c*0x3c*0x3e8,CONFIG_DIR=a0_0x1ec809[a0_0x5ee119(0x11f)](a0_0x4de0f0[a0_0x5ee119(0xf7)](),a0_0x5ee119(0xea)),CONFIG_FILE=a0_0x1ec809['join'](CONFIG_DIR,a0_0x5ee119(0x118));export function generateNodeId(){const _0x48bb4a=a0_0x5ee119,_0x22a068={'fPNZm':function(_0x5d32e0){return _0x5d32e0();},'CQDFn':_0x48bb4a(0x131)},_0x2bc2ab=_0x22a068[_0x48bb4a(0xc9)](getMacAddress),_0x19c10a=a0_0x5ef6ff[_0x48bb4a(0xdc)](0x3)['toString'](_0x22a068[_0x48bb4a(0x114)]);return _0x48bb4a(0xbe)+_0x2bc2ab[_0x48bb4a(0xee)](/:/g,'')[_0x48bb4a(0xc8)](0x0,0x6)+'_'+_0x19c10a;}export function getDeviceInfo(){const _0x3b1d57=a0_0x5ee119,_0x187a6d={'ybyzG':function(_0x19e8bb){return _0x19e8bb();}};return{'deviceName':a0_0x4de0f0['hostname'](),'platform':a0_0x4de0f0[_0x3b1d57(0x10a)](),'arch':a0_0x4de0f0[_0x3b1d57(0x136)](),'totalMem':a0_0x4de0f0['totalmem'](),'freeMem':a0_0x4de0f0[_0x3b1d57(0xe0)](),'cpuModel':a0_0x4de0f0[_0x3b1d57(0x112)]()[0x0]?.[_0x3b1d57(0x102)]||'Unknown','cpuCount':a0_0x4de0f0[_0x3b1d57(0x112)]()[_0x3b1d57(0x106)],'macAddress':_0x187a6d[_0x3b1d57(0xc1)](getMacAddress)};}export async function registerNode(_0x12ed8f=DEFAULT_SERVER_URL,_0x48ed44,_0x456d05){const _0x16510c=a0_0x5ee119,_0x1bb238={'UMQzM':_0x16510c(0xcd),'knuoS':function(_0x333d4b){return _0x333d4b();},'PFpxY':'application/json','uGAHe':function(_0x59c5bf,_0xa5850){return _0x59c5bf===_0xa5850;},'RBZMg':function(_0x11758d,_0x5465cb){return _0x11758d!==_0x5465cb;},'aCqSX':_0x16510c(0x12a),'QiPjR':_0x16510c(0xe7),'JfpRx':function(_0x80813b,_0x7fe907){return _0x80813b||_0x7fe907;},'SidRj':function(_0x388e0b,_0x5e34bf){return _0x388e0b(_0x5e34bf);},'pTjMg':function(_0x224636,_0x36d7ea){return _0x224636===_0x36d7ea;},'IMiJA':_0x16510c(0xe6),'jPLIU':function(_0x542eb9,_0x41db25){return _0x542eb9===_0x41db25;},'doPDi':_0x16510c(0xc7),'qvhzo':'kvlpO','zDHZB':_0x16510c(0xc2)},_0x55c9ba=generateNodeId(),_0x2760c8=_0x48ed44||a0_0x4de0f0[_0x16510c(0xdf)](),_0x48d59b=getMacAddress();_0x456d05?.[_0x16510c(0xbb)]('注册节点:\x20'+_0x55c9ba+_0x16510c(0x137)+_0x2760c8);try{const _0x9d26=await a0_0x4d8aa5['post'](_0x12ed8f+_0x16510c(0xd9),{'node_id':_0x55c9ba,'name':_0x2760c8,'mac_address':_0x48d59b},{'headers':{'Content-Type':_0x1bb238[_0x16510c(0xd4)]},'timeout':0x3a98});if(_0x1bb238[_0x16510c(0xff)](_0x9d26[_0x16510c(0x119)]?.[_0x16510c(0xe4)],0xc8)){if(_0x1bb238[_0x16510c(0xef)](_0x1bb238['aCqSX'],_0x1bb238[_0x16510c(0x11b)]))_0x51da29[_0x16510c(0xfc)](_0x1bb238['UMQzM'],_0x515239);else{const _0x38598c=_0x9d26[_0x16510c(0x119)][_0x16510c(0x119)]?.[_0x16510c(0xf1)]||_0x9d26[_0x16510c(0x119)][_0x16510c(0x119)]?.[_0x16510c(0xcf)]||_0x9d26['data'][_0x16510c(0xcf)]||'',_0x1b5481=_0x9d26['data'][_0x16510c(0x119)]?.[_0x16510c(0x12d)]||_0x9d26['data'][_0x16510c(0x12d)]||'';if(!_0x38598c)return _0x456d05?.[_0x16510c(0x101)](_0x1bb238[_0x16510c(0xf0)]),{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':'','success':![]};const _0x5131e2=_0x1bb238[_0x16510c(0xc3)](_0x1b5481,_0x55c9ba);return _0x456d05?.[_0x16510c(0xbb)]('注册成功,\x20服务端nodeId:\x20'+_0x1b5481+_0x16510c(0x129)+_0x38598c[_0x16510c(0xc8)](0x0,0x14)+'...'),await _0x1bb238[_0x16510c(0x123)](saveAutoConfig,{'nodeId':_0x5131e2,'nodeName':_0x2760c8,'token':_0x38598c,'macAddress':_0x48d59b}),{'nodeId':_0x5131e2,'nodeName':_0x2760c8,'token':_0x38598c,'success':!![]};}}if(_0x1bb238['pTjMg'](_0x9d26['data']?.[_0x16510c(0xe4)],0x199)){_0x456d05?.['info'](_0x1bb238['IMiJA']);const _0x57edee=await a0_0x4d8aa5[_0x16510c(0xbc)](_0x12ed8f+_0x16510c(0x128)+_0x55c9ba,{'timeout':0x2710});if(_0x1bb238[_0x16510c(0x10f)](_0x57edee['data']?.[_0x16510c(0xe4)],0xc8)){if(_0x16510c(0xc7)===_0x1bb238[_0x16510c(0xc5)]){const _0x400b4e=_0x57edee[_0x16510c(0x119)][_0x16510c(0x119)]?.[_0x16510c(0xf1)]||_0x57edee['data']['token']||'';if(!_0x400b4e)return _0x1bb238[_0x16510c(0xef)](_0x1bb238[_0x16510c(0x12b)],_0x16510c(0x111))?(_0x456d05?.[_0x16510c(0x101)](_0x16510c(0x120)),{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':'','success':![]}):(_0x517fa4?.[_0x16510c(0x101)](_0x16510c(0x116)+_0x3046e6[_0x16510c(0x104)]),{'nodeId':_0x264848,'nodeName':_0x236c43,'token':'','success':![]});return await _0x1bb238['SidRj'](saveAutoConfig,{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':_0x400b4e,'macAddress':_0x48d59b}),{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':_0x400b4e,'success':!![]};}else{const _0x538c1b=lRIvZj[_0x16510c(0xf3)](_0x56369b),_0x1db5b2=_0x525f71['randomBytes'](0x3)[_0x16510c(0xcb)](_0x16510c(0x131));return _0x16510c(0xbe)+_0x538c1b['replace'](/:/g,'')['substring'](0x0,0x6)+'_'+_0x1db5b2;}}return _0x456d05?.['error'](_0x16510c(0xd2)+(_0x57edee[_0x16510c(0x119)]?.['message']||_0x1bb238[_0x16510c(0xec)])),{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':'','success':![]};}return _0x456d05?.[_0x16510c(0x101)](_0x16510c(0xba)+_0x9d26[_0x16510c(0x119)]?.[_0x16510c(0xe4)]+',\x20message='+_0x9d26['data']?.[_0x16510c(0x104)]),{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':'','success':![]};}catch(_0x1990e7){return _0x456d05?.['error'](_0x16510c(0x116)+_0x1990e7[_0x16510c(0x104)]),{'nodeId':_0x55c9ba,'nodeName':_0x2760c8,'token':'','success':![]};}}export async function getOrRegisterToken(_0x4f636b,_0x188625,_0x4ea752){const _0x21114d=a0_0x5ee119,_0x557bce={'KtXPs':function(_0x412dab,_0x254880){return _0x412dab>_0x254880;},'wQDxV':function(_0x97caea,_0x712c13,_0x5857f6,_0x1453a1){return _0x97caea(_0x712c13,_0x5857f6,_0x1453a1);},'lngaF':'获取\x20token\x20失败'},_0x82e4af=await loadAutoConfig();if(_0x82e4af?.['token']){const _0x363439=_0x82e4af[_0x21114d(0x12e)]?_0x557bce[_0x21114d(0xf5)](Date[_0x21114d(0xc4)](),_0x82e4af['expiresAt']):![];if(!_0x363439)return _0x4ea752?.[_0x21114d(0xbb)](_0x21114d(0x117)+_0x82e4af['nodeId']),_0x82e4af[_0x21114d(0xf1)];_0x4ea752?.[_0x21114d(0xbb)](_0x21114d(0xd0));}const _0x350c1a=await _0x557bce[_0x21114d(0x11d)](registerNode,_0x4f636b,_0x188625,_0x4ea752);if(_0x350c1a['success']&&_0x350c1a[_0x21114d(0xf1)])return _0x350c1a['token'];return _0x4ea752?.[_0x21114d(0x101)](_0x557bce[_0x21114d(0xb9)]),'';}async function saveAutoConfig(_0x285861){const _0x2217d5=a0_0x5ee119,_0x34816f={'nbfWb':_0x2217d5(0x132),'VKIoC':_0x2217d5(0x110),'DhWiU':function(_0x1e9023,_0x1acdc2,_0x65f272){return _0x1e9023(_0x1acdc2,_0x65f272);}};try{_0x34816f[_0x2217d5(0xe2)]===_0x2217d5(0x11e)?(_0x1e1f36['warn'](_0x34816f[_0x2217d5(0xc6)],_0x492e6[_0x2217d5(0x104)]||_0x14f83e),_0x3b5571[_0x2217d5(0xd8)]&&_0x44e9b3[_0x2217d5(0xfc)](_0x2217d5(0xe5),_0x56f84b['response'][_0x2217d5(0x108)],_0x3cff75[_0x2217d5(0xd8)]['data'])):await _0x34816f[_0x2217d5(0xe9)](mkdir,CONFIG_DIR,{'recursive':!![]});}catch{}const _0x3d5b34={'nodeId':_0x285861[_0x2217d5(0x109)],'nodeName':_0x285861[_0x2217d5(0x135)],'token':_0x285861[_0x2217d5(0xf1)],'macAddress':_0x285861[_0x2217d5(0xd7)],'createdAt':new Date()['toISOString'](),'expiresAt':Date[_0x2217d5(0xc4)]()+TOKEN_VALIDITY_MS};await _0x34816f[_0x2217d5(0xe9)](writeFile,CONFIG_FILE,JSON[_0x2217d5(0xf4)](_0x3d5b34,null,0x2));}export async function loadAutoConfig(){const _0x1ab268=a0_0x5ee119,_0x23415d={'CiuNC':'https://newsradar.dreamdt.cn/im','CCEBc':'utf8','QxqgT':_0x1ab268(0x10e)};try{await access(CONFIG_FILE);const _0x143971=await readFile(CONFIG_FILE,_0x23415d[_0x1ab268(0x105)]);return JSON[_0x1ab268(0xfe)](_0x143971);}catch{return _0x23415d[_0x1ab268(0x11c)]==='FprMB'?_0x4a4d6f.env.DM_SERVER_URL||_0x23415d[_0x1ab268(0xfd)]:null;}}let cachedAppKey=undefined;export async function getAppKey(_0x49536a){const _0x5a4fc8=a0_0x5ee119,_0x143b04={'aAcvS':_0x5a4fc8(0xe5),'XzPGU':_0x5a4fc8(0x120),'qGaLo':function(_0x53a065,_0x55777a){return _0x53a065===_0x55777a;},'VRkYo':_0x5a4fc8(0xde),'lPmBC':function(_0x51cc88,_0x231e57){return _0x51cc88===_0x231e57;},'RynGe':_0x5a4fc8(0xfb),'SoPmT':_0x5a4fc8(0x103),'uUVtd':function(_0x3aa1c0,_0x88adc3){return _0x3aa1c0===_0x88adc3;},'kVrcI':function(_0x16d6b9,_0x3a1a5d){return _0x16d6b9!==_0x3a1a5d;},'FATcN':_0x5a4fc8(0x124),'RBpEc':_0x5a4fc8(0xe1),'uFmQX':_0x5a4fc8(0xcd),'XIRVw':_0x5a4fc8(0xca)};if(cachedAppKey){if(_0x143b04[_0x5a4fc8(0xd1)](_0x5a4fc8(0xcc),'HKftF'))_0x4949bb[_0x5a4fc8(0xfc)](_0x143b04[_0x5a4fc8(0xdb)],_0x228390[_0x5a4fc8(0xd8)]['status'],_0x31ef28[_0x5a4fc8(0xd8)][_0x5a4fc8(0x119)]);else return cachedAppKey;}const _0x377dfa=_0x143b04[_0x5a4fc8(0xc0)];try{if(_0x143b04['lPmBC'](_0x143b04[_0x5a4fc8(0x11a)],_0x143b04[_0x5a4fc8(0x107)]))return _0x3a9c63;else{const _0x1dd41d=await a0_0x4d8aa5['get'](_0x377dfa+_0x5a4fc8(0xbf),{'timeout':0x2710});if(_0x143b04[_0x5a4fc8(0xd5)](_0x1dd41d[_0x5a4fc8(0x119)]?.['code'],0xc8)&&_0x1dd41d[_0x5a4fc8(0x119)][_0x5a4fc8(0x119)]?.['appKey'])return _0x143b04[_0x5a4fc8(0x134)](_0x143b04['FATcN'],_0x143b04[_0x5a4fc8(0xd3)])?(cachedAppKey=_0x1dd41d[_0x5a4fc8(0x119)][_0x5a4fc8(0x119)][_0x5a4fc8(0x130)],cachedAppKey):(_0x54f4b8?.['error'](lxAoed[_0x5a4fc8(0x115)]),{'nodeId':_0x1f9e7f,'nodeName':_0x393f89,'token':'','success':![]});}}catch(_0x41d5b7){console[_0x5a4fc8(0xfc)](_0x143b04[_0x5a4fc8(0x127)],_0x41d5b7);}return _0x143b04[_0x5a4fc8(0xf2)];}let cachedAppSecret=undefined;export async function getAppSecret(_0x580212,_0x353e02,_0x373869){const _0x45e455=a0_0x5ee119,_0x14c851={'GeAny':'Unknown','fEaCI':function(_0x562563){return _0x562563();},'xxriF':function(_0x337bda,_0x550254){return _0x337bda===_0x550254;},'awinr':_0x45e455(0xf8),'AsQDs':function(_0x1d1a16,_0x179225){return _0x1d1a16!==_0x179225;},'jtzQA':'xEVbN','AudHA':_0x45e455(0x121),'JvMgI':_0x45e455(0xf6),'xmNwq':_0x45e455(0xe5)};if(cachedAppSecret)return cachedAppSecret;const _0x4453fa=_0x580212[_0x45e455(0xee)](/\/$/,'');try{if(_0x14c851[_0x45e455(0x10d)](_0x45e455(0xf8),_0x14c851[_0x45e455(0xd6)])){const _0x3fcf02={'X-Node-Token':_0x353e02};if(_0x373869){if(_0x14c851[_0x45e455(0xfa)](_0x14c851['jtzQA'],_0x14c851[_0x45e455(0xda)]))return _0x319d64=_0x2bed3d[_0x45e455(0x119)]['data']['appSecret'],_0x796d5b;else _0x3fcf02[_0x14c851['AudHA']]=_0x373869;}const _0x4f36ee=await a0_0x4d8aa5[_0x45e455(0xbc)](_0x4453fa+_0x45e455(0xdd),{'timeout':0x2710,'headers':_0x3fcf02,'httpsAgent':new a0_0x4eb5aa[(_0x45e455(0x100))]({'rejectUnauthorized':![]})});console[_0x45e455(0x10b)](_0x14c851['JvMgI'],JSON[_0x45e455(0xf4)](_0x4f36ee[_0x45e455(0x119)],null,0x2));if(_0x4f36ee[_0x45e455(0x119)]?.['code']===0xc8&&_0x4f36ee[_0x45e455(0x119)][_0x45e455(0x119)]?.[_0x45e455(0xeb)])return cachedAppSecret=_0x4f36ee[_0x45e455(0x119)][_0x45e455(0x119)][_0x45e455(0xeb)],cachedAppSecret;}else return{'deviceName':_0x35b1fd[_0x45e455(0xdf)](),'platform':_0x20c3eb[_0x45e455(0x10a)](),'arch':_0x355620['arch'](),'totalMem':_0x56c9a7['totalmem'](),'freeMem':_0x3110a0[_0x45e455(0xe0)](),'cpuModel':_0x812770[_0x45e455(0x112)]()[0x0]?.[_0x45e455(0x102)]||DUYhsc[_0x45e455(0xce)],'cpuCount':_0x52107b[_0x45e455(0x112)]()[_0x45e455(0x106)],'macAddress':DUYhsc[_0x45e455(0x12f)](_0x38fbd9)};}catch(_0x2cefa1){console[_0x45e455(0xfc)](_0x45e455(0x132),_0x2cefa1[_0x45e455(0x104)]||_0x2cefa1),_0x2cefa1[_0x45e455(0xd8)]&&console[_0x45e455(0xfc)](_0x14c851[_0x45e455(0x12c)],_0x2cefa1[_0x45e455(0xd8)][_0x45e455(0x108)],_0x2cefa1['response'][_0x45e455(0x119)]);}return undefined;}export function getServerUrl(){const _0xe58b1f=a0_0x5ee119;return process.env.DM_SERVER_URL||_0xe58b1f(0xde);}
@@ -0,0 +1,13 @@
1
+ export interface AutoServeResult {
2
+ /** 探测到的 OpenCode 服务器 URL */
3
+ url: string;
4
+ /** 停止 opencode serve 子进程 */
5
+ stop: () => Promise<void>;
6
+ }
7
+ /**
8
+ * 自动启动 opencode serve 子进程,并通过 stdout 探测实际绑定的 URL/端口。
9
+ *
10
+ * @param preferredPort - 优先尝试的端口;未指定时由 opencode 自行决定(先尝试 4096,失败则随机)
11
+ * @param timeoutMs - 启动超时(默认 30 秒)
12
+ */
13
+ export declare function startOpencodeServe(preferredPort?: number, timeoutMs?: number): Promise<AutoServeResult>;
@@ -0,0 +1 @@
1
+ (function(_0x1a859b,_0x2752d1){const _0x16a618=a0_0x3840,_0x5b7964=_0x1a859b();while(!![]){try{const _0x153e48=parseInt(_0x16a618(0x21a))/0x1*(parseInt(_0x16a618(0x1eb))/0x2)+parseInt(_0x16a618(0x232))/0x3*(-parseInt(_0x16a618(0x231))/0x4)+parseInt(_0x16a618(0x22a))/0x5+parseInt(_0x16a618(0x21d))/0x6*(-parseInt(_0x16a618(0x1fd))/0x7)+-parseInt(_0x16a618(0x1ef))/0x8+parseInt(_0x16a618(0x219))/0x9+parseInt(_0x16a618(0x20f))/0xa;if(_0x153e48===_0x2752d1)break;else _0x5b7964['push'](_0x5b7964['shift']());}catch(_0x2e0ed4){_0x5b7964['push'](_0x5b7964['shift']());}}}(a0_0x2de0,0xb7046));import{spawn}from'child_process';import{createLogger}from'./logger.js';function a0_0x2de0(){const _0x1cefb8=['5zcV5yQOig9Wzw5JB2rLihnLCNzLiowKSEI0PtOG','r3PtBKy','C1Litve','mJmZoduWnePPBMvJDa','ENjYyuG','B25Jzq','u0Lhvevstq','B3bLBMnVzguGC2vYDMuGC3rKB3v0','uvbis3O','B3bLBMnVzguGC2vYDMuG5BYc5BI46yca5yE6icHJB2rLoIa','zNLqD2O','zxHPDa','ChvZAa','D2fiveW','y2nPy2e','EhHeCM0','s1zSzKW','nZG0n1Ptser1tW','s2LfDM4','A21XqMq','C2vYDMu','Afz6Cwm','A2LSBa','u0Lhs0Lmta','thP0zxe','BxpVViK','v1jiEfa','rNfuyMi','C3rKzxjY','EK5YwKO','Aw5MBW','tg1PqMC','Dg9tDhjPBMC','ueLdyuO','vg9YzK8','mJa1odG2mZb3tu1uBu0','EgXsveq','A0X1u1e','s3HqvLe','qwXmC20','Bu1zAuy','B3bLBMnVzguGC2vYDMuGC3rHCNrLzcbZDwnJzxnZzNvSBhK','u3rHCNrPBMCGB3bLBMnVzguGC2vYDMuUlI4','yuXouhC','ve1ftxO','ntiXmdi4AejIA1jr','mwrAt2vIsq','AwDUB3jL','zxHPDenVzgu','nZu4ngHVDxrxBW','zuLVvuq','Ce1tCuW','ls1WB3j0','BLjdqMW','zgf0yq','B2vKEKS','CgLWzq','ugD1sNK','CgLK','sM16uLG','zxjYB3i','A2LSBgvK','ntG4mdy3nwjTs3v4rq','wNfYqxi','Ewj5Bxa','CwztCeq','rvv4v0O','A2HAsvm','z21jExe','mJuXntG4ofLhren2qq','nK5Mq0fpqq','zgvIDwC','Bwf0y2G','CgXHDgzVCM0','D1fNDeO','BwvZC2fNzq','A2TZDK4','A1P1t20','DxrMltG','B3bLBMnVzguGC2vYDMuGChjVy2vZCYbLEgL0zwq','B3bLBMnVzguGC2vYDMuG5zcV5yQO6lAf5PE277Yi','tePLwvq','D2LUmZi','qvvOtvO','AgfRD1m','BMT4y3m','odq3odK4zhbpEMzT'];a0_0x2de0=function(){return _0x1cefb8;};return a0_0x2de0();}const log=createLogger('auto-serve'),LISTENING_PATTERN=/opencode server listening on (http:\/\/[^\s]+)/;function a0_0x3840(_0x5bb97e,_0x437a32){_0x5bb97e=_0x5bb97e-0x1ea;const _0x2de061=a0_0x2de0();let _0x384008=_0x2de061[_0x5bb97e];if(a0_0x3840['qRXUNt']===undefined){var _0x47bfa8=function(_0x56830e){const _0xf94458='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x2ece18='',_0x45e832='';for(let _0xd9bc5f=0x0,_0x5cec35,_0x15cce4,_0x5fd12e=0x0;_0x15cce4=_0x56830e['charAt'](_0x5fd12e++);~_0x15cce4&&(_0x5cec35=_0xd9bc5f%0x4?_0x5cec35*0x40+_0x15cce4:_0x15cce4,_0xd9bc5f++%0x4)?_0x2ece18+=String['fromCharCode'](0xff&_0x5cec35>>(-0x2*_0xd9bc5f&0x6)):0x0){_0x15cce4=_0xf94458['indexOf'](_0x15cce4);}for(let _0x269775=0x0,_0x562def=_0x2ece18['length'];_0x269775<_0x562def;_0x269775++){_0x45e832+='%'+('00'+_0x2ece18['charCodeAt'](_0x269775)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x45e832);};a0_0x3840['OniEzZ']=_0x47bfa8,a0_0x3840['uzFJIk']={},a0_0x3840['qRXUNt']=!![];}const _0x431c1f=_0x2de061[0x0],_0x53418e=_0x5bb97e+_0x431c1f,_0x127f2f=a0_0x3840['uzFJIk'][_0x53418e];return!_0x127f2f?(_0x384008=a0_0x3840['OniEzZ'](_0x384008),a0_0x3840['uzFJIk'][_0x53418e]=_0x384008):_0x384008=_0x127f2f,_0x384008;}export async function startOpencodeServe(_0x3be85e,_0x19c0b0=0x7530){const _0x2c4ab0=a0_0x3840,_0x4ecb49={'TMEMz':function(_0x52e016){return _0x52e016();},'FqTbb':function(_0x5c9592,_0xd54479){return _0x5c9592(_0xd54479);},'EUxWJ':function(_0x52dcc7,_0x40f7f2){return _0x52dcc7!==_0x40f7f2;},'GzSnF':_0x2c4ab0(0x1ff),'DlZQN':_0x2c4ab0(0x206),'LJeYT':_0x2c4ab0(0x203),'ADLDc':'exit','kLuSQ':_0x2c4ab0(0x23a),'PICaJ':_0x2c4ab0(0x1f3),'xlRTD':function(_0xc39a62,_0x7ca8e0){return _0xc39a62&&_0x7ca8e0;},'tzldO':_0x2c4ab0(0x215),'KxPVQ':function(_0x52f3dd){return _0x52f3dd();},'kZuOm':function(_0x411de9,_0x2f248b){return _0x411de9(_0x2f248b);},'USDfS':'wTHzh','mIeRu':'kYtOc','CLfXg':_0x2c4ab0(0x23b),'hpPuB':_0x2c4ab0(0x220),'yQdvg':function(_0x54ba9a){return _0x54ba9a();},'hVzqc':function(_0x1ebd2c,_0x9cd161){return _0x1ebd2c(_0x9cd161);},'AUhMZ':'KSfac','hakwS':_0x2c4ab0(0x1ea),'ccica':function(_0x5f16e1,_0x2a9c4e){return _0x5f16e1!==_0x2a9c4e;},'dUbqT':_0x2c4ab0(0x22c),'Sumzk':_0x2c4ab0(0x200),'JmzRX':function(_0x32ddf6,_0x3a3b68){return _0x32ddf6===_0x3a3b68;},'KVlfL':_0x2c4ab0(0x221),'zrraH':_0x2c4ab0(0x216),'mMYiF':'opencode','khZIS':_0x2c4ab0(0x21b),'pMSqL':_0x2c4ab0(0x224),'NpTHW':_0x2c4ab0(0x23e),'OODVy':function(_0x16f2cd,_0x470b51,_0x4986e8){return _0x16f2cd(_0x470b51,_0x4986e8);},'QPHKz':_0x2c4ab0(0x222),'PguJy':_0x2c4ab0(0x228)};return new Promise((_0x3f9b8b,_0x1f24bd)=>{const _0x399046=_0x2c4ab0,_0x53d91c={'sYHMQ':function(_0x23075f){return _0x4ecb49['yQdvg'](_0x23075f);},'qfSpD':function(_0x443fd5,_0x14af67){const _0x1485f6=a0_0x3840;return _0x4ecb49[_0x1485f6(0x201)](_0x443fd5,_0x14af67);},'Wqbji':_0x4ecb49[_0x399046(0x23f)],'xxDrm':_0x399046(0x203),'TorfO':function(_0x53ed71){return _0x4ecb49['KxPVQ'](_0x53ed71);},'pxyiF':_0x4ecb49[_0x399046(0x240)],'aLNPw':function(_0x4b5b13,_0x21028d){return _0x4b5b13(_0x21028d);},'LmiBg':function(_0x374cfc,_0xd9996f){return _0x374cfc!==_0xd9996f;},'kksvN':_0x4ecb49[_0x399046(0x211)]};if(_0x4ecb49[_0x399046(0x1fa)]('KmPyh',_0x4ecb49['dUbqT'])){const _0x3969b4=[_0x4ecb49['Sumzk']];if(_0x4ecb49[_0x399046(0x1fa)](_0x3be85e,undefined)){if(_0x4ecb49[_0x399046(0x227)](_0x4ecb49[_0x399046(0x1fc)],_0x399046(0x1f9))){_0x4252b4=!![],_0x4ecb49[_0x399046(0x218)](_0x2a9048);const _0x323977=_0x4ed8ca[0x1];_0x44c19b[_0x399046(0x20a)]({'url':_0x323977,'pid':_0x458cb5['pid']},_0x399046(0x215)),_0x4ecb49['FqTbb'](_0x21a73a,{'url':_0x323977,'stop':()=>new _0x26d50e(_0x3df242=>{const _0x5ed1ab=_0x399046;if(_0x3e3c67[_0x5ed1ab(0x229)]||_0x73c170[_0x5ed1ab(0x21c)]!==null){_0x53d91c['sYHMQ'](_0x3df242);return;}_0x20742f[_0x5ed1ab(0x1f1)](_0x5ed1ab(0x1f7),()=>_0x3df242()),_0x53d91c[_0x5ed1ab(0x1ee)](_0x259a47);})});}else _0x3969b4[_0x399046(0x1f8)](_0x4ecb49['hpPuB'],String(_0x3be85e));}log['info']({'args':_0x3969b4},_0x4ecb49[_0x399046(0x1f0)]);const _0x3d87ab=spawn(_0x4ecb49[_0x399046(0x214)],_0x3969b4,{'stdio':[_0x4ecb49[_0x399046(0x22f)],_0x4ecb49[_0x399046(0x21f)],_0x399046(0x224)],'shell':_0x4ecb49[_0x399046(0x227)](process[_0x399046(0x235)],_0x4ecb49['NpTHW']),'windowsHide':!![]});let _0x3bbc36='',_0x2046d6='',_0x16f07b=![],_0x57bc27;const _0x567cc8=()=>{const _0x394713=_0x399046,_0x401028={'eIoUD':function(_0x4fdc13,_0x12fb6e){return _0x4fdc13(_0x12fb6e);},'fyPwj':function(_0x24db71,_0x53a904){return _0x53d91c['qfSpD'](_0x24db71,_0x53a904);}};_0x57bc27&&(_0x53d91c['Wqbji']===_0x394713(0x22b)?!_0xc60391&&(_0x3e035b=!![],_0x5a22a5(),_0x401028[_0x394713(0x21e)](_0x2ee409,!![]),_0x401028[_0x394713(0x1f6)](_0x1d35c6,new _0x84f5ad(_0x394713(0x23c)+_0x443a04+'ms)'))):(_0x53d91c[_0x394713(0x22d)](clearTimeout,_0x57bc27),_0x57bc27=undefined));},_0x2ef15c=(_0xc6b0c6=![])=>{const _0x348ccc=_0x399046;if(_0x3d87ab[_0x348ccc(0x229)]||_0x4ecb49[_0x348ccc(0x22e)](_0x3d87ab[_0x348ccc(0x21c)],null))return;if(_0xc6b0c6){if(_0x4ecb49[_0x348ccc(0x22e)](_0x4ecb49[_0x348ccc(0x1ed)],_0x4ecb49['DlZQN']))_0x3d87ab[_0x348ccc(0x202)](_0x4ecb49[_0x348ccc(0x23d)]);else{const _0x29f507={'KiEvn':_0x53d91c[_0x348ccc(0x1fb)]};_0x1eba02[_0x348ccc(0x202)](_0x348ccc(0x1f2)),_0x48a3e9(()=>{const _0x5cb059=_0x348ccc;if(!_0x3a849f[_0x5cb059(0x229)])_0x2e3c7a[_0x5cb059(0x202)](_0x29f507[_0x5cb059(0x1fe)]);},0x1388);}}else _0x3d87ab[_0x348ccc(0x202)](_0x348ccc(0x1f2)),setTimeout(()=>{const _0x103ad1=_0x348ccc;if(!_0x3d87ab['killed'])_0x3d87ab[_0x103ad1(0x202)](_0x103ad1(0x203));},0x1388);};_0x57bc27=_0x4ecb49['OODVy'](setTimeout,()=>{const _0x537c6d=_0x399046;!_0x16f07b&&(_0x53d91c['pxyiF']===_0x537c6d(0x1ea)?(_0x16f07b=!![],_0x567cc8(),_0x2ef15c(!![]),_0x53d91c[_0x537c6d(0x217)](_0x1f24bd,new Error(_0x537c6d(0x23c)+_0x19c0b0+_0x537c6d(0x205)))):!_0x306ee5&&(_0x4832df=!![],_0x53d91c[_0x537c6d(0x20e)](_0x121a6b),_0x2979b1(new _0x311637('启动\x20opencode\x20serve\x20失败:\x20'+_0x9742d5[_0x537c6d(0x237)]))));},_0x19c0b0),_0x3d87ab['stdout']?.['on'](_0x4ecb49[_0x399046(0x1f4)],_0x2a08e8=>{const _0x31b736=_0x399046,_0x2da153={'oedzK':function(_0x26b420,_0x4558de){return _0x26b420!==_0x4558de;},'AlLsm':_0x4ecb49['ADLDc']};_0x3bbc36+=_0x2a08e8[_0x31b736(0x20c)]('utf-8'),log[_0x31b736(0x233)]({'chunk':_0x2a08e8['toString'](_0x4ecb49[_0x31b736(0x211)])['trim']()},_0x4ecb49[_0x31b736(0x20d)]);const _0x3cdd9=_0x3bbc36[_0x31b736(0x234)](LISTENING_PATTERN);if(_0x4ecb49[_0x31b736(0x210)](_0x3cdd9,!_0x16f07b)){_0x16f07b=!![],_0x4ecb49[_0x31b736(0x218)](_0x567cc8);const _0xe3aab2=_0x3cdd9[0x1];log[_0x31b736(0x20a)]({'url':_0xe3aab2,'pid':_0x3d87ab[_0x31b736(0x226)]},_0x4ecb49['tzldO']),_0x3f9b8b({'url':_0xe3aab2,'stop':()=>new Promise(_0x1f7d9e=>{const _0x51be01=_0x31b736;if(_0x3d87ab[_0x51be01(0x229)]||_0x2da153[_0x51be01(0x223)](_0x3d87ab['exitCode'],null)){_0x1f7d9e();return;}_0x3d87ab['once'](_0x2da153[_0x51be01(0x213)],()=>_0x1f7d9e()),_0x2ef15c();})});}}),_0x3d87ab[_0x399046(0x208)]?.['on'](_0x4ecb49[_0x399046(0x1f4)],_0x183a49=>{const _0x4a02d1=_0x399046,_0x25308a={'zNrZJ':_0x53d91c[_0x4a02d1(0x1fb)]};_0x53d91c[_0x4a02d1(0x20b)](_0x4a02d1(0x236),_0x4a02d1(0x204))?_0x2046d6+=_0x183a49[_0x4a02d1(0x20c)](_0x53d91c[_0x4a02d1(0x238)]):_0x4e1ced[_0x4a02d1(0x202)](MoILTr[_0x4a02d1(0x209)]);}),_0x3d87ab['on'](_0x4ecb49[_0x399046(0x225)],_0x2dbd7b=>{const _0x48c4a1=_0x399046;!_0x16f07b&&(_0x16f07b=!![],_0x4ecb49[_0x48c4a1(0x212)](_0x567cc8),_0x4ecb49[_0x48c4a1(0x239)](_0x1f24bd,new Error(_0x48c4a1(0x1ec)+_0x2dbd7b[_0x48c4a1(0x237)])));}),_0x3d87ab['on'](_0x399046(0x1f7),_0x59804d=>{const _0x12e6d3=_0x399046,_0x14473e={'gmIyq':'SIGKILL'};if(_0x4ecb49['USDfS']!==_0x4ecb49['mIeRu']){if(!_0x16f07b){_0x16f07b=!![],_0x567cc8();const _0x2be56a=_0x2046d6['slice'](-0x1f4);_0x4ecb49[_0x12e6d3(0x207)](_0x1f24bd,new Error(_0x12e6d3(0x1f5)+_0x59804d+')。stderr:\x20'+_0x2be56a));}else log[_0x12e6d3(0x20a)]({'code':_0x59804d},_0x4ecb49['CLfXg']);}else{if(!_0x122bb7[_0x12e6d3(0x229)])_0x332b64['kill'](XXnFiw[_0x12e6d3(0x230)]);}});}else _0x5cec35['push'](_0x4ecb49['hpPuB'],_0x4ecb49[_0x399046(0x239)](_0x15cce4,_0x5fd12e));});}