@quukk/opencode-clawmessenger 0.1.0

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 (105) hide show
  1. package/README.md +526 -0
  2. package/bin/opencode-clawmessenger +2 -0
  3. package/bin/opencode-clawmessenger-setup +5 -0
  4. package/bin/opencode-clawmessenger.cmd +5 -0
  5. package/dist/cli.d.ts +2 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +288 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/core/auto-register.d.ts +24 -0
  10. package/dist/core/auto-register.d.ts.map +1 -0
  11. package/dist/core/auto-register.js +174 -0
  12. package/dist/core/auto-register.js.map +1 -0
  13. package/dist/core/config.d.ts +68 -0
  14. package/dist/core/config.d.ts.map +1 -0
  15. package/dist/core/config.js +80 -0
  16. package/dist/core/config.js.map +1 -0
  17. package/dist/core/daemon.d.ts +19 -0
  18. package/dist/core/daemon.d.ts.map +1 -0
  19. package/dist/core/daemon.js +77 -0
  20. package/dist/core/daemon.js.map +1 -0
  21. package/dist/core/dedup.d.ts +8 -0
  22. package/dist/core/dedup.d.ts.map +1 -0
  23. package/dist/core/dedup.js +25 -0
  24. package/dist/core/dedup.js.map +1 -0
  25. package/dist/core/hook-manager.d.ts +11 -0
  26. package/dist/core/hook-manager.d.ts.map +1 -0
  27. package/dist/core/hook-manager.js +33 -0
  28. package/dist/core/hook-manager.js.map +1 -0
  29. package/dist/core/logger.d.ts +5 -0
  30. package/dist/core/logger.d.ts.map +1 -0
  31. package/dist/core/logger.js +49 -0
  32. package/dist/core/logger.js.map +1 -0
  33. package/dist/core/mac-address.d.ts +2 -0
  34. package/dist/core/mac-address.d.ts.map +1 -0
  35. package/dist/core/mac-address.js +43 -0
  36. package/dist/core/mac-address.js.map +1 -0
  37. package/dist/core/message-handler.d.ts +64 -0
  38. package/dist/core/message-handler.d.ts.map +1 -0
  39. package/dist/core/message-handler.js +879 -0
  40. package/dist/core/message-handler.js.map +1 -0
  41. package/dist/core/ops-assistant.d.ts +26 -0
  42. package/dist/core/ops-assistant.d.ts.map +1 -0
  43. package/dist/core/ops-assistant.js +270 -0
  44. package/dist/core/ops-assistant.js.map +1 -0
  45. package/dist/core/qr-crypto.d.ts +2 -0
  46. package/dist/core/qr-crypto.d.ts.map +1 -0
  47. package/dist/core/qr-crypto.js +66 -0
  48. package/dist/core/qr-crypto.js.map +1 -0
  49. package/dist/core/session-manager.d.ts +22 -0
  50. package/dist/core/session-manager.d.ts.map +1 -0
  51. package/dist/core/session-manager.js +144 -0
  52. package/dist/core/session-manager.js.map +1 -0
  53. package/dist/core/types.d.ts +78 -0
  54. package/dist/core/types.d.ts.map +1 -0
  55. package/dist/core/types.js +26 -0
  56. package/dist/core/types.js.map +1 -0
  57. package/dist/index.d.ts +13 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +12 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/openclaw/client.d.ts +36 -0
  62. package/dist/openclaw/client.d.ts.map +1 -0
  63. package/dist/openclaw/client.js +494 -0
  64. package/dist/openclaw/client.js.map +1 -0
  65. package/dist/opencode/client.d.ts +35 -0
  66. package/dist/opencode/client.d.ts.map +1 -0
  67. package/dist/opencode/client.js +276 -0
  68. package/dist/opencode/client.js.map +1 -0
  69. package/dist/opencode/event-handler.d.ts +38 -0
  70. package/dist/opencode/event-handler.d.ts.map +1 -0
  71. package/dist/opencode/event-handler.js +467 -0
  72. package/dist/opencode/event-handler.js.map +1 -0
  73. package/dist/plugin.d.ts +4 -0
  74. package/dist/plugin.d.ts.map +1 -0
  75. package/dist/plugin.js +84 -0
  76. package/dist/plugin.js.map +1 -0
  77. package/dist/rongcloud/client.d.ts +34 -0
  78. package/dist/rongcloud/client.d.ts.map +1 -0
  79. package/dist/rongcloud/client.js +292 -0
  80. package/dist/rongcloud/client.js.map +1 -0
  81. package/dist/rongcloud/env-polyfill.d.ts +2 -0
  82. package/dist/rongcloud/env-polyfill.d.ts.map +1 -0
  83. package/dist/rongcloud/env-polyfill.js +107 -0
  84. package/dist/rongcloud/env-polyfill.js.map +1 -0
  85. package/dist/rongcloud/server-api.d.ts +38 -0
  86. package/dist/rongcloud/server-api.d.ts.map +1 -0
  87. package/dist/rongcloud/server-api.js +157 -0
  88. package/dist/rongcloud/server-api.js.map +1 -0
  89. package/dist/standalone.d.ts +10 -0
  90. package/dist/standalone.d.ts.map +1 -0
  91. package/dist/standalone.js +229 -0
  92. package/dist/standalone.js.map +1 -0
  93. package/dist/types/plugin.d.ts +20 -0
  94. package/dist/types/plugin.d.ts.map +1 -0
  95. package/dist/types/plugin.js +2 -0
  96. package/dist/types/plugin.js.map +1 -0
  97. package/dist/websocket/client.d.ts +20 -0
  98. package/dist/websocket/client.d.ts.map +1 -0
  99. package/dist/websocket/client.js +88 -0
  100. package/dist/websocket/client.js.map +1 -0
  101. package/dist/websocket/server-client.d.ts +22 -0
  102. package/dist/websocket/server-client.d.ts.map +1 -0
  103. package/dist/websocket/server-client.js +98 -0
  104. package/dist/websocket/server-client.js.map +1 -0
  105. package/package.json +71 -0
package/dist/cli.js ADDED
@@ -0,0 +1,288 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Logger } from './logger.js';
2
+ export declare function generateNodeId(): string;
3
+ export declare function getDeviceInfo(): {
4
+ deviceName: string;
5
+ platform: NodeJS.Platform;
6
+ arch: string;
7
+ totalMem: number;
8
+ freeMem: number;
9
+ cpuModel: string;
10
+ cpuCount: number;
11
+ macAddress: string;
12
+ };
13
+ export declare function registerNode(serverUrl?: string, nodeName?: string, log?: Logger): Promise<{
14
+ nodeId: string;
15
+ nodeName: string;
16
+ token: string;
17
+ success: boolean;
18
+ }>;
19
+ export declare function getOrRegisterToken(serverUrl?: string, nodeName?: string, log?: Logger): Promise<string>;
20
+ export declare function loadAutoConfig(): Promise<any>;
21
+ export declare function getAppKey(serverUrl?: string): Promise<string>;
22
+ export declare function getAppSecret(serverUrl: string, token: string, nodeId?: string): Promise<string | undefined>;
23
+ export declare function getServerUrl(): string;
24
+ //# sourceMappingURL=auto-register.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-register.d.ts","sourceRoot":"","sources":["../../src/core/auto-register.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAQ1C,wBAAgB,cAAc,IAAI,MAAM,CAIvC;AAED,wBAAgB,aAAa;;;;;;;;;EAW5B;AAED,wBAAsB,YAAY,CAChC,SAAS,GAAE,MAA2B,EACtC,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAkDhF;AAED,wBAAsB,kBAAkB,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,GAAG,CAAC,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAiBD,wBAAsB,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,CAMnD;AAID,wBAAsB,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBnE;AAID,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqCjH;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC"}
@@ -0,0 +1,174 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-register.js","sourceRoot":"","sources":["../../src/core/auto-register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { z } from 'zod';
2
+ import type { ClawMessengerConfig } from './types.js';
3
+ declare const ClawMessengerConfigSchema: z.ZodObject<{
4
+ appKey: z.ZodOptional<z.ZodString>;
5
+ appSecret: z.ZodOptional<z.ZodString>;
6
+ token: z.ZodOptional<z.ZodString>;
7
+ accountId: z.ZodOptional<z.ZodString>;
8
+ nodeName: z.ZodOptional<z.ZodString>;
9
+ serverUrl: z.ZodDefault<z.ZodString>;
10
+ opencodeUrl: z.ZodDefault<z.ZodString>;
11
+ opencodeDir: z.ZodOptional<z.ZodString>;
12
+ opencodePassword: z.ZodOptional<z.ZodString>;
13
+ apiBaseUrl: z.ZodOptional<z.ZodString>;
14
+ chatTimeout: z.ZodDefault<z.ZodNumber>;
15
+ hooks: z.ZodOptional<z.ZodObject<{
16
+ onSessionCreated: z.ZodOptional<z.ZodString>;
17
+ onSessionIdle: z.ZodOptional<z.ZodString>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ onSessionCreated?: string | undefined;
20
+ onSessionIdle?: string | undefined;
21
+ }, {
22
+ onSessionCreated?: string | undefined;
23
+ onSessionIdle?: string | undefined;
24
+ }>>;
25
+ }, "strip", z.ZodTypeAny, {
26
+ serverUrl: string;
27
+ opencodeUrl: string;
28
+ chatTimeout: number;
29
+ nodeName?: string | undefined;
30
+ token?: string | undefined;
31
+ appKey?: string | undefined;
32
+ appSecret?: string | undefined;
33
+ accountId?: string | undefined;
34
+ opencodeDir?: string | undefined;
35
+ opencodePassword?: string | undefined;
36
+ apiBaseUrl?: string | undefined;
37
+ hooks?: {
38
+ onSessionCreated?: string | undefined;
39
+ onSessionIdle?: string | undefined;
40
+ } | undefined;
41
+ }, {
42
+ nodeName?: string | undefined;
43
+ token?: string | undefined;
44
+ appKey?: string | undefined;
45
+ appSecret?: string | undefined;
46
+ accountId?: string | undefined;
47
+ serverUrl?: string | undefined;
48
+ opencodeUrl?: string | undefined;
49
+ opencodeDir?: string | undefined;
50
+ opencodePassword?: string | undefined;
51
+ apiBaseUrl?: string | undefined;
52
+ chatTimeout?: number | undefined;
53
+ hooks?: {
54
+ onSessionCreated?: string | undefined;
55
+ onSessionIdle?: string | undefined;
56
+ } | undefined;
57
+ }>;
58
+ export declare class ConfigManager {
59
+ private configPath;
60
+ private config?;
61
+ constructor(configPath?: string);
62
+ load(): ClawMessengerConfig;
63
+ save(config: Partial<ClawMessengerConfig>): void;
64
+ getConfigPath(): string;
65
+ exists(): boolean;
66
+ }
67
+ export { ClawMessengerConfigSchema };
68
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGtD,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgB7B,CAAC;AAEH,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAC,CAAsB;gBAEzB,UAAU,CAAC,EAAE,MAAM;IAI/B,IAAI,IAAI,mBAAmB;IAiC3B,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAchD,aAAa,IAAI,MAAM;IAIvB,MAAM,IAAI,OAAO;CAGlB;AAED,OAAO,EAAE,yBAAyB,EAAE,CAAC"}