@xopcai/xopcbot 0.1.1 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/agent/service.js +121 -35
  2. package/dist/agent/service.js.map +1 -1
  3. package/dist/channels/telegram/command-handler.d.ts +3 -0
  4. package/dist/channels/telegram/command-handler.js +69 -0
  5. package/dist/channels/telegram/command-handler.js.map +1 -1
  6. package/dist/channels/telegram/plugin.d.ts +1 -0
  7. package/dist/channels/telegram/plugin.js +97 -1
  8. package/dist/channels/telegram/plugin.js.map +1 -1
  9. package/dist/cli/commands/config.js +59 -0
  10. package/dist/cli/commands/config.js.map +1 -1
  11. package/dist/cli/commands/gateway-daemon.d.ts +1 -0
  12. package/dist/cli/commands/gateway-daemon.js +141 -0
  13. package/dist/cli/commands/gateway-daemon.js.map +1 -0
  14. package/dist/cli/commands/gateway.js +387 -45
  15. package/dist/cli/commands/gateway.js.map +1 -1
  16. package/dist/cli/commands/onboard.js +198 -0
  17. package/dist/cli/commands/onboard.js.map +1 -1
  18. package/dist/cli/index.js +17 -5
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/config/paths.js +13 -8
  21. package/dist/config/paths.js.map +1 -1
  22. package/dist/config/schema.d.ts +22 -0
  23. package/dist/config/schema.js +16 -0
  24. package/dist/config/schema.js.map +1 -1
  25. package/dist/daemon/background-start.d.ts +33 -0
  26. package/dist/daemon/background-start.js +89 -0
  27. package/dist/daemon/background-start.js.map +1 -0
  28. package/dist/daemon/gateway-manager.d.ts +87 -0
  29. package/dist/daemon/gateway-manager.js +324 -0
  30. package/dist/daemon/gateway-manager.js.map +1 -0
  31. package/dist/daemon/index.d.ts +5 -0
  32. package/dist/daemon/index.js +6 -0
  33. package/dist/daemon/index.js.map +1 -0
  34. package/dist/gateway/__tests__/auth.test.d.ts +1 -0
  35. package/dist/gateway/__tests__/auth.test.js +128 -0
  36. package/dist/gateway/__tests__/auth.test.js.map +1 -0
  37. package/dist/gateway/__tests__/process-manager.test.d.ts +4 -0
  38. package/dist/gateway/__tests__/process-manager.test.js +140 -0
  39. package/dist/gateway/__tests__/process-manager.test.js.map +1 -0
  40. package/dist/gateway/auth.d.ts +33 -0
  41. package/dist/gateway/auth.js +94 -0
  42. package/dist/gateway/auth.js.map +1 -0
  43. package/dist/gateway/hono/app.js +54 -15
  44. package/dist/gateway/hono/app.js.map +1 -1
  45. package/dist/gateway/index.d.ts +3 -0
  46. package/dist/gateway/index.js +3 -0
  47. package/dist/gateway/index.js.map +1 -1
  48. package/dist/gateway/pid-file.d.ts +35 -0
  49. package/dist/gateway/pid-file.js +111 -0
  50. package/dist/gateway/pid-file.js.map +1 -0
  51. package/dist/gateway/port-checker.d.ts +24 -0
  52. package/dist/gateway/port-checker.js +132 -0
  53. package/dist/gateway/port-checker.js.map +1 -0
  54. package/dist/gateway/process-manager.d.ts +62 -0
  55. package/dist/gateway/process-manager.js +370 -0
  56. package/dist/gateway/process-manager.js.map +1 -0
  57. package/dist/gateway/process-manager.types.d.ts +64 -0
  58. package/dist/gateway/process-manager.types.js +5 -0
  59. package/dist/gateway/process-manager.types.js.map +1 -0
  60. package/dist/gateway/server.js +3 -1
  61. package/dist/gateway/server.js.map +1 -1
  62. package/dist/gateway/service.d.ts +20 -0
  63. package/dist/gateway/service.js +67 -0
  64. package/dist/gateway/service.js.map +1 -1
  65. package/dist/gateway/static/root/assets/{main-CfIxL-cL.js → main-DevbZW9K.js} +373 -251
  66. package/dist/gateway/static/root/assets/main-DevbZW9K.js.map +1 -0
  67. package/dist/gateway/static/root/assets/{main-DndcTCgX.css → main-DxZg1Nmz.css} +1 -1
  68. package/dist/gateway/static/root/index.html +2 -2
  69. package/dist/session/store.js +11 -2
  70. package/dist/session/store.js.map +1 -1
  71. package/package.json +2 -2
  72. package/dist/gateway/static/root/assets/main-CfIxL-cL.js.map +0 -1
@@ -1,78 +1,414 @@
1
1
  import { Command } from 'commander';
2
+ import crypto from 'crypto';
2
3
  import { GatewayServer } from '../../gateway/index.js';
4
+ import { loadConfig, saveConfig, DEFAULT_PATHS } from '../../config/index.js';
3
5
  import { createLogger } from '../../utils/logger.js';
4
6
  import { register, formatExamples } from '../registry.js';
5
7
  import { getContextWithOpts } from '../index.js';
8
+ import { GatewayProcessManager } from '../../gateway/process-manager.js';
6
9
  const log = createLogger('GatewayCommand');
7
10
  function createGatewayCommand(_ctx) {
8
11
  const cmd = new Command('gateway')
9
12
  .description('Start the xopcbot gateway server')
10
13
  .addHelpText('after', formatExamples([
11
- 'xopcbot gateway # Start with default port',
14
+ 'xopcbot gateway # Start with default port (foreground)',
12
15
  'xopcbot gateway --port 8080 # Custom port',
13
16
  'xopcbot gateway --host 127.0.0.1 # Bind to localhost only',
14
17
  'xopcbot gateway --token secret # Enable authentication',
15
18
  'xopcbot gateway --no-hot-reload # Disable config hot reload',
19
+ 'xopcbot gateway --background # Run in background (daemon mode)',
20
+ 'xopcbot gateway --bg # Shorthand for --background',
21
+ 'xopcbot gateway status # Check gateway status',
22
+ 'xopcbot gateway stop # Stop running gateway',
23
+ 'xopcbot gateway restart # Restart gateway',
24
+ 'xopcbot gateway logs # View recent logs',
25
+ 'xopcbot gateway token # Show current token',
26
+ 'xopcbot gateway token --generate # Generate new token',
16
27
  ]))
17
28
  .option('--host <address>', 'Host to bind to', '0.0.0.0')
18
29
  .option('--port <number>', 'Port to listen on', '18790')
19
30
  .option('--token <token>', 'Authentication token')
20
31
  .option('--no-hot-reload', 'Disable config hot reload')
32
+ .option('-b, --background', 'Run in background (daemon mode)')
33
+ .option('--log-file <path>', 'Log file path for background mode')
34
+ .addCommand(createTokenCommand())
35
+ .addCommand(createStatusCommand())
36
+ .addCommand(createStopCommand())
37
+ .addCommand(createRestartCommand())
38
+ .addCommand(createLogsCommand())
21
39
  .action(async (options) => {
22
40
  const ctx = getContextWithOpts();
23
- const server = new GatewayServer({
24
- host: options.host,
25
- port: parseInt(options.port, 10),
26
- token: options.token,
27
- verbose: ctx.isVerbose,
28
- configPath: ctx.configPath,
29
- enableHotReload: options.hotReload,
30
- });
31
- let shuttingDown = false;
32
- const shutdown = async (signal) => {
33
- if (shuttingDown)
34
- return;
35
- shuttingDown = true;
36
- console.log(`\n🛑 Received ${signal}, shutting down...`);
37
- // Force exit after 5 seconds if graceful shutdown fails
38
- const forceExit = setTimeout(() => {
39
- console.log('⚠️ Force exiting...');
40
- process.exit(1);
41
- }, 5000);
42
- try {
43
- await server.stop();
44
- clearTimeout(forceExit);
45
- console.log('✅ Gateway stopped');
46
- process.exit(0);
41
+ // Load config for token and other settings
42
+ const config = loadConfig(ctx.configPath);
43
+ // Background mode: use process manager
44
+ if (options.background) {
45
+ await startBackgroundMode(options, ctx, config);
46
+ return;
47
+ }
48
+ // Foreground mode: use GatewayServer directly
49
+ await startForegroundMode(options, ctx, config);
50
+ });
51
+ return cmd;
52
+ }
53
+ /**
54
+ * Create the token subcommand for managing gateway authentication token.
55
+ */
56
+ function createTokenCommand() {
57
+ return new Command('token')
58
+ .description('Manage gateway authentication token')
59
+ .option('--generate', 'Generate a new token and save to config')
60
+ .option('--mode <mode>', 'Auth mode: token or none', 'token')
61
+ .action(async (options) => {
62
+ const ctx = getContextWithOpts();
63
+ const configPath = ctx.configPath || DEFAULT_PATHS.config;
64
+ try {
65
+ // Load current config
66
+ const config = loadConfig(configPath);
67
+ if (options.generate) {
68
+ // Generate new token
69
+ const newToken = crypto.randomBytes(24).toString('hex');
70
+ // Update config
71
+ config.gateway = config.gateway || {};
72
+ config.gateway.auth = {
73
+ mode: 'token',
74
+ token: newToken,
75
+ };
76
+ // Save config
77
+ await saveConfig(config, configPath);
78
+ console.log('✅ Generated new gateway token:');
79
+ console.log('');
80
+ console.log(` ${newToken}`);
81
+ console.log('');
82
+ console.log('📝 Saved to config file. Use this token in the X-Api-Key header or as:');
83
+ console.log(` xopcbot gateway --token ${newToken}`);
84
+ console.log('');
85
+ console.log('Or set environment variable:');
86
+ console.log(` export XOPCBOT_GATEWAY_TOKEN=${newToken}`);
47
87
  }
48
- catch (err) {
49
- clearTimeout(forceExit);
50
- console.error('❌ Error during shutdown:', err);
51
- process.exit(1);
88
+ else {
89
+ // Show current token
90
+ const currentToken = config.gateway?.auth?.token;
91
+ const mode = config.gateway?.auth?.mode || 'token';
92
+ if (mode === 'none') {
93
+ console.log('⚠️ Gateway authentication is disabled (mode: none)');
94
+ console.log('');
95
+ console.log('To enable authentication, run:');
96
+ console.log(' xopcbot gateway token --generate');
97
+ }
98
+ else if (currentToken) {
99
+ const tokenPreview = `${currentToken.slice(0, 8)}...${currentToken.slice(-8)}`;
100
+ console.log('🔑 Current gateway token:');
101
+ console.log('');
102
+ console.log(` ${currentToken}`);
103
+ console.log('');
104
+ console.log(`Preview: ${tokenPreview}`);
105
+ console.log('');
106
+ console.log('Usage:');
107
+ console.log(` xopcbot gateway --token ${currentToken}`);
108
+ console.log('');
109
+ console.log('Or set environment variable:');
110
+ console.log(` export XOPCBOT_GATEWAY_TOKEN=${currentToken}`);
111
+ }
112
+ else {
113
+ console.log('⚠️ No token configured. A token will be auto-generated on startup.');
114
+ console.log('');
115
+ console.log('To set a persistent token, run:');
116
+ console.log(' xopcbot gateway token --generate');
117
+ }
52
118
  }
53
- };
54
- process.on('SIGINT', () => shutdown('SIGINT'));
55
- process.on('SIGTERM', () => shutdown('SIGTERM'));
56
- // Handle uncaught errors
57
- process.on('uncaughtException', (err) => {
58
- log.error({ err }, 'Uncaught exception');
59
- shutdown('uncaughtException');
60
- });
61
- process.on('unhandledRejection', (reason) => {
62
- log.error({ reason }, 'Unhandled rejection');
119
+ }
120
+ catch (error) {
121
+ log.error({ err: error }, 'Failed to manage token');
122
+ process.exit(1);
123
+ }
124
+ });
125
+ }
126
+ /**
127
+ * Start gateway in background mode using process manager
128
+ */
129
+ async function startBackgroundMode(options, ctx, config) {
130
+ const manager = new GatewayProcessManager();
131
+ // Check if already running
132
+ if (manager.isRunning()) {
133
+ const status = manager.getStatus();
134
+ console.log('⚠️ Gateway is already running');
135
+ if (status.pid) {
136
+ console.log(` PID: ${status.pid}`);
137
+ }
138
+ if (status.uptime) {
139
+ const minutes = Math.floor(status.uptime / 60000);
140
+ const seconds = Math.floor((status.uptime % 60000) / 1000);
141
+ console.log(` Uptime: ${minutes}m ${seconds}s`);
142
+ }
143
+ console.log('\n💡 Use "xopcbot gateway restart" to restart');
144
+ console.log('💡 Use "xopcbot gateway stop" to stop');
145
+ console.log('💡 Use "xopcbot gateway status" to check status');
146
+ return;
147
+ }
148
+ const processConfig = {
149
+ host: options.host,
150
+ port: parseInt(options.port, 10),
151
+ token: options.token || config?.gateway?.auth?.token,
152
+ configPath: ctx.configPath,
153
+ verbose: ctx.isVerbose,
154
+ background: true,
155
+ logFile: options.logFile,
156
+ enableHotReload: options.hotReload,
157
+ };
158
+ console.log('🚀 Starting gateway in background mode...');
159
+ const result = await manager.start(processConfig);
160
+ if (result.success) {
161
+ const host = options.host === '0.0.0.0' ? 'localhost' : options.host;
162
+ const token = processConfig.token;
163
+ console.log('✅ Gateway started successfully');
164
+ console.log(` PID: ${result.pid}`);
165
+ console.log(` Host: ${options.host}`);
166
+ console.log(` Port: ${options.port}`);
167
+ console.log('');
168
+ console.log('🌐 WebUI Access:');
169
+ console.log(` URL: http://${host}:${options.port}`);
170
+ if (token) {
171
+ console.log(` Token: ${token.slice(0, 8)}...${token.slice(-8)}`);
172
+ console.log(` Direct URL: http://${host}:${options.port}?token=${token}`);
173
+ }
174
+ console.log('');
175
+ console.log('📝 Management Commands:');
176
+ console.log(' xopcbot gateway status # Check status');
177
+ console.log(' xopcbot gateway stop # Stop gateway');
178
+ console.log(' xopcbot gateway restart # Restart gateway');
179
+ console.log(' xopcbot gateway logs # View logs');
180
+ const logFile = manager.getLogFile();
181
+ console.log(` Log file: ${logFile}`);
182
+ }
183
+ else {
184
+ console.error('❌ Failed to start gateway');
185
+ if (result.portInUse) {
186
+ console.error('\n' + result.error);
187
+ }
188
+ else if (result.error) {
189
+ console.error(` ${result.error}`);
190
+ }
191
+ process.exit(1);
192
+ }
193
+ }
194
+ /**
195
+ * Start gateway in foreground mode (traditional)
196
+ */
197
+ async function startForegroundMode(options, ctx, config) {
198
+ const server = new GatewayServer({
199
+ host: options.host,
200
+ port: parseInt(options.port, 10),
201
+ token: options.token || config?.gateway?.auth?.token,
202
+ verbose: ctx.isVerbose,
203
+ configPath: ctx.configPath,
204
+ enableHotReload: options.hotReload,
205
+ });
206
+ let shuttingDown = false;
207
+ const shutdown = async (signal) => {
208
+ if (shuttingDown)
209
+ return;
210
+ shuttingDown = true;
211
+ console.log(`\n🛑 Received ${signal}, shutting down...`);
212
+ // Force exit after 5 seconds if graceful shutdown fails
213
+ const forceExit = setTimeout(() => {
214
+ console.log('⚠️ Force exiting...');
215
+ process.exit(1);
216
+ }, 5000);
217
+ try {
218
+ await server.stop();
219
+ clearTimeout(forceExit);
220
+ console.log('✅ Gateway stopped');
221
+ process.exit(0);
222
+ }
223
+ catch (err) {
224
+ clearTimeout(forceExit);
225
+ console.error('❌ Error during shutdown:', err);
226
+ process.exit(1);
227
+ }
228
+ };
229
+ process.on('SIGINT', () => shutdown('SIGINT'));
230
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
231
+ // Handle uncaught errors
232
+ process.on('uncaughtException', (err) => {
233
+ log.error({ err }, 'Uncaught exception');
234
+ shutdown('uncaughtException');
235
+ });
236
+ process.on('unhandledRejection', (reason) => {
237
+ log.error({ reason }, 'Unhandled rejection');
238
+ });
239
+ if (ctx.isVerbose) {
240
+ log.info({ host: options.host, port: options.port }, 'Starting gateway');
241
+ }
242
+ try {
243
+ await server.start();
244
+ }
245
+ catch (error) {
246
+ log.error({ err: error }, 'Failed to start gateway');
247
+ process.exit(1);
248
+ }
249
+ }
250
+ /**
251
+ * Create status subcommand
252
+ */
253
+ function createStatusCommand() {
254
+ return new Command('status')
255
+ .description('Check gateway status')
256
+ .action(() => {
257
+ const manager = new GatewayProcessManager();
258
+ const status = manager.getStatus();
259
+ if (!status.running) {
260
+ console.log('⚠️ Gateway is not running');
261
+ console.log('\n💡 Start with: xopcbot gateway --background');
262
+ return;
263
+ }
264
+ console.log('✅ Gateway is running');
265
+ console.log('');
266
+ console.log(` PID: ${status.pid}`);
267
+ console.log(` Host: ${status.host}`);
268
+ console.log(` Port: ${status.port}`);
269
+ if (status.uptime) {
270
+ const minutes = Math.floor(status.uptime / 60000);
271
+ const seconds = Math.floor((status.uptime % 60000) / 1000);
272
+ console.log(` Uptime: ${minutes}m ${seconds}s`);
273
+ }
274
+ if (status.health) {
275
+ console.log(` Health: ${status.health}`);
276
+ }
277
+ console.log('');
278
+ console.log('🌐 Access:');
279
+ const host = status.host === '0.0.0.0' ? 'localhost' : status.host;
280
+ console.log(` URL: http://${host}:${status.port}`);
281
+ // Load config to show token info
282
+ const ctx = getContextWithOpts();
283
+ const config = loadConfig(ctx.configPath);
284
+ const token = config?.gateway?.auth?.token;
285
+ if (token) {
286
+ console.log(` Token: ${token.slice(0, 8)}...${token.slice(-8)}`);
287
+ console.log(` Direct: http://${host}:${status.port}?token=${token}`);
288
+ }
289
+ console.log('');
290
+ console.log('📝 Management:');
291
+ console.log(' xopcbot gateway stop # Stop gateway');
292
+ console.log(' xopcbot gateway restart # Restart gateway');
293
+ console.log(' xopcbot gateway logs # View logs');
294
+ });
295
+ }
296
+ /**
297
+ * Create stop subcommand
298
+ */
299
+ function createStopCommand() {
300
+ return new Command('stop')
301
+ .description('Stop running gateway')
302
+ .option('--force', 'Force kill immediately')
303
+ .option('--timeout <ms>', 'Timeout before force kill', '5000')
304
+ .action(async (options) => {
305
+ const manager = new GatewayProcessManager();
306
+ if (!manager.isRunning()) {
307
+ console.log('ℹ️ Gateway is not running');
308
+ return;
309
+ }
310
+ console.log('🛑 Stopping gateway...');
311
+ const result = await manager.stop({
312
+ force: options.force,
313
+ timeout: parseInt(options.timeout, 10),
63
314
  });
64
- if (ctx.isVerbose) {
65
- log.info({ host: options.host, port: options.port }, 'Starting gateway');
315
+ if (result.success) {
316
+ console.log('✅ Gateway stopped');
317
+ if (result.wasRunning === false) {
318
+ console.log('ℹ️ Gateway was not running');
319
+ }
320
+ }
321
+ else {
322
+ console.error('❌ Failed to stop gateway');
323
+ if (result.error) {
324
+ console.error(` ${result.error}`);
325
+ }
326
+ process.exit(1);
66
327
  }
328
+ });
329
+ }
330
+ /**
331
+ * Create restart subcommand
332
+ */
333
+ function createRestartCommand() {
334
+ return new Command('restart')
335
+ .description('Restart gateway')
336
+ .option('--host <address>', 'Host to bind to')
337
+ .option('--port <number>', 'Port to listen on')
338
+ .action(async (options) => {
339
+ const ctx = getContextWithOpts();
340
+ const config = loadConfig(ctx.configPath);
341
+ const manager = new GatewayProcessManager();
342
+ // Load existing config or use defaults
343
+ const processConfig = {
344
+ host: options.host || config?.gateway?.host || '0.0.0.0',
345
+ port: parseInt(options.port || config?.gateway?.port || '18790', 10),
346
+ token: config?.gateway?.auth?.token,
347
+ configPath: ctx.configPath,
348
+ background: true,
349
+ enableHotReload: true,
350
+ };
351
+ console.log('🔄 Restarting gateway...');
67
352
  try {
68
- await server.start();
353
+ await manager.restart(processConfig);
354
+ console.log('✅ Gateway restarted successfully');
355
+ const status = manager.getStatus();
356
+ if (status.pid) {
357
+ console.log(` PID: ${status.pid}`);
358
+ }
359
+ const host = processConfig.host === '0.0.0.0' ? 'localhost' : processConfig.host;
360
+ console.log(` URL: http://${host}:${processConfig.port}`);
69
361
  }
70
362
  catch (error) {
71
- log.error({ err: error }, 'Failed to start gateway');
363
+ console.error('❌ Failed to restart gateway');
364
+ const errorMsg = error instanceof Error ? error.message : String(error);
365
+ console.error(` ${errorMsg}`);
72
366
  process.exit(1);
73
367
  }
74
368
  });
75
- return cmd;
369
+ }
370
+ /**
371
+ * Create logs subcommand
372
+ */
373
+ function createLogsCommand() {
374
+ return new Command('logs')
375
+ .description('View gateway logs')
376
+ .option('--lines <n>', 'Number of lines to show', '50')
377
+ .option('--follow', 'Follow log output (like tail -f)')
378
+ .action(async (options) => {
379
+ const manager = new GatewayProcessManager();
380
+ const logFile = manager.getLogFile();
381
+ if (!manager.isRunning()) {
382
+ console.log('⚠️ Gateway is not running');
383
+ }
384
+ console.log(`📄 Log file: ${logFile}`);
385
+ console.log('');
386
+ const logs = await manager.getLogs({ lines: parseInt(options.lines, 10) });
387
+ if (!logs) {
388
+ console.log('ℹ️ No logs available');
389
+ return;
390
+ }
391
+ console.log(logs);
392
+ if (options.follow) {
393
+ console.log('\nℹ️ Follow mode: Use Ctrl+C to exit');
394
+ // Simple follow implementation
395
+ const { exec } = await import('child_process');
396
+ const cmd = process.platform === 'win32'
397
+ ? `powershell -Command "Get-Content '${logFile}' -Wait"`
398
+ : `tail -f "${logFile}"`;
399
+ const child = exec(cmd);
400
+ child.stdout?.on('data', (data) => {
401
+ process.stdout.write(data.toString());
402
+ });
403
+ child.stderr?.on('data', (data) => {
404
+ process.stderr.write(data.toString());
405
+ });
406
+ process.on('SIGINT', () => {
407
+ child.kill();
408
+ process.exit(0);
409
+ });
410
+ }
411
+ });
76
412
  }
77
413
  register({
78
414
  id: 'gateway',
@@ -84,7 +420,13 @@ register({
84
420
  examples: [
85
421
  'xopcbot gateway',
86
422
  'xopcbot gateway --port 8080',
87
- 'xopcbot gateway --token my-secret-token',
423
+ 'xopcbot gateway --background',
424
+ 'xopcbot gateway status',
425
+ 'xopcbot gateway stop',
426
+ 'xopcbot gateway restart',
427
+ 'xopcbot gateway logs',
428
+ 'xopcbot gateway token',
429
+ 'xopcbot gateway token --generate',
88
430
  ],
89
431
  },
90
432
  });
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gateway.js","sourceRoot":"","sources":["../../../src/cli/commands/gateway.ts"],"names":[],"mappings":"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"}