@edgible-team/cli 1.0.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 (102) hide show
  1. package/LICENSE +136 -0
  2. package/README.md +450 -0
  3. package/dist/client/api-client.js +1057 -0
  4. package/dist/client/index.js +21 -0
  5. package/dist/commands/agent.js +1280 -0
  6. package/dist/commands/ai.js +608 -0
  7. package/dist/commands/application.js +885 -0
  8. package/dist/commands/auth.js +570 -0
  9. package/dist/commands/base/BaseCommand.js +93 -0
  10. package/dist/commands/base/CommandHandler.js +7 -0
  11. package/dist/commands/base/command-wrapper.js +58 -0
  12. package/dist/commands/base/middleware.js +77 -0
  13. package/dist/commands/config.js +116 -0
  14. package/dist/commands/connectivity.js +59 -0
  15. package/dist/commands/debug.js +98 -0
  16. package/dist/commands/discover.js +144 -0
  17. package/dist/commands/examples/migrated-command-example.js +180 -0
  18. package/dist/commands/gateway.js +494 -0
  19. package/dist/commands/managedGateway.js +787 -0
  20. package/dist/commands/utils/config-validator.js +76 -0
  21. package/dist/commands/utils/gateway-prompt.js +79 -0
  22. package/dist/commands/utils/input-parser.js +120 -0
  23. package/dist/commands/utils/output-formatter.js +109 -0
  24. package/dist/config/app-config.js +99 -0
  25. package/dist/detection/SystemCapabilityDetector.js +1244 -0
  26. package/dist/detection/ToolDetector.js +305 -0
  27. package/dist/detection/WorkloadDetector.js +314 -0
  28. package/dist/di/bindings.js +99 -0
  29. package/dist/di/container.js +88 -0
  30. package/dist/di/types.js +32 -0
  31. package/dist/index.js +52 -0
  32. package/dist/interfaces/IDaemonManager.js +3 -0
  33. package/dist/repositories/config-repository.js +62 -0
  34. package/dist/repositories/gateway-repository.js +35 -0
  35. package/dist/scripts/postinstall.js +101 -0
  36. package/dist/services/AgentStatusManager.js +299 -0
  37. package/dist/services/ConnectivityTester.js +271 -0
  38. package/dist/services/DependencyInstaller.js +475 -0
  39. package/dist/services/LocalAgentManager.js +2216 -0
  40. package/dist/services/application/ApplicationService.js +299 -0
  41. package/dist/services/auth/AuthService.js +214 -0
  42. package/dist/services/aws.js +644 -0
  43. package/dist/services/daemon/DaemonManagerFactory.js +65 -0
  44. package/dist/services/daemon/DockerDaemonManager.js +395 -0
  45. package/dist/services/daemon/LaunchdDaemonManager.js +257 -0
  46. package/dist/services/daemon/PodmanDaemonManager.js +369 -0
  47. package/dist/services/daemon/SystemdDaemonManager.js +221 -0
  48. package/dist/services/daemon/WindowsServiceDaemonManager.js +210 -0
  49. package/dist/services/daemon/index.js +16 -0
  50. package/dist/services/edgible.js +3060 -0
  51. package/dist/services/gateway/GatewayService.js +334 -0
  52. package/dist/state/config.js +146 -0
  53. package/dist/types/AgentConfig.js +5 -0
  54. package/dist/types/AgentStatus.js +5 -0
  55. package/dist/types/ApiClient.js +5 -0
  56. package/dist/types/ApiRequests.js +5 -0
  57. package/dist/types/ApiResponses.js +5 -0
  58. package/dist/types/Application.js +5 -0
  59. package/dist/types/CaddyJson.js +5 -0
  60. package/dist/types/UnifiedAgentStatus.js +56 -0
  61. package/dist/types/WireGuard.js +5 -0
  62. package/dist/types/Workload.js +5 -0
  63. package/dist/types/agent.js +5 -0
  64. package/dist/types/command-options.js +5 -0
  65. package/dist/types/connectivity.js +5 -0
  66. package/dist/types/errors.js +250 -0
  67. package/dist/types/gateway-types.js +5 -0
  68. package/dist/types/index.js +48 -0
  69. package/dist/types/models/ApplicationData.js +5 -0
  70. package/dist/types/models/CertificateData.js +5 -0
  71. package/dist/types/models/DeviceData.js +5 -0
  72. package/dist/types/models/DevicePoolData.js +5 -0
  73. package/dist/types/models/OrganizationData.js +5 -0
  74. package/dist/types/models/OrganizationInviteData.js +5 -0
  75. package/dist/types/models/ProviderConfiguration.js +5 -0
  76. package/dist/types/models/ResourceData.js +5 -0
  77. package/dist/types/models/ServiceResourceData.js +5 -0
  78. package/dist/types/models/UserData.js +5 -0
  79. package/dist/types/route.js +5 -0
  80. package/dist/types/validation/schemas.js +218 -0
  81. package/dist/types/validation.js +5 -0
  82. package/dist/utils/FileIntegrityManager.js +256 -0
  83. package/dist/utils/PathMigration.js +219 -0
  84. package/dist/utils/PathResolver.js +235 -0
  85. package/dist/utils/PlatformDetector.js +277 -0
  86. package/dist/utils/console-logger.js +130 -0
  87. package/dist/utils/docker-compose-parser.js +179 -0
  88. package/dist/utils/errors.js +130 -0
  89. package/dist/utils/health-checker.js +155 -0
  90. package/dist/utils/json-logger.js +72 -0
  91. package/dist/utils/log-formatter.js +293 -0
  92. package/dist/utils/logger.js +59 -0
  93. package/dist/utils/network-utils.js +217 -0
  94. package/dist/utils/output.js +182 -0
  95. package/dist/utils/passwordValidation.js +91 -0
  96. package/dist/utils/progress.js +167 -0
  97. package/dist/utils/sudo-checker.js +22 -0
  98. package/dist/utils/urls.js +32 -0
  99. package/dist/utils/validation.js +31 -0
  100. package/dist/validation/schemas.js +175 -0
  101. package/dist/validation/validator.js +67 -0
  102. package/package.json +83 -0
@@ -0,0 +1,221 @@
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.SystemdDaemonManager = 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 PlatformDetector_1 = require("../../utils/PlatformDetector");
41
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
42
+ class SystemdDaemonManager {
43
+ constructor() {
44
+ this.serviceName = 'edgible-agent';
45
+ this.serviceFilePath = `/etc/systemd/system/${this.serviceName}.service`;
46
+ if (PlatformDetector_1.PlatformDetector.getPlatform() !== 'linux') {
47
+ throw new Error('SystemdDaemonManager is only supported on Linux');
48
+ }
49
+ }
50
+ async install(config) {
51
+ // Generate systemd service file
52
+ const serviceContent = this.generateServiceFile(config);
53
+ // Write service file (requires root)
54
+ try {
55
+ await fs.writeFile(this.serviceFilePath, serviceContent, 'utf8');
56
+ }
57
+ catch (error) {
58
+ throw new Error(`Failed to write systemd service file: ${error instanceof Error ? error.message : String(error)}`);
59
+ }
60
+ // Reload systemd daemon
61
+ try {
62
+ await execAsync('systemctl daemon-reload');
63
+ }
64
+ catch (error) {
65
+ throw new Error(`Failed to reload systemd: ${error instanceof Error ? error.message : String(error)}`);
66
+ }
67
+ }
68
+ async start() {
69
+ try {
70
+ await execAsync(`systemctl start ${this.serviceName}`);
71
+ }
72
+ catch (error) {
73
+ throw new Error(`Failed to start service: ${error instanceof Error ? error.message : String(error)}`);
74
+ }
75
+ }
76
+ async stop() {
77
+ try {
78
+ await execAsync(`systemctl stop ${this.serviceName}`);
79
+ }
80
+ catch (error) {
81
+ throw new Error(`Failed to stop service: ${error instanceof Error ? error.message : String(error)}`);
82
+ }
83
+ }
84
+ async restart() {
85
+ try {
86
+ await execAsync(`systemctl restart ${this.serviceName}`);
87
+ }
88
+ catch (error) {
89
+ throw new Error(`Failed to restart service: ${error instanceof Error ? error.message : String(error)}`);
90
+ }
91
+ }
92
+ async status() {
93
+ try {
94
+ const { stdout } = await execAsync(`systemctl status ${this.serviceName}`);
95
+ const isActive = stdout.includes('Active: active');
96
+ const isEnabled = await this.isEnabled();
97
+ // Extract PID if available
98
+ const pidMatch = stdout.match(/Main PID: (\d+)/);
99
+ const pid = pidMatch ? parseInt(pidMatch[1], 10) : undefined;
100
+ return {
101
+ running: isActive,
102
+ enabled: isEnabled,
103
+ pid,
104
+ message: stdout
105
+ };
106
+ }
107
+ catch (error) {
108
+ // Service might not exist or be stopped
109
+ return {
110
+ running: false,
111
+ enabled: false,
112
+ message: error instanceof Error ? error.message : String(error)
113
+ };
114
+ }
115
+ }
116
+ async logs(follow, lines = 100) {
117
+ const followFlag = follow ? '-f' : '';
118
+ const command = `journalctl -u ${this.serviceName} -n ${lines} ${followFlag}`;
119
+ if (follow) {
120
+ // For follow mode, spawn the process and pipe to stdout
121
+ const { spawn } = require('child_process');
122
+ const proc = spawn('journalctl', ['-u', this.serviceName, '-n', String(lines), '-f'], {
123
+ stdio: 'inherit'
124
+ });
125
+ // Handle process termination
126
+ process.on('SIGINT', () => {
127
+ proc.kill('SIGTERM');
128
+ process.exit(0);
129
+ });
130
+ // Return empty string for follow mode as logs are streamed to stdout
131
+ return '';
132
+ }
133
+ else {
134
+ try {
135
+ const { stdout } = await execAsync(command);
136
+ return stdout;
137
+ }
138
+ catch (error) {
139
+ throw new Error(`Failed to read logs: ${error instanceof Error ? error.message : String(error)}`);
140
+ }
141
+ }
142
+ }
143
+ async enable() {
144
+ try {
145
+ await execAsync(`systemctl enable ${this.serviceName}`);
146
+ }
147
+ catch (error) {
148
+ throw new Error(`Failed to enable service: ${error instanceof Error ? error.message : String(error)}`);
149
+ }
150
+ }
151
+ async disable() {
152
+ try {
153
+ await execAsync(`systemctl disable ${this.serviceName}`);
154
+ }
155
+ catch (error) {
156
+ throw new Error(`Failed to disable service: ${error instanceof Error ? error.message : String(error)}`);
157
+ }
158
+ }
159
+ async uninstall() {
160
+ // Stop and disable service first
161
+ try {
162
+ await this.stop();
163
+ }
164
+ catch {
165
+ // Ignore if already stopped
166
+ }
167
+ try {
168
+ await this.disable();
169
+ }
170
+ catch {
171
+ // Ignore if not enabled
172
+ }
173
+ // Remove service file
174
+ try {
175
+ await fs.unlink(this.serviceFilePath);
176
+ await execAsync('systemctl daemon-reload');
177
+ }
178
+ catch (error) {
179
+ throw new Error(`Failed to remove service file: ${error instanceof Error ? error.message : String(error)}`);
180
+ }
181
+ }
182
+ getPlatform() {
183
+ return 'linux';
184
+ }
185
+ getType() {
186
+ return 'systemd';
187
+ }
188
+ async isEnabled() {
189
+ try {
190
+ const { stdout } = await execAsync(`systemctl is-enabled ${this.serviceName}`);
191
+ return stdout.trim() === 'enabled';
192
+ }
193
+ catch {
194
+ return false;
195
+ }
196
+ }
197
+ generateServiceFile(config) {
198
+ const nodePath = process.execPath; // Path to current Node.js executable
199
+ return `[Unit]
200
+ Description=Edgible Agent
201
+ After=network.target
202
+
203
+ [Service]
204
+ Type=simple
205
+ User=root
206
+ WorkingDirectory=${config.agentPath}
207
+ ExecStart=${nodePath} ${config.agentPath}/index.js start -c ${config.configPath}/agent.config.json
208
+ Restart=always
209
+ RestartSec=10
210
+ Environment=NODE_ENV=production
211
+ Environment=EDGIBLE_CONFIG_PATH=${config.configPath}
212
+ StandardOutput=journal
213
+ StandardError=journal
214
+
215
+ [Install]
216
+ WantedBy=multi-user.target
217
+ `;
218
+ }
219
+ }
220
+ exports.SystemdDaemonManager = SystemdDaemonManager;
221
+ //# sourceMappingURL=SystemdDaemonManager.js.map
@@ -0,0 +1,210 @@
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.WindowsServiceDaemonManager = 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 execAsync = (0, util_1.promisify)(child_process_1.exec);
43
+ class WindowsServiceDaemonManager {
44
+ constructor() {
45
+ this.serviceName = 'EdgibleAgent';
46
+ this.displayName = 'Edgible Agent';
47
+ this.description = 'Edgible Agent Service for device management and networking';
48
+ if (PlatformDetector_1.PlatformDetector.getPlatform() !== 'win32') {
49
+ throw new Error('WindowsServiceDaemonManager is only supported on Windows');
50
+ }
51
+ }
52
+ async install(config) {
53
+ const nodePath = process.execPath;
54
+ const agentScript = path.join(config.agentPath, 'index.js');
55
+ const configFile = path.join(config.configPath, 'agent.config.json');
56
+ // Create a wrapper batch file to run the service
57
+ const wrapperPath = path.join(config.agentPath, 'service-wrapper.bat');
58
+ const wrapperContent = `@echo off
59
+ "${nodePath}" "${agentScript}" start -c "${configFile}"
60
+ `;
61
+ try {
62
+ await fs.writeFile(wrapperPath, wrapperContent, 'utf8');
63
+ }
64
+ catch (error) {
65
+ throw new Error(`Failed to create service wrapper: ${error instanceof Error ? error.message : String(error)}`);
66
+ }
67
+ // Create the service using sc.exe
68
+ try {
69
+ const createCommand = `sc create ${this.serviceName} ` +
70
+ `binPath= "\\"${wrapperPath}\\"" ` +
71
+ `DisplayName= "${this.displayName}" ` +
72
+ `start= auto`;
73
+ await execAsync(createCommand);
74
+ // Set service description
75
+ await execAsync(`sc description ${this.serviceName} "${this.description}"`);
76
+ // Set service to restart on failure
77
+ await execAsync(`sc failure ${this.serviceName} reset= 86400 actions= restart/60000/restart/60000/restart/60000`);
78
+ }
79
+ catch (error) {
80
+ throw new Error(`Failed to create Windows service: ${error instanceof Error ? error.message : String(error)}`);
81
+ }
82
+ }
83
+ async start() {
84
+ try {
85
+ await execAsync(`sc start ${this.serviceName}`);
86
+ // Wait a moment for service to start
87
+ await new Promise(resolve => setTimeout(resolve, 2000));
88
+ }
89
+ catch (error) {
90
+ throw new Error(`Failed to start service: ${error instanceof Error ? error.message : String(error)}`);
91
+ }
92
+ }
93
+ async stop() {
94
+ try {
95
+ await execAsync(`sc stop ${this.serviceName}`);
96
+ // Wait a moment for service to stop
97
+ await new Promise(resolve => setTimeout(resolve, 2000));
98
+ }
99
+ catch (error) {
100
+ throw new Error(`Failed to stop service: ${error instanceof Error ? error.message : String(error)}`);
101
+ }
102
+ }
103
+ async restart() {
104
+ await this.stop();
105
+ await this.start();
106
+ }
107
+ async status() {
108
+ try {
109
+ const { stdout } = await execAsync(`sc query ${this.serviceName}`);
110
+ const isRunning = stdout.includes('STATE') && stdout.includes('RUNNING');
111
+ const isStopped = stdout.includes('STATE') && stdout.includes('STOPPED');
112
+ // Extract PID if available (requires Windows 10+)
113
+ const pidMatch = stdout.match(/PID\s+:\s+(\d+)/);
114
+ const pid = pidMatch ? parseInt(pidMatch[1], 10) : undefined;
115
+ return {
116
+ running: isRunning,
117
+ enabled: true, // If service exists, it's enabled
118
+ pid,
119
+ message: stdout
120
+ };
121
+ }
122
+ catch (error) {
123
+ // Service might not exist
124
+ return {
125
+ running: false,
126
+ enabled: false,
127
+ message: error instanceof Error ? error.message : String(error)
128
+ };
129
+ }
130
+ }
131
+ async logs(follow, lines = 100) {
132
+ // Windows Event Log integration would be more complex
133
+ // For now, we'll try to read from a log file if the agent writes one
134
+ const logPath = path.join(process.env.EDGIBLE_CONFIG_PATH || path.join(process.env.USERPROFILE || 'C:\\', '.edgible', 'agent'), 'logs', 'agent.log');
135
+ try {
136
+ if (follow) {
137
+ console.log('Following logs (press Ctrl+C to stop)...');
138
+ // Use PowerShell Get-Content -Wait for following
139
+ const { spawn } = require('child_process');
140
+ const proc = spawn('powershell.exe', [
141
+ '-Command',
142
+ `Get-Content -Path "${logPath}" -Wait -Tail ${lines}`
143
+ ], {
144
+ stdio: 'inherit'
145
+ });
146
+ process.on('SIGINT', () => {
147
+ proc.kill();
148
+ process.exit(0);
149
+ });
150
+ // Return empty string for follow mode as logs are streamed to stdout
151
+ return '';
152
+ }
153
+ else {
154
+ // Read last N lines using PowerShell
155
+ const { stdout } = await execAsync(`powershell.exe -Command "Get-Content -Path '${logPath}' -Tail ${lines}"`);
156
+ return stdout;
157
+ }
158
+ }
159
+ catch (error) {
160
+ // Try Windows Event Log as fallback
161
+ try {
162
+ const { stdout } = await execAsync(`powershell.exe -Command "Get-EventLog -LogName Application -Source '${this.serviceName}' -Newest ${lines} | Format-List"`);
163
+ return stdout;
164
+ }
165
+ catch {
166
+ throw new Error(`Failed to read logs: ${error instanceof Error ? error.message : String(error)}`);
167
+ }
168
+ }
169
+ }
170
+ async enable() {
171
+ try {
172
+ await execAsync(`sc config ${this.serviceName} start= auto`);
173
+ }
174
+ catch (error) {
175
+ throw new Error(`Failed to enable service: ${error instanceof Error ? error.message : String(error)}`);
176
+ }
177
+ }
178
+ async disable() {
179
+ try {
180
+ await execAsync(`sc config ${this.serviceName} start= demand`);
181
+ }
182
+ catch (error) {
183
+ throw new Error(`Failed to disable service: ${error instanceof Error ? error.message : String(error)}`);
184
+ }
185
+ }
186
+ async uninstall() {
187
+ // Stop service first
188
+ try {
189
+ await this.stop();
190
+ }
191
+ catch {
192
+ // Ignore if already stopped
193
+ }
194
+ // Delete service
195
+ try {
196
+ await execAsync(`sc delete ${this.serviceName}`);
197
+ }
198
+ catch (error) {
199
+ throw new Error(`Failed to remove service: ${error instanceof Error ? error.message : String(error)}`);
200
+ }
201
+ }
202
+ getPlatform() {
203
+ return 'win32';
204
+ }
205
+ getType() {
206
+ return 'windows-service';
207
+ }
208
+ }
209
+ exports.WindowsServiceDaemonManager = WindowsServiceDaemonManager;
210
+ //# sourceMappingURL=WindowsServiceDaemonManager.js.map
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DaemonManagerFactory = exports.PodmanDaemonManager = exports.DockerDaemonManager = exports.WindowsServiceDaemonManager = exports.LaunchdDaemonManager = exports.SystemdDaemonManager = void 0;
4
+ var SystemdDaemonManager_1 = require("./SystemdDaemonManager");
5
+ Object.defineProperty(exports, "SystemdDaemonManager", { enumerable: true, get: function () { return SystemdDaemonManager_1.SystemdDaemonManager; } });
6
+ var LaunchdDaemonManager_1 = require("./LaunchdDaemonManager");
7
+ Object.defineProperty(exports, "LaunchdDaemonManager", { enumerable: true, get: function () { return LaunchdDaemonManager_1.LaunchdDaemonManager; } });
8
+ var WindowsServiceDaemonManager_1 = require("./WindowsServiceDaemonManager");
9
+ Object.defineProperty(exports, "WindowsServiceDaemonManager", { enumerable: true, get: function () { return WindowsServiceDaemonManager_1.WindowsServiceDaemonManager; } });
10
+ var DockerDaemonManager_1 = require("./DockerDaemonManager");
11
+ Object.defineProperty(exports, "DockerDaemonManager", { enumerable: true, get: function () { return DockerDaemonManager_1.DockerDaemonManager; } });
12
+ var PodmanDaemonManager_1 = require("./PodmanDaemonManager");
13
+ Object.defineProperty(exports, "PodmanDaemonManager", { enumerable: true, get: function () { return PodmanDaemonManager_1.PodmanDaemonManager; } });
14
+ var DaemonManagerFactory_1 = require("./DaemonManagerFactory");
15
+ Object.defineProperty(exports, "DaemonManagerFactory", { enumerable: true, get: function () { return DaemonManagerFactory_1.DaemonManagerFactory; } });
16
+ //# sourceMappingURL=index.js.map