saros-proxy 1.0.0 → 1.1.1

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 (45) hide show
  1. package/README.md +83 -16
  2. package/assets/models.json +3349 -0
  3. package/dist/cli/autostart.d.ts +13 -6
  4. package/dist/cli/autostart.js +317 -60
  5. package/dist/cli/autostart.js.map +1 -1
  6. package/dist/cli/daemon.js +89 -14
  7. package/dist/cli/daemon.js.map +1 -1
  8. package/dist/cli/harness-models.d.ts +5 -4
  9. package/dist/cli/harness-models.js +77 -30
  10. package/dist/cli/harness-models.js.map +1 -1
  11. package/dist/cli/help.js +5 -0
  12. package/dist/cli/help.js.map +1 -1
  13. package/dist/cli/log-render.d.ts +16 -0
  14. package/dist/cli/log-render.js +82 -0
  15. package/dist/cli/log-render.js.map +1 -0
  16. package/dist/cli/opencode-config.d.ts +1 -0
  17. package/dist/cli/opencode-config.js +7 -6
  18. package/dist/cli/opencode-config.js.map +1 -1
  19. package/dist/config.js +20 -4
  20. package/dist/config.js.map +1 -1
  21. package/dist/constants.d.ts +2 -0
  22. package/dist/constants.js +2 -0
  23. package/dist/constants.js.map +1 -1
  24. package/dist/index.js +29 -36
  25. package/dist/index.js.map +1 -1
  26. package/dist/logger.d.ts +16 -0
  27. package/dist/logger.js +56 -23
  28. package/dist/logger.js.map +1 -1
  29. package/dist/model-ladder.d.ts +30 -0
  30. package/dist/model-ladder.js +45 -0
  31. package/dist/model-ladder.js.map +1 -0
  32. package/dist/models-catalog.d.ts +25 -4
  33. package/dist/models-catalog.js +41 -12
  34. package/dist/models-catalog.js.map +1 -1
  35. package/dist/models-dev.d.ts +72 -0
  36. package/dist/models-dev.js +196 -0
  37. package/dist/models-dev.js.map +1 -0
  38. package/dist/models-refresh.d.ts +144 -0
  39. package/dist/models-refresh.js +522 -0
  40. package/dist/models-refresh.js.map +1 -0
  41. package/dist/models-sync.d.ts +6 -10
  42. package/dist/models-sync.js +26 -60
  43. package/dist/models-sync.js.map +1 -1
  44. package/package.json +5 -5
  45. package/models.json +0 -1440
@@ -2,14 +2,16 @@
2
2
  * autostart.ts — Register/unregister the daemon to start on user login.
3
3
  *
4
4
  * Methods:
5
- * registry — HKCU\Software\Microsoft\Windows\CurrentVersion\Run (default)
5
+ * registry — HKCU\Software\Microsoft\Windows\CurrentVersion\Run
6
6
  * vbs — VBScript in Windows Startup folder (legacy, may trigger AV)
7
- * auto — detect third-party AV → registry, else vbs
7
+ * systemd — ~/.config/systemd/user/saros-proxy.service (Linux default)
8
+ * auto — platform default: systemd on Linux, AV-aware vbs/registry on Windows
8
9
  *
9
- * macOS: creates a launchd agent plist (TODO)
10
- * Linux: creates a systemd --user service (TODO)
10
+ * macOS: not implemented (reported as unsupported, never a silent no-op)
11
11
  */
12
- export type AutostartMethod = 'vbs' | 'registry' | 'auto';
12
+ export type AutostartMethod = 'vbs' | 'registry' | 'systemd' | 'auto';
13
+ type ResolvedMethod = 'vbs' | 'registry' | 'systemd';
14
+ export type ResolvedAutostartMethod = ResolvedMethod | 'unsupported';
13
15
  /**
14
16
  * Detect third-party antivirus by scanning running processes.
15
17
  * Exported for testing.
@@ -17,9 +19,14 @@ export type AutostartMethod = 'vbs' | 'registry' | 'auto';
17
19
  export declare function detectThirdPartyAv(): boolean;
18
20
  /**
19
21
  * Resolve the effective method based on user preference and environment.
22
+ * Explicit methods are returned as-is; unknown platforms return 'unsupported'
23
+ * so callers can warn instead of silently doing nothing.
20
24
  * Exported for testing.
21
25
  */
22
- export declare function resolveMethod(method?: AutostartMethod, avDetected?: boolean): 'vbs' | 'registry';
26
+ export declare function resolveMethod(method?: AutostartMethod, avDetected?: boolean): ResolvedAutostartMethod;
27
+ /** Build the unit file contents. Exported for testing. */
28
+ export declare function buildSystemdUnit(port?: number): string;
23
29
  export declare function autostartInstall(port?: number, method?: AutostartMethod): Promise<void>;
24
30
  export declare function autostartUninstall(method?: AutostartMethod): void;
25
31
  export declare function autostartStatus(method?: AutostartMethod): void;
32
+ export {};
@@ -2,17 +2,18 @@
2
2
  * autostart.ts — Register/unregister the daemon to start on user login.
3
3
  *
4
4
  * Methods:
5
- * registry — HKCU\Software\Microsoft\Windows\CurrentVersion\Run (default)
5
+ * registry — HKCU\Software\Microsoft\Windows\CurrentVersion\Run
6
6
  * vbs — VBScript in Windows Startup folder (legacy, may trigger AV)
7
- * auto — detect third-party AV → registry, else vbs
7
+ * systemd — ~/.config/systemd/user/saros-proxy.service (Linux default)
8
+ * auto — platform default: systemd on Linux, AV-aware vbs/registry on Windows
8
9
  *
9
- * macOS: creates a launchd agent plist (TODO)
10
- * Linux: creates a systemd --user service (TODO)
10
+ * macOS: not implemented (reported as unsupported, never a silent no-op)
11
11
  */
12
- import { existsSync, writeFileSync, rmSync, readFileSync } from 'node:fs';
13
- import { join } from 'node:path';
12
+ import { existsSync, mkdirSync, writeFileSync, rmSync, readFileSync } from 'node:fs';
13
+ import { isAbsolute, join } from 'node:path';
14
14
  import { homedir } from 'node:os';
15
15
  import { execFileSync } from 'node:child_process';
16
+ import { logger } from '../logger.js';
16
17
  import * as ui from './ui.js';
17
18
  // ---------------------------------------------------------------------------
18
19
  // Constants
@@ -47,13 +48,17 @@ function windowsStartupDir() {
47
48
  function vbsPath() {
48
49
  return join(windowsStartupDir(), 'saros-proxy-daemon.vbs');
49
50
  }
51
+ /** Path of the compiled entry point, relative to this module. */
52
+ function distEntryPath() {
53
+ return join(import.meta.dirname, '..', '..', 'dist', 'index.js');
54
+ }
50
55
  /**
51
56
  * Resolve the saros-proxy command path.
52
57
  * On Windows with a global install this is typically %APPDATA%\npm\saros-proxy.cmd.
53
58
  * Falls back to the bare command name which works if the npm bin directory is on PATH.
54
59
  */
55
60
  function resolveCommand() {
56
- const viaDist = join(import.meta.dirname, '..', '..', 'dist', 'index.js');
61
+ const viaDist = distEntryPath();
57
62
  if (existsSync(viaDist)) {
58
63
  return `"${process.execPath}" "${viaDist}"`;
59
64
  }
@@ -102,16 +107,18 @@ export function detectThirdPartyAv() {
102
107
  }
103
108
  /**
104
109
  * Resolve the effective method based on user preference and environment.
110
+ * Explicit methods are returned as-is; unknown platforms return 'unsupported'
111
+ * so callers can warn instead of silently doing nothing.
105
112
  * Exported for testing.
106
113
  */
107
114
  export function resolveMethod(method, avDetected) {
108
- if (method === 'vbs')
109
- return 'vbs';
110
- if (method === 'registry')
111
- return 'registry';
112
- // auto or undefined → detect
115
+ if (method === 'vbs' || method === 'registry' || method === 'systemd')
116
+ return method;
117
+ if (process.platform === 'linux')
118
+ return 'systemd';
113
119
  if (process.platform !== 'win32')
114
- return 'registry';
120
+ return 'unsupported';
121
+ // auto or undefined → detect
115
122
  const hasAv = avDetected ?? detectThirdPartyAv();
116
123
  if (hasAv)
117
124
  return 'registry';
@@ -186,77 +193,319 @@ function vbsUninstall() {
186
193
  function vbsExists() {
187
194
  return existsSync(vbsPath());
188
195
  }
196
+ function vbsStatus() {
197
+ const path = vbsPath();
198
+ if (!vbsExists()) {
199
+ console.log('Auto-start is not installed (VBS).');
200
+ return;
201
+ }
202
+ const content = readFileSync(path, 'utf-8').trim();
203
+ const match = content.match(/start\s*--port\s+(\d+)/);
204
+ const portInfo = match?.[1] ? ` on port ${match[1]}` : '';
205
+ console.log(`Auto-start is enabled (VBS)${portInfo}. File: ${path}`);
206
+ }
189
207
  // ---------------------------------------------------------------------------
190
- // Public API
208
+ // systemd method (Linux user manager)
191
209
  // ---------------------------------------------------------------------------
192
- export async function autostartInstall(port, method) {
193
- let resolved;
194
- let wasPrompted = false;
195
- if (method === 'vbs' || method === 'registry') {
196
- resolved = method;
210
+ const SYSTEMD_UNIT_NAME = 'saros-proxy.service';
211
+ const SYSTEMCTL_TIMEOUT_MS = 10_000;
212
+ /**
213
+ * Exit statuses systemctl documents as answers: `is-enabled` returns 0
214
+ * (enabled) or 1 (disabled/not-found); `is-active` returns 0 (active) or 3
215
+ * (inactive). Anything else — missing binary, no user bus, timeout — is a
216
+ * failure to answer.
217
+ */
218
+ const IS_ENABLED_ANSWER_STATUSES = [0, 1];
219
+ const IS_ACTIVE_ANSWER_STATUSES = [0, 3];
220
+ /** Set once so a relative XDG_CONFIG_HOME is reported on the first use only. */
221
+ let warnedRelativeXdg = false;
222
+ /** `$XDG_CONFIG_HOME/systemd/user`, defaulting to `~/.config/systemd/user`. */
223
+ function systemdUserDir() {
224
+ const configHome = process.env.XDG_CONFIG_HOME;
225
+ if (configHome && isAbsolute(configHome)) {
226
+ return join(configHome, 'systemd', 'user');
197
227
  }
198
- else if (method === 'auto') {
199
- resolved = resolveMethod('auto');
228
+ if (configHome && !warnedRelativeXdg) {
229
+ // The XDG spec requires relative values to be ignored, not resolved against the cwd.
230
+ warnedRelativeXdg = true;
231
+ logger.warn('Ignoring relative XDG_CONFIG_HOME=%s; using %s instead.', configHome, join(homedir(), '.config'));
200
232
  }
201
- else {
202
- // No method specified — prompt the user to choose
203
- wasPrompted = true;
204
- if (process.stdin.isTTY) {
205
- ui.intro('Saros — Autostart');
206
- const choice = ui.assertNotCancelled(await ui.select({
207
- message: 'Choose an autostart method',
208
- options: [
209
- { value: 'registry', label: 'Windows Registry', hint: 'recommended' },
210
- { value: 'vbs', label: 'VBScript in Startup folder', hint: 'lighter, may trigger AV' },
211
- { value: 'auto', label: 'Detect automatically', hint: 'picks based on AV detection' },
212
- ],
213
- }));
214
- resolved = resolveMethod(choice);
233
+ return join(homedir(), '.config', 'systemd', 'user');
234
+ }
235
+ function systemdUnitPath() {
236
+ return join(systemdUserDir(), SYSTEMD_UNIT_NAME);
237
+ }
238
+ /**
239
+ * Command for `ExecStart`. systemd resolves a bare command name only in
240
+ * /usr/local/bin, /usr/bin, /bin and /sbin — not in the PATH of the shell that
241
+ * ran `install` — so an absolute path is mandatory.
242
+ */
243
+ function resolveSystemdCommand() {
244
+ const viaDist = distEntryPath();
245
+ if (!existsSync(viaDist)) {
246
+ throw new Error(`cannot find ${viaDist}; run \`npm run build\` before installing the systemd unit`);
247
+ }
248
+ return `"${process.execPath}" "${viaDist}"`;
249
+ }
250
+ /** Build the unit file contents. Exported for testing. */
251
+ export function buildSystemdUnit(port) {
252
+ const portArg = port ? ` --port ${port}` : '';
253
+ return [
254
+ '[Unit]',
255
+ 'Description=Saros proxy',
256
+ 'After=network-online.target',
257
+ 'Wants=network-online.target',
258
+ 'StartLimitIntervalSec=60',
259
+ 'StartLimitBurst=3',
260
+ '',
261
+ '[Service]',
262
+ 'Type=simple',
263
+ // The journal keeps the JSON lines; human rendering is CLI-only.
264
+ 'Environment=NODE_ENV=production',
265
+ `ExecStart=${resolveSystemdCommand()} serve${portArg}`,
266
+ 'Restart=on-failure',
267
+ 'RestartSec=5',
268
+ '',
269
+ '[Install]',
270
+ 'WantedBy=default.target',
271
+ '',
272
+ ].join('\n');
273
+ }
274
+ /** Run `systemctl --user …`, returning trimmed stdout. Throws on failure. */
275
+ function runSystemctl(args) {
276
+ return execFileSync('systemctl', ['--user', ...args], {
277
+ stdio: 'pipe',
278
+ timeout: SYSTEMCTL_TIMEOUT_MS,
279
+ }).toString().trim();
280
+ }
281
+ /** Explain why systemctl failed in a way the CLI can print verbatim. */
282
+ function describeSystemctlError(err) {
283
+ const execError = err;
284
+ if (execError.code === 'ENOENT') {
285
+ return '`systemctl` was not found on PATH';
286
+ }
287
+ const stderr = execError.stderr?.toString().trim().split('\n')[0];
288
+ if (stderr)
289
+ return stderr;
290
+ return execError.message ?? String(err);
291
+ }
292
+ /**
293
+ * Run a read-only systemctl query. Classifies by exit status only: stderr is
294
+ * localised (LANG=pt_BR translates "could not be found"), so it is kept for
295
+ * display and never inspected to decide whether systemd answered.
296
+ */
297
+ function querySystemctl(args) {
298
+ try {
299
+ return { output: runSystemctl(args) };
300
+ }
301
+ catch (err) {
302
+ const execError = err;
303
+ const output = execError.stdout?.toString().trim() ?? '';
304
+ if (execError.code === 'ENOENT') {
305
+ return { output, reason: describeSystemctlError(err) };
215
306
  }
216
- else {
217
- ui.warn('No --method specified and stdin is not a TTY. Using auto-detect. Pass --method <vbs|registry|auto> to skip this.');
218
- resolved = resolveMethod(undefined);
307
+ const answerStatuses = args[0] === 'is-active'
308
+ ? IS_ACTIVE_ANSWER_STATUSES
309
+ : IS_ENABLED_ANSWER_STATUSES;
310
+ if (typeof execError.status === 'number' && answerStatuses.includes(execError.status)) {
311
+ return { output };
219
312
  }
313
+ return { output, reason: describeSystemctlError(err) };
314
+ }
315
+ }
316
+ function systemdInstall(port) {
317
+ const unitPath = systemdUnitPath();
318
+ let unit;
319
+ try {
320
+ unit = buildSystemdUnit(port);
321
+ }
322
+ catch (err) {
323
+ logger.warn('Cannot install the systemd autostart unit: %s', err.message);
324
+ process.exitCode = 1;
325
+ return;
220
326
  }
221
- if (resolved === 'registry') {
327
+ try {
328
+ mkdirSync(systemdUserDir(), { recursive: true });
329
+ writeFileSync(unitPath, unit, 'utf-8');
330
+ }
331
+ catch (err) {
332
+ logger.warn('Could not write the systemd unit file at %s: %s', unitPath, describeSystemctlError(err));
333
+ process.exitCode = 1;
334
+ return;
335
+ }
336
+ try {
337
+ runSystemctl(['daemon-reload']);
338
+ runSystemctl(['enable', SYSTEMD_UNIT_NAME]);
339
+ // `enable --now` is a no-op start for an active unit, so a reinstall with a
340
+ // new --port would keep the old process. `restart` covers active and inactive.
341
+ runSystemctl(['restart', SYSTEMD_UNIT_NAME]);
342
+ }
343
+ catch (err) {
344
+ logger.warn('systemd autostart could not be enabled or started: %s. The unit file is at %s; check that `systemctl --user` works on this host (containers and WSL without systemd do not provide it).', describeSystemctlError(err), unitPath);
345
+ process.exitCode = 1;
346
+ return;
347
+ }
348
+ ui.success(`Auto-start installed via systemd --user: ${unitPath}`);
349
+ }
350
+ function systemdUninstall() {
351
+ const unitPath = systemdUnitPath();
352
+ if (!existsSync(unitPath)) {
353
+ console.log('No systemd auto-start entry found.');
354
+ return;
355
+ }
356
+ try {
357
+ runSystemctl(['disable', '--now', SYSTEMD_UNIT_NAME]);
358
+ }
359
+ catch (err) {
360
+ // Deleting the unit while the enable symlink survives leaves
361
+ // default.target.wants/saros-proxy.service dangling: the next login logs
362
+ // "Failed to load" and `is-enabled` still answers enabled. Keep it so the
363
+ // user can retry.
364
+ logger.warn('Could not disable the systemd unit: %s. The unit file was kept at %s; run `systemctl --user disable --now %s` and retry the uninstall.', describeSystemctlError(err).replace(/\.$/, ''), unitPath, SYSTEMD_UNIT_NAME);
365
+ process.exitCode = 1;
366
+ return;
367
+ }
368
+ rmSync(unitPath, { force: true });
369
+ try {
370
+ runSystemctl(['daemon-reload']);
371
+ }
372
+ catch (err) {
373
+ logger.warn('The systemd unit file was removed, but `daemon-reload` failed: %s', describeSystemctlError(err));
374
+ }
375
+ console.log(`Auto-start removed: ${unitPath}`);
376
+ }
377
+ function systemdStatus() {
378
+ const enabled = querySystemctl(['is-enabled', SYSTEMD_UNIT_NAME]);
379
+ const active = querySystemctl(['is-active', SYSTEMD_UNIT_NAME]);
380
+ const reason = enabled.reason ?? active.reason;
381
+ if (reason) {
382
+ logger.warn('Cannot determine systemd autostart status: %s', reason);
383
+ return;
384
+ }
385
+ if (enabled.output === 'enabled' || active.output === 'active') {
386
+ console.log(`Auto-start is enabled (systemd). Unit: ${systemdUnitPath()}`);
387
+ }
388
+ else {
389
+ console.log('Auto-start is not installed (systemd).');
390
+ }
391
+ }
392
+ // ---------------------------------------------------------------------------
393
+ // Platform dispatch
394
+ // ---------------------------------------------------------------------------
395
+ /** Platform that implements a method. */
396
+ function methodPlatform(method) {
397
+ return method === 'systemd' ? 'Linux' : 'Windows';
398
+ }
399
+ /** A method exists only on the platform that implements it. */
400
+ function isMethodSupported(method, platform = process.platform) {
401
+ if (method === 'systemd')
402
+ return platform === 'linux';
403
+ return platform === 'win32';
404
+ }
405
+ function isExplicitMethod(method) {
406
+ return method === 'vbs' || method === 'registry' || method === 'systemd';
407
+ }
408
+ /** Warn (never silently succeed) when this platform has no implementation. */
409
+ function reportUnsupported(action, method) {
410
+ const alternative = process.platform === 'darwin'
411
+ ? 'On macOS, create a launchd LaunchAgent or start `saros-proxy serve` from a login item.'
412
+ : 'Start `saros-proxy serve` manually or use the platform login mechanism.';
413
+ if (method && method !== 'auto') {
414
+ logger.warn(`Autostart method ${JSON.stringify(method)} is ${methodPlatform(method)}-only; this host runs ${process.platform}, so ${action} does nothing. ${alternative}`);
415
+ return;
416
+ }
417
+ logger.warn('Autostart is unsupported on %s; %s does nothing. %s', process.platform, action, alternative);
418
+ }
419
+ async function resolveInstallMethod(method) {
420
+ if (isExplicitMethod(method)) {
421
+ return {
422
+ resolved: isMethodSupported(method) ? method : 'unsupported',
423
+ prompted: false,
424
+ };
425
+ }
426
+ if (method === 'auto' || process.platform !== 'win32') {
427
+ return { resolved: resolveMethod(method), prompted: false };
428
+ }
429
+ // Windows without an explicit method: let the user pick.
430
+ if (!process.stdin.isTTY) {
431
+ ui.warn('No --method specified and stdin is not a TTY. Using auto-detect. Pass --method <vbs|registry|auto> to skip this.');
432
+ return { resolved: resolveMethod(undefined), prompted: false };
433
+ }
434
+ ui.intro('Saros — Autostart');
435
+ const choice = ui.assertNotCancelled(await ui.select({
436
+ message: 'Choose an autostart method',
437
+ options: [
438
+ { value: 'registry', label: 'Windows Registry', hint: 'recommended' },
439
+ { value: 'vbs', label: 'VBScript in Startup folder', hint: 'lighter, may trigger AV' },
440
+ { value: 'auto', label: 'Detect automatically', hint: 'picks based on AV detection' },
441
+ ],
442
+ }));
443
+ return { resolved: resolveMethod(choice), prompted: true };
444
+ }
445
+ // ---------------------------------------------------------------------------
446
+ // Public API
447
+ // ---------------------------------------------------------------------------
448
+ export async function autostartInstall(port, method) {
449
+ const { resolved, prompted } = await resolveInstallMethod(method);
450
+ if (resolved === 'unsupported') {
451
+ reportUnsupported('install', method);
452
+ process.exitCode = 1;
453
+ return;
454
+ }
455
+ if (resolved === 'systemd') {
456
+ systemdInstall(port);
457
+ }
458
+ else if (resolved === 'registry') {
222
459
  registryInstall(port);
223
460
  }
224
461
  else {
225
462
  vbsInstall(port);
226
463
  }
227
- if (wasPrompted && process.stdin.isTTY) {
464
+ if (prompted) {
228
465
  ui.outro('Autostart configured');
229
466
  }
230
467
  }
231
468
  export function autostartUninstall(method) {
232
- if (method === 'vbs') {
233
- vbsUninstall();
469
+ if (isExplicitMethod(method)) {
470
+ if (!isMethodSupported(method)) {
471
+ reportUnsupported('uninstall', method);
472
+ process.exitCode = 1;
473
+ return;
474
+ }
475
+ if (method === 'systemd')
476
+ systemdUninstall();
477
+ else if (method === 'vbs')
478
+ vbsUninstall();
479
+ else
480
+ registryUninstall();
481
+ return;
234
482
  }
235
- else if (method === 'registry') {
236
- registryUninstall();
483
+ if (process.platform === 'linux') {
484
+ systemdUninstall();
237
485
  }
238
- else {
239
- // Unspecified — clean up both
486
+ else if (process.platform === 'win32') {
487
+ // Unspecified — clean up both Windows entries
240
488
  vbsUninstall();
241
489
  registryUninstall();
242
490
  }
491
+ else {
492
+ reportUnsupported('uninstall');
493
+ process.exitCode = 1;
494
+ }
243
495
  }
244
496
  export function autostartStatus(method) {
245
- if (method === 'vbs') {
246
- const path = vbsPath();
247
- if (vbsExists()) {
248
- const content = readFileSync(path, 'utf-8').trim();
249
- const match = content.match(/start\s*--port\s+(\d+)/);
250
- const portInfo = match?.[1] ? ` on port ${match[1]}` : '';
251
- console.log(`Auto-start is enabled (VBS)${portInfo}. File: ${path}`);
497
+ if (isExplicitMethod(method)) {
498
+ if (!isMethodSupported(method)) {
499
+ reportUnsupported('status', method);
500
+ return;
252
501
  }
253
- else {
254
- console.log('Auto-start is not installed (VBS).');
502
+ if (method === 'systemd') {
503
+ systemdStatus();
255
504
  }
256
- return;
257
- }
258
- if (method === 'registry') {
259
- if (registryStatus()) {
505
+ else if (method === 'vbs') {
506
+ vbsStatus();
507
+ }
508
+ else if (registryStatus()) {
260
509
  console.log(`Auto-start is enabled (Registry). Key: ${REG_RUN_KEY}\\${REG_VALUE_NAME}`);
261
510
  }
262
511
  else {
@@ -264,7 +513,15 @@ export function autostartStatus(method) {
264
513
  }
265
514
  return;
266
515
  }
267
- // Check both
516
+ if (process.platform === 'linux') {
517
+ systemdStatus();
518
+ return;
519
+ }
520
+ if (process.platform !== 'win32') {
521
+ reportUnsupported('status');
522
+ return;
523
+ }
524
+ // Check both Windows entries
268
525
  const vbs = vbsExists();
269
526
  const reg = registryStatus();
270
527
  if (vbs || reg) {
@@ -1 +1 @@
1
- {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/cli/autostart.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAQ9B,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E,MAAM,WAAW,GAAG,yDAAyD,CAAC;AAC9E,MAAM,cAAc,GAAG,aAAa,CAAC;AAErC,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,SAAS,EAAQ,cAAc;IAC/B,eAAe,EAAE,cAAc;IAC/B,QAAQ,EAAS,cAAc;IAC/B,UAAU,EAAO,SAAS;IAC1B,IAAI,EAAa,SAAS;IAC1B,KAAK,EAAY,YAAY;IAC7B,SAAS,EAAQ,QAAQ;IACzB,cAAc,EAAG,QAAQ;IACzB,QAAQ,EAAS,SAAS;IAC1B,OAAO,EAAU,SAAS;IAC1B,MAAM,EAAW,OAAO;IACxB,MAAM,EAAW,OAAO;IACxB,OAAO,EAAU,MAAM;IACvB,QAAQ,EAAS,MAAM;CACxB,CAAC,CAAC;AAEH,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,uFAAuF;AACvF,SAAS,iBAAiB;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7E,OAAO,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,OAAO;IACd,OAAO,IAAI,CAAC,iBAAiB,EAAE,EAAE,wBAAwB,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc;IACrB,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,OAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3E,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,OAAO,CAAC,QAAQ,MAAM,OAAO,GAAG,CAAC;IAC9C,CAAC;IACD,4CAA4C;IAC5C,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,mEAAmE;AACnE,SAAS,WAAW,CAAC,IAAa;IAChC,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,OAAO,GAAG,GAAG,SAAS,OAAO,EAAE,CAAC;AAClC,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E;;;GAGG;AACH,SAAS,gBAAgB,CAAC,IAAY;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,gBAAgB,IAAI,MAAM,CAAC,EAAE;YAC7F,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,2EAA2E;QAC3E,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,gBAAgB,EAAE,CAAC;QACpC,IAAI,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC1C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAwB,EAAE,UAAoB;IAC1E,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,MAAM,KAAK,UAAU;QAAE,OAAO,UAAU,CAAC;IAC7C,6BAA6B;IAC7B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC;IACpD,MAAM,KAAK,GAAG,UAAU,IAAI,kBAAkB,EAAE,CAAC;IACjD,IAAI,KAAK;QAAE,OAAO,UAAU,CAAC;IAC7B,2DAA2D;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,iCAAiC;AACjC,8EAA8E;AAE9E,SAAS,eAAe,CAAC,IAAa;IACpC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9B,YAAY,CAAC,KAAK,EAAE;QAClB,KAAK,EAAE,WAAW;QAClB,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,GAAG;QACT,IAAI;KACL,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,EAAE,CAAC,OAAO,CAAC,sCAAsC,WAAW,KAAK,cAAc,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE;YAClB,QAAQ,EAAE,WAAW;YACrB,IAAI,EAAE,cAAc;YACpB,IAAI;SACL,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,KAAK,cAAc,EAAE,CAAC,CAAC;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE;YAC9B,OAAO,EAAE,WAAW;YACpB,IAAI,EAAE,cAAc;SACrB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACxD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,SAAS,UAAU,CAAC,IAAa;IAC/B,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,2EAA2E;IAC3E,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG;QACV,yEAAyE;QACzE,WAAW;QACX,2CAA2C;QAC3C,cAAc,cAAc,SAAS,OAAO,aAAa;QACzD,qBAAqB;KACtB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,aAAa,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,EAAE,CAAC,OAAO,CAAC,iCAAiC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC;IACb,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS;IAChB,OAAO,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAa,EAAE,MAAwB;IAC5E,IAAI,QAA4B,CAAC;IACjC,IAAI,WAAW,GAAG,KAAK,CAAC;IAExB,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC9C,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;SAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC7B,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,kDAAkD;QAClD,WAAW,GAAG,IAAI,CAAC;QACnB,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,MAAM,CAAkB;gBACpE,OAAO,EAAE,4BAA4B;gBACrC,OAAO,EAAE;oBACP,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE;oBACrE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,4BAA4B,EAAE,IAAI,EAAE,yBAAyB,EAAE;oBACtF,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,6BAA6B,EAAE;iBACtF;aACF,CAAC,CAAC,CAAC;YACJ,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;aAAM,CAAC;YACN,EAAE,CAAC,IAAI,CAAC,kHAAkH,CAAC,CAAC;YAC5H,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACvC,EAAE,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAwB;IACzD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,YAAY,EAAE,CAAC;IACjB,CAAC;SAAM,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,iBAAiB,EAAE,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,8BAA8B;QAC9B,YAAY,EAAE,CAAC;QACf,iBAAiB,EAAE,CAAC;IACtB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,MAAwB;IACtD,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;QACvB,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,8BAA8B,QAAQ,WAAW,IAAI,EAAE,CAAC,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QACpD,CAAC;QACD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,IAAI,cAAc,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,0CAA0C,WAAW,KAAK,cAAc,EAAE,CAAC,CAAC;QAC1F,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC;QACD,OAAO;IACT,CAAC;IAED,aAAa;IACb,MAAM,GAAG,GAAG,SAAS,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAC7B,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,GAAG;YAAE,OAAO,CAAC,GAAG,CAAC,eAAe,WAAW,KAAK,cAAc,EAAE,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"autostart.js","sourceRoot":"","sources":["../../src/cli/autostart.ts"],"names":[],"mappings":"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"}