@edgible-team/cli 1.2.13 → 1.2.17

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 (219) hide show
  1. package/README.md +5 -3
  2. package/dist/client/api-client.d.ts +13 -1
  3. package/dist/client/api-client.d.ts.map +1 -1
  4. package/dist/client/api-client.js +19 -0
  5. package/dist/commands/agent/install.d.ts +2 -1
  6. package/dist/commands/agent/install.d.ts.map +1 -1
  7. package/dist/commands/agent/install.js +24 -7
  8. package/dist/commands/agent/start.d.ts +5 -1
  9. package/dist/commands/agent/start.d.ts.map +1 -1
  10. package/dist/commands/agent/start.js +19 -280
  11. package/dist/commands/agent/uninstall.d.ts.map +1 -1
  12. package/dist/commands/agent/uninstall.js +14 -7
  13. package/dist/commands/agent.d.ts.map +1 -1
  14. package/dist/commands/agent.js +3 -2
  15. package/dist/commands/ai/setup.d.ts +1 -1
  16. package/dist/commands/ai/setup.d.ts.map +1 -1
  17. package/dist/commands/ai.js +1 -1
  18. package/dist/commands/application/create-docker-compose.d.ts +3 -1
  19. package/dist/commands/application/create-docker-compose.d.ts.map +1 -1
  20. package/dist/commands/application/create-docker-compose.js +25 -69
  21. package/dist/commands/application/create-existing.d.ts +2 -2
  22. package/dist/commands/application/create-existing.d.ts.map +1 -1
  23. package/dist/commands/application/create-existing.js +27 -132
  24. package/dist/commands/application/create-managed-process.d.ts +3 -1
  25. package/dist/commands/application/create-managed-process.d.ts.map +1 -1
  26. package/dist/commands/application/create-managed-process.js +31 -75
  27. package/dist/commands/application/delete.d.ts +2 -1
  28. package/dist/commands/application/delete.d.ts.map +1 -1
  29. package/dist/commands/application/delete.js +19 -5
  30. package/dist/commands/application/update.d.ts +3 -0
  31. package/dist/commands/application/update.d.ts.map +1 -1
  32. package/dist/commands/application/update.js +45 -1
  33. package/dist/commands/application.d.ts.map +1 -1
  34. package/dist/commands/application.js +33 -19
  35. package/dist/commands/auth.d.ts.map +1 -1
  36. package/dist/commands/auth.js +44 -0
  37. package/dist/commands/debug.js +1 -1
  38. package/dist/commands/device/application-health.d.ts +7 -0
  39. package/dist/commands/device/application-health.d.ts.map +1 -0
  40. package/dist/commands/device/application-health.js +103 -0
  41. package/dist/commands/device/delete.d.ts +7 -0
  42. package/dist/commands/device/delete.d.ts.map +1 -0
  43. package/dist/commands/device/delete.js +69 -0
  44. package/dist/commands/device/health.d.ts +7 -0
  45. package/dist/commands/device/health.d.ts.map +1 -0
  46. package/dist/commands/device/health.js +78 -0
  47. package/dist/commands/device/list.d.ts +5 -0
  48. package/dist/commands/device/list.d.ts.map +1 -0
  49. package/dist/commands/device/list.js +46 -0
  50. package/dist/commands/device/telemetry.d.ts +8 -0
  51. package/dist/commands/device/telemetry.d.ts.map +1 -0
  52. package/dist/commands/device/telemetry.js +59 -0
  53. package/dist/commands/device.d.ts +6 -0
  54. package/dist/commands/device.d.ts.map +1 -0
  55. package/dist/commands/device.js +86 -0
  56. package/dist/commands/stack/deploy.d.ts +8 -0
  57. package/dist/commands/stack/deploy.d.ts.map +1 -0
  58. package/dist/commands/stack/deploy.js +61 -0
  59. package/dist/commands/stack/diff.d.ts +7 -0
  60. package/dist/commands/stack/diff.d.ts.map +1 -0
  61. package/dist/commands/stack/diff.js +66 -0
  62. package/dist/commands/stack/status.d.ts +9 -0
  63. package/dist/commands/stack/status.d.ts.map +1 -0
  64. package/dist/commands/stack/status.js +55 -0
  65. package/dist/commands/stack/teardown.d.ts +8 -0
  66. package/dist/commands/stack/teardown.d.ts.map +1 -0
  67. package/dist/commands/stack/teardown.js +107 -0
  68. package/dist/commands/stack/validate.d.ts +7 -0
  69. package/dist/commands/stack/validate.d.ts.map +1 -0
  70. package/dist/commands/stack/validate.js +44 -0
  71. package/dist/commands/stack.d.ts +10 -0
  72. package/dist/commands/stack.d.ts.map +1 -0
  73. package/dist/commands/stack.js +117 -0
  74. package/dist/commands/utils/auth-prompt.d.ts +25 -0
  75. package/dist/commands/utils/auth-prompt.d.ts.map +1 -0
  76. package/dist/commands/utils/auth-prompt.js +115 -0
  77. package/dist/commands/utils/device-prompt.d.ts +18 -0
  78. package/dist/commands/utils/device-prompt.d.ts.map +1 -0
  79. package/dist/commands/utils/device-prompt.js +58 -0
  80. package/dist/commands/utils/output-formatter.d.ts +13 -0
  81. package/dist/commands/utils/output-formatter.d.ts.map +1 -1
  82. package/dist/commands/utils/output-formatter.js +21 -0
  83. package/dist/index.js +4 -0
  84. package/dist/services/LocalAgentManager.d.ts +2 -1
  85. package/dist/services/LocalAgentManager.d.ts.map +1 -1
  86. package/dist/services/LocalAgentManager.js +6 -4
  87. package/dist/services/application/ApplicationService.d.ts +19 -0
  88. package/dist/services/application/ApplicationService.d.ts.map +1 -1
  89. package/dist/services/application/ApplicationService.js +14 -1
  90. package/dist/services/device/DeviceService.d.ts +62 -0
  91. package/dist/services/device/DeviceService.d.ts.map +1 -0
  92. package/dist/services/device/DeviceService.js +235 -0
  93. package/dist/services/edgible.d.ts +3 -1
  94. package/dist/services/edgible.d.ts.map +1 -1
  95. package/dist/services/edgible.js +5 -4
  96. package/dist/services/instances.d.ts +27 -1
  97. package/dist/services/instances.d.ts.map +1 -1
  98. package/dist/services/instances.js +53 -4
  99. package/dist/services/stack/DependencyGraphManager.d.ts +69 -0
  100. package/dist/services/stack/DependencyGraphManager.d.ts.map +1 -0
  101. package/dist/services/stack/DependencyGraphManager.js +204 -0
  102. package/dist/services/stack/DeviceResolver.d.ts +63 -0
  103. package/dist/services/stack/DeviceResolver.d.ts.map +1 -0
  104. package/dist/services/stack/DeviceResolver.js +147 -0
  105. package/dist/services/stack/GatewayResolver.d.ts +84 -0
  106. package/dist/services/stack/GatewayResolver.d.ts.map +1 -0
  107. package/dist/services/stack/GatewayResolver.js +179 -0
  108. package/dist/services/stack/StackParser.d.ts +38 -0
  109. package/dist/services/stack/StackParser.d.ts.map +1 -0
  110. package/dist/services/stack/StackParser.js +234 -0
  111. package/dist/services/stack/StackService.d.ts +76 -0
  112. package/dist/services/stack/StackService.d.ts.map +1 -0
  113. package/dist/services/stack/StackService.js +476 -0
  114. package/dist/types/AgentConfig.d.ts +26 -0
  115. package/dist/types/AgentConfig.d.ts.map +1 -1
  116. package/dist/types/ApiRequests.d.ts +5 -1
  117. package/dist/types/ApiRequests.d.ts.map +1 -1
  118. package/dist/types/ApiResponses.d.ts +5 -0
  119. package/dist/types/ApiResponses.d.ts.map +1 -1
  120. package/dist/types/JobTypes.d.ts +103 -0
  121. package/dist/types/JobTypes.d.ts.map +1 -0
  122. package/dist/types/JobTypes.js +80 -0
  123. package/dist/types/WebSocketMessages.d.ts +89 -0
  124. package/dist/types/WebSocketMessages.d.ts.map +1 -0
  125. package/dist/types/WebSocketMessages.js +5 -0
  126. package/dist/types/backendJobs.d.ts +102 -0
  127. package/dist/types/backendJobs.d.ts.map +1 -0
  128. package/dist/types/backendJobs.js +5 -0
  129. package/dist/types/models/ApplicationData.d.ts +1 -1
  130. package/dist/types/models/ApplicationData.d.ts.map +1 -1
  131. package/dist/types/models/DeviceData.d.ts +4 -0
  132. package/dist/types/models/DeviceData.d.ts.map +1 -1
  133. package/dist/types/stack.d.ts +191 -0
  134. package/dist/types/stack.d.ts.map +1 -0
  135. package/dist/types/stack.js +5 -0
  136. package/dist/types/validation/schemas.d.ts +20 -20
  137. package/dist/types/validation/schemas.js +1 -1
  138. package/dist/utils/stack-errors.d.ts +103 -0
  139. package/dist/utils/stack-errors.d.ts.map +1 -0
  140. package/dist/utils/stack-errors.js +158 -0
  141. package/dist/utils/stack-file.d.ts +11 -0
  142. package/dist/utils/stack-file.d.ts.map +1 -0
  143. package/dist/utils/stack-file.js +66 -0
  144. package/dist/validation/stack-schemas.d.ts +535 -0
  145. package/dist/validation/stack-schemas.d.ts.map +1 -0
  146. package/dist/validation/stack-schemas.js +178 -0
  147. package/package.json +4 -2
  148. package/dist/commands/agent/agent-handlers.d.ts +0 -45
  149. package/dist/commands/agent/agent-handlers.d.ts.map +0 -1
  150. package/dist/commands/agent/agent-handlers.js +0 -1159
  151. package/dist/commands/application/api-keys.d.ts +0 -3
  152. package/dist/commands/application/api-keys.d.ts.map +0 -1
  153. package/dist/commands/application/api-keys.js +0 -227
  154. package/dist/commands/application/create-compose.d.ts +0 -3
  155. package/dist/commands/application/create-compose.d.ts.map +0 -1
  156. package/dist/commands/application/create-compose.js +0 -381
  157. package/dist/commands/application/create-interactive.d.ts +0 -3
  158. package/dist/commands/application/create-interactive.d.ts.map +0 -1
  159. package/dist/commands/application/create-interactive.js +0 -326
  160. package/dist/commands/application/create-workload.d.ts +0 -5
  161. package/dist/commands/application/create-workload.d.ts.map +0 -1
  162. package/dist/commands/application/create-workload.js +0 -48
  163. package/dist/commands/application/short-codes.d.ts +0 -3
  164. package/dist/commands/application/short-codes.d.ts.map +0 -1
  165. package/dist/commands/application/short-codes.js +0 -226
  166. package/dist/commands/application/toggle.d.ts +0 -2
  167. package/dist/commands/application/toggle.d.ts.map +0 -1
  168. package/dist/commands/application/toggle.js +0 -78
  169. package/dist/commands/examples/migrated-command-example.d.ts +0 -31
  170. package/dist/commands/examples/migrated-command-example.d.ts.map +0 -1
  171. package/dist/commands/examples/migrated-command-example.js +0 -180
  172. package/dist/commands/managedGateway/create.d.ts +0 -6
  173. package/dist/commands/managedGateway/create.d.ts.map +0 -1
  174. package/dist/commands/managedGateway/create.js +0 -50
  175. package/dist/commands/managedGateway/delete.d.ts +0 -5
  176. package/dist/commands/managedGateway/delete.d.ts.map +0 -1
  177. package/dist/commands/managedGateway/delete.js +0 -57
  178. package/dist/commands/managedGateway/get.d.ts +0 -4
  179. package/dist/commands/managedGateway/get.d.ts.map +0 -1
  180. package/dist/commands/managedGateway/get.js +0 -71
  181. package/dist/commands/managedGateway/haproxy-stats.d.ts +0 -6
  182. package/dist/commands/managedGateway/haproxy-stats.d.ts.map +0 -1
  183. package/dist/commands/managedGateway/haproxy-stats.js +0 -131
  184. package/dist/commands/managedGateway/list.d.ts +0 -4
  185. package/dist/commands/managedGateway/list.d.ts.map +0 -1
  186. package/dist/commands/managedGateway/list.js +0 -50
  187. package/dist/commands/managedGateway/logs.d.ts +0 -10
  188. package/dist/commands/managedGateway/logs.d.ts.map +0 -1
  189. package/dist/commands/managedGateway/logs.js +0 -100
  190. package/dist/commands/managedGateway/reboot.d.ts +0 -5
  191. package/dist/commands/managedGateway/reboot.d.ts.map +0 -1
  192. package/dist/commands/managedGateway/reboot.js +0 -95
  193. package/dist/commands/managedGateway/resync.d.ts +0 -10
  194. package/dist/commands/managedGateway/resync.d.ts.map +0 -1
  195. package/dist/commands/managedGateway/resync.js +0 -69
  196. package/dist/commands/managedGateway/ssh.d.ts +0 -4
  197. package/dist/commands/managedGateway/ssh.d.ts.map +0 -1
  198. package/dist/commands/managedGateway/ssh.js +0 -130
  199. package/dist/commands/managedGateway/wipe-logs.d.ts +0 -4
  200. package/dist/commands/managedGateway/wipe-logs.d.ts.map +0 -1
  201. package/dist/commands/managedGateway/wipe-logs.js +0 -67
  202. package/dist/commands/managedGateway/wireguard.d.ts +0 -4
  203. package/dist/commands/managedGateway/wireguard.d.ts.map +0 -1
  204. package/dist/commands/managedGateway/wireguard.js +0 -68
  205. package/dist/di/bindings.d.ts +0 -15
  206. package/dist/di/bindings.d.ts.map +0 -1
  207. package/dist/di/bindings.js +0 -99
  208. package/dist/di/container.d.ts +0 -44
  209. package/dist/di/container.d.ts.map +0 -1
  210. package/dist/di/container.js +0 -88
  211. package/dist/di/types.d.ts +0 -23
  212. package/dist/di/types.d.ts.map +0 -1
  213. package/dist/di/types.js +0 -32
  214. package/dist/repositories/config-repository.d.ts +0 -46
  215. package/dist/repositories/config-repository.d.ts.map +0 -1
  216. package/dist/repositories/config-repository.js +0 -62
  217. package/dist/repositories/gateway-repository.d.ts +0 -37
  218. package/dist/repositories/gateway-repository.d.ts.map +0 -1
  219. package/dist/repositories/gateway-repository.js +0 -35
@@ -1,50 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewayList = handleManagedGatewayList;
7
- const chalk_1 = __importDefault(require("chalk"));
8
- const instances_1 = require("../../services/instances");
9
- const config_validator_1 = require("../utils/config-validator");
10
- async function handleManagedGatewayList(options) {
11
- wrapCommand(async (options) => {
12
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
13
- requireAuth: true,
14
- });
15
- instances_1.logger.debug('Listing managed gateways');
16
- const response = await instances_1.managedGatewayService.listManagedGateways();
17
- if (!response.success || !response.gateways || response.gateways.length === 0) {
18
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
19
- return;
20
- }
21
- if (options.json) {
22
- console.log(JSON.stringify({
23
- gateways: response.gateways.map((gateway) => ({
24
- id: gateway.id,
25
- name: gateway.name,
26
- description: gateway.description,
27
- ipAddress: gateway.ipAddress,
28
- status: gateway.status,
29
- lastSeen: gateway.lastSeen,
30
- createdAt: gateway.createdAt,
31
- organizationId: gateway.organizationId,
32
- })),
33
- }, null, 2));
34
- return;
35
- }
36
- console.log(chalk_1.default.blue('\n🌐 Managed Gateways:'));
37
- response.gateways.forEach((gateway) => {
38
- console.log(chalk_1.default.white(`\n ID: ${gateway.id}`));
39
- console.log(chalk_1.default.white(` Name: ${gateway.name}`));
40
- if (gateway.description) {
41
- console.log(chalk_1.default.gray(` Description: ${gateway.description}`));
42
- }
43
- console.log(chalk_1.default.white(` IP Address: ${gateway.ipAddress || 'N/A'}`));
44
- console.log(chalk_1.default.white(` Status: ${gateway.status || 'N/A'}`));
45
- console.log(chalk_1.default.white(` Last Seen: ${gateway.lastSeen ? new Date(gateway.lastSeen).toLocaleString() : 'N/A'}`));
46
- console.log(chalk_1.default.white(` Created: ${new Date(gateway.createdAt).toLocaleString()}`));
47
- });
48
- });
49
- }
50
- //# sourceMappingURL=list.js.map
@@ -1,10 +0,0 @@
1
- export declare function handleManagedGatewayLogs(options: {
2
- id?: string;
3
- lines?: string;
4
- follow?: boolean;
5
- level?: string;
6
- module?: string;
7
- comprehensive?: boolean;
8
- singleLine?: boolean;
9
- }): Promise<void>;
10
- //# sourceMappingURL=logs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../../src/commands/managedGateway/logs.ts"],"names":[],"mappings":"AAMA,wBAAsB,wBAAwB,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmGxM"}
@@ -1,100 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewayLogs = handleManagedGatewayLogs;
7
- const inquirer_1 = __importDefault(require("inquirer"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const instances_1 = require("../../services/instances");
10
- const config_validator_1 = require("../utils/config-validator");
11
- const log_formatter_1 = require("../../utils/log-formatter");
12
- async function handleManagedGatewayLogs(options) {
13
- wrapCommand(async (options) => {
14
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
15
- requireAuth: true,
16
- });
17
- let gatewayId = options.id;
18
- if (!gatewayId) {
19
- // List gateways first to allow selection
20
- const listResponse = await instances_1.managedGatewayService.listManagedGateways();
21
- if (!listResponse.success || !listResponse.gateways || listResponse.gateways.length === 0) {
22
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
23
- return;
24
- }
25
- const choices = listResponse.gateways.map((gateway) => ({
26
- name: `${gateway.name} (${gateway.id})`,
27
- value: gateway.id,
28
- }));
29
- const answer = await inquirer_1.default.prompt([
30
- {
31
- type: 'list',
32
- name: 'gatewayId',
33
- message: 'Select managed gateway:',
34
- choices,
35
- },
36
- ]);
37
- gatewayId = answer.gatewayId;
38
- }
39
- const lines = parseInt(options.lines || '50') || 50;
40
- const follow = options.follow || false;
41
- const level = options.level || 'all';
42
- const module = options.module;
43
- const comprehensive = options.comprehensive || false;
44
- instances_1.logger.info('Retrieving managed gateway logs', {
45
- gatewayId,
46
- lines: follow ? undefined : lines,
47
- follow,
48
- level,
49
- module,
50
- comprehensive,
51
- });
52
- // Use the dedicated getManagedGatewayLogs method
53
- try {
54
- if (!gatewayId) {
55
- console.log(chalk_1.default.red('✗ Gateway ID is required'));
56
- return;
57
- }
58
- const result = await instances_1.managedGatewayService.getManagedGatewayLogs(gatewayId, {
59
- lines: follow ? undefined : lines,
60
- follow: follow,
61
- level: level,
62
- comprehensive: comprehensive,
63
- });
64
- if (result.success) {
65
- // For comprehensive mode, just output raw logs
66
- if (comprehensive) {
67
- console.log(result.logs);
68
- }
69
- else {
70
- // Parse and format JSON logs nicely
71
- const formattedLogs = (0, log_formatter_1.processLogs)(result.logs, {
72
- module: module,
73
- level: level,
74
- singleLine: options.singleLine || false
75
- });
76
- if (formattedLogs.trim()) {
77
- console.log(formattedLogs);
78
- }
79
- else {
80
- if (module) {
81
- console.log(chalk_1.default.yellow(`No logs found for module(s): ${module}`));
82
- }
83
- else {
84
- console.log(chalk_1.default.yellow('No logs found'));
85
- }
86
- }
87
- }
88
- }
89
- else {
90
- instances_1.logger.error('Failed to retrieve logs');
91
- console.log(chalk_1.default.red('✗ Failed to retrieve logs'));
92
- }
93
- }
94
- catch (error) {
95
- instances_1.logger.error('Error retrieving managed gateway logs', error);
96
- console.log(chalk_1.default.red('✗ Error retrieving logs'));
97
- }
98
- });
99
- }
100
- //# sourceMappingURL=logs.js.map
@@ -1,5 +0,0 @@
1
- export declare function handleManagedGatewayReboot(options: {
2
- id?: string;
3
- force?: boolean;
4
- }): Promise<void>;
5
- //# sourceMappingURL=reboot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reboot.d.ts","sourceRoot":"","sources":["../../../src/commands/managedGateway/reboot.ts"],"names":[],"mappings":"AAKA,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FzG"}
@@ -1,95 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewayReboot = handleManagedGatewayReboot;
7
- const inquirer_1 = __importDefault(require("inquirer"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const instances_1 = require("../../services/instances");
10
- const config_validator_1 = require("../utils/config-validator");
11
- async function handleManagedGatewayReboot(options) {
12
- wrapCommand(async (options) => {
13
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
14
- requireAuth: true,
15
- });
16
- let gatewayId = options.id;
17
- if (!gatewayId) {
18
- // List gateways first to allow selection
19
- const listResponse = await instances_1.managedGatewayService.listManagedGateways();
20
- if (!listResponse.success || !listResponse.gateways || listResponse.gateways.length === 0) {
21
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
22
- return;
23
- }
24
- const choices = listResponse.gateways.map((gateway) => ({
25
- name: `${gateway.name} (${gateway.id})`,
26
- value: gateway.id,
27
- }));
28
- const answer = await inquirer_1.default.prompt([
29
- {
30
- type: 'list',
31
- name: 'gatewayId',
32
- message: 'Select managed gateway to reboot:',
33
- choices,
34
- },
35
- ]);
36
- gatewayId = answer.gatewayId;
37
- }
38
- // Confirm reboot unless force flag is set
39
- if (!options.force) {
40
- const confirm = await inquirer_1.default.prompt([
41
- {
42
- type: 'confirm',
43
- name: 'confirm',
44
- message: `Are you sure you want to reboot managed gateway ${gatewayId}?`,
45
- default: false,
46
- },
47
- ]);
48
- if (!confirm.confirm) {
49
- instances_1.logger.info('Gateway reboot cancelled');
50
- console.log(chalk_1.default.gray('Reboot cancelled'));
51
- return;
52
- }
53
- }
54
- instances_1.logger.info('Rebooting managed gateway', { gatewayId });
55
- try {
56
- if (!gatewayId) {
57
- console.log(chalk_1.default.red('✗ Gateway ID is required'));
58
- return;
59
- }
60
- console.log(chalk_1.default.blue(`Rebooting gateway ${gatewayId}...`));
61
- // Execute reboot command (this will disconnect SSH, which is expected)
62
- const result = await instances_1.diagnosticsService.executeManagedGatewayCommand(gatewayId, 'sudo reboot');
63
- // Note: The command may not return successfully because the gateway reboots
64
- // and disconnects the SSH session. We check if we got an error that suggests
65
- // the connection was lost (which is expected during reboot)
66
- if (result.success || (result.error && result.error.includes('ECONNRESET'))) {
67
- console.log(chalk_1.default.green('✓ Reboot command sent successfully'));
68
- console.log(chalk_1.default.yellow('⚠ Gateway is rebooting. SSH connection will be lost.'));
69
- console.log(chalk_1.default.gray(' The gateway should be back online in a few minutes.'));
70
- }
71
- else {
72
- instances_1.logger.error('Failed to reboot gateway', { error: result.error });
73
- console.log(chalk_1.default.red('✗ Failed to send reboot command'));
74
- if (result.error) {
75
- console.log(chalk_1.default.red(` Error: ${result.error}`));
76
- }
77
- }
78
- }
79
- catch (error) {
80
- // If the error is a connection reset, that's expected during reboot
81
- const errorMessage = error instanceof Error ? error.message : String(error);
82
- if (errorMessage.includes('ECONNRESET') || errorMessage.includes('connection')) {
83
- console.log(chalk_1.default.green('✓ Reboot command sent successfully'));
84
- console.log(chalk_1.default.yellow('⚠ Gateway is rebooting. SSH connection was lost (expected).'));
85
- console.log(chalk_1.default.gray(' The gateway should be back online in a few minutes.'));
86
- }
87
- else {
88
- instances_1.logger.error('Error rebooting gateway', error);
89
- console.log(chalk_1.default.red('✗ Error rebooting gateway'));
90
- console.log(chalk_1.default.red(` ${errorMessage}`));
91
- }
92
- }
93
- });
94
- }
95
- //# sourceMappingURL=reboot.js.map
@@ -1,10 +0,0 @@
1
- export declare function handleManagedGatewayResync(options: {
2
- id?: string;
3
- version?: string;
4
- local?: boolean;
5
- installFromLocal?: boolean;
6
- reboot?: boolean;
7
- wipeLogs?: boolean;
8
- debug?: boolean;
9
- }): Promise<void>;
10
- //# sourceMappingURL=resync.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"resync.d.ts","sourceRoot":"","sources":["../../../src/commands/managedGateway/resync.ts"],"names":[],"mappings":"AAKA,wBAAsB,0BAA0B,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAwE9M"}
@@ -1,69 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewayResync = handleManagedGatewayResync;
7
- const inquirer_1 = __importDefault(require("inquirer"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const instances_1 = require("../../services/instances");
10
- const config_validator_1 = require("../utils/config-validator");
11
- async function handleManagedGatewayResync(options) {
12
- wrapCommand(async (options) => {
13
- // Map --local to installFromLocal for backward compatibility
14
- const installFromLocal = options.local || options.installFromLocal;
15
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
16
- requireAuth: true,
17
- });
18
- let gatewayId = options.id;
19
- if (!gatewayId) {
20
- // List gateways first to allow selection
21
- const listResponse = await instances_1.managedGatewayService.listManagedGateways();
22
- if (!listResponse.success || !listResponse.gateways || listResponse.gateways.length === 0) {
23
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
24
- return;
25
- }
26
- const choices = listResponse.gateways.map((gateway) => ({
27
- name: `${gateway.name} (${gateway.id})`,
28
- value: gateway.id,
29
- }));
30
- const answer = await inquirer_1.default.prompt([
31
- {
32
- type: 'list',
33
- name: 'gatewayId',
34
- message: 'Select managed gateway to resync:',
35
- choices,
36
- },
37
- ]);
38
- gatewayId = answer.gatewayId;
39
- }
40
- instances_1.logger.info('Resyncing agent on managed gateway', {
41
- gatewayId,
42
- version: options.version,
43
- installFromLocal,
44
- reboot: options.reboot,
45
- wipeLogs: options.wipeLogs,
46
- debug: options.debug
47
- });
48
- const result = await instances_1.managedGatewayService.resyncManagedGatewayAgent(gatewayId, options.version, installFromLocal, options.reboot, options.wipeLogs, options.debug);
49
- console.log(chalk_1.default.green('\n✓ Agent resynced successfully!'));
50
- console.log(chalk_1.default.blue('\n📋 Resync Details:'));
51
- console.log(chalk_1.default.white(` Gateway ID: ${gatewayId}`));
52
- if (result.agentVersion) {
53
- console.log(chalk_1.default.white(` Agent Version: ${result.agentVersion}`));
54
- }
55
- if (result.syncTimestamp) {
56
- console.log(chalk_1.default.white(` Sync Time: ${new Date(result.syncTimestamp).toLocaleString()}`));
57
- }
58
- if (options.debug) {
59
- console.log(chalk_1.default.cyan(` Log Level: Debug (enabled)`));
60
- }
61
- if (options.wipeLogs && result.logsWiped) {
62
- console.log(chalk_1.default.yellow(` Logs: Wiped before resync`));
63
- }
64
- if (options.reboot && result.rebooted) {
65
- console.log(chalk_1.default.yellow(` Reboot: Command sent (gateway is rebooting)`));
66
- }
67
- });
68
- }
69
- //# sourceMappingURL=resync.js.map
@@ -1,4 +0,0 @@
1
- export declare function handleManagedGatewaySsh(options: {
2
- id?: string;
3
- }): Promise<void>;
4
- //# sourceMappingURL=ssh.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ssh.d.ts","sourceRoot":"","sources":["../../../src/commands/managedGateway/ssh.ts"],"names":[],"mappings":"AAKA,wBAAsB,uBAAuB,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuIrF"}
@@ -1,130 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewaySsh = handleManagedGatewaySsh;
7
- const inquirer_1 = __importDefault(require("inquirer"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const instances_1 = require("../../services/instances");
10
- const config_validator_1 = require("../utils/config-validator");
11
- async function handleManagedGatewaySsh(options) {
12
- wrapCommand(async (options) => {
13
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
14
- requireAuth: true,
15
- });
16
- let gatewayId = options.id;
17
- if (!gatewayId) {
18
- // List gateways first to allow selection
19
- const listResponse = await instances_1.managedGatewayService.listManagedGateways();
20
- if (!listResponse.success || !listResponse.gateways || listResponse.gateways.length === 0) {
21
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
22
- return;
23
- }
24
- const choices = listResponse.gateways.map((gateway) => ({
25
- name: `${gateway.name} (${gateway.id})`,
26
- value: gateway.id,
27
- }));
28
- const answer = await inquirer_1.default.prompt([
29
- {
30
- type: 'list',
31
- name: 'gatewayId',
32
- message: 'Select managed gateway:',
33
- choices,
34
- },
35
- ]);
36
- gatewayId = answer.gatewayId;
37
- }
38
- instances_1.logger.info('Connecting to managed gateway via SSH', { gatewayId });
39
- // Get managed gateway details
40
- const gatewayDetails = await instances_1.managedGatewayService.getManagedGateway(gatewayId);
41
- if (!gatewayDetails.success || !gatewayDetails.gateway) {
42
- console.log(chalk_1.default.red('✗ Managed gateway not found'));
43
- return;
44
- }
45
- const gateway = gatewayDetails.gateway;
46
- const ipAddress = gateway.ipAddress;
47
- if (!ipAddress) {
48
- console.log(chalk_1.default.red('✗ Gateway IP address not available'));
49
- return;
50
- }
51
- // Get SSH key from backend
52
- console.log(chalk_1.default.gray('Fetching SSH key from backend...'));
53
- const sshKeyResponse = await instances_1.managedGatewayService.getManagedGatewaySSHKey(gatewayId);
54
- if (!sshKeyResponse.success || !sshKeyResponse.sshPrivateKey) {
55
- console.log(chalk_1.default.red('✗ Failed to retrieve SSH key for managed gateway'));
56
- return;
57
- }
58
- const sshPrivateKey = sshKeyResponse.sshPrivateKey;
59
- // Create temporary SSH key file
60
- const os = require('os');
61
- const path = require('path');
62
- const fs = require('fs');
63
- const tempKeyPath = path.join(os.tmpdir(), `edgible-mgw-ssh-${gatewayId}-${Date.now()}.pem`);
64
- try {
65
- // Write SSH key to temp file with proper permissions
66
- fs.writeFileSync(tempKeyPath, sshPrivateKey, { mode: 0o600 });
67
- console.log(chalk_1.default.blue(`\nConnecting to managed gateway: ${gatewayId}`));
68
- console.log(chalk_1.default.gray(`Public IP: ${ipAddress}`));
69
- console.log(chalk_1.default.gray(`Region: ${gateway.organizationId || 'N/A'}`));
70
- console.log(chalk_1.default.yellow('\nOpening SSH connection...\n'));
71
- // Build SSH command
72
- const sshCommand = `ssh -i "${tempKeyPath}" -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ec2-user@${ipAddress}`;
73
- console.log(chalk_1.default.green('✓ Opening interactive SSH session...'));
74
- console.log(chalk_1.default.gray('─'.repeat(80)));
75
- console.log(chalk_1.default.gray('Tip: Type "exit" to disconnect from the gateway\n'));
76
- // Execute SSH using child_process
77
- const { spawn } = require('child_process');
78
- const sshProcess = spawn('sh', ['-c', sshCommand], {
79
- stdio: 'inherit',
80
- shell: false,
81
- });
82
- sshProcess.on('error', (error) => {
83
- instances_1.logger.error('SSH connection error', error);
84
- console.error(chalk_1.default.red('✗ SSH connection error:'), error.message);
85
- console.log(chalk_1.default.yellow('\nMake sure SSH is installed and the key file has correct permissions'));
86
- throw error;
87
- });
88
- sshProcess.on('exit', (code) => {
89
- if (code === 0) {
90
- instances_1.logger.debug('SSH session ended normally');
91
- console.log(chalk_1.default.gray('\nSSH session ended'));
92
- }
93
- else {
94
- instances_1.logger.warn('SSH session ended with non-zero code', { code });
95
- console.log(chalk_1.default.yellow(`\nSSH session ended with code: ${code}`));
96
- }
97
- });
98
- // Wait for process to exit
99
- await new Promise((resolve, reject) => {
100
- sshProcess.on('exit', (code) => {
101
- if (code === 0 || code === null) {
102
- resolve();
103
- }
104
- else {
105
- reject(new Error(`SSH session exited with code ${code}`));
106
- }
107
- });
108
- sshProcess.on('error', reject);
109
- });
110
- }
111
- catch (error) {
112
- instances_1.logger.error('Error connecting to managed gateway via SSH', error);
113
- console.error(chalk_1.default.red('✗ Error connecting to managed gateway:'), error instanceof Error ? error.message : String(error));
114
- throw error;
115
- }
116
- finally {
117
- // Clean up temp key file
118
- try {
119
- if (fs.existsSync(tempKeyPath)) {
120
- fs.unlinkSync(tempKeyPath);
121
- }
122
- }
123
- catch (cleanupError) {
124
- // Ignore cleanup errors
125
- instances_1.logger.debug('Failed to cleanup temp SSH key file', cleanupError);
126
- }
127
- }
128
- });
129
- }
130
- //# sourceMappingURL=ssh.js.map
@@ -1,4 +0,0 @@
1
- export declare function handleManagedGatewayWipeLogs(options: {
2
- id?: string;
3
- }): Promise<void>;
4
- //# sourceMappingURL=wipe-logs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wipe-logs.d.ts","sourceRoot":"","sources":["../../../src/commands/managedGateway/wipe-logs.ts"],"names":[],"mappings":"AAKA,wBAAsB,4BAA4B,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE1F"}
@@ -1,67 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewayWipeLogs = handleManagedGatewayWipeLogs;
7
- const inquirer_1 = __importDefault(require("inquirer"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const instances_1 = require("../../services/instances");
10
- const config_validator_1 = require("../utils/config-validator");
11
- async function handleManagedGatewayWipeLogs(options) {
12
- wrapCommand(async (options) => {
13
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
14
- requireAuth: true,
15
- });
16
- let gatewayId = options.id;
17
- if (!gatewayId) {
18
- // List gateways first to allow selection
19
- const listResponse = await instances_1.managedGatewayService.listManagedGateways();
20
- if (!listResponse.success || !listResponse.gateways || listResponse.gateways.length === 0) {
21
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
22
- return;
23
- }
24
- const choices = listResponse.gateways.map((gateway) => ({
25
- name: `${gateway.name} (${gateway.id})`,
26
- value: gateway.id,
27
- }));
28
- const answer = await inquirer_1.default.prompt([
29
- {
30
- type: 'list',
31
- name: 'gatewayId',
32
- message: 'Select managed gateway:',
33
- choices,
34
- },
35
- ]);
36
- gatewayId = answer.gatewayId;
37
- }
38
- instances_1.logger.info('Wiping managed gateway logs', { gatewayId });
39
- // Confirm action
40
- const confirm = await inquirer_1.default.prompt([
41
- {
42
- type: 'confirm',
43
- name: 'confirm',
44
- message: `Are you sure you want to clear all logs on managed gateway ${gatewayId}?`,
45
- default: false,
46
- },
47
- ]);
48
- if (!confirm.confirm) {
49
- instances_1.logger.info('Log wipe cancelled');
50
- console.log(chalk_1.default.gray('Log wipe cancelled'));
51
- return;
52
- }
53
- // Get managed gateway logs and wipe them
54
- const result = await instances_1.diagnosticsService.wipeManagedGatewayLogs(gatewayId);
55
- if (result.success) {
56
- console.log(chalk_1.default.green('✓ Managed gateway logs cleared successfully!'));
57
- console.log(chalk_1.default.gray(` Log file: ${result.logFile || 'agent.log'}`));
58
- }
59
- else {
60
- console.log(chalk_1.default.red('✗ Failed to clear logs'));
61
- if (result.message) {
62
- console.log(chalk_1.default.yellow(result.message));
63
- }
64
- }
65
- });
66
- }
67
- //# sourceMappingURL=wipe-logs.js.map
@@ -1,4 +0,0 @@
1
- export declare function handleManagedGatewayWireguard(options: {
2
- id?: string;
3
- }): Promise<void>;
4
- //# sourceMappingURL=wireguard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wireguard.d.ts","sourceRoot":"","sources":["../../../src/commands/managedGateway/wireguard.ts"],"names":[],"mappings":"AAKA,wBAAsB,6BAA6B,CAAC,OAAO,EAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA8D3F"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.handleManagedGatewayWireguard = handleManagedGatewayWireguard;
7
- const inquirer_1 = __importDefault(require("inquirer"));
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const instances_1 = require("../../services/instances");
10
- const config_validator_1 = require("../utils/config-validator");
11
- async function handleManagedGatewayWireguard(options) {
12
- wrapCommand(async (options) => {
13
- (0, config_validator_1.validateConfig)(instances_1.configManager, {
14
- requireAuth: true,
15
- });
16
- let gatewayId = options.id;
17
- if (!gatewayId) {
18
- // List gateways first to allow selection
19
- const listResponse = await instances_1.managedGatewayService.listManagedGateways();
20
- if (!listResponse.success || !listResponse.gateways || listResponse.gateways.length === 0) {
21
- console.log(chalk_1.default.yellow('⚠ No managed gateways found'));
22
- return;
23
- }
24
- const choices = listResponse.gateways.map((gateway) => ({
25
- name: `${gateway.name} (${gateway.id})`,
26
- value: gateway.id,
27
- }));
28
- const answer = await inquirer_1.default.prompt([
29
- {
30
- type: 'list',
31
- name: 'gatewayId',
32
- message: 'Select managed gateway:',
33
- choices,
34
- },
35
- ]);
36
- gatewayId = answer.gatewayId;
37
- }
38
- instances_1.logger.info('Retrieving WireGuard status', { gatewayId });
39
- try {
40
- if (!gatewayId) {
41
- console.log(chalk_1.default.red('✗ Gateway ID is required'));
42
- return;
43
- }
44
- const result = await instances_1.diagnosticsService.executeManagedGatewayCommand(gatewayId, 'sudo wg show');
45
- if (result.success) {
46
- if (result.output.trim()) {
47
- console.log(result.output);
48
- }
49
- else {
50
- console.log(chalk_1.default.yellow('No WireGuard interfaces found'));
51
- }
52
- }
53
- else {
54
- instances_1.logger.error('Failed to retrieve WireGuard status', { error: result.error });
55
- console.log(chalk_1.default.red('✗ Failed to retrieve WireGuard status'));
56
- if (result.error) {
57
- console.log(chalk_1.default.red(` Error: ${result.error}`));
58
- }
59
- }
60
- }
61
- catch (error) {
62
- instances_1.logger.error('Error retrieving WireGuard status', error);
63
- console.log(chalk_1.default.red('✗ Error retrieving WireGuard status'));
64
- console.log(chalk_1.default.red(` ${error instanceof Error ? error.message : String(error)}`));
65
- }
66
- });
67
- }
68
- //# sourceMappingURL=wireguard.js.map