@quukk/opencode-clawmessenger 0.3.0 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +71 -623
- package/bin/opencode-clawmessenger +2 -2
- package/bin/opencode-clawmessenger-setup +5 -5
- package/dist/cli.d.ts +0 -1
- package/dist/cli.js +1 -288
- package/dist/core/auto-register.d.ts +0 -1
- package/dist/core/auto-register.js +1 -174
- package/dist/core/auto-serve.d.ts +13 -0
- package/dist/core/auto-serve.js +1 -0
- package/dist/core/config.d.ts +2 -3
- package/dist/core/config.js +1 -80
- package/dist/core/daemon.d.ts +0 -1
- package/dist/core/daemon.js +1 -77
- package/dist/core/dedup.d.ts +0 -1
- package/dist/core/dedup.js +1 -25
- package/dist/core/hook-manager.d.ts +0 -1
- package/dist/core/hook-manager.js +1 -33
- package/dist/core/logger.d.ts +0 -1
- package/dist/core/logger.js +1 -49
- package/dist/core/mac-address.d.ts +0 -1
- package/dist/core/mac-address.js +1 -43
- package/dist/core/message-handler.d.ts +0 -1
- package/dist/core/message-handler.js +1 -988
- package/dist/core/ops-assistant.d.ts +0 -1
- package/dist/core/ops-assistant.js +1 -270
- package/dist/core/qr-crypto.d.ts +0 -1
- package/dist/core/qr-crypto.js +1 -66
- package/dist/core/session-manager.d.ts +0 -1
- package/dist/core/session-manager.js +1 -144
- package/dist/core/types.d.ts +1 -2
- package/dist/core/types.js +1 -26
- package/dist/index.d.ts +0 -1
- package/dist/index.js +1 -16
- package/dist/openclaw/client.d.ts +0 -1
- package/dist/openclaw/client.js +1 -494
- package/dist/opencode/client.d.ts +0 -1
- package/dist/opencode/client.js +1 -279
- package/dist/opencode/event-handler.d.ts +0 -1
- package/dist/opencode/event-handler.js +1 -467
- package/dist/plugin.d.ts +0 -1
- package/dist/plugin.js +1 -148
- package/dist/rongcloud/client.d.ts +0 -1
- package/dist/rongcloud/client.js +1 -292
- package/dist/rongcloud/env-polyfill.d.ts +0 -1
- package/dist/rongcloud/env-polyfill.js +1 -107
- package/dist/rongcloud/server-api.d.ts +0 -1
- package/dist/rongcloud/server-api.js +1 -157
- package/dist/standalone.d.ts +0 -1
- package/dist/standalone.js +1 -229
- package/dist/types/plugin.d.ts +0 -1
- package/dist/types/plugin.js +1 -2
- package/dist/websocket/client.d.ts +0 -1
- package/dist/websocket/client.js +1 -88
- package/dist/websocket/server-client.d.ts +0 -1
- package/dist/websocket/server-client.js +1 -98
- package/package.json +83 -81
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/core/auto-register.d.ts.map +0 -1
- package/dist/core/auto-register.js.map +0 -1
- package/dist/core/config.d.ts.map +0 -1
- package/dist/core/config.js.map +0 -1
- package/dist/core/daemon.d.ts.map +0 -1
- package/dist/core/daemon.js.map +0 -1
- package/dist/core/dedup.d.ts.map +0 -1
- package/dist/core/dedup.js.map +0 -1
- package/dist/core/hook-manager.d.ts.map +0 -1
- package/dist/core/hook-manager.js.map +0 -1
- package/dist/core/logger.d.ts.map +0 -1
- package/dist/core/logger.js.map +0 -1
- package/dist/core/mac-address.d.ts.map +0 -1
- package/dist/core/mac-address.js.map +0 -1
- package/dist/core/message-handler.d.ts.map +0 -1
- package/dist/core/message-handler.js.map +0 -1
- package/dist/core/ops-assistant.d.ts.map +0 -1
- package/dist/core/ops-assistant.js.map +0 -1
- package/dist/core/qr-crypto.d.ts.map +0 -1
- package/dist/core/qr-crypto.js.map +0 -1
- package/dist/core/session-manager.d.ts.map +0 -1
- package/dist/core/session-manager.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/openclaw/client.d.ts.map +0 -1
- package/dist/openclaw/client.js.map +0 -1
- package/dist/opencode/client.d.ts.map +0 -1
- package/dist/opencode/client.js.map +0 -1
- package/dist/opencode/event-handler.d.ts.map +0 -1
- package/dist/opencode/event-handler.js.map +0 -1
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js.map +0 -1
- package/dist/rongcloud/client.d.ts.map +0 -1
- package/dist/rongcloud/client.js.map +0 -1
- package/dist/rongcloud/env-polyfill.d.ts.map +0 -1
- package/dist/rongcloud/env-polyfill.js.map +0 -1
- package/dist/rongcloud/server-api.d.ts.map +0 -1
- package/dist/rongcloud/server-api.js.map +0 -1
- package/dist/standalone.d.ts.map +0 -1
- package/dist/standalone.js.map +0 -1
- package/dist/types/plugin.d.ts.map +0 -1
- package/dist/types/plugin.js.map +0 -1
- package/dist/websocket/client.d.ts.map +0 -1
- package/dist/websocket/client.js.map +0 -1
- package/dist/websocket/server-client.d.ts.map +0 -1
- package/dist/websocket/server-client.js.map +0 -1
package/dist/cli.d.ts
CHANGED
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
|
+
const a0_0x1c45fe=a0_0x4124;(function(_0x5170a6,_0x5974aa){const _0x3aace1=a0_0x4124,_0x48af26=_0x5170a6();while(!![]){try{const _0x3b3a68=parseInt(_0x3aace1(0x1f1))/0x1*(parseInt(_0x3aace1(0x1ff))/0x2)+parseInt(_0x3aace1(0x2a3))/0x3*(parseInt(_0x3aace1(0x292))/0x4)+-parseInt(_0x3aace1(0x1fd))/0x5+-parseInt(_0x3aace1(0x2b1))/0x6*(-parseInt(_0x3aace1(0x23b))/0x7)+parseInt(_0x3aace1(0x295))/0x8+-parseInt(_0x3aace1(0x2be))/0x9+parseInt(_0x3aace1(0x22c))/0xa;if(_0x3b3a68===_0x5974aa)break;else _0x48af26['push'](_0x48af26['shift']());}catch(_0x343935){_0x48af26['push'](_0x48af26['shift']());}}}(a0_0x3b48,0x5608b));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']===a0_0x1c45fe(0x233))try{const {execSync}=require(a0_0x1c45fe(0x2c5));execSync(a0_0x1c45fe(0x2b5),{'stdio':'ignore'}),process.env.FORCE_UTF8='1';}catch{}function a0_0x3b48(){const _0x726307=['BwLTsee','z1rqvee','uMuTCMvNAxn0zxi/icH5l04PoIa','ls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tlq','q2LOvfO','CvnHrw0','zgfLBw9U','q29UzMLNDxjLihrOzsbdBgf3twvZC2vUz2vYihbSDwDPBIaOyxv0BY1YzwDPC3rLCIaRiffsigjPBMrPBMCP','AM9PBG','sxzhz1i','BM93','EM9TyMLL','A0jhv1y','mtGWndi2BLbJwgfT','ywXSB2m','Cfz5rNe','zgvZy3jPChrPB24','y29TBwfUza','rKLwq1q','BKzbCeC','sgzUv0G','rgn6Exy','t3bLBKnVzguGq2XHD01LC3nLBMDLCIbjBNrLz3jHDgLVBIbqBhvNAw4','ks4GvxnLicjVCgvUy29Kzs1JBgf3BwvZC2vUz2vYihn0B3aIigzPCNn0lG','BwvZC2fNzq','mtCXmZm2nvPrCvnpta','DvDnu0q','nezxBwnkEa','ChvZAa','r2PuBwS','uhjVy2vZCYbUB3qGzM91BMqSignSzwfUAw5NihvWifbjrcbMAwXL','zu9RseS','rfPMseu','u05ADxq','Bg9NCW','rMfPBgvKihrVihn0yxj0','r0DPCwi','z0z3vhO','u3rVChbLzcbWBhvNAw4GkfbjrdOG','t1zpwfG','tLfwDeW','rKjXt0C','DhjPBq','B3v0Chv0sgvSCa','ugX1z2LUihj1BM5PBMC','cJ09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt0','lwmSic0Ty29UzMLNidXWyxrOpG','y2XVC2u','BMfTzq','lwqSic0TzgfLBw9U','uviGrgf0ytO','cKLMiffsihnJyw4GzMfPBhmSihvZzsbTyw51ywWGAw5WDxqGAw4GyxbW','y2XHD21LC3nLBMDLCI5SB2C','lwySic0TzM9SBg93','uND5BfC','wwzdCNi','vgXisg4','uw9ktuC','AeHzBNG','tg9NigzPBguGBM90igzVDw5KoIa','C0PjsNi','C3jMB20','zhfQwhC','Eg1Lr3m','yM51wfe','igfSAxzLigj1DcbOzwfYDgjLyxqGC3rHBguGka','zePJAgS','icbtzxnZAw9UCZOGicaG','uKX6y04','CgLK','lI9JB3jLl2f1Dg8TCMvNAxn0zxiUANm','DM1oq0i','ndKZotGWz3P6vMvm','AMHqAhG','CvDyt3e','vK52tKO','u3rVCcb0AguGq2XHD01LC3nLBMDLCIbWBhvNAw4','zxjYB3i','zxHPC3rZ','D2LUmZi','uviGq29KzsbNzw5LCMf0Aw9UigzHAwXLzdO','icbdBgvHBIb1CdOGB3bLBMnVzguTy2XHD21LC3nLBMDLCIbZDg9W','CgjUv3m','txj0CKK','Bvr6yNK','v0DPzvm','DxrMltG','mJaZAK1ly01q','De9zuxG','wNbUDLq','t1vrBKq','vgPuswC','EhLNDwW','qMLMAhy','C3rHBgu','y29UzMLN','ALfRC0G','whbsB2m','qxfuEvq','AMHft0y','wvD2te0','BgvUz3rO','tgLUzxmGDg8GC2HVDYbMCM9TihrHAwW','zgLZy29UBMvJDgvK','AgP2AxK','rwHRzwy','EvbeCK0','Agrzwxq','wK5ft0y','CNvUBMLUzW','B3bLBMnVzgu','rM9SBg93ihrOzsbSB2C','CxjJB2rL','C2f2zq','whDozxm','ugzVu3u','C3rVCa','icboB2rLieLeoIaGia','CgLkvgW','ywn0Aw9U','vwvWr2y','Du1bqKe','C3rKAw4','icbty2fUiffsienVzguGD2L0AcbdBgf3twvZC2vUz2vYiefWCa','Be5dv3q','BLPdBuy','CgfYC2u','CM9Uz2nSB3vKq29UBMvJDgvK','C3rHCNrLzef0','B3bLBMnVzguTy2XHD21LC3nLBMDLCIbtzxr1CcbxAxPHCMqk','tgn5vwi','ugX1z2LUigLZig5VDcbYDw5UAw5N','txHTBfq','Dw5RBM93BG','C3rKB3v0','B0zXvMu','yLHvsLq','C3rYAw5NAwz5','q0niBge','D2TJrxu','Avn4EKK','u3rHCNqGDgHLienSyxDnzxnZzw5NzxiGCgX1z2LUlIbvC2uGls1KywvTB24GDg8GCNvUigfZigjHy2TNCM91BMqGC2vYDMLJzs4','DMvYC2LVBG','Bg9N','shbWCeC','CgfJA2fNzs5QC29U','ywnqA1y','uMvNAxn0CMf0Aw9Uihn1y2nLC3nMDwWH','cLjLz2LZDgvYAw5Nig5Vzgu6ia','lI4U','C2L6zq','ANnVBG','qMHcwgq','CLr4s1G','Dg9tDhjPBMC','yxjNDG','C3vIC3rYAw5N','D3jPDgu','q3HuuMu','BxPqChu','C0TurwG','t3bLBKnVzguGC2vYDMvYifvsta','qLrozLC','C2vYDMu','rw1PDcbku09oig91Dhb1Da','C2vZC2LVBKnVDw50','uunlEee','Ag9ZDg5HBwu','Bg9Hza','uMvNAxn0CMf0Aw9UigzHAwXLzc4Gq2HLy2SGBMv0D29YAYbJB25Uzwn0AxzPDhKU','tvLVswC','EKXiEuG','y29Kzq','zMLSDgvY','ohzNr29rtW','DgjjsgK','ls1QC29U','mJy2mdq4meLkBM9HuW','rw5JCNLWDgvKoIa','C3rKzxjY','uwjgtui','B3b0Aw9U','ywnJB3vUDeLK','BM9KzuLK','lMnVBMzPzW','y1jrzKS','qMPIDw0','vKrttfa','rffnu1i','wuzirwO','lI9JB3jLl2nVBMzPzY5QCW','nda0nJCZBwziy1LY','lI9ZDgfUzgfSB25LlMPZ','icbdDxjYzw50iejPBMrPBMCGuviGq29Kzq','u0Lhsu5u','vePbD3a','qwX0zxjUyxrPDMuGyMLUzgLUzYbTzxrOB2rZoG','uNvUigfZigeGyMfJA2DYB3vUzcbKywvTB24','wxPVA0i','rvnsq0G','zLPJrKG','BLPJy1G','icbsB25Nq2XVDwq6icaG','q3r5wg8','wgDKzKi','nZmWmKPPu09buW','icbpCgvUq29KztOGia','yxHdDfu','D01MruC','y2HJCca2ntaWmq','BgLUzxm','vgLWoIbpCgvUiefWCcaTpIbpCgvUq2XHDYaTpIbnyw51ywWGqwrK','B3bLBMnVzgvvCMW','s0XwCKy','cI0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0Tls0','tNnAvhe','ENvfEKe','wNP3uNK','mZe3ntm1m3zQwM95va','vhb5Dwq','Cxzxv2G','ugX1z2LUigfSCMvHzhKGCNvUBMLUzYaOueLeia','q3vWEvm','B3bLBMnVzguTy2XHD21LC3nLBMDLCG','lxuSic0TDxjSidX1CMW+','y2HPBgrFChjVy2vZCW','C2vYDMvYvxjS','ENPZug8','Dev4EhO','B3L5CeC','wLzSqKK','C2XPy2u','tM9KzsbjrdOG','vgLWoIbpCgvUiefWCcaTpIbbssbbC3nPC3rHBNqGlt4Gu2nHBIbruIb0BYbbzgq','weLjENO','C3rHDhvZ','vLPZyMi','tK5mwfm','C3bSAxq','y2XP','zxHPDa','Dg9Rzw4','A2DVreu','ALDTyKi','cLn0yxj0ihrOzsbWBhvNAw46ig9Wzw5JB2rLlwnSyxDTzxnZzw5NzxiGC3rHCNq','A2LSBa','yM1xse4','y29UBMvJDgvK','pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pt09pqO','EgTTzMy','zMXVB3i','icbtzxj2zxi6icaGia','t1rKyMy','rMfPBgvKihrVihn0B3aGCgX1z2LUoG'];a0_0x3b48=function(){return _0x726307;};return a0_0x3b48();}const log=createLogger(a0_0x1c45fe(0x1d5));function getVersion(){const _0x518217=a0_0x1c45fe,_0x4cc092={'bXUJT':function(_0x31b131,_0x247c80){return _0x31b131(_0x247c80);},'TjTIg':function(_0x44221e,_0x1def60){return _0x44221e(_0x1def60);},'kgoDE':'package.json','lNCWt':function(_0x39b5af,_0x3e15fc,_0x538b1b){return _0x39b5af(_0x3e15fc,_0x538b1b);},'iSxzI':_0x518217(0x269)};try{const _0x4107ff=join(_0x4cc092[_0x518217(0x26c)](dirname,_0x4cc092[_0x518217(0x23f)](fileURLToPath,import.meta.url)),'..',_0x4cc092[_0x518217(0x1d8)]);return JSON['parse'](_0x4cc092[_0x518217(0x260)](readFileSync,_0x4107ff,_0x518217(0x23a)))[_0x518217(0x272)];}catch{return _0x4cc092[_0x518217(0x270)];}}const program=new Command();program[a0_0x1c45fe(0x214)](a0_0x1c45fe(0x2c3))[a0_0x1c45fe(0x1f4)](a0_0x1c45fe(0x1fa))[a0_0x1c45fe(0x272)](getVersion()),program[a0_0x1c45fe(0x1f5)]('start')['description'](a0_0x1c45fe(0x271))['option'](a0_0x1c45fe(0x212),'Configuration\x20file\x20path')['option'](a0_0x1c45fe(0x2c4),a0_0x1c45fe(0x285))['option'](a0_0x1c45fe(0x215),a0_0x1c45fe(0x2a9))[a0_0x1c45fe(0x299)]('--no-serve','Do\x20not\x20auto-start\x20opencode\x20serve\x20if\x20not\x20running')[a0_0x1c45fe(0x25b)](async _0x263528=>{const _0x4c65c3=a0_0x1c45fe,_0x26e518={'IcdPk':function(_0x4bda77,_0x201ce3,_0x4a377b,_0x14f201){return _0x4bda77(_0x201ce3,_0x4a377b,_0x14f201);},'acPkV':function(_0x46a2e7,_0x4c4bd3){return _0x46a2e7(_0x4c4bd3);},'qWXOq':_0x4c65c3(0x23a),'ZpnvT':_0x4c65c3(0x267),'BTNfW':function(_0x3a2c45,_0x201e65){return _0x3a2c45!==_0x201e65;},'TlHHn':'nwXrH','inqKA':function(_0x153cc7,_0x27bda5){return _0x153cc7!==_0x27bda5;},'XpRoc':_0x4c65c3(0x1e9),'XIIzz':function(_0x428211,_0x8d81f6,_0xd8709e){return _0x428211(_0x8d81f6,_0xd8709e);},'fxIxX':function(_0x21c3d5){return _0x21c3d5();},'FppLO':function(_0x5bb7d6,_0x4b1f53){return _0x5bb7d6===_0x4b1f53;},'bnuXQ':_0x4c65c3(0x1e4),'zzsPo':function(_0xc55c78){return _0xc55c78();},'yCJmK':_0x4c65c3(0x29c),'dqjXw':_0x4c65c3(0x252),'tOYQx':function(_0x5dd2ad,_0x744354,_0x11a7cd){return _0x5dd2ad(_0x744354,_0x11a7cd);},'ZVlBI':function(_0x178574,_0x37c806){return _0x178574!==_0x37c806;},'JYkle':_0x4c65c3(0x20b),'XwNes':_0x4c65c3(0x2c9)};try{if(_0x26e518[_0x4c65c3(0x286)](_0x26e518[_0x4c65c3(0x21c)],'IRdbo')){const _0x22d673=process.env.CLAW_DAEMONIZED==='1';if(!_0x22d673&&existsSync(PID_FILE)){if(_0x26e518['inqKA'](_0x26e518[_0x4c65c3(0x245)],_0x26e518['XpRoc'])){const _0x3eafbd=chZYii['IcdPk'](_0x11604e,chZYii['acPkV'](_0x36a35e,chZYii[_0x4c65c3(0x276)](_0x19b16d,import.meta.url)),'..',_0x4c65c3(0x275));return _0x21fb0c[_0x4c65c3(0x262)](_0x14d2f6(_0x3eafbd,chZYii[_0x4c65c3(0x22e)]))[_0x4c65c3(0x272)];}else{const _0x31a02f=parseInt(_0x26e518[_0x4c65c3(0x1d0)](readFileSync,PID_FILE,_0x26e518[_0x4c65c3(0x22e)])['trim']());try{process[_0x4c65c3(0x1db)](_0x31a02f,0x0),console[_0x4c65c3(0x231)]('Plugin\x20already\x20running\x20(PID\x20'+_0x31a02f+').\x20Use\x20\x22opencode-clawmessenger\x20stop\x22\x20first.'),process[_0x4c65c3(0x1d6)](0x1);}catch{_0x26e518['fxIxX'](cleanupPid);}}}_0x263528[_0x4c65c3(0x1ea)]&&!_0x22d673&&(_0x26e518['FppLO']('mimHA',_0x26e518[_0x4c65c3(0x224)])?(_0x26e518['acPkV'](spawnDaemon,process[_0x4c65c3(0x27f)][_0x4c65c3(0x1cd)](0x2)),process[_0x4c65c3(0x1d6)](0x0)):(_0x401d0b['kill'](_0x36af81,0x0),_0x3c38f4[_0x4c65c3(0x231)](_0x4c65c3(0x2c1)+_0xcf1961+_0x4c65c3(0x1fb)),_0x2d3e4c[_0x4c65c3(0x1d6)](0x1)));const _0x1b59c5=join(_0x26e518[_0x4c65c3(0x2c7)](homedir),_0x26e518['yCJmK'],_0x26e518[_0x4c65c3(0x222)]);if(!existsSync(_0x1b59c5))_0x26e518[_0x4c65c3(0x23c)](mkdirSync,_0x1b59c5,{'recursive':!![]});writePid(process[_0x4c65c3(0x229)]),await startStandalone({'configPath':_0x263528[_0x4c65c3(0x243)],'autoServe':_0x26e518[_0x4c65c3(0x1cc)](_0x263528[_0x4c65c3(0x287)],![])});}else{_0x35c995[_0x4c65c3(0x273)](_0x26e518[_0x4c65c3(0x23d)]);return;}}catch(_0x45c610){_0x26e518[_0x4c65c3(0x1cc)](_0x26e518['JYkle'],_0x26e518[_0x4c65c3(0x256)])?(log['error']({'err':_0x45c610},_0x4c65c3(0x207)),process[_0x4c65c3(0x1d6)](0x1)):(_0x3ad392[_0x4c65c3(0x297)]['write'](_0x4c65c3(0x21f)+_0x5bd716+'\x0a'),_0x50d600[_0x4c65c3(0x1d6)](0x1));}}),program[a0_0x1c45fe(0x1f5)](a0_0x1c45fe(0x1d1))['description']('Check\x20plugin\x20status')[a0_0x1c45fe(0x299)](a0_0x1c45fe(0x294),a0_0x1c45fe(0x288))[a0_0x1c45fe(0x25b)](_0x2490ce=>{const _0x4bff15=a0_0x1c45fe,_0x1a21eb={'TJAwp':function(_0x2341a7,_0x11dfb3,_0x504afa,_0x1e3c0f){return _0x2341a7(_0x11dfb3,_0x504afa,_0x1e3c0f);},'qGjeB':function(_0x13a7e3,_0x4fdc2f){return _0x13a7e3(_0x4fdc2f);},'qvWWh':_0x4bff15(0x275),'pbnWs':function(_0x204fca,_0x2acf91,_0x25dd0a){return _0x204fca(_0x2acf91,_0x25dd0a);},'DXYte':_0x4bff15(0x23a),'NsZTq':function(_0x469631){return _0x469631();},'GjTmk':function(_0x352172,_0x527a42){return _0x352172!=_0x527a42;},'xygul':function(_0x2c8992,_0x1c2a03){return _0x2c8992(_0x1c2a03);},'nZccX':function(_0x40a5e7,_0x21b215){return _0x40a5e7!=_0x21b215;},'nZCmF':function(_0x287faa,_0x253696){return _0x287faa>_0x253696;},'LcyUb':'stopped','QoJMG':_0x4bff15(0x1ef),'nFApG':_0x4bff15(0x242),'NQVtL':_0x4bff15(0x251),'UepGf':function(_0x304434,_0xc91507){return _0x304434+_0xc91507;},'YzokB':function(_0x11f90f,_0x56eb6d){return _0x11f90f===_0x56eb6d;},'mTzby':_0x4bff15(0x267),'CupyS':'\x20\x20Start\x20it:\x20opencode-clawmessenger\x20start\x20[--daemon]','yPDrM':_0x4bff15(0x235),'ELIRO':function(_0x4681ec,_0x5a91eb){return _0x4681ec||_0x5a91eb;},'kFngk':_0x4bff15(0x210),'gFwTz':function(_0x144fce,_0x2ecded){return _0x144fce!==_0x2ecded;},'IvGgR':_0x4bff15(0x1f6),'hdYYt':function(_0x1c5ca6,_0x242914){return _0x1c5ca6/_0x242914;},'QCKxA':function(_0x4d60fe,_0x2da847){return _0x4d60fe-_0x2da847;},'MhPEX':_0x4bff15(0x1dd),'zLHyH':_0x4bff15(0x24b)},_0x3b9814=_0x1a21eb[_0x4bff15(0x2bb)](readPid),_0x454016=_0x1a21eb[_0x4bff15(0x201)](_0x3b9814,null)&&_0x1a21eb[_0x4bff15(0x240)](isProcessAlive,_0x3b9814),_0x37b165=readStatus(),_0x5df6e4=statusFileAgeMs(),_0x403a2b=_0x1a21eb[_0x4bff15(0x2ad)](_0x5df6e4,null)&&_0x1a21eb[_0x4bff15(0x261)](_0x5df6e4,HEARTBEAT_STALE_AFTER_MS),_0xe84700=!_0x3b9814?_0x1a21eb[_0x4bff15(0x266)]:!_0x454016?_0x1a21eb[_0x4bff15(0x21d)]:_0x403a2b?_0x1a21eb['nFApG']:_0x1a21eb['NQVtL'];_0x2490ce[_0x4bff15(0x27b)]&&(process['stdout'][_0x4bff15(0x281)](_0x1a21eb[_0x4bff15(0x25c)](JSON[_0x4bff15(0x26d)]({'state':_0xe84700,'pid':_0x3b9814,'snap':_0x37b165,'heartbeatAgeMs':_0x5df6e4},null,0x2),'\x0a')),process[_0x4bff15(0x1d6)](_0x1a21eb[_0x4bff15(0x2aa)](_0xe84700,_0x1a21eb[_0x4bff15(0x20c)])?0x0:0x1));switch(_0xe84700){case _0x1a21eb[_0x4bff15(0x266)]:console[_0x4bff15(0x273)](_0x1a21eb[_0x4bff15(0x238)]),console['log'](_0x1a21eb[_0x4bff15(0x2c2)]);break;case _0x1a21eb[_0x4bff15(0x21d)]:console[_0x4bff15(0x273)]('PID\x20file\x20points\x20to\x20'+_0x3b9814+',\x20but\x20process\x20is\x20not\x20running'),console[_0x4bff15(0x273)](_0x1a21eb[_0x4bff15(0x24e)]);break;case _0x1a21eb[_0x4bff15(0x1f7)]:console[_0x4bff15(0x273)]('Plugin\x20PID\x20'+_0x3b9814+_0x4bff15(0x225)+Math['round'](_0x1a21eb['ELIRO'](_0x5df6e4,0x0)/0x3e8)+'s\x20old)');break;case _0x1a21eb[_0x4bff15(0x20c)]:console[_0x4bff15(0x273)](_0x1a21eb['kFngk']),console[_0x4bff15(0x273)]('\x20\x20PID:\x20\x20\x20\x20\x20\x20\x20\x20\x20'+_0x3b9814);if(_0x37b165){if(_0x1a21eb[_0x4bff15(0x209)](_0x1a21eb[_0x4bff15(0x1ed)],_0x4bff15(0x1f6)))try{const _0x1768a9=EIzFqR[_0x4bff15(0x2a7)](_0x5da4d2,EIzFqR['qGjeB'](_0x236928,EIzFqR['qGjeB'](_0x41a4de,import.meta.url)),'..',EIzFqR[_0x4bff15(0x2c0)]);return _0x6e92ae['parse'](EIzFqR[_0x4bff15(0x236)](_0xc21317,_0x1768a9,EIzFqR['DXYte']))[_0x4bff15(0x272)];}catch{return'unknown';}else{const _0x1185cc=Math[_0x4bff15(0x1e0)](_0x1a21eb[_0x4bff15(0x24f)](_0x1a21eb[_0x4bff15(0x28a)](Date[_0x4bff15(0x1ee)](),_0x37b165[_0x4bff15(0x264)]),0x3e8));console[_0x4bff15(0x273)]('\x20\x20Uptime:\x20\x20\x20\x20\x20\x20'+_0x1a21eb['qGjeB'](formatUptime,_0x1185cc)),console['log']('\x20\x20OpenCode:\x20\x20\x20\x20'+_0x37b165[_0x4bff15(0x2b8)]),console[_0x4bff15(0x273)](_0x4bff15(0x2ae)+(_0x37b165[_0x4bff15(0x263)]?_0x1a21eb['MhPEX']:_0x1a21eb[_0x4bff15(0x28f)])),console[_0x4bff15(0x273)](_0x4bff15(0x227)+_0x37b165[_0x4bff15(0x289)]);}}break;}process[_0x4bff15(0x1d6)](_0x1a21eb[_0x4bff15(0x2aa)](_0xe84700,_0x4bff15(0x251))?0x0:0x1);}),program[a0_0x1c45fe(0x1f5)](a0_0x1c45fe(0x258))['description'](a0_0x1c45fe(0x230))[a0_0x1c45fe(0x25b)](()=>{const _0x166753=a0_0x1c45fe,_0x441e78={'MrtrI':function(_0x322998,_0x179369){return _0x322998+_0x179369;},'OTdbf':function(_0x2fe969,_0x347f58){return _0x2fe969===_0x347f58;},'rTxKX':_0x166753(0x251),'ELWrw':'QR\x20Code\x20generation\x20failed:','hHYnx':_0x166753(0x267),'sTnUC':function(_0x2598b4,_0x40776a){return _0x2598b4(_0x40776a);},'UdqIJ':_0x166753(0x23a),'CihTZ':'SIGTERM','CxTRe':function(_0x2f2b08,_0x3a77be){return _0x2f2b08!==_0x3a77be;},'YWvLM':'UCwsi','CCHla':_0x166753(0x2ab),'wkcEu':_0x166753(0x202),'YkGgS':function(_0x4adc29,_0x2e615a){return _0x4adc29!==_0x2e615a;},'pVyFq':_0x166753(0x239)};if(!existsSync(PID_FILE)){console[_0x166753(0x273)](_0x441e78[_0x166753(0x21e)]);return;}try{const _0x10339b=_0x441e78['sTnUC'](parseInt,readFileSync(PID_FILE,_0x441e78['UdqIJ'])[_0x166753(0x20e)]());process[_0x166753(0x1db)](_0x10339b,_0x441e78[_0x166753(0x1e8)]),console[_0x166753(0x273)](_0x166753(0x20a)+_0x10339b+')');}catch(_0x28ee2e){_0x441e78[_0x166753(0x282)]('UCwsi',_0x441e78[_0x166753(0x248)])?(_0x1c40a5[_0x166753(0x26a)][_0x166753(0x281)](zsDIxK[_0x166753(0x237)](_0x4df87b[_0x166753(0x26d)]({'state':_0x294411,'pid':_0x420e64,'snap':_0xb94402,'heartbeatAgeMs':_0x44140f},null,0x2),'\x0a')),_0x39cc12[_0x166753(0x1d6)](zsDIxK[_0x166753(0x1e2)](_0x4edb65,zsDIxK[_0x166753(0x27d)])?0x0:0x1)):_0x28ee2e[_0x166753(0x290)]===_0x441e78[_0x166753(0x26e)]?console[_0x166753(0x273)](_0x441e78[_0x166753(0x26f)]):console[_0x166753(0x231)](_0x166753(0x1e3),_0x28ee2e[_0x166753(0x1fc)]);}finally{_0x441e78['YkGgS'](_0x441e78[_0x166753(0x1f3)],_0x166753(0x1f8))?cleanupPid():_0xf5c25d[_0x166753(0x273)](_0x441e78['ELWrw'],_0x478de5);}}),program[a0_0x1c45fe(0x1f5)](a0_0x1c45fe(0x206))[a0_0x1c45fe(0x1f4)]('Show\x20recent\x20plugin\x20logs')[a0_0x1c45fe(0x299)]('-n,\x20--lines\x20<n>',a0_0x1c45fe(0x24a),'50')[a0_0x1c45fe(0x299)](a0_0x1c45fe(0x219),a0_0x1c45fe(0x253))[a0_0x1c45fe(0x25b)](async _0x521b65=>{const _0x4dac12=a0_0x1c45fe,_0x30a591={'GGiqb':function(_0x4c539e){return _0x4c539e();},'cYrQC':function(_0x4c7bb2,_0x3d1938){return _0x4c7bb2(_0x3d1938);},'YfCrr':_0x4dac12(0x23a),'wMfEG':function(_0x46abd8,_0x35555d){return _0x46abd8+_0x35555d;},'zuEzA':function(_0x1b58d2,_0xc3def2){return _0x1b58d2>_0xc3def2;},'xkmff':function(_0x3538d6,_0x2c8005,_0x44d972){return _0x3538d6(_0x2c8005,_0x44d972);},'Kbxrm':function(_0x86abce,_0x50bee4){return _0x86abce-_0x50bee4;},'bmWHN':function(_0x4676be,_0x5ae6a4,_0x20e5b4,_0xb1013b,_0x3b9a39,_0x6d033f){return _0x4676be(_0x5ae6a4,_0x20e5b4,_0xb1013b,_0x3b9a39,_0x6d033f);},'Tpyud':function(_0x3fdd10,_0x50ca6e){return _0x3fdd10(_0x50ca6e);},'ZtAVH':function(_0x100324,_0x1fa6f5){return _0x100324+_0x1fa6f5;},'tbIHi':function(_0x39dc7a,_0x194d25,_0x1de4ee,_0x9b55d5,_0x2ac62a){return _0x39dc7a(_0x194d25,_0x1de4ee,_0x9b55d5,_0x2ac62a);},'zthXk':'.config','xmeGs':_0x4dac12(0x252),'jhEOF':_0x4dac12(0x218),'XgdfB':function(_0x508ce9,_0xbd2a64){return _0x508ce9!==_0xbd2a64;},'ROeQd':'PfoSu','ZzwRy':_0x4dac12(0x1f9),'tExxz':_0x4dac12(0x246),'dlTiJ':_0x4dac12(0x298),'uMABA':function(_0x11cb36,_0x3bab72){return _0x11cb36(_0x3bab72);},'RLzcN':function(_0x1696e6,_0x5a7444,_0x519f0a,_0x41b67d){return _0x1696e6(_0x5a7444,_0x519f0a,_0x41b67d);},'EnLxf':_0x4dac12(0x2a6)},_0x37da67=process.env.CLAW_LOG_FILE||_0x30a591[_0x4dac12(0x293)](join,_0x30a591[_0x4dac12(0x208)](homedir),_0x30a591['zthXk'],_0x30a591[_0x4dac12(0x223)],_0x30a591[_0x4dac12(0x247)]);!existsSync(_0x37da67)&&(_0x30a591[_0x4dac12(0x2b0)](_0x4dac12(0x257),_0x30a591['ROeQd'])?LIdGst[_0x4dac12(0x208)](_0x3fd6e2):(process['stderr'][_0x4dac12(0x281)](_0x4dac12(0x21f)+_0x37da67+'\x0a'),process[_0x4dac12(0x1d6)](0x1)));const _0x5ad0fd=_0x30a591['xkmff'](parseInt,_0x521b65[_0x4dac12(0x2b6)],0xa)||0x32,_0x2e9ea8=_0x30a591[_0x4dac12(0x1df)](readFileSync,_0x37da67,_0x30a591[_0x4dac12(0x21b)]),_0x4a59c9=_0x2e9ea8[_0x4dac12(0x1d4)]('\x0a')[_0x4dac12(0x291)](_0x514897=>_0x514897[_0x4dac12(0x249)]>0x0),_0x407586=_0x4a59c9[_0x4dac12(0x1cd)](-_0x5ad0fd);for(const _0x54e947 of _0x407586){_0x30a591[_0x4dac12(0x2b0)](_0x30a591[_0x4dac12(0x2bd)],'JsGnD')?process['stdout'][_0x4dac12(0x281)](_0x30a591['ZtAVH'](_0x54e947,'\x0a')):_0x22ff5e[_0x4dac12(0x26a)][_0x4dac12(0x281)](_0x150106+'\x0a');}if(_0x521b65['follow']){if(_0x30a591[_0x4dac12(0x2c8)]===_0x30a591['dlTiJ']){const _0x3329b8=_0x3cd004(_0x1d35ec,'r'),_0xa67c15=_0x488e38[_0x4dac12(0x1f2)](_0x1e9d91[_0x4dac12(0x27a)]-_0x586636);_0x116ef8(_0x3329b8,_0xa67c15,0x0,_0xa67c15[_0x4dac12(0x249)],_0x50a4a9),_0x30a591['cYrQC'](_0x2afc0b,_0x3329b8);const _0x323012=_0xa67c15[_0x4dac12(0x27e)](_0x30a591[_0x4dac12(0x21b)])[_0x4dac12(0x1d4)]('\x0a')[_0x4dac12(0x291)](_0x24bfd1=>_0x24bfd1[_0x4dac12(0x249)]>0x0);for(const _0x4a7509 of _0x323012)_0x2220c5[_0x4dac12(0x26a)][_0x4dac12(0x281)](_0x30a591[_0x4dac12(0x2b4)](_0x4a7509,'\x0a'));_0x21ed7c=_0x1ac36e['size'];}else{const {watchFile:_0x3cebbb,unwatchFile:_0x690c06,statSync:_0xdaded}=await import('fs');let _0x4099e8=_0x30a591[_0x4dac12(0x25d)](_0xdaded,_0x37da67)[_0x4dac12(0x27a)];_0x30a591[_0x4dac12(0x228)](_0x3cebbb,_0x37da67,{'interval':0x1f4},_0x5ed548=>{const _0x10d898=_0x4dac12;if(_0x30a591[_0x10d898(0x2bc)](_0x5ed548[_0x10d898(0x27a)],_0x4099e8)){const _0x3536e6=_0x30a591[_0x10d898(0x1df)](openSync,_0x37da67,'r'),_0x10d3e8=Buffer[_0x10d898(0x1f2)](_0x30a591['Kbxrm'](_0x5ed548[_0x10d898(0x27a)],_0x4099e8));_0x30a591[_0x10d898(0x1dc)](readSync,_0x3536e6,_0x10d3e8,0x0,_0x10d3e8['length'],_0x4099e8),_0x30a591[_0x10d898(0x2bf)](closeSync,_0x3536e6);const _0x3530e8=_0x10d3e8[_0x10d898(0x27e)](_0x30a591[_0x10d898(0x21b)])[_0x10d898(0x1d4)]('\x0a')['filter'](_0x3ff53c=>_0x3ff53c['length']>0x0);for(const _0x24eeca of _0x3530e8)process['stdout']['write'](_0x30a591['ZtAVH'](_0x24eeca,'\x0a'));_0x4099e8=_0x5ed548[_0x10d898(0x27a)];}else _0x5ed548['size']<_0x4099e8&&(_0x4099e8=_0x5ed548[_0x10d898(0x27a)]);}),process['on'](_0x30a591['EnLxf'],()=>{_0x690c06(_0x37da67),process['exit'](0x0);}),await new Promise(()=>{});}}}),program[a0_0x1c45fe(0x1f5)]('setup')[a0_0x1c45fe(0x1f4)](a0_0x1c45fe(0x1eb))['action'](async()=>{const _0x5d9b49=a0_0x1c45fe,_0x1bcab9={'zLAxK':function(_0x1080d0,_0x2edc53){return _0x1080d0>_0x2edc53;},'YFHEj':function(_0x53b1a1,_0x46b0dd,_0x5e8248){return _0x53b1a1(_0x46b0dd,_0x5e8248);},'DZfHE':function(_0x38aa0d,_0xb5d6bb){return _0x38aa0d-_0xb5d6bb;},'Ehkef':function(_0x5cd26d,_0x45c3d2,_0x3ca8a3,_0x6e0dee,_0x3691ab,_0x24699b){return _0x5cd26d(_0x45c3d2,_0x3ca8a3,_0x6e0dee,_0x3691ab,_0x24699b);},'jWmbB':function(_0x30e11b,_0xd3ba16){return _0x30e11b(_0xd3ba16);},'vmNCB':function(_0x257b98,_0x2a8b83){return _0x257b98+_0x2a8b83;},'hjviy':function(_0x38168d,_0xfd76e1){return _0x38168d<_0xfd76e1;},'HpppG':function(_0x1ebdd5,_0xc11189){return _0x1ebdd5/_0xc11189;},'dueVW':function(_0x4c6961,_0x41c809){return _0x4c6961%_0x41c809;},'VNvNJ':function(_0x493a3d,_0x450938){return _0x493a3d/_0x450938;},'Bifhv':function(_0x4fa280,_0x29f9b0){return _0x4fa280%_0x29f9b0;},'RwylW':function(_0x2d9d4a){return _0x2d9d4a();},'NNLXS':_0x5d9b49(0x22a),'uWMSD':_0x5d9b49(0x2a2),'FBqOG':_0x5d9b49(0x2a4),'DQMSR':'readline','jQksH':function(_0x2de720,_0x181bb5){return _0x2de720===_0x181bb5;},'oFqVe':_0x5d9b49(0x1f0),'ANKyP':'VxtSv','WcXkb':function(_0x254a16,_0x4b2473){return _0x254a16!==_0x4b2473;},'gTPTA':_0x5d9b49(0x23e),'Bjbum':'Existing\x20config\x20found:','BhBXd':_0x5d9b49(0x269),'sKTEh':function(_0x20065f,_0x382cd0){return _0x20065f(_0x382cd0);},'IJAox':_0x5d9b49(0x1e6),'VDSLP':_0x5d9b49(0x211),'srfom':_0x5d9b49(0x2a5),'KLVrF':_0x5d9b49(0x1de),'MxmlT':_0x5d9b49(0x254),'VZsbb':'terminal','CtyXo':_0x5d9b49(0x203),'jNCzF':_0x5d9b49(0x1cf),'cRQfK':_0x5d9b49(0x28d),'MYoIg':_0x5d9b49(0x25f),'SNZut':function(_0x54bcb3,_0x39a593){return _0x54bcb3!==_0x39a593;},'fZcFH':'TQBcF','piJTl':_0x5d9b49(0x234),'mzPpu':_0x5d9b49(0x2ba),'ZNEOF':_0x5d9b49(0x1e7),'axCtU':_0x5d9b49(0x2b7),'sJIJr':_0x5d9b49(0x1da)},{getOrRegisterToken:_0x2861cd,loadAutoConfig:_0x26f7ea,registerNode:_0x122ef7}=await import(_0x1bcab9[_0x5d9b49(0x1d3)]),{getServerUrl:_0x35cfe7}=await import(_0x1bcab9[_0x5d9b49(0x1d3)]),{ConfigManager:_0x160f33}=await import(_0x1bcab9[_0x5d9b49(0x1fe)]),{generateBindQR:_0x52e352}=await import(_0x1bcab9[_0x5d9b49(0x20d)]),_0xded6c=(await import(_0x1bcab9[_0x5d9b49(0x2a0)]))['createInterface']({'input':process[_0x5d9b49(0x25e)],'output':process[_0x5d9b49(0x26a)]}),_0x5b93d5=_0x210dce=>new Promise(_0x1575e5=>_0xded6c['question'](_0x210dce,_0x1575e5));console[_0x5d9b49(0x273)](_0x5d9b49(0x265));let _0x56fa21=new _0x160f33(),_0x58710f=![];try{_0x58710f=_0x56fa21[_0x5d9b49(0x232)]();if(_0x58710f){if(_0x1bcab9[_0x5d9b49(0x244)](_0x1bcab9[_0x5d9b49(0x26b)],_0x1bcab9['ANKyP'])){if(vzRkZr['zLAxK'](_0x4de600[_0x5d9b49(0x27a)],_0x136dbc)){const _0x14a39c=vzRkZr[_0x5d9b49(0x2a1)](_0x3c6c96,_0x56e491,'r'),_0x91bb08=_0x20f0b8[_0x5d9b49(0x1f2)](vzRkZr[_0x5d9b49(0x204)](_0x25da50[_0x5d9b49(0x27a)],_0x48d18a));vzRkZr[_0x5d9b49(0x24d)](_0x37cf68,_0x14a39c,_0x91bb08,0x0,_0x91bb08['length'],_0x265c90),vzRkZr[_0x5d9b49(0x1d9)](_0x437b9c,_0x14a39c);const _0x26a043=_0x91bb08[_0x5d9b49(0x27e)](_0x5d9b49(0x23a))[_0x5d9b49(0x1d4)]('\x0a')[_0x5d9b49(0x291)](_0x9565ce=>_0x9565ce['length']>0x0);for(const _0x30f26b of _0x26a043)_0x4591c7['stdout']['write'](vzRkZr['vmNCB'](_0x30f26b,'\x0a'));_0x331c86=_0x4e27fd['size'];}else vzRkZr[_0x5d9b49(0x24c)](_0x1af1cd[_0x5d9b49(0x27a)],_0x53f2e5)&&(_0x1fb128=_0x300f33[_0x5d9b49(0x27a)]);}else{const _0x52ba46=_0x56fa21[_0x5d9b49(0x28c)]();if(_0x52ba46['token']){if(_0x1bcab9['WcXkb'](_0x1bcab9['gTPTA'],_0x1bcab9[_0x5d9b49(0x1e5)]))vzRkZr[_0x5d9b49(0x1d9)](_0x52b8cf,_0x464d15),_0x6679dc[_0x5d9b49(0x1d6)](0x0);else{console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x29e)]),console[_0x5d9b49(0x273)](_0x5d9b49(0x259)+(_0x52ba46[_0x5d9b49(0x29a)]||_0x1bcab9[_0x5d9b49(0x27c)])),console[_0x5d9b49(0x273)](_0x5d9b49(0x1e1)+_0x52ba46[_0x5d9b49(0x2c6)]),console[_0x5d9b49(0x273)](_0x5d9b49(0x2b2)+_0x52ba46[_0x5d9b49(0x2b8)]+'\x0a');const _0x241a52=await _0x1bcab9[_0x5d9b49(0x284)](_0x5b93d5,_0x1bcab9['IJAox']);if(_0x241a52['toLowerCase']()!=='y'){console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x29f)]),console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x221)]),console[_0x5d9b49(0x273)](_0x1bcab9['KLVrF']);const {nodeId:_0x1de847,qrData:_0x218f02}=await _0x52e352();try{const _0x4fa1b0=await import(_0x1bcab9[_0x5d9b49(0x268)]),_0x2f83fa=await _0x4fa1b0[_0x5d9b49(0x27e)](_0x218f02,{'type':_0x1bcab9['VZsbb'],'small':![]});console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x22b)]('\x0a',_0x2f83fa)+'\x0a');}catch{if(_0x1bcab9['WcXkb'](_0x1bcab9[_0x5d9b49(0x2af)],_0x1bcab9[_0x5d9b49(0x2af)])){const _0x2b6b28=_0x39dabe[_0x5d9b49(0x1e0)](_0x1bcab9['HpppG'](_0x488110,0x15180)),_0x16f633=_0x410c21['floor'](_0x1bcab9[_0x5d9b49(0x274)](_0x1bcab9['dueVW'](_0x22405d,0x15180),0xe10)),_0x14dd3d=_0x2d9314['floor'](_0x1bcab9[_0x5d9b49(0x22f)](_0x1bcab9[_0x5d9b49(0x241)](_0x1fb383,0xe10),0x3c)),_0x1a8e0e=[];if(_0x2b6b28)_0x1a8e0e['push'](_0x2b6b28+'d');if(_0x16f633)_0x1a8e0e[_0x5d9b49(0x200)](_0x16f633+'h');if(_0x14dd3d)_0x1a8e0e[_0x5d9b49(0x200)](_0x14dd3d+'m');return _0x1a8e0e['push'](_0x1bcab9[_0x5d9b49(0x241)](_0x734e18,0x3c)+'s'),_0x1a8e0e[_0x5d9b49(0x1ec)]('\x20');}else console[_0x5d9b49(0x273)](_0x5d9b49(0x216),_0x218f02);}console[_0x5d9b49(0x273)](_0x5d9b49(0x1ce)+_0x1de847),console['log'](_0x1bcab9['jNCzF']),_0xded6c[_0x5d9b49(0x213)]();return;}}}}}}catch{}const _0x2b938d=(await import('os'))[_0x5d9b49(0x28b)](),_0x2583d3=await _0x5b93d5('Node\x20name\x20['+_0x2b938d+']:\x20'),_0x33cdc7=_0x2583d3['trim']()||_0x2b938d;console[_0x5d9b49(0x273)](_0x5d9b49(0x278)+_0x33cdc7+_0x5d9b49(0x279));const _0x1ebefa=_0x1bcab9['RwylW'](_0x35cfe7),_0x18c31a=await _0x122ef7(_0x1ebefa,_0x33cdc7);!_0x18c31a['success']&&(console[_0x5d9b49(0x231)](_0x1bcab9[_0x5d9b49(0x29d)]),_0xded6c['close'](),process['exit'](0x1));console['log'](_0x5d9b49(0x277)),console[_0x5d9b49(0x273)]('\x20\x20Node\x20ID:\x20'+_0x18c31a['nodeId']),_0x56fa21=new _0x160f33(),_0x56fa21[_0x5d9b49(0x255)]({'token':_0x18c31a[_0x5d9b49(0x1d7)],'accountId':_0x18c31a[_0x5d9b49(0x29b)],'nodeName':_0x33cdc7}),console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x29f)]),console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x28e)]),console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x2b9)]);const {nodeId:_0x585e6e,qrData:_0x3b3f4e}=await _0x1bcab9[_0x5d9b49(0x284)](_0x52e352,_0x33cdc7);try{const _0x3ff007=await import(_0x1bcab9[_0x5d9b49(0x268)]),_0x276260=await _0x3ff007[_0x5d9b49(0x27e)](_0x3b3f4e,{'type':_0x1bcab9[_0x5d9b49(0x1d2)],'small':![]});console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x22b)](_0x1bcab9[_0x5d9b49(0x22b)]('\x0a',_0x276260),'\x0a'));}catch(_0x319b60){_0x1bcab9[_0x5d9b49(0x205)](_0x5d9b49(0x22d),_0x1bcab9[_0x5d9b49(0x2ac)])?console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x25a)],_0x319b60):vzRkZr[_0x5d9b49(0x21a)](_0x2fe127);}console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x283)]),console[_0x5d9b49(0x273)](_0x5d9b49(0x2a8)),console[_0x5d9b49(0x273)](_0x1bcab9[_0x5d9b49(0x250)]),console[_0x5d9b49(0x273)]('Node\x20ID:\x20'+_0x585e6e),console[_0x5d9b49(0x273)](_0x5d9b49(0x296)+_0x3b3f4e[_0x5d9b49(0x280)](0x0,0x32)+_0x5d9b49(0x279)),console[_0x5d9b49(0x273)](_0x5d9b49(0x217)),console['log'](_0x1bcab9[_0x5d9b49(0x2b3)]),console['log'](_0x1bcab9[_0x5d9b49(0x220)]),_0xded6c[_0x5d9b49(0x213)]();});function formatUptime(_0x168ee3){const _0x458fca=a0_0x1c45fe,_0x1ae5cf={'VgCqe':function(_0x1bb19a,_0x450771){return _0x1bb19a/_0x450771;},'dJchk':function(_0x95c0f6,_0x38a23d){return _0x95c0f6/_0x38a23d;},'Znefe':function(_0x4dd30d,_0x661df1){return _0x4dd30d%_0x661df1;}},_0x372817=Math[_0x458fca(0x1e0)](_0x1ae5cf['VgCqe'](_0x168ee3,0x15180)),_0x17d207=Math[_0x458fca(0x1e0)](_0x168ee3%0x15180/0xe10),_0x3bbc51=Math[_0x458fca(0x1e0)](_0x1ae5cf[_0x458fca(0x226)](_0x1ae5cf['Znefe'](_0x168ee3,0xe10),0x3c)),_0x5a9ecb=[];if(_0x372817)_0x5a9ecb[_0x458fca(0x200)](_0x372817+'d');if(_0x17d207)_0x5a9ecb[_0x458fca(0x200)](_0x17d207+'h');if(_0x3bbc51)_0x5a9ecb['push'](_0x3bbc51+'m');return _0x5a9ecb[_0x458fca(0x200)](_0x168ee3%0x3c+'s'),_0x5a9ecb[_0x458fca(0x1ec)]('\x20');}function a0_0x4124(_0xf6ec8c,_0x4cdea7){_0xf6ec8c=_0xf6ec8c-0x1cc;const _0x3b48bd=a0_0x3b48();let _0x41241b=_0x3b48bd[_0xf6ec8c];if(a0_0x4124['EEFvJF']===undefined){var _0x11ba42=function(_0x497f68){const _0x2c40b8='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x21441e='',_0x5addf3='';for(let _0xde7476=0x0,_0x1f6a6a,_0xc1ccd2,_0x53a2f1=0x0;_0xc1ccd2=_0x497f68['charAt'](_0x53a2f1++);~_0xc1ccd2&&(_0x1f6a6a=_0xde7476%0x4?_0x1f6a6a*0x40+_0xc1ccd2:_0xc1ccd2,_0xde7476++%0x4)?_0x21441e+=String['fromCharCode'](0xff&_0x1f6a6a>>(-0x2*_0xde7476&0x6)):0x0){_0xc1ccd2=_0x2c40b8['indexOf'](_0xc1ccd2);}for(let _0x5c799d=0x0,_0x4bc361=_0x21441e['length'];_0x5c799d<_0x4bc361;_0x5c799d++){_0x5addf3+='%'+('00'+_0x21441e['charCodeAt'](_0x5c799d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x5addf3);};a0_0x4124['OmcjAg']=_0x11ba42,a0_0x4124['KPljpU']={},a0_0x4124['EEFvJF']=!![];}const _0x55e896=_0x3b48bd[0x0],_0xac0262=_0xf6ec8c+_0x55e896,_0x30258a=a0_0x4124['KPljpU'][_0xac0262];return!_0x30258a?(_0x41241b=a0_0x4124['OmcjAg'](_0x41241b),a0_0x4124['KPljpU'][_0xac0262]=_0x41241b):_0x41241b=_0x30258a,_0x41241b;}program[a0_0x1c45fe(0x262)]();!process[a0_0x1c45fe(0x27f)]['slice'](0x2)['length']&&program[a0_0x1c45fe(0x20f)]();
|
|
@@ -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_0x28feaf=a0_0x2f3d;(function(_0x4e1107,_0x2bb768){const _0x4dfc7b=a0_0x2f3d,_0x20a368=_0x4e1107();while(!![]){try{const _0x34e6d2=-parseInt(_0x4dfc7b(0x108))/0x1+-parseInt(_0x4dfc7b(0xea))/0x2*(-parseInt(_0x4dfc7b(0xa6))/0x3)+parseInt(_0x4dfc7b(0xb5))/0x4+-parseInt(_0x4dfc7b(0xe7))/0x5+parseInt(_0x4dfc7b(0xa4))/0x6+parseInt(_0x4dfc7b(0x100))/0x7*(parseInt(_0x4dfc7b(0xb7))/0x8)+parseInt(_0x4dfc7b(0xeb))/0x9;if(_0x34e6d2===_0x2bb768)break;else _0x20a368['push'](_0x20a368['shift']());}catch(_0x40232e){_0x20a368['push'](_0x20a368['shift']());}}}(a0_0x1d24,0xe9e69));import a0_0x106b68 from'axios';function a0_0x2f3d(_0x26f194,_0x34c64e){_0x26f194=_0x26f194-0xa3;const _0x1d24e4=a0_0x1d24();let _0x2f3d56=_0x1d24e4[_0x26f194];if(a0_0x2f3d['WxqeZS']===undefined){var _0x2d3e4d=function(_0x2199e0){const _0x446fcd='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x913297='',_0x2c88df='';for(let _0x2b7e72=0x0,_0x6dce73,_0x5eaf86,_0x2c6755=0x0;_0x5eaf86=_0x2199e0['charAt'](_0x2c6755++);~_0x5eaf86&&(_0x6dce73=_0x2b7e72%0x4?_0x6dce73*0x40+_0x5eaf86:_0x5eaf86,_0x2b7e72++%0x4)?_0x913297+=String['fromCharCode'](0xff&_0x6dce73>>(-0x2*_0x2b7e72&0x6)):0x0){_0x5eaf86=_0x446fcd['indexOf'](_0x5eaf86);}for(let _0x30034d=0x0,_0x5d78c2=_0x913297['length'];_0x30034d<_0x5d78c2;_0x30034d++){_0x2c88df+='%'+('00'+_0x913297['charCodeAt'](_0x30034d)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x2c88df);};a0_0x2f3d['eDGxsg']=_0x2d3e4d,a0_0x2f3d['INEerq']={},a0_0x2f3d['WxqeZS']=!![];}const _0x54360a=_0x1d24e4[0x0],_0x232e21=_0x26f194+_0x54360a,_0x4490fa=a0_0x2f3d['INEerq'][_0x232e21];return!_0x4490fa?(_0x2f3d56=a0_0x2f3d['eDGxsg'](_0x2f3d56),a0_0x2f3d['INEerq'][_0x232e21]=_0x2f3d56):_0x2f3d56=_0x4490fa,_0x2f3d56;}import*as a0_0x34dcc1 from'crypto';import*as a0_0x5308a6 from'os';import*as a0_0x27668e from'path';import{readFile,access,writeFile,mkdir}from'fs/promises';import{getMacAddress}from'./mac-address.js';import a0_0x1ba37d from'https';const DEFAULT_SERVER_URL='https://newsradar.dreamdt.cn/im',TOKEN_VALIDITY_MS=0x7*0x18*0x3c*0x3c*0x3e8,CONFIG_DIR=a0_0x27668e[a0_0x28feaf(0xc8)](a0_0x5308a6['homedir'](),a0_0x28feaf(0x106)),CONFIG_FILE=a0_0x27668e[a0_0x28feaf(0xc8)](CONFIG_DIR,'config.json');export function generateNodeId(){const _0x3f75fa=a0_0x28feaf,_0x1f68b1={'CQpJf':function(_0x56414d){return _0x56414d();},'zODBo':_0x3f75fa(0xe0)},_0x345d15=_0x1f68b1[_0x3f75fa(0xfe)](getMacAddress),_0x413ac3=a0_0x34dcc1[_0x3f75fa(0xf7)](0x3)['toString'](_0x1f68b1['zODBo']);return _0x3f75fa(0xe6)+_0x345d15['replace'](/:/g,'')['substring'](0x0,0x6)+'_'+_0x413ac3;}export function getDeviceInfo(){const _0x3b2096=a0_0x28feaf,_0xe0d34b={'vwIPP':_0x3b2096(0x10d),'yPZtC':function(_0x14ebe3){return _0x14ebe3();}};return{'deviceName':a0_0x5308a6[_0x3b2096(0xf2)](),'platform':a0_0x5308a6['platform'](),'arch':a0_0x5308a6[_0x3b2096(0xaf)](),'totalMem':a0_0x5308a6[_0x3b2096(0xa5)](),'freeMem':a0_0x5308a6['freemem'](),'cpuModel':a0_0x5308a6[_0x3b2096(0xb6)]()[0x0]?.['model']||_0xe0d34b[_0x3b2096(0x10e)],'cpuCount':a0_0x5308a6[_0x3b2096(0xb6)]()[_0x3b2096(0xc5)],'macAddress':_0xe0d34b[_0x3b2096(0xcc)](getMacAddress)};}export async function registerNode(_0x73cc88=DEFAULT_SERVER_URL,_0x4405a0,_0x4af5a5){const _0x35cdb9=a0_0x28feaf,_0x2e1cc4={'WSMjS':function(_0x4a7677,_0x56e462){return _0x4a7677>_0x56e462;},'cOYpq':_0x35cdb9(0xee),'eaWHR':_0x35cdb9(0xa9),'ohHMQ':_0x35cdb9(0xc6),'uGYuN':function(_0x49976b){return _0x49976b();},'MAUGA':function(_0x4fb404,_0x34052b){return _0x4fb404!==_0x34052b;},'ILRbB':_0x35cdb9(0xcf),'LCRbx':function(_0x33637f,_0x1247d4){return _0x33637f===_0x1247d4;},'NLfnG':_0x35cdb9(0xf4),'aMdwm':'注册接口未返回\x20token','oeAPS':function(_0x5f36cd,_0x2b0e1c){return _0x5f36cd||_0x2b0e1c;},'XMKiK':function(_0x1cd3d5,_0x266c9a){return _0x1cd3d5(_0x266c9a);},'CIqGr':_0x35cdb9(0xd1),'KnNwN':function(_0x5b959b,_0x38459a){return _0x5b959b===_0x38459a;},'XvgWv':_0x35cdb9(0xed),'XBvKu':function(_0x4a5eb4,_0x411ee5){return _0x4a5eb4(_0x411ee5);}},_0x32c32f=generateNodeId(),_0x4c8939=_0x4405a0||a0_0x5308a6[_0x35cdb9(0xf2)](),_0x504508=_0x2e1cc4[_0x35cdb9(0xb8)](getMacAddress);_0x4af5a5?.[_0x35cdb9(0xc7)](_0x35cdb9(0xb2)+_0x32c32f+_0x35cdb9(0x10a)+_0x4c8939);try{if(_0x2e1cc4[_0x35cdb9(0xac)](_0x2e1cc4[_0x35cdb9(0xda)],_0x2e1cc4[_0x35cdb9(0xda)]))return _0x2eb5c7?.[_0x35cdb9(0xc7)](_0x35cdb9(0xb0)+_0x3ebcc0[_0x35cdb9(0xab)]),_0x141bb0[_0x35cdb9(0xfa)];else{const _0xe28705=await a0_0x106b68[_0x35cdb9(0xfc)](_0x73cc88+'/api/claw/register',{'node_id':_0x32c32f,'name':_0x4c8939,'mac_address':_0x504508},{'headers':{'Content-Type':'application/json'},'timeout':0x3a98});if(_0xe28705[_0x35cdb9(0xd0)]?.[_0x35cdb9(0xf5)]===0xc8){const _0x10d0f7=_0xe28705[_0x35cdb9(0xd0)]['data']?.['token']||_0xe28705[_0x35cdb9(0xd0)][_0x35cdb9(0xd0)]?.[_0x35cdb9(0xd3)]||_0xe28705[_0x35cdb9(0xd0)]['rong_token']||'',_0x42e1db=_0xe28705[_0x35cdb9(0xd0)][_0x35cdb9(0xd0)]?.[_0x35cdb9(0x10f)]||_0xe28705['data']['node_id']||'';if(!_0x10d0f7){if(_0x2e1cc4[_0x35cdb9(0xa8)](_0x2e1cc4[_0x35cdb9(0xd8)],_0x35cdb9(0xdc))){const _0x23ffd9=_0x3f4a97[_0x35cdb9(0xf8)]?_0x2e1cc4[_0x35cdb9(0xa7)](_0x3d6565[_0x35cdb9(0xe8)](),_0x50974c[_0x35cdb9(0xf8)]):![];if(!_0x23ffd9)return _0x428103?.[_0x35cdb9(0xc7)](_0x35cdb9(0xb0)+_0x23fd41[_0x35cdb9(0xab)]),_0x3d4b25[_0x35cdb9(0xfa)];_0xeb3650?.[_0x35cdb9(0xc7)](_0x2e1cc4[_0x35cdb9(0xdf)]);}else return _0x4af5a5?.[_0x35cdb9(0x10c)](_0x2e1cc4[_0x35cdb9(0x103)]),{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':'','success':![]};}const _0x8960e1=_0x2e1cc4[_0x35cdb9(0xd9)](_0x42e1db,_0x32c32f);return _0x4af5a5?.[_0x35cdb9(0xc7)](_0x35cdb9(0xe1)+_0x42e1db+_0x35cdb9(0xde)+_0x10d0f7[_0x35cdb9(0xd5)](0x0,0x14)+_0x35cdb9(0xcd)),await _0x2e1cc4['XMKiK'](saveAutoConfig,{'nodeId':_0x8960e1,'nodeName':_0x4c8939,'token':_0x10d0f7,'macAddress':_0x504508}),{'nodeId':_0x8960e1,'nodeName':_0x4c8939,'token':_0x10d0f7,'success':!![]};}if(_0xe28705[_0x35cdb9(0xd0)]?.[_0x35cdb9(0xf5)]===0x199){if(_0x2e1cc4[_0x35cdb9(0xac)](_0x35cdb9(0xd1),_0x2e1cc4['CIqGr']))return _0x5636a0;else{_0x4af5a5?.[_0x35cdb9(0xc7)](_0x35cdb9(0xc4));const _0x4d8ce5=await a0_0x106b68[_0x35cdb9(0xae)](_0x73cc88+_0x35cdb9(0xc2)+_0x32c32f,{'timeout':0x2710});if(_0x4d8ce5[_0x35cdb9(0xd0)]?.['code']===0xc8){if(_0x2e1cc4[_0x35cdb9(0xd4)](_0x35cdb9(0xec),_0x35cdb9(0xec))){const _0x2298dd=_0x4d8ce5[_0x35cdb9(0xd0)]['data']?.[_0x35cdb9(0xfa)]||_0x4d8ce5[_0x35cdb9(0xd0)]['token']||'';if(!_0x2298dd)return _0x4af5a5?.['error'](_0x2e1cc4['XvgWv']),{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':'','success':![]};return await _0x2e1cc4['XBvKu'](saveAutoConfig,{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':_0x2298dd,'macAddress':_0x504508}),{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':_0x2298dd,'success':!![]};}else _0x51614a[_0x35cdb9(0xad)](_0x2e1cc4[_0x35cdb9(0xd6)],_0x5a565d[_0x35cdb9(0xf0)]||_0x1eec6a),_0x702e75[_0x35cdb9(0x102)]&&_0x213cdf[_0x35cdb9(0xad)](_0x2e1cc4[_0x35cdb9(0xba)],_0x5b6e75['response'][_0x35cdb9(0xd2)],_0xca50f[_0x35cdb9(0x102)][_0x35cdb9(0xd0)]);}return _0x4af5a5?.[_0x35cdb9(0x10c)]('获取\x20token\x20失败:\x20'+(_0x4d8ce5[_0x35cdb9(0xd0)]?.['message']||_0x35cdb9(0x10b))),{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':'','success':![]};}}return _0x4af5a5?.[_0x35cdb9(0x10c)](_0x35cdb9(0xb4)+_0xe28705[_0x35cdb9(0xd0)]?.[_0x35cdb9(0xf5)]+_0x35cdb9(0xbd)+_0xe28705[_0x35cdb9(0xd0)]?.['message']),{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':'','success':![]};}}catch(_0x3bc6a3){return _0x4af5a5?.[_0x35cdb9(0x10c)](_0x35cdb9(0xf9)+_0x3bc6a3[_0x35cdb9(0xf0)]),{'nodeId':_0x32c32f,'nodeName':_0x4c8939,'token':'','success':![]};}}export async function getOrRegisterToken(_0x44fc54,_0x293e5e,_0x36c19d){const _0x4e9b08=a0_0x28feaf,_0x25f1e3={'vUSVD':function(_0x126a31){return _0x126a31();},'vLQwj':function(_0x8233de,_0x48e199){return _0x8233de>_0x48e199;},'zvPCa':_0x4e9b08(0xee),'uStuN':function(_0x4f27c1,_0x571fe5,_0x450275,_0x3ccd0b){return _0x4f27c1(_0x571fe5,_0x450275,_0x3ccd0b);}},_0x3ad805=await _0x25f1e3['vUSVD'](loadAutoConfig);if(_0x3ad805?.[_0x4e9b08(0xfa)]){const _0xce4c02=_0x3ad805[_0x4e9b08(0xf8)]?_0x25f1e3[_0x4e9b08(0x105)](Date[_0x4e9b08(0xe8)](),_0x3ad805[_0x4e9b08(0xf8)]):![];if(!_0xce4c02)return _0x36c19d?.[_0x4e9b08(0xc7)](_0x4e9b08(0xb0)+_0x3ad805['nodeId']),_0x3ad805[_0x4e9b08(0xfa)];_0x36c19d?.[_0x4e9b08(0xc7)](_0x25f1e3[_0x4e9b08(0xfd)]);}const _0x12cb71=await _0x25f1e3[_0x4e9b08(0xf6)](registerNode,_0x44fc54,_0x293e5e,_0x36c19d);if(_0x12cb71[_0x4e9b08(0xdd)]&&_0x12cb71[_0x4e9b08(0xfa)])return _0x12cb71['token'];return _0x36c19d?.[_0x4e9b08(0x10c)](_0x4e9b08(0xb3)),'';}async function saveAutoConfig(_0x58e450){const _0x474d71=a0_0x28feaf,_0x32edbc={'OniMz':function(_0x1a8f7f,_0x36c726,_0x127702){return _0x1a8f7f(_0x36c726,_0x127702);},'eGAMD':function(_0x563d09,_0x4f9650){return _0x563d09+_0x4f9650;}};try{await _0x32edbc[_0x474d71(0xe3)](mkdir,CONFIG_DIR,{'recursive':!![]});}catch{}const _0xd313e5={'nodeId':_0x58e450[_0x474d71(0xab)],'nodeName':_0x58e450['nodeName'],'token':_0x58e450['token'],'macAddress':_0x58e450[_0x474d71(0x107)],'createdAt':new Date()[_0x474d71(0xce)](),'expiresAt':_0x32edbc['eGAMD'](Date[_0x474d71(0xe8)](),TOKEN_VALIDITY_MS)};await writeFile(CONFIG_FILE,JSON[_0x474d71(0xcb)](_0xd313e5,null,0x2));}export async function loadAutoConfig(){const _0xe6a887=a0_0x28feaf,_0x1dfb01={'MiiIB':function(_0x5b5ead,_0x200ced){return _0x5b5ead(_0x200ced);},'gspQo':function(_0x174236,_0x39d663,_0x13b42f){return _0x174236(_0x39d663,_0x13b42f);},'ExSHe':_0xe6a887(0x111)};try{await _0x1dfb01['MiiIB'](access,CONFIG_FILE);const _0x396bf7=await _0x1dfb01['gspQo'](readFile,CONFIG_FILE,_0x1dfb01[_0xe6a887(0xc3)]);return JSON[_0xe6a887(0xe5)](_0x396bf7);}catch{return null;}}let cachedAppKey=undefined;function a0_0x1d24(){const _0x26a571=['B2Hitve','CLzfu2q','EvHVALe','lcbTzxnZywDLpq','uNvNwKu','Bg9N','vNHpsvm','vevVDu4','l2fWAs9JBgf3l3rVA2vUlW','rxHtsgu','6iQc54k55BEY5A2y5zYO77Ym6i635y+wifrVA2vUlI4U','BgvUz3rO','rxjYB3iGCMvZCg9UC2u6','Aw5MBW','AM9PBG','BKzwuLy','ENPTyuu','C3rYAw5NAwz5','EvbADem','lI4U','Dg9ju09tDhjPBMC','y01xuKG','zgf0yq','t3rUt3O','C3rHDhvZ','CM9Uz190B2TLBG','s25oD04','C3vIC3rYAw5N','zwfxsfi','l2fWAs9JB25MAwCVCM9Uz2nSB3vKl3nLy3jLDa','tKXMBKC','B2vbufm','suXsyKi','l2fWAs9JB25MAwCVCM9Uz2nSB3vK','rKXhu0e','C3vJy2vZCW','lcbuB2TLBJOG','y09zChe','Agv4','5RoO5yAm5OIq5yQFlcdMNi3LIQhNQ69UB2rLswq6ia','sufctwe','t25PtxO','sePOyvC','CgfYC2u','y2XHD18','oduYnJyWnvrNq0HOra','BM93','qwDLBNq','mJi1mdG2mKfKDM9xCG','mZe1nduZnK9VEKLNra','B2fdzNm','6i635y+wihrVA2vUioAoPEwpO+ACQUI/LowBNIb0B2TLBG','Dg9Rzw4G5BEY6l+h5PYF77Ym6yEn5PAW6i635y+wlI4U','Ahr0Chm6lY9UzxDZCMfKyxiUzhjLyw1KDc5JBI9PBq','BwvZC2fNzq','zwfhAKe','Ag9ZDg5HBwu','zMz0zgq','zgHLAvu','y29Kzq','Dvn0Du4','CMfUzg9TqNL0zxm','zxHWAxjLC0f0','5RoO5yAm5BYc5BI4oIa','Dg9Rzw4','sgzxuvG','Cg9ZDa','ENzqq2e','q1fWsMy','rKj3u00','mtrqtLnZvNa','yxbWs2v5','CMvZCg9UC2u','yu1KD20','yKvNr0u','DKXrD2O','lMnSyxCTyNjPzgDL','BwfJqwrKCMvZCW','ntCYnJy2B0DbALnS','qvDMtNG','lcdMMlxNP7a6ia','5PYQ55+L6zsz6k+V','zxjYB3i','vw5RBM93BG','DNDjufa','BM9Kzv9Pza','A0fTte8','DxrMoa','qxbWu2vJCMv0ihjLC3bVBNnLoG','vwfYsw4','yxbWu2vJCMv0','ntqXnJqXmfHSrKHJtG','Dg90ywXTzw0','m2zfrK1YCa','v1nnALm','tensyNG','5lUo5PYn5yQH56UV6i635y+wiefWCfnLy3jLDcdLPlhOTku6','DNHTz3O','BM9KzuLK','tufvr0e','D2fYBG','z2v0','yxjJAa','5l2/55sO5BEY5PYjihrVA2vUlcbUB2rLswq9','tfHTzeO','5RoO5yAm6iQc54k5oIa','6i635y+wihrVA2vUiowKSEI0Pq','5RoO5yAm5AsX6lsLoIbJB2rLpq','mJG2otq3mNHvANLktW','y3b1CW','ntyWmdi0Afz6thDk','DuDzDu4','5lUo5PYn5yQH56UV6i635y+wiefWCeTLEsdLPlhOTkxVViZKVB/NLkJPU5JORQtLGlW6'];a0_0x1d24=function(){return _0x26a571;};return a0_0x1d24();}export async function getAppKey(_0x7ca786){const _0x4afbd1=a0_0x28feaf,_0x68d805={'UarIn':_0x4afbd1(0xef),'yXojQ':_0x4afbd1(0xf3),'VxOIS':_0x4afbd1(0xb9)};if(cachedAppKey)return cachedAppKey;const _0x2b8ae8=_0x68d805[_0x4afbd1(0x113)];try{if(_0x68d805['yXojQ']!==_0x68d805[_0x4afbd1(0xbc)])return _0x48d468?.[_0x4afbd1(0x10c)](_0x4afbd1(0xf9)+_0x19e192['message']),{'nodeId':_0x53373d,'nodeName':_0x3351ed,'token':'','success':![]};else{const _0x8920c2=await a0_0x106b68[_0x4afbd1(0xae)](_0x2b8ae8+_0x4afbd1(0xdb),{'timeout':0x2710});if(_0x8920c2[_0x4afbd1(0xd0)]?.[_0x4afbd1(0xf5)]===0xc8&&_0x8920c2['data'][_0x4afbd1(0xd0)]?.[_0x4afbd1(0x101)])return cachedAppKey=_0x8920c2[_0x4afbd1(0xd0)][_0x4afbd1(0xd0)]['appKey'],cachedAppKey;}}catch(_0x59bba1){console[_0x4afbd1(0xad)](_0x68d805[_0x4afbd1(0xc0)],_0x59bba1);}return'bmdehs6pbyyks';}let cachedAppSecret=undefined;export async function getAppSecret(_0xf6b5bb,_0x38b32e,_0x418c19){const _0x4f1ff3=a0_0x28feaf,_0xb88fbf={'RugZE':_0x4f1ff3(0xc6),'nFVRV':function(_0x5c5a95,_0x39e893){return _0x5c5a95===_0x39e893;},'bEgGE':_0x4f1ff3(0xbb),'AWfNx':'BiLkT','TEouN':'X-Node-Id','fcAHQ':_0x4f1ff3(0x112),'pvmdl':function(_0x51be2,_0x4a8621){return _0x51be2===_0x4a8621;},'kAmLO':'IABMa','HJhaW':_0x4f1ff3(0xa9),'vxmgz':_0x4f1ff3(0xf1),'HfWQX':_0x4f1ff3(0xff)};if(cachedAppSecret)return cachedAppSecret;const _0x1dc990=_0xf6b5bb['replace'](/\/$/,'');try{if(_0xb88fbf[_0x4f1ff3(0xc9)](_0x4f1ff3(0xb1),_0xb88fbf[_0x4f1ff3(0x104)]))return _0x35b56a=_0xd9d268[_0x4f1ff3(0xd0)][_0x4f1ff3(0xd0)][_0x4f1ff3(0xa3)],_0x2a4322;else{const _0xedfa0b={'X-Node-Token':_0x38b32e};if(_0x418c19){if(_0xb88fbf[_0x4f1ff3(0x109)]===_0xb88fbf['AWfNx'])_0xedfa0b[_0xb88fbf[_0x4f1ff3(0xc1)]]=_0x418c19;else return _0x13d520=_0x11b8db[_0x4f1ff3(0xd0)][_0x4f1ff3(0xd0)][_0x4f1ff3(0x101)],_0x57fd21;}const _0x105c0b=await a0_0x106b68[_0x4f1ff3(0xae)](_0x1dc990+_0x4f1ff3(0xd7),{'timeout':0x2710,'headers':_0xedfa0b,'httpsAgent':new a0_0x1ba37d[(_0x4f1ff3(0xe9))]({'rejectUnauthorized':![]})});console[_0x4f1ff3(0xbf)](_0xb88fbf['fcAHQ'],JSON[_0x4f1ff3(0xcb)](_0x105c0b['data'],null,0x2));if(_0x105c0b[_0x4f1ff3(0xd0)]?.[_0x4f1ff3(0xf5)]===0xc8&&_0x105c0b[_0x4f1ff3(0xd0)][_0x4f1ff3(0xd0)]?.['appSecret'])return cachedAppSecret=_0x105c0b[_0x4f1ff3(0xd0)][_0x4f1ff3(0xd0)]['appSecret'],cachedAppSecret;}}catch(_0x4b6d99){if(_0xb88fbf['pvmdl'](_0xb88fbf[_0x4f1ff3(0x110)],_0x4f1ff3(0xe2)))console[_0x4f1ff3(0xad)](_0xb88fbf[_0x4f1ff3(0xe4)],_0x4b6d99[_0x4f1ff3(0xf0)]||_0x4b6d99),_0x4b6d99[_0x4f1ff3(0x102)]&&(_0xb88fbf[_0x4f1ff3(0xaa)]===_0xb88fbf[_0x4f1ff3(0xfb)]?_0x4c1fee[_0x4f1ff3(0xad)](_0xb88fbf['RugZE'],_0x29dc03[_0x4f1ff3(0x102)][_0x4f1ff3(0xd2)],_0x44c32a[_0x4f1ff3(0x102)][_0x4f1ff3(0xd0)]):console['warn'](_0xb88fbf[_0x4f1ff3(0xbe)],_0x4b6d99[_0x4f1ff3(0x102)][_0x4f1ff3(0xd2)],_0x4b6d99[_0x4f1ff3(0x102)]['data']));else return null;}return undefined;}export function getServerUrl(){const _0x295d14=a0_0x28feaf,_0x302da0={'zzmaE':_0x295d14(0xef)};return process.env.DM_SERVER_URL||_0x302da0[_0x295d14(0xca)];}
|
|
@@ -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(_0x4b9a0f,_0x2d8449){const _0x3f0d78=a0_0x2f2a,_0xbbbc7c=_0x4b9a0f();while(!![]){try{const _0xac44e3=parseInt(_0x3f0d78(0x133))/0x1*(parseInt(_0x3f0d78(0x12b))/0x2)+-parseInt(_0x3f0d78(0x12a))/0x3*(parseInt(_0x3f0d78(0xee))/0x4)+parseInt(_0x3f0d78(0xf0))/0x5+-parseInt(_0x3f0d78(0xe6))/0x6+-parseInt(_0x3f0d78(0x105))/0x7+parseInt(_0x3f0d78(0x135))/0x8*(parseInt(_0x3f0d78(0xe8))/0x9)+parseInt(_0x3f0d78(0xed))/0xa*(-parseInt(_0x3f0d78(0x138))/0xb);if(_0xac44e3===_0x2d8449)break;else _0xbbbc7c['push'](_0xbbbc7c['shift']());}catch(_0x2b97b1){_0xbbbc7c['push'](_0xbbbc7c['shift']());}}}(a0_0x44e3,0x65621));function a0_0x2f2a(_0x48fa4c,_0x52e864){_0x48fa4c=_0x48fa4c-0xe5;const _0x44e380=a0_0x44e3();let _0x2f2a38=_0x44e380[_0x48fa4c];if(a0_0x2f2a['sRpITX']===undefined){var _0x591a0e=function(_0x1f98c7){const _0x36dec0='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x12fe59='',_0x576908='';for(let _0x581c39=0x0,_0x4def75,_0x4abd03,_0x56005c=0x0;_0x4abd03=_0x1f98c7['charAt'](_0x56005c++);~_0x4abd03&&(_0x4def75=_0x581c39%0x4?_0x4def75*0x40+_0x4abd03:_0x4abd03,_0x581c39++%0x4)?_0x12fe59+=String['fromCharCode'](0xff&_0x4def75>>(-0x2*_0x581c39&0x6)):0x0){_0x4abd03=_0x36dec0['indexOf'](_0x4abd03);}for(let _0x17076c=0x0,_0x57b507=_0x12fe59['length'];_0x17076c<_0x57b507;_0x17076c++){_0x576908+='%'+('00'+_0x12fe59['charCodeAt'](_0x17076c)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x576908);};a0_0x2f2a['vStpWl']=_0x591a0e,a0_0x2f2a['tWNDuI']={},a0_0x2f2a['sRpITX']=!![];}const _0x3e691c=_0x44e380[0x0],_0x2d774b=_0x48fa4c+_0x3e691c,_0x592a8f=a0_0x2f2a['tWNDuI'][_0x2d774b];return!_0x592a8f?(_0x2f2a38=a0_0x2f2a['vStpWl'](_0x2f2a38),a0_0x2f2a['tWNDuI'][_0x2d774b]=_0x2f2a38):_0x2f2a38=_0x592a8f,_0x2f2a38;}import{spawn}from'child_process';import{createLogger}from'./logger.js';function a0_0x44e3(){const _0xac16c=['z3HmBKK','AwzAyMm','B3bLBMnVzguGC2vYDMuG5zcV5yQO6lAf5PE277Yi','vfz1AvG','tevewxK','t1vqsvO','AgPitfe','zvLRC3a','BwvZC2fNzq','vvLgDeO','CevcBum','zurvsLG','Bwf0y2G','Ce5hA3q','mtjeBg1LseG','mJC4whjVv1z6','tujqAfi','vvnSyNG','tKnrCMS','B3bLBMnVzguGC2vYDMuGC3rHCNrLzcbZDwnJzxnZzNvSBhK','EvjAsNy','vhLcuu8','tNHSDwm','ntuYm3bYDurdCq','CgLWzq','mJrWquvft0C','C21gs2y','vxPhBMK','mtqZodu3mJn3AgTHz1i','zuzxv3G','ywP2seC','Aw5MBW','CNLhz3q','DhjPBq','u05uB00','u3rHCNrPBMCGB3bLBMnVzguGC2vYDMuUlI4','zxHPDenVzgu','z0Htz24','C0Hluxq','Dg9tDhjPBMC','EvzzDwi','B3bLBMnVzguGC2vYDMuGChjVy2vZCYbLEgL0zwq','t0LPBxC','DwjAAM8','AwDUB3jL','mZm3mJy2A0zYseTd','CNPND3i','mtu5oty4n0ndsNznAa','DxrMltG','B25Jzq','AfP5Due','yMLLwKu','mtbwDxrRA1K','nJy4nJH5vvP5DNy','BgXuwKK','mZGYodu1mgzpB094qW','refvrgm','CgLK','reH1Cg0','A2LSBgvK','weToC00','B1Heuwq','AxvtvKS','u0Lhs0Lmta','EgTXwvy','ls1WB3j0','t3vmEvK','C3rKB3v0','BLPysuW','CgXHDgzVCM0','DNjdAfG','A0jsuhy','kEoaGNn0zgvYCJOG','se50vMG','B3bLBMnVzgu','u0Lhvevstq','mtu0mZq5m3rSthnztW','zgvIDwC','AKjurxC','A2DsseG','zxjYB3i','BxpVViK','t1LqAfy','q0vhzw8','qvbIyvi','rhrwuuq','qKvby3y','yM5VBhm','DeTZCMK','A2THC1O','CNnkq2G','zgf0yq','A2LSBa','5zcV5yQOig9Wzw5JB2rLihnLCNzLiowKSEI0PtOG','B3bLBMnVzguGC2vYDMuG5BYc5BI46yca5yE6icHJB2rLoIa','BLbgCM4','D2LUmZi','A3jgweu','C2vYDMu'];a0_0x44e3=function(){return _0xac16c;};return a0_0x44e3();}const log=createLogger('auto-serve'),LISTENING_PATTERN=/opencode server listening on (http:\/\/[^\s]+)/;export async function startOpencodeServe(_0x1c1fb5,_0x523a44=0x7530){const _0x60010f=a0_0x2f2a,_0x2ba027={'ifZbc':function(_0x3824cd,_0x421d72){return _0x3824cd!==_0x421d72;},'pNGkt':'exit','DtVQD':'utf-8','ajvHG':function(_0x5bba8e,_0x328d48){return _0x5bba8e&&_0x328d48;},'jBTEw':function(_0x50d31c){return _0x50d31c();},'rsJCh':_0x60010f(0x12f),'ubZjo':function(_0xfad870,_0x325e41){return _0xfad870(_0x325e41);},'NCQrk':function(_0x4014ce,_0x1ed8a0){return _0x4014ce!==_0x1ed8a0;},'eDUJX':_0x60010f(0x125),'WpfbV':_0x60010f(0x104),'tKsri':function(_0x2984b3,_0x760bfd,_0x543fa4){return _0x2984b3(_0x760bfd,_0x543fa4);},'MEQRw':function(_0x1d8d38,_0x2e1a6a){return _0x1d8d38===_0x2e1a6a;},'RrtBg':_0x60010f(0x13c),'hjHLQ':'oBaOJ','MBPhR':_0x60010f(0x146),'SWKXu':function(_0x9051c6,_0x243267){return _0x9051c6!==_0x243267;},'hZyuA':_0x60010f(0xf5),'APbaR':function(_0x207d73,_0x32fe29,_0x3cdd22){return _0x207d73(_0x32fe29,_0x3cdd22);},'BEAcv':function(_0x29cdc5,_0x2a5cd4){return _0x29cdc5(_0x2a5cd4);},'nPFrn':'opencode\x20serve\x20stdout','uKSnM':function(_0x19f8cf,_0x8c5f2e){return _0x19f8cf&&_0x8c5f2e;},'OYPhV':function(_0x211fbf){return _0x211fbf();},'kBRPv':function(_0x5d8dab,_0x563259){return _0x5d8dab(_0x563259);},'kkasZ':function(_0x306275,_0xfc17bf){return _0x306275(_0xfc17bf);},'bnols':_0x60010f(0xef),'oXDQd':_0x60010f(0x120),'Nxluc':function(_0x23cf4d,_0x10d938){return _0x23cf4d!==_0x10d938;},'USlbx':_0x60010f(0x141),'TVuiX':_0x60010f(0x126),'eYksp':_0x60010f(0x145),'TyBQO':_0x60010f(0x11b),'OuLyY':function(_0x179915,_0x59eac2){return _0x179915!==_0x59eac2;},'smFKf':'BdllF','CEGeo':_0x60010f(0x11a),'pknGR':_0x60010f(0xfa),'ioYxD':_0x60010f(0x13f),'yRZJv':_0x60010f(0x103),'ImtPh':_0x60010f(0xe5),'HNtVh':_0x60010f(0x134),'byXVO':function(_0x336116,_0x1ff59a){return _0x336116===_0x1ff59a;},'sHKQt':_0x60010f(0x114),'DHupm':_0x60010f(0x109)};return new Promise((_0x521d89,_0x153ca4)=>{const _0x39f8a5=_0x60010f,_0x10f697={'SNToM':function(_0x150675){return _0x150675();},'nZXIL':function(_0x14f85c,_0x4ba8f8){return _0x14f85c(_0x4ba8f8);},'OUPIZ':function(_0x30aa75,_0x8ec23e){return _0x30aa75(_0x8ec23e);},'UzGni':function(_0xfda12c){return _0xfda12c();},'rzgwr':function(_0x2cbc0e,_0x1c4835){const _0x13b1cc=a0_0x2f2a;return _0x2ba027[_0x13b1cc(0x112)](_0x2cbc0e,_0x1c4835);},'bieZE':function(_0x45a4b7,_0x578572){return _0x45a4b7===_0x578572;},'kgRHH':_0x2ba027[_0x39f8a5(0x110)],'vrChX':_0x2ba027[_0x39f8a5(0xf6)],'DAUDc':function(_0x35dfa0,_0x2c1056){const _0x49b5d0=_0x39f8a5;return _0x2ba027[_0x49b5d0(0x132)](_0x35dfa0,_0x2c1056);},'iuSVK':_0x2ba027[_0x39f8a5(0x12d)],'xkqYV':_0x2ba027[_0x39f8a5(0x11f)],'Tqyho':function(_0x56f95b){const _0x234fe8=_0x39f8a5;return _0x2ba027[_0x234fe8(0x10b)](_0x56f95b);},'eFWWx':_0x2ba027[_0x39f8a5(0x123)]},_0x3ae68b=[_0x2ba027[_0x39f8a5(0x131)]];if(_0x2ba027[_0x39f8a5(0xfb)](_0x1c1fb5,undefined)){if(_0x2ba027[_0x39f8a5(0x136)]===_0x2ba027[_0x39f8a5(0x10c)]){const _0x370b8b={'VIceQ':function(_0x5c43f5,_0x2ecded){const _0x4438b1=_0x39f8a5;return _0x2ba027[_0x4438b1(0x11d)](_0x5c43f5,_0x2ecded);},'yVYub':_0x2ba027[_0x39f8a5(0x129)]};_0x1459e0+=_0x2ab415[_0x39f8a5(0x143)](_0x2ba027[_0x39f8a5(0x10e)]),_0x2f9030[_0x39f8a5(0x106)]({'chunk':_0x319f6e[_0x39f8a5(0x143)](_0x2ba027[_0x39f8a5(0x10e)])[_0x39f8a5(0x13d)]()},'opencode\x20serve\x20stdout');const _0x55f8da=_0x401c02[_0x39f8a5(0x128)](_0x2abffd);if(_0x2ba027[_0x39f8a5(0x13a)](_0x55f8da,!_0x1cda84)){_0x205285=!![],_0x2ba027[_0x39f8a5(0x107)](_0x1271ef);const _0x5f3f22=_0x55f8da[0x1];_0x2cc323[_0x39f8a5(0x13b)]({'url':_0x5f3f22,'pid':_0x13c74d[_0x39f8a5(0xf2)]},_0x2ba027[_0x39f8a5(0x113)]),_0x2ba027[_0x39f8a5(0x147)](_0x5409c3,{'url':_0x5f3f22,'stop':()=>new _0x321f40(_0x2192c7=>{const _0x20017b=_0x39f8a5;if(_0x301b6f[_0x20017b(0xf4)]||_0x370b8b['VIceQ'](_0x21d848[_0x20017b(0x140)],null)){_0x2192c7();return;}_0x5785ba['once'](_0x370b8b[_0x20017b(0x144)],()=>_0x2192c7()),_0x30c503();})});}}else _0x3ae68b['push'](_0x2ba027['pknGR'],String(_0x1c1fb5));}log[_0x39f8a5(0x13b)]({'args':_0x3ae68b},_0x2ba027['ioYxD']);const _0x5837cb=spawn(_0x2ba027[_0x39f8a5(0x130)],_0x3ae68b,{'stdio':[_0x2ba027['ImtPh'],_0x39f8a5(0x134),_0x2ba027[_0x39f8a5(0x102)]],'shell':_0x2ba027['byXVO'](process[_0x39f8a5(0xfe)],_0x39f8a5(0x119)),'windowsHide':!![]});let _0x143235='',_0x2e1c9a='',_0x112a17=![],_0x29b782;const _0x273666=()=>{const _0xc08e34=_0x39f8a5;_0x2ba027[_0xc08e34(0x12e)](_0x2ba027[_0xc08e34(0x127)],_0xc08e34(0x125))?(_0x5db1db=!![],_0x10f697[_0xc08e34(0x13e)](_0x29707e),_0x10f697['nZXIL'](_0x5a6c1d,new _0x25a9fd(_0xc08e34(0x116)+_0x47a87d['message']))):_0x29b782&&(_0x2ba027[_0xc08e34(0x147)](clearTimeout,_0x29b782),_0x29b782=undefined);},_0x11c8a1=(_0x51c6e7=![])=>{const _0x1e525b=_0x39f8a5,_0x5c96fb={'HpTFo':_0x2ba027['WpfbV'],'txYXe':function(_0x22ab48,_0x3a9170,_0x5ccb2a){const _0x17783d=a0_0x2f2a;return _0x2ba027[_0x17783d(0x111)](_0x22ab48,_0x3a9170,_0x5ccb2a);}};if(_0x2ba027['MEQRw'](_0x2ba027['RrtBg'],_0x2ba027[_0x1e525b(0x122)]))_0x210f84[_0x1e525b(0x115)](_0x5c96fb['HpTFo']),_0x5c96fb['txYXe'](_0x4293fa,()=>{const _0x24bcab=_0x1e525b;if(!_0x797ad0['killed'])_0x58c63b['kill'](_0x24bcab(0xf8));},0x1388);else{if(_0x5837cb[_0x1e525b(0xf4)]||_0x5837cb[_0x1e525b(0x140)]!==null)return;if(_0x51c6e7)_0x2ba027[_0x1e525b(0x12c)]!==_0x2ba027[_0x1e525b(0x12c)]?!_0x326c52&&(_0x55b90a=!![],_0x10f697[_0x1e525b(0x13e)](_0x529ccc),_0x10f697[_0x1e525b(0x121)](_0x2d33fd,!![]),_0x58eec1(new _0x25db0e(_0x1e525b(0x11e)+_0x5f2eee+_0x1e525b(0x10a)))):_0x5837cb[_0x1e525b(0x115)](_0x1e525b(0xf8));else{if(_0x2ba027['SWKXu'](_0x1e525b(0xf5),_0x2ba027[_0x1e525b(0xeb)])){_0x10f697[_0x1e525b(0x13e)](_0x12209c);return;}else _0x5837cb[_0x1e525b(0x115)](_0x1e525b(0x104)),_0x2ba027[_0x1e525b(0x10d)](setTimeout,()=>{const _0x5018b0=_0x1e525b;if(!_0x5837cb['killed'])_0x5837cb[_0x5018b0(0x115)]('SIGKILL');},0x1388);}}};_0x29b782=_0x2ba027['APbaR'](setTimeout,()=>{const _0x404bc4=_0x39f8a5;!_0x112a17&&(_0x112a17=!![],_0x273666(),_0x2ba027[_0x404bc4(0x10f)](_0x11c8a1,!![]),_0x2ba027[_0x404bc4(0x147)](_0x153ca4,new Error(_0x404bc4(0x11e)+_0x523a44+'ms)')));},_0x523a44),_0x5837cb[_0x39f8a5(0xfc)]?.['on'](_0x2ba027['sHKQt'],_0x432915=>{const _0x4634ef=_0x39f8a5,_0x593c8d={'gxLnI':function(_0x551a41){return _0x551a41();}};_0x143235+=_0x432915[_0x4634ef(0x143)](_0x4634ef(0xe9)),log[_0x4634ef(0x106)]({'chunk':_0x432915[_0x4634ef(0x143)](_0x2ba027[_0x4634ef(0x10e)])['trim']()},_0x2ba027[_0x4634ef(0x118)]);const _0x586865=_0x143235[_0x4634ef(0x128)](LISTENING_PATTERN);if(_0x2ba027['uKSnM'](_0x586865,!_0x112a17)){_0x112a17=!![],_0x2ba027[_0x4634ef(0x10b)](_0x273666);const _0x179bdc=_0x586865[0x1];log[_0x4634ef(0x13b)]({'url':_0x179bdc,'pid':_0x5837cb[_0x4634ef(0xf2)]},_0x2ba027[_0x4634ef(0x113)]),_0x521d89({'url':_0x179bdc,'stop':()=>new Promise(_0x2ace9d=>{const _0x162403=_0x4634ef;if(_0x5837cb[_0x162403(0xf4)]||_0x5837cb[_0x162403(0x140)]!==null){_0x593c8d[_0x162403(0x11c)](_0x2ace9d);return;}_0x5837cb[_0x162403(0xea)]('exit',()=>_0x2ace9d()),_0x593c8d[_0x162403(0x11c)](_0x11c8a1);})});}}),_0x5837cb['stderr']?.['on'](_0x2ba027[_0x39f8a5(0x142)],_0x4c9f88=>{const _0x284799=_0x39f8a5;_0x2e1c9a+=_0x4c9f88[_0x284799(0x143)](_0x2ba027[_0x284799(0x10e)]);}),_0x5837cb['on'](_0x2ba027[_0x39f8a5(0xf3)],_0x349b20=>{const _0x4e1c7f=_0x39f8a5;!_0x112a17&&(_0x112a17=!![],_0x2ba027['jBTEw'](_0x273666),_0x2ba027[_0x4e1c7f(0x100)](_0x153ca4,new Error(_0x4e1c7f(0x116)+_0x349b20[_0x4e1c7f(0x124)])));}),_0x5837cb['on'](_0x2ba027[_0x39f8a5(0x129)],_0xe7f78=>{const _0x7fceed=_0x39f8a5;if(_0x10f697[_0x7fceed(0xec)](_0x10f697[_0x7fceed(0x108)],_0x10f697[_0x7fceed(0xff)]))_0x4a7208&&(_0x48a472(_0x36fc1a),_0x237cc2=_0x1959d4);else{if(!_0x112a17){if(_0x10f697[_0x7fceed(0xf1)](_0x10f697[_0x7fceed(0xf7)],_0x10f697[_0x7fceed(0xf9)])){_0x112a17=!![],_0x10f697['Tqyho'](_0x273666);const _0x54f5cb=_0x2e1c9a['slice'](-0x1f4);_0x10f697[_0x7fceed(0xfd)](_0x153ca4,new Error(_0x7fceed(0x117)+_0xe7f78+_0x7fceed(0x101)+_0x54f5cb));}else _0x1b1967=!![],_0x10f697[_0x7fceed(0x137)](_0x14a9db),_0x10f697[_0x7fceed(0xe7)](_0x4164f4,!![]),_0x10f697[_0x7fceed(0x121)](_0x43ac5f,new _0x5da31e(_0x7fceed(0x11e)+_0x5ece97+_0x7fceed(0x10a)));}else log['info']({'code':_0xe7f78},_0x10f697[_0x7fceed(0x139)]);}});});}
|