@edgible-team/cli 1.2.21 → 1.2.22

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 (44) hide show
  1. package/dist/commands/agent/install.d.ts.map +1 -1
  2. package/dist/commands/agent/install.js +38 -15
  3. package/dist/commands/debug.d.ts.map +1 -1
  4. package/dist/commands/debug.js +6 -1
  5. package/dist/interfaces/IDaemonManager.d.ts +2 -1
  6. package/dist/interfaces/IDaemonManager.d.ts.map +1 -1
  7. package/dist/services/AgentStatusManager.d.ts.map +1 -1
  8. package/dist/services/AgentStatusManager.js +1 -0
  9. package/dist/services/LocalAgentManager.d.ts.map +1 -1
  10. package/dist/services/LocalAgentManager.js +7 -0
  11. package/dist/services/daemon/DaemonManagerFactory.d.ts +1 -1
  12. package/dist/services/daemon/DaemonManagerFactory.d.ts.map +1 -1
  13. package/dist/services/daemon/DaemonManagerFactory.js +23 -3
  14. package/dist/services/daemon/DockerDaemonManager.d.ts +2 -2
  15. package/dist/services/daemon/DockerDaemonManager.d.ts.map +1 -1
  16. package/dist/services/daemon/ForegroundDaemonManager.d.ts +22 -0
  17. package/dist/services/daemon/ForegroundDaemonManager.d.ts.map +1 -0
  18. package/dist/services/daemon/ForegroundDaemonManager.js +200 -0
  19. package/dist/services/daemon/LaunchdDaemonManager.d.ts +2 -2
  20. package/dist/services/daemon/LaunchdDaemonManager.d.ts.map +1 -1
  21. package/dist/services/daemon/OpenRCDaemonManager.d.ts +25 -0
  22. package/dist/services/daemon/OpenRCDaemonManager.d.ts.map +1 -0
  23. package/dist/services/daemon/OpenRCDaemonManager.js +202 -0
  24. package/dist/services/daemon/PodmanDaemonManager.d.ts +2 -2
  25. package/dist/services/daemon/PodmanDaemonManager.d.ts.map +1 -1
  26. package/dist/services/daemon/SystemdDaemonManager.d.ts +2 -2
  27. package/dist/services/daemon/SystemdDaemonManager.d.ts.map +1 -1
  28. package/dist/services/daemon/WindowsServiceDaemonManager.d.ts +2 -2
  29. package/dist/services/daemon/WindowsServiceDaemonManager.d.ts.map +1 -1
  30. package/dist/services/daemon/index.d.ts +2 -0
  31. package/dist/services/daemon/index.d.ts.map +1 -1
  32. package/dist/services/daemon/index.js +5 -1
  33. package/dist/state/config.d.ts +1 -1
  34. package/dist/state/config.d.ts.map +1 -1
  35. package/dist/types/agent.d.ts +1 -1
  36. package/dist/types/agent.d.ts.map +1 -1
  37. package/dist/types/validation/schemas.d.ts +4 -4
  38. package/dist/utils/PathResolver.d.ts.map +1 -1
  39. package/dist/utils/PathResolver.js +3 -0
  40. package/dist/utils/PlatformDetector.d.ts +6 -3
  41. package/dist/utils/PlatformDetector.d.ts.map +1 -1
  42. package/dist/utils/PlatformDetector.js +57 -16
  43. package/dist/validation/stack-schemas.d.ts +26 -26
  44. package/package.json +1 -1
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.OpenRCDaemonManager = void 0;
37
+ const child_process_1 = require("child_process");
38
+ const util_1 = require("util");
39
+ const fs = __importStar(require("fs/promises"));
40
+ const path = __importStar(require("path"));
41
+ const PlatformDetector_1 = require("../../utils/PlatformDetector");
42
+ const PathResolver_1 = require("../../utils/PathResolver");
43
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
44
+ class OpenRCDaemonManager {
45
+ constructor() {
46
+ this.serviceName = 'edgible-agent';
47
+ this.initScriptPath = `/etc/init.d/${this.serviceName}`;
48
+ if (PlatformDetector_1.PlatformDetector.getPlatform() !== 'linux') {
49
+ throw new Error('OpenRCDaemonManager is only supported on Linux');
50
+ }
51
+ }
52
+ async install(config) {
53
+ const scriptContent = this.generateInitScript(config);
54
+ try {
55
+ await fs.writeFile(this.initScriptPath, scriptContent, 'utf8');
56
+ await fs.chmod(this.initScriptPath, 0o755);
57
+ }
58
+ catch (error) {
59
+ throw new Error(`Failed to write OpenRC init script: ${error instanceof Error ? error.message : String(error)}`);
60
+ }
61
+ }
62
+ async start() {
63
+ try {
64
+ await execAsync(`rc-service ${this.serviceName} start`);
65
+ }
66
+ catch (error) {
67
+ throw new Error(`Failed to start service: ${error instanceof Error ? error.message : String(error)}`);
68
+ }
69
+ }
70
+ async stop() {
71
+ try {
72
+ await execAsync(`rc-service ${this.serviceName} stop`);
73
+ }
74
+ catch (error) {
75
+ throw new Error(`Failed to stop service: ${error instanceof Error ? error.message : String(error)}`);
76
+ }
77
+ }
78
+ async restart() {
79
+ try {
80
+ await execAsync(`rc-service ${this.serviceName} restart`);
81
+ }
82
+ catch (error) {
83
+ throw new Error(`Failed to restart service: ${error instanceof Error ? error.message : String(error)}`);
84
+ }
85
+ }
86
+ async status() {
87
+ try {
88
+ const { stdout } = await execAsync(`rc-service ${this.serviceName} status`);
89
+ const running = /started|running/i.test(stdout) && !/stopped|inactive/i.test(stdout);
90
+ const enabled = await this.isEnabled();
91
+ return {
92
+ running,
93
+ enabled,
94
+ message: stdout,
95
+ };
96
+ }
97
+ catch (error) {
98
+ return {
99
+ running: false,
100
+ enabled: false,
101
+ message: error instanceof Error ? error.message : String(error),
102
+ };
103
+ }
104
+ }
105
+ async logs(follow, lines = 100, _options) {
106
+ const logPath = PathResolver_1.PathResolver.resolveAgentLogPath('openrc');
107
+ if (follow) {
108
+ const { spawn } = await Promise.resolve().then(() => __importStar(require('child_process')));
109
+ const proc = spawn('tail', ['-n', String(lines), '-f', logPath], { stdio: 'inherit' });
110
+ process.on('SIGINT', () => {
111
+ proc.kill('SIGTERM');
112
+ process.exit(0);
113
+ });
114
+ return '';
115
+ }
116
+ try {
117
+ const { stdout } = await execAsync(`tail -n ${lines} "${logPath}"`);
118
+ return stdout;
119
+ }
120
+ catch (error) {
121
+ throw new Error(`Failed to read logs: ${error instanceof Error ? error.message : String(error)}`);
122
+ }
123
+ }
124
+ async enable() {
125
+ try {
126
+ await execAsync(`rc-update add ${this.serviceName} default`);
127
+ }
128
+ catch (error) {
129
+ throw new Error(`Failed to enable service: ${error instanceof Error ? error.message : String(error)}`);
130
+ }
131
+ }
132
+ async disable() {
133
+ try {
134
+ await execAsync(`rc-update del ${this.serviceName} default`);
135
+ }
136
+ catch (error) {
137
+ throw new Error(`Failed to disable service: ${error instanceof Error ? error.message : String(error)}`);
138
+ }
139
+ }
140
+ async uninstall() {
141
+ try {
142
+ await this.stop();
143
+ }
144
+ catch {
145
+ // ignore
146
+ }
147
+ try {
148
+ await this.disable();
149
+ }
150
+ catch {
151
+ // ignore
152
+ }
153
+ try {
154
+ await fs.unlink(this.initScriptPath);
155
+ }
156
+ catch (error) {
157
+ throw new Error(`Failed to remove OpenRC init script: ${error instanceof Error ? error.message : String(error)}`);
158
+ }
159
+ }
160
+ getPlatform() {
161
+ return 'linux';
162
+ }
163
+ getType() {
164
+ return 'openrc';
165
+ }
166
+ async isEnabled() {
167
+ try {
168
+ const { stdout } = await execAsync('rc-update show default');
169
+ return stdout.split('\n').some((line) => line.includes(this.serviceName));
170
+ }
171
+ catch {
172
+ return false;
173
+ }
174
+ }
175
+ generateInitScript(config) {
176
+ const nodePath = process.execPath;
177
+ const indexJs = path.join(config.agentPath, 'index.js');
178
+ const agentConfig = path.join(config.configPath, 'agent.config.json');
179
+ const execLine = `exec ${this.shSingleQuote(nodePath)} ${this.shSingleQuote(indexJs)} start -c ${this.shSingleQuote(agentConfig)}`;
180
+ return `#!/sbin/openrc-run
181
+
182
+ name="Edgible Agent"
183
+ description="Edgible edge agent"
184
+
185
+ depend() {
186
+ need net
187
+ }
188
+
189
+ supervisor=supervise-daemon
190
+ command="/bin/sh"
191
+ command_args=-c ${this.shSingleQuote(execLine)}
192
+ directory=${this.shSingleQuote(config.agentPath)}
193
+ pidfile="/run/${this.serviceName}.pid"
194
+ `;
195
+ }
196
+ /** Single-quoted string safe for OpenRC /bin/sh */
197
+ shSingleQuote(s) {
198
+ return `'${s.replace(/'/g, `'\\''`)}'`;
199
+ }
200
+ }
201
+ exports.OpenRCDaemonManager = OpenRCDaemonManager;
202
+ //# sourceMappingURL=OpenRCDaemonManager.js.map
@@ -1,4 +1,4 @@
1
- import { IDaemonManager, DaemonStatus, DaemonConfig } from '../../interfaces/IDaemonManager';
1
+ import { IDaemonManager, DaemonStatus, DaemonConfig, DaemonManagerInstallationType } from '../../interfaces/IDaemonManager';
2
2
  export declare class PodmanDaemonManager implements IDaemonManager {
3
3
  private containerName;
4
4
  private imageName;
@@ -18,7 +18,7 @@ export declare class PodmanDaemonManager implements IDaemonManager {
18
18
  disable(): Promise<void>;
19
19
  uninstall(): Promise<void>;
20
20
  getPlatform(): string;
21
- getType(): 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman';
21
+ getType(): DaemonManagerInstallationType;
22
22
  private checkImageExists;
23
23
  private buildImage;
24
24
  private generatePodmanRunCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"PodmanDaemonManager.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/PodmanDaemonManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM7F,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,eAAe,CAAS;;IAO1B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAkD/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB7G,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAavB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BhC,WAAW,IAAI,MAAM;IAIrB,OAAO,IAAI,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ;YAI5D,gBAAgB;YAShB,UAAU;IAqBxB,OAAO,CAAC,wBAAwB;YAyElB,iBAAiB;CAoChC"}
1
+ {"version":3,"file":"PodmanDaemonManager.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/PodmanDaemonManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAM5H,qBAAa,mBAAoB,YAAW,cAAc;IACxD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,SAAS,CAAkC;IACnD,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,eAAe,CAAS;;IAO1B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAkC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAarB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAaxB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAkD/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB7G,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAavB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA0BhC,WAAW,IAAI,MAAM;IAIrB,OAAO,IAAI,6BAA6B;YAI1B,gBAAgB;YAShB,UAAU;IAqBxB,OAAO,CAAC,wBAAwB;YAyElB,iBAAiB;CAoChC"}
@@ -1,4 +1,4 @@
1
- import { IDaemonManager, DaemonStatus, DaemonConfig } from '../../interfaces/IDaemonManager';
1
+ import { IDaemonManager, DaemonStatus, DaemonConfig, DaemonManagerInstallationType } from '../../interfaces/IDaemonManager';
2
2
  export declare class SystemdDaemonManager implements IDaemonManager {
3
3
  private serviceName;
4
4
  private serviceFilePath;
@@ -16,7 +16,7 @@ export declare class SystemdDaemonManager implements IDaemonManager {
16
16
  disable(): Promise<void>;
17
17
  uninstall(): Promise<void>;
18
18
  getPlatform(): string;
19
- getType(): 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman';
19
+ getType(): DaemonManagerInstallationType;
20
20
  private isEnabled;
21
21
  private generateServiceFile;
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SystemdDaemonManager.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/SystemdDaemonManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM7F,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,eAAe,CAA6D;;IAQ9E,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IA0B/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B7G,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBhC,WAAW,IAAI,MAAM;IAIrB,OAAO,IAAI,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ;YAI5D,SAAS;IASvB,OAAO,CAAC,mBAAmB;CAuB5B"}
1
+ {"version":3,"file":"SystemdDaemonManager.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/SystemdDaemonManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAM5H,qBAAa,oBAAqB,YAAW,cAAc;IACzD,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,eAAe,CAA6D;;IAQ9E,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAQtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAQrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IA0B/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA6B7G,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAuBhC,WAAW,IAAI,MAAM;IAIrB,OAAO,IAAI,6BAA6B;YAI1B,SAAS;IASvB,OAAO,CAAC,mBAAmB;CAuB5B"}
@@ -1,4 +1,4 @@
1
- import { IDaemonManager, DaemonStatus, DaemonConfig } from '../../interfaces/IDaemonManager';
1
+ import { IDaemonManager, DaemonStatus, DaemonConfig, DaemonManagerInstallationType } from '../../interfaces/IDaemonManager';
2
2
  export declare class WindowsServiceDaemonManager implements IDaemonManager {
3
3
  private serviceName;
4
4
  private displayName;
@@ -17,6 +17,6 @@ export declare class WindowsServiceDaemonManager implements IDaemonManager {
17
17
  disable(): Promise<void>;
18
18
  uninstall(): Promise<void>;
19
19
  getPlatform(): string;
20
- getType(): 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman';
20
+ getType(): DaemonManagerInstallationType;
21
21
  }
22
22
  //# sourceMappingURL=WindowsServiceDaemonManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"WindowsServiceDaemonManager.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/WindowsServiceDaemonManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAM7F,qBAAa,2BAA4B,YAAW,cAAc;IAChE,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAAwE;;IAQrF,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IA2B/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA4C7G,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBhC,WAAW,IAAI,MAAM;IAIrB,OAAO,IAAI,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ;CAG3E"}
1
+ {"version":3,"file":"WindowsServiceDaemonManager.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/WindowsServiceDaemonManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAM5H,qBAAa,2BAA4B,YAAW,cAAc;IAChE,OAAO,CAAC,WAAW,CAA0B;IAC7C,OAAO,CAAC,WAAW,CAA2B;IAC9C,OAAO,CAAC,WAAW,CAAwE;;IAQrF,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC5C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAUrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxB,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IA2B/B,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,MAAY,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IA4C7G,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBhC,WAAW,IAAI,MAAM;IAIrB,OAAO,IAAI,6BAA6B;CAGzC"}
@@ -1,4 +1,6 @@
1
1
  export { SystemdDaemonManager } from './SystemdDaemonManager';
2
+ export { OpenRCDaemonManager } from './OpenRCDaemonManager';
3
+ export { ForegroundDaemonManager } from './ForegroundDaemonManager';
2
4
  export { LaunchdDaemonManager } from './LaunchdDaemonManager';
3
5
  export { WindowsServiceDaemonManager } from './WindowsServiceDaemonManager';
4
6
  export { DockerDaemonManager } from './DockerDaemonManager';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/daemon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DaemonManagerFactory = exports.PodmanDaemonManager = exports.DockerDaemonManager = exports.WindowsServiceDaemonManager = exports.LaunchdDaemonManager = exports.SystemdDaemonManager = void 0;
3
+ exports.DaemonManagerFactory = exports.PodmanDaemonManager = exports.DockerDaemonManager = exports.WindowsServiceDaemonManager = exports.LaunchdDaemonManager = exports.ForegroundDaemonManager = exports.OpenRCDaemonManager = exports.SystemdDaemonManager = void 0;
4
4
  var SystemdDaemonManager_1 = require("./SystemdDaemonManager");
5
5
  Object.defineProperty(exports, "SystemdDaemonManager", { enumerable: true, get: function () { return SystemdDaemonManager_1.SystemdDaemonManager; } });
6
+ var OpenRCDaemonManager_1 = require("./OpenRCDaemonManager");
7
+ Object.defineProperty(exports, "OpenRCDaemonManager", { enumerable: true, get: function () { return OpenRCDaemonManager_1.OpenRCDaemonManager; } });
8
+ var ForegroundDaemonManager_1 = require("./ForegroundDaemonManager");
9
+ Object.defineProperty(exports, "ForegroundDaemonManager", { enumerable: true, get: function () { return ForegroundDaemonManager_1.ForegroundDaemonManager; } });
6
10
  var LaunchdDaemonManager_1 = require("./LaunchdDaemonManager");
7
11
  Object.defineProperty(exports, "LaunchdDaemonManager", { enumerable: true, get: function () { return LaunchdDaemonManager_1.LaunchdDaemonManager; } });
8
12
  var WindowsServiceDaemonManager_1 = require("./WindowsServiceDaemonManager");
@@ -31,7 +31,7 @@ export interface UserConfig {
31
31
  };
32
32
  wireguardMode?: 'kernel' | 'userspace';
33
33
  wireguardGoBinary?: string;
34
- agentInstallationType?: 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman';
34
+ agentInstallationType?: 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman' | 'openrc' | 'foreground';
35
35
  agentServiceName?: string;
36
36
  agentContainerName?: string;
37
37
  agentDataPath?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/state/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/state/config.ts"],"names":[],"mappings":"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"}
@@ -109,7 +109,7 @@ export interface AgentInstallationOptions {
109
109
  autoStart?: boolean;
110
110
  configPath?: string;
111
111
  installFromLocal?: boolean;
112
- installationType?: 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman';
112
+ installationType?: 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman' | 'openrc' | 'foreground';
113
113
  }
114
114
  export interface AgentUpdateOptions {
115
115
  version?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
@@ -105,8 +105,8 @@ export declare const CreateApplicationSchema: z.ZodObject<{
105
105
  port: number;
106
106
  protocol: "http" | "https" | "tcp" | "udp";
107
107
  deleteVolumesOnDeletion: boolean;
108
- command?: string | undefined;
109
108
  logFile?: string | undefined;
109
+ command?: string | undefined;
110
110
  vmBackend?: "qemu" | "firecracker" | undefined;
111
111
  diskImage?: string | undefined;
112
112
  memory?: number | undefined;
@@ -123,8 +123,8 @@ export declare const CreateApplicationSchema: z.ZodObject<{
123
123
  }, {
124
124
  port: number;
125
125
  protocol: "http" | "https" | "tcp" | "udp";
126
- command?: string | undefined;
127
126
  logFile?: string | undefined;
127
+ command?: string | undefined;
128
128
  vmBackend?: "qemu" | "firecracker" | undefined;
129
129
  diskImage?: string | undefined;
130
130
  memory?: number | undefined;
@@ -159,8 +159,8 @@ export declare const CreateApplicationSchema: z.ZodObject<{
159
159
  port: number;
160
160
  protocol: "http" | "https" | "tcp" | "udp";
161
161
  deleteVolumesOnDeletion: boolean;
162
- command?: string | undefined;
163
162
  logFile?: string | undefined;
163
+ command?: string | undefined;
164
164
  vmBackend?: "qemu" | "firecracker" | undefined;
165
165
  diskImage?: string | undefined;
166
166
  memory?: number | undefined;
@@ -194,8 +194,8 @@ export declare const CreateApplicationSchema: z.ZodObject<{
194
194
  configuration: {
195
195
  port: number;
196
196
  protocol: "http" | "https" | "tcp" | "udp";
197
- command?: string | undefined;
198
197
  logFile?: string | undefined;
198
+ command?: string | undefined;
199
199
  vmBackend?: "qemu" | "firecracker" | undefined;
200
200
  diskImage?: string | undefined;
201
201
  memory?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"PathResolver.d.ts","sourceRoot":"","sources":["../../src/utils/PathResolver.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM;IAkDhC;;;;;OAKG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM;IAyBhC;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAmBlC;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAKjE;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM;IAKjC;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAKrE;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAKjE;;;;;;;;OAQG;IACH,MAAM,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAShE;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IASpE;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAK9D;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;CAQ9D"}
1
+ {"version":3,"file":"PathResolver.d.ts","sourceRoot":"","sources":["../../src/utils/PathResolver.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM;IAkDhC;;;;;OAKG;IACH,MAAM,CAAC,eAAe,IAAI,MAAM;IAyBhC;;;;;OAKG;IACH,MAAM,CAAC,iBAAiB,IAAI,MAAM;IAmBlC;;;;;;;OAOG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAKjE;;;;OAIG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM;IAKjC;;;;;OAKG;IACH,MAAM,CAAC,sBAAsB,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAKrE;;;;;OAKG;IACH,MAAM,CAAC,kBAAkB,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAKjE;;;;;;;;OAQG;IACH,MAAM,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAWhE;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;IAWpE;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,aAAa,GAAE,OAAe,GAAG,MAAM;IAK9D;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM;CAU9D"}
@@ -210,6 +210,7 @@ class PathResolver {
210
210
  */
211
211
  static resolveAgentConfigPath(installationType) {
212
212
  const useSystemPath = installationType === 'systemd' ||
213
+ installationType === 'openrc' ||
213
214
  installationType === 'launchd' ||
214
215
  installationType === 'windows-service' ||
215
216
  installationType === 'docker' ||
@@ -224,6 +225,7 @@ class PathResolver {
224
225
  */
225
226
  static resolveAgentConfigFilePath(installationType) {
226
227
  const useSystemPath = installationType === 'systemd' ||
228
+ installationType === 'openrc' ||
227
229
  installationType === 'launchd' ||
228
230
  installationType === 'windows-service' ||
229
231
  installationType === 'docker' ||
@@ -248,6 +250,7 @@ class PathResolver {
248
250
  */
249
251
  static resolveAgentLogPath(installationType) {
250
252
  const useSystemPath = installationType === 'systemd' ||
253
+ installationType === 'openrc' ||
251
254
  installationType === 'launchd' ||
252
255
  installationType === 'windows-service' ||
253
256
  installationType === 'docker' ||
@@ -1,5 +1,5 @@
1
1
  export type Platform = 'linux' | 'darwin' | 'win32';
2
- export type InstallationType = 'systemd' | 'launchd' | 'windows-service' | 'docker' | 'podman';
2
+ export type InstallationType = 'systemd' | 'openrc' | 'foreground' | 'launchd' | 'windows-service' | 'docker' | 'podman';
3
3
  export interface InstallOption {
4
4
  type: InstallationType;
5
5
  name: string;
@@ -28,6 +28,10 @@ export declare class PlatformDetector {
28
28
  * Check if launchd is available (macOS)
29
29
  */
30
30
  static hasLaunchd(): Promise<boolean>;
31
+ /**
32
+ * Check if OpenRC is available (Linux, e.g. Alpine)
33
+ */
34
+ static hasOpenRC(): Promise<boolean>;
31
35
  /**
32
36
  * Check if Docker is available
33
37
  */
@@ -46,12 +50,11 @@ export declare class PlatformDetector {
46
50
  static getNodePath(): Promise<string>;
47
51
  /**
48
52
  * Get all available installation options for the current platform
49
- * Note: Only daemon-based installations are supported (systemd, launchd, windows-service)
53
+ * (systemd / OpenRC / foreground on Linux; launchd on macOS; Windows Service on Windows)
50
54
  */
51
55
  static getAvailableOptions(): Promise<InstallOption[]>;
52
56
  /**
53
57
  * Get the recommended installation type for the current platform
54
- * Only native daemon installations are recommended
55
58
  */
56
59
  static getRecommendedType(): Promise<InstallationType | null>;
57
60
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"PlatformDetector.d.ts","sourceRoot":"","sources":["../../src/utils/PlatformDetector.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,SAAS,GAAG,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/F,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B;;OAEG;WACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBvC;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAa3C;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAW3C;;OAEG;WACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAW1C;;OAEG;WACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAS1C;;OAEG;WACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IASxC;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAY3C;;;OAGG;WACU,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IA2D5D;;;OAGG;WACU,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IA0BnE;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,MAAM;CAS3C"}
1
+ {"version":3,"file":"PlatformDetector.d.ts","sourceRoot":"","sources":["../../src/utils/PlatformDetector.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,iBAAiB,GACjB,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,QAAQ;IAO9B;;OAEG;WACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAiBvC;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAa3C;;OAEG;WACU,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAW3C;;OAEG;WACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAe1C;;OAEG;WACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAW1C;;OAEG;WACU,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAS1C;;OAEG;WACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IASxC;;OAEG;WACU,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAY3C;;;OAGG;WACU,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAkF5D;;OAEG;WACU,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAwBnE;;OAEG;IACH,MAAM,CAAC,yBAAyB,IAAI,MAAM;CAS3C"}
@@ -37,6 +37,7 @@ exports.PlatformDetector = void 0;
37
37
  const child_process_1 = require("child_process");
38
38
  const util_1 = require("util");
39
39
  const os = __importStar(require("os"));
40
+ const fs = __importStar(require("fs"));
40
41
  const execAsync = (0, util_1.promisify)(child_process_1.exec);
41
42
  class PlatformDetector {
42
43
  /**
@@ -100,6 +101,26 @@ class PlatformDetector {
100
101
  return false;
101
102
  }
102
103
  }
104
+ /**
105
+ * Check if OpenRC is available (Linux, e.g. Alpine)
106
+ */
107
+ static async hasOpenRC() {
108
+ if (this.getPlatform() !== 'linux')
109
+ return false;
110
+ try {
111
+ await execAsync('command -v rc-service');
112
+ return true;
113
+ }
114
+ catch {
115
+ try {
116
+ await fs.promises.access('/sbin/openrc-run', fs.constants.F_OK);
117
+ return true;
118
+ }
119
+ catch {
120
+ return false;
121
+ }
122
+ }
123
+ }
103
124
  /**
104
125
  * Check if Docker is available
105
126
  */
@@ -154,15 +175,16 @@ class PlatformDetector {
154
175
  }
155
176
  /**
156
177
  * Get all available installation options for the current platform
157
- * Note: Only daemon-based installations are supported (systemd, launchd, windows-service)
178
+ * (systemd / OpenRC / foreground on Linux; launchd on macOS; Windows Service on Windows)
158
179
  */
159
180
  static async getAvailableOptions() {
160
181
  const platform = this.getPlatform();
161
182
  const hasSystemd = await this.hasSystemd();
162
183
  const hasLaunchd = await this.hasLaunchd();
163
184
  const options = [];
164
- // Linux: systemd option
185
+ // Linux: systemd, OpenRC, and foreground (user process, no init)
165
186
  if (platform === 'linux') {
187
+ const hasOpenRC = await this.hasOpenRC();
166
188
  options.push({
167
189
  type: 'systemd',
168
190
  name: 'System Service (systemd)',
@@ -175,6 +197,28 @@ class PlatformDetector {
175
197
  available: hasSystemd,
176
198
  requiresRoot: true
177
199
  });
200
+ options.push({
201
+ type: 'openrc',
202
+ name: 'System Service (OpenRC)',
203
+ description: 'Run as an OpenRC service (common on Alpine, Gentoo, Artix)',
204
+ requires: ['OpenRC', 'root privileges'],
205
+ pros: ['Native on non-systemd Linux', 'Boot integration via rc-update'],
206
+ cons: ['Requires root for /etc/init.d', 'Platform-specific'],
207
+ bestFor: 'Alpine containers and minimal Linux',
208
+ available: hasOpenRC,
209
+ requiresRoot: true
210
+ });
211
+ options.push({
212
+ type: 'foreground',
213
+ name: 'User process (no init)',
214
+ description: 'Install under your user account; start/stop with edgible agent start/stop (no boot autostart)',
215
+ requires: ['Write access to user data directory'],
216
+ pros: ['No systemd or OpenRC required', 'No root for install path'],
217
+ cons: ['No automatic start on boot', 'You must run edgible agent start after login'],
218
+ bestFor: 'WSL, chroots, or hosts without a supported init',
219
+ available: true,
220
+ requiresRoot: false
221
+ });
178
222
  }
179
223
  // macOS: launchd option
180
224
  if (platform === 'darwin') {
@@ -204,29 +248,26 @@ class PlatformDetector {
204
248
  requiresRoot: true
205
249
  });
206
250
  }
207
- // Note: Docker and Podman options are no longer supported
208
- // Only native daemon installations (systemd, launchd, windows-service) are available
209
251
  return options;
210
252
  }
211
253
  /**
212
254
  * Get the recommended installation type for the current platform
213
- * Only native daemon installations are recommended
214
255
  */
215
256
  static async getRecommendedType() {
216
- const options = await this.getAvailableOptions();
217
- const available = options.filter(opt => opt.available);
218
- if (available.length === 0) {
219
- return null;
220
- }
221
- // Only native daemon options are supported
222
257
  const platform = this.getPlatform();
223
- if (platform === 'linux' && available.find(opt => opt.type === 'systemd')) {
224
- return 'systemd';
258
+ if (platform === 'linux') {
259
+ if (await this.hasSystemd()) {
260
+ return 'systemd';
261
+ }
262
+ if (await this.hasOpenRC()) {
263
+ return 'openrc';
264
+ }
265
+ return 'foreground';
225
266
  }
226
- if (platform === 'darwin' && available.find(opt => opt.type === 'launchd')) {
227
- return 'launchd';
267
+ if (platform === 'darwin') {
268
+ return (await this.hasLaunchd()) ? 'launchd' : null;
228
269
  }
229
- if (platform === 'win32' && available.find(opt => opt.type === 'windows-service')) {
270
+ if (platform === 'win32') {
230
271
  return 'windows-service';
231
272
  }
232
273
  return null;