@edgible-team/cli 1.2.4 → 1.2.8

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 (221) hide show
  1. package/dist/commands/agent/agent-handlers.d.ts +45 -0
  2. package/dist/commands/agent/agent-handlers.d.ts.map +1 -0
  3. package/dist/commands/agent/agent-handlers.js +1159 -0
  4. package/dist/commands/agent/install.d.ts +11 -0
  5. package/dist/commands/agent/install.d.ts.map +1 -0
  6. package/dist/commands/agent/install.js +399 -0
  7. package/dist/commands/agent/logs.d.ts +12 -0
  8. package/dist/commands/agent/logs.d.ts.map +1 -0
  9. package/dist/commands/agent/logs.js +77 -0
  10. package/dist/commands/agent/restart.d.ts +4 -0
  11. package/dist/commands/agent/restart.d.ts.map +1 -0
  12. package/dist/commands/agent/restart.js +33 -0
  13. package/dist/commands/agent/set-log-level.d.ts +8 -0
  14. package/dist/commands/agent/set-log-level.d.ts.map +1 -0
  15. package/dist/commands/agent/set-log-level.js +133 -0
  16. package/dist/commands/agent/setup.d.ts +9 -0
  17. package/dist/commands/agent/setup.d.ts.map +1 -0
  18. package/dist/commands/agent/setup.js +149 -0
  19. package/dist/commands/agent/start.d.ts +12 -0
  20. package/dist/commands/agent/start.d.ts.map +1 -0
  21. package/dist/commands/agent/start.js +308 -0
  22. package/dist/commands/agent/status.d.ts +7 -0
  23. package/dist/commands/agent/status.d.ts.map +1 -0
  24. package/dist/commands/agent/status.js +68 -0
  25. package/dist/commands/agent/stop.d.ts +4 -0
  26. package/dist/commands/agent/stop.d.ts.map +1 -0
  27. package/dist/commands/agent/stop.js +33 -0
  28. package/dist/commands/agent/uninstall.d.ts +7 -0
  29. package/dist/commands/agent/uninstall.d.ts.map +1 -0
  30. package/dist/commands/agent/uninstall.js +168 -0
  31. package/dist/commands/agent.d.ts.map +1 -1
  32. package/dist/commands/agent.js +24 -1190
  33. package/dist/commands/ai/helpers.d.ts +139 -0
  34. package/dist/commands/ai/helpers.d.ts.map +1 -0
  35. package/dist/commands/ai/helpers.js +1470 -0
  36. package/dist/commands/ai/serve.d.ts +6 -0
  37. package/dist/commands/ai/serve.d.ts.map +1 -0
  38. package/dist/commands/ai/serve.js +124 -0
  39. package/dist/commands/ai/setup.d.ts +14 -0
  40. package/dist/commands/ai/setup.d.ts.map +1 -0
  41. package/dist/commands/ai/setup.js +86 -0
  42. package/dist/commands/ai/status.d.ts +2 -0
  43. package/dist/commands/ai/status.d.ts.map +1 -0
  44. package/dist/commands/ai/status.js +160 -0
  45. package/dist/commands/ai/stop.d.ts +2 -0
  46. package/dist/commands/ai/stop.d.ts.map +1 -0
  47. package/dist/commands/ai/stop.js +21 -0
  48. package/dist/commands/ai/teardown.d.ts +5 -0
  49. package/dist/commands/ai/teardown.d.ts.map +1 -0
  50. package/dist/commands/ai/teardown.js +78 -0
  51. package/dist/commands/ai/test.d.ts +4 -0
  52. package/dist/commands/ai/test.d.ts.map +1 -0
  53. package/dist/commands/ai/test.js +65 -0
  54. package/dist/commands/ai.d.ts.map +1 -1
  55. package/dist/commands/ai.js +16 -1938
  56. package/dist/commands/application/api-keys/create.d.ts +6 -0
  57. package/dist/commands/application/api-keys/create.d.ts.map +1 -0
  58. package/dist/commands/application/api-keys/create.js +68 -0
  59. package/dist/commands/application/api-keys/delete.d.ts +6 -0
  60. package/dist/commands/application/api-keys/delete.d.ts.map +1 -0
  61. package/dist/commands/application/api-keys/delete.js +79 -0
  62. package/dist/commands/application/api-keys/list.d.ts +5 -0
  63. package/dist/commands/application/api-keys/list.d.ts.map +1 -0
  64. package/dist/commands/application/api-keys/list.js +65 -0
  65. package/dist/commands/application/api-keys.d.ts +3 -0
  66. package/dist/commands/application/api-keys.d.ts.map +1 -0
  67. package/dist/commands/application/api-keys.js +227 -0
  68. package/dist/commands/application/create-compose.d.ts +3 -0
  69. package/dist/commands/application/create-compose.d.ts.map +1 -0
  70. package/dist/commands/application/create-compose.js +381 -0
  71. package/dist/commands/application/create-docker-compose.d.ts +10 -0
  72. package/dist/commands/application/create-docker-compose.d.ts.map +1 -0
  73. package/dist/commands/application/create-docker-compose.js +334 -0
  74. package/dist/commands/application/create-existing.d.ts +14 -0
  75. package/dist/commands/application/create-existing.d.ts.map +1 -0
  76. package/dist/commands/application/create-existing.js +359 -0
  77. package/dist/commands/application/create-interactive.d.ts +3 -0
  78. package/dist/commands/application/create-interactive.d.ts.map +1 -0
  79. package/dist/commands/application/create-interactive.js +326 -0
  80. package/dist/commands/application/create-managed-process.d.ts +15 -0
  81. package/dist/commands/application/create-managed-process.d.ts.map +1 -0
  82. package/dist/commands/application/create-managed-process.js +371 -0
  83. package/dist/commands/application/create-stubs.d.ts +4 -0
  84. package/dist/commands/application/create-stubs.d.ts.map +1 -0
  85. package/dist/commands/application/create-stubs.js +19 -0
  86. package/dist/commands/application/create-workload.d.ts +5 -0
  87. package/dist/commands/application/create-workload.d.ts.map +1 -0
  88. package/dist/commands/application/create-workload.js +48 -0
  89. package/dist/commands/application/delete.d.ts +6 -0
  90. package/dist/commands/application/delete.d.ts.map +1 -0
  91. package/dist/commands/application/delete.js +76 -0
  92. package/dist/commands/application/get.d.ts +5 -0
  93. package/dist/commands/application/get.d.ts.map +1 -0
  94. package/dist/commands/application/get.js +35 -0
  95. package/dist/commands/application/list.d.ts +4 -0
  96. package/dist/commands/application/list.d.ts.map +1 -0
  97. package/dist/commands/application/list.js +41 -0
  98. package/dist/commands/application/short-codes/create.d.ts +7 -0
  99. package/dist/commands/application/short-codes/create.d.ts.map +1 -0
  100. package/dist/commands/application/short-codes/create.js +69 -0
  101. package/dist/commands/application/short-codes/delete.d.ts +6 -0
  102. package/dist/commands/application/short-codes/delete.d.ts.map +1 -0
  103. package/dist/commands/application/short-codes/delete.js +79 -0
  104. package/dist/commands/application/short-codes/list.d.ts +5 -0
  105. package/dist/commands/application/short-codes/list.d.ts.map +1 -0
  106. package/dist/commands/application/short-codes/list.js +63 -0
  107. package/dist/commands/application/short-codes/toggle.d.ts +5 -0
  108. package/dist/commands/application/short-codes/toggle.d.ts.map +1 -0
  109. package/dist/commands/application/short-codes/toggle.js +71 -0
  110. package/dist/commands/application/short-codes.d.ts +3 -0
  111. package/dist/commands/application/short-codes.d.ts.map +1 -0
  112. package/dist/commands/application/short-codes.js +226 -0
  113. package/dist/commands/application/toggle.d.ts +2 -0
  114. package/dist/commands/application/toggle.d.ts.map +1 -0
  115. package/dist/commands/application/toggle.js +78 -0
  116. package/dist/commands/application/update.d.ts +4 -0
  117. package/dist/commands/application/update.d.ts.map +1 -0
  118. package/dist/commands/application/update.js +11 -0
  119. package/dist/commands/application.d.ts.map +1 -1
  120. package/dist/commands/application.js +32 -1630
  121. package/dist/commands/auth.d.ts.map +1 -1
  122. package/dist/commands/auth.js +31 -49
  123. package/dist/commands/base/BaseCommand.d.ts +3 -3
  124. package/dist/commands/base/BaseCommand.d.ts.map +1 -1
  125. package/dist/commands/base/BaseCommand.js +3 -3
  126. package/dist/commands/base/command-wrapper.d.ts +0 -4
  127. package/dist/commands/base/command-wrapper.d.ts.map +1 -1
  128. package/dist/commands/base/command-wrapper.js +13 -14
  129. package/dist/commands/base/middleware.d.ts +3 -3
  130. package/dist/commands/base/middleware.d.ts.map +1 -1
  131. package/dist/commands/base/middleware.js +4 -4
  132. package/dist/commands/config.d.ts.map +1 -1
  133. package/dist/commands/config.js +15 -32
  134. package/dist/commands/connectivity.d.ts.map +1 -1
  135. package/dist/commands/connectivity.js +6 -11
  136. package/dist/commands/debug.d.ts.map +1 -1
  137. package/dist/commands/debug.js +187 -46
  138. package/dist/commands/discover.d.ts.map +1 -1
  139. package/dist/commands/discover.js +4 -17
  140. package/dist/commands/gateway.d.ts.map +1 -1
  141. package/dist/commands/gateway.js +37 -77
  142. package/dist/commands/managedGateway/create.d.ts +6 -0
  143. package/dist/commands/managedGateway/create.d.ts.map +1 -0
  144. package/dist/commands/managedGateway/create.js +50 -0
  145. package/dist/commands/managedGateway/delete.d.ts +5 -0
  146. package/dist/commands/managedGateway/delete.d.ts.map +1 -0
  147. package/dist/commands/managedGateway/delete.js +57 -0
  148. package/dist/commands/managedGateway/get.d.ts +4 -0
  149. package/dist/commands/managedGateway/get.d.ts.map +1 -0
  150. package/dist/commands/managedGateway/get.js +71 -0
  151. package/dist/commands/managedGateway/haproxy-stats.d.ts +6 -0
  152. package/dist/commands/managedGateway/haproxy-stats.d.ts.map +1 -0
  153. package/dist/commands/managedGateway/haproxy-stats.js +131 -0
  154. package/dist/commands/managedGateway/list.d.ts +4 -0
  155. package/dist/commands/managedGateway/list.d.ts.map +1 -0
  156. package/dist/commands/managedGateway/list.js +50 -0
  157. package/dist/commands/managedGateway/logs.d.ts +10 -0
  158. package/dist/commands/managedGateway/logs.d.ts.map +1 -0
  159. package/dist/commands/managedGateway/logs.js +100 -0
  160. package/dist/commands/managedGateway/reboot.d.ts +5 -0
  161. package/dist/commands/managedGateway/reboot.d.ts.map +1 -0
  162. package/dist/commands/managedGateway/reboot.js +95 -0
  163. package/dist/commands/managedGateway/resync.d.ts +10 -0
  164. package/dist/commands/managedGateway/resync.d.ts.map +1 -0
  165. package/dist/commands/managedGateway/resync.js +69 -0
  166. package/dist/commands/managedGateway/ssh.d.ts +4 -0
  167. package/dist/commands/managedGateway/ssh.d.ts.map +1 -0
  168. package/dist/commands/managedGateway/ssh.js +130 -0
  169. package/dist/commands/managedGateway/wipe-logs.d.ts +4 -0
  170. package/dist/commands/managedGateway/wipe-logs.d.ts.map +1 -0
  171. package/dist/commands/managedGateway/wipe-logs.js +67 -0
  172. package/dist/commands/managedGateway/wireguard.d.ts +4 -0
  173. package/dist/commands/managedGateway/wireguard.d.ts.map +1 -0
  174. package/dist/commands/managedGateway/wireguard.js +68 -0
  175. package/dist/commands/managedGateway.d.ts.map +1 -1
  176. package/dist/commands/managedGateway.js +61 -117
  177. package/dist/commands/utils/config-validator.d.ts +5 -5
  178. package/dist/commands/utils/config-validator.d.ts.map +1 -1
  179. package/dist/commands/utils/config-validator.js +8 -8
  180. package/dist/commands/utils/output-formatter.js +1 -1
  181. package/dist/config/app-config.d.ts +1 -1
  182. package/dist/config/app-config.js +2 -2
  183. package/dist/index.js +0 -3
  184. package/dist/services/LocalAgentManager.d.ts.map +1 -1
  185. package/dist/services/LocalAgentManager.js +4 -2
  186. package/dist/services/agentDeployment/AgentDeploymentService.d.ts +35 -0
  187. package/dist/services/agentDeployment/AgentDeploymentService.d.ts.map +1 -0
  188. package/dist/services/agentDeployment/AgentDeploymentService.js +35 -0
  189. package/dist/services/application/ApplicationService.d.ts +5 -4
  190. package/dist/services/application/ApplicationService.d.ts.map +1 -1
  191. package/dist/services/application/ApplicationService.js +22 -35
  192. package/dist/services/auth/AuthService.d.ts +5 -5
  193. package/dist/services/auth/AuthService.d.ts.map +1 -1
  194. package/dist/services/auth/AuthService.js +11 -58
  195. package/dist/services/daemon/DaemonManagerFactory.d.ts +2 -0
  196. package/dist/services/daemon/DaemonManagerFactory.d.ts.map +1 -1
  197. package/dist/services/daemon/DaemonManagerFactory.js +14 -6
  198. package/dist/services/diagnostics/DiagnosticsService.d.ts +89 -0
  199. package/dist/services/diagnostics/DiagnosticsService.d.ts.map +1 -0
  200. package/dist/services/diagnostics/DiagnosticsService.js +37 -0
  201. package/dist/services/edgible.d.ts +6 -4
  202. package/dist/services/edgible.d.ts.map +1 -1
  203. package/dist/services/edgible.js +36 -86
  204. package/dist/services/gateway/GatewayService.d.ts +5 -6
  205. package/dist/services/gateway/GatewayService.d.ts.map +1 -1
  206. package/dist/services/gateway/GatewayService.js +22 -36
  207. package/dist/services/instances.d.ts +34 -0
  208. package/dist/services/instances.d.ts.map +1 -0
  209. package/dist/services/instances.js +64 -0
  210. package/dist/services/managedGateway/ManagedGatewayService.d.ts +75 -0
  211. package/dist/services/managedGateway/ManagedGatewayService.d.ts.map +1 -0
  212. package/dist/services/managedGateway/ManagedGatewayService.js +44 -0
  213. package/dist/services/token/TokenManager.d.ts +56 -0
  214. package/dist/services/token/TokenManager.d.ts.map +1 -0
  215. package/dist/services/token/TokenManager.js +85 -0
  216. package/dist/types/validation/schemas.d.ts +22 -22
  217. package/dist/utils/PlatformDetector.d.ts +2 -0
  218. package/dist/utils/PlatformDetector.d.ts.map +1 -1
  219. package/dist/utils/PlatformDetector.js +5 -34
  220. package/dist/validation/schemas.d.ts +6 -6
  221. package/package.json +1 -1
@@ -0,0 +1,133 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleAgentSetLogLevel = handleAgentSetLogLevel;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const fs = __importStar(require("fs"));
43
+ const fsPromises = __importStar(require("fs/promises"));
44
+ const DaemonManagerFactory_1 = require("../../services/daemon/DaemonManagerFactory");
45
+ const PathResolver_1 = require("../../utils/PathResolver");
46
+ async function handleAgentSetLogLevel(options, logger, configManager, agentManager) {
47
+ const validLevels = ['debug', 'info', 'warn', 'error'];
48
+ let logLevel;
49
+ if (options.level) {
50
+ const level = options.level.toLowerCase();
51
+ if (!validLevels.includes(level)) {
52
+ console.error(chalk_1.default.red(`✗ Invalid log level: ${options.level}`));
53
+ console.error(chalk_1.default.red(` Valid levels are: ${validLevels.join(', ')}\n`));
54
+ return;
55
+ }
56
+ logLevel = level;
57
+ }
58
+ else {
59
+ // Interactive selection
60
+ const { selectedLevel } = await inquirer_1.default.prompt([
61
+ {
62
+ type: 'list',
63
+ name: 'selectedLevel',
64
+ message: 'Select log level:',
65
+ choices: validLevels.map(level => ({
66
+ name: level.charAt(0).toUpperCase() + level.slice(1),
67
+ value: level
68
+ })),
69
+ default: 'info'
70
+ }
71
+ ]);
72
+ logLevel = selectedLevel;
73
+ }
74
+ try {
75
+ // Determine the correct config file path based on installation type
76
+ const userConfig = configManager.getConfig();
77
+ const configFilePath = PathResolver_1.PathResolver.resolveAgentConfigFilePath(userConfig.agentInstallationType);
78
+ if (!fs.existsSync(configFilePath)) {
79
+ console.error(chalk_1.default.red('✗ Agent configuration file not found'));
80
+ console.error(chalk_1.default.red(` Expected at: ${configFilePath}`));
81
+ console.error(chalk_1.default.red(' Run "edgible agent install" to install the agent first\n'));
82
+ return;
83
+ }
84
+ const configData = await fsPromises.readFile(configFilePath, 'utf8');
85
+ const agentConfig = JSON.parse(configData);
86
+ // Check if log level is already set to this value
87
+ if (agentConfig.logLevel === logLevel) {
88
+ console.log(chalk_1.default.yellow(`⚠ Log level is already set to: ${logLevel}\n`));
89
+ return;
90
+ }
91
+ // Update log level
92
+ agentConfig.logLevel = logLevel;
93
+ // Write back to file
94
+ await fsPromises.writeFile(configFilePath, JSON.stringify(agentConfig, null, 2), 'utf8');
95
+ logger.info('Agent log level updated', { logLevel, configFilePath });
96
+ console.log(chalk_1.default.green(`✓ Log level set to: ${logLevel}`));
97
+ console.log(chalk_1.default.gray(` Updated: ${configFilePath}\n`));
98
+ // Restart agent if it's installed and running (unless --no-restart is specified)
99
+ const shouldRestart = options.restart !== false && userConfig.agentInstallationType;
100
+ if (shouldRestart && userConfig.agentInstallationType) {
101
+ try {
102
+ const daemonManager = DaemonManagerFactory_1.DaemonManagerFactory.fromConfig(userConfig.agentInstallationType);
103
+ if (daemonManager) {
104
+ const status = await daemonManager.status();
105
+ if (status.running) {
106
+ console.log(chalk_1.default.gray('\nRestarting agent to apply new log level...'));
107
+ await daemonManager.restart();
108
+ console.log(chalk_1.default.green('✓ Agent restarted\n'));
109
+ }
110
+ else {
111
+ console.log(chalk_1.default.gray('\nAgent is not running. Start it with "edgible agent start" to apply the new log level.\n'));
112
+ }
113
+ }
114
+ }
115
+ catch (restartError) {
116
+ console.warn(chalk_1.default.yellow('⚠ Could not restart agent automatically'));
117
+ console.warn(chalk_1.default.yellow(` ${restartError instanceof Error ? restartError.message : String(restartError)}`));
118
+ console.log(chalk_1.default.gray('\nPlease restart the agent manually for the log level change to take effect.\n'));
119
+ }
120
+ }
121
+ else {
122
+ console.log(chalk_1.default.gray('\nRestart the agent for the log level change to take effect:\n'));
123
+ console.log(chalk_1.default.gray(' edgible agent restart\n'));
124
+ }
125
+ }
126
+ catch (error) {
127
+ logger.error('Failed to update log level', error);
128
+ console.error(chalk_1.default.red('✗ Failed to update log level'));
129
+ console.error(chalk_1.default.red(` ${error instanceof Error ? error.message : String(error)}\n`));
130
+ throw error;
131
+ }
132
+ }
133
+ //# sourceMappingURL=set-log-level.js.map
@@ -0,0 +1,9 @@
1
+ import { Logger } from '../../utils/logger';
2
+ import { ConfigManager } from '../../state/config';
3
+ import { LocalAgentManager } from '../../services/LocalAgentManager';
4
+ export declare function handleAgentSetup(options: {
5
+ wireguardMode?: string;
6
+ wireguardGoBinary?: string;
7
+ autoInstall?: boolean;
8
+ }, logger: Logger, configManager: ConfigManager, agentManager: LocalAgentManager): Promise<void>;
9
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/setup.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAIrE,wBAAsB,gBAAgB,CACpC,OAAO,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,EACtF,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiHf"}
@@ -0,0 +1,149 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleAgentSetup = handleAgentSetup;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const os = __importStar(require("os"));
43
+ const path = __importStar(require("path"));
44
+ const fsPromises = __importStar(require("fs/promises"));
45
+ const DependencyInstaller_1 = require("../../services/DependencyInstaller");
46
+ const urls_1 = require("../../utils/urls");
47
+ async function handleAgentSetup(options, logger, configManager, agentManager) {
48
+ logger.info('Setting up agent dependencies and configuration');
49
+ console.log(chalk_1.default.blue('\n🔧 Agent Setup'));
50
+ console.log(chalk_1.default.gray('This will check and install dependencies, then configure the agent.\n'));
51
+ // Step 1: Check and install dependencies
52
+ console.log(chalk_1.default.blue('Step 1: Checking dependencies...\n'));
53
+ const dependencyInstaller = new DependencyInstaller_1.DependencyInstaller();
54
+ // Determine if we should check for wireguard-go based on mode
55
+ const wireguardMode = (options.wireguardMode || 'kernel').toLowerCase();
56
+ const includeWireGuardGo = wireguardMode === 'userspace';
57
+ await dependencyInstaller.checkAndInstallDependencies({
58
+ includeWireGuardGo,
59
+ includeIptables: true,
60
+ autoInstall: options.autoInstall || false
61
+ });
62
+ console.log(chalk_1.default.green('\n✓ Dependencies check complete\n'));
63
+ // Step 2: Configure WireGuard mode
64
+ let selectedMode = wireguardMode;
65
+ if (!options.wireguardMode) {
66
+ // Prompt user for WireGuard mode if not provided
67
+ const { mode } = await inquirer_1.default.prompt([
68
+ {
69
+ type: 'list',
70
+ name: 'mode',
71
+ message: 'Select WireGuard implementation mode:',
72
+ choices: [
73
+ {
74
+ name: 'Kernel (default, requires kernel module support)',
75
+ value: 'kernel'
76
+ },
77
+ {
78
+ name: 'Userspace (wireguard-go, works without kernel module)',
79
+ value: 'userspace'
80
+ }
81
+ ],
82
+ default: 'kernel'
83
+ }
84
+ ]);
85
+ selectedMode = mode;
86
+ }
87
+ // Step 3: Update CLI config with WireGuard settings
88
+ const currentConfig = configManager.getConfig();
89
+ configManager.updateConfig({
90
+ wireguardMode: selectedMode,
91
+ wireguardGoBinary: options.wireguardGoBinary || 'wireguard-go'
92
+ });
93
+ console.log(chalk_1.default.green(`✓ WireGuard mode set to: ${selectedMode}`));
94
+ if (selectedMode === 'userspace') {
95
+ console.log(chalk_1.default.gray(` wireguard-go binary: ${options.wireguardGoBinary || 'wireguard-go'}`));
96
+ }
97
+ // Step 4: Update agent config
98
+ console.log(chalk_1.default.blue('\nStep 2: Updating agent configuration...\n'));
99
+ // Check if device credentials exist
100
+ if (!currentConfig.deviceId || !currentConfig.devicePassword) {
101
+ console.log(chalk_1.default.yellow('⚠ No device credentials found in CLI config.'));
102
+ console.log(chalk_1.default.yellow('⚠ You will need to run "edgible agent start" to set up device credentials.'));
103
+ console.log(chalk_1.default.yellow('⚠ The agent config will be created with default values.\n'));
104
+ }
105
+ try {
106
+ await agentManager.updateAgentConfig();
107
+ console.log(chalk_1.default.green('✓ Agent configuration updated\n'));
108
+ }
109
+ catch (error) {
110
+ // If update fails due to missing credentials, create a basic config
111
+ if (error instanceof Error && error.message.includes('No device credentials')) {
112
+ console.log(chalk_1.default.yellow('⚠ Creating agent config with default values (device credentials will be set when you start the agent)\n'));
113
+ // Create a basic config file
114
+ const agentConfigPath = path.join(os.homedir(), '.edgible', 'agent', 'agent.config.json');
115
+ const defaultConfig = {
116
+ deviceId: 'your-device-id',
117
+ devicePassword: 'your-device-password',
118
+ deviceType: 'serving',
119
+ apiBaseUrl: (0, urls_1.getApiBaseUrl)(),
120
+ organizationId: currentConfig.organizationId,
121
+ firewallEnabled: true,
122
+ pollingInterval: 60000,
123
+ healthCheckTimeout: 5000,
124
+ maxRetries: 3,
125
+ logLevel: 'info',
126
+ updateEnabled: true,
127
+ updateCheckInterval: 3600000,
128
+ wireguardMode: selectedMode,
129
+ wireguardGoBinary: options.wireguardGoBinary || 'wireguard-go'
130
+ };
131
+ const configDir = path.dirname(agentConfigPath);
132
+ await fsPromises.mkdir(configDir, { recursive: true });
133
+ await fsPromises.writeFile(agentConfigPath, JSON.stringify(defaultConfig, null, 2));
134
+ console.log(chalk_1.default.green('✓ Agent configuration file created\n'));
135
+ }
136
+ else {
137
+ throw error;
138
+ }
139
+ }
140
+ console.log(chalk_1.default.green('✓ Agent setup complete!\n'));
141
+ console.log(chalk_1.default.blue('Next steps:'));
142
+ console.log(chalk_1.default.gray(' 1. Run "edgible agent start" to start the agent'));
143
+ console.log(chalk_1.default.gray(' 2. The agent will use the configured WireGuard mode'));
144
+ if (selectedMode === 'userspace') {
145
+ console.log(chalk_1.default.gray(' 3. Ensure wireguard-go is available in your PATH'));
146
+ }
147
+ console.log('');
148
+ }
149
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1,12 @@
1
+ import { LocalAgentManager } from '../../services/LocalAgentManager';
2
+ import { EdgibleService } from '../../services/edgible';
3
+ import { Logger } from '../../utils/logger';
4
+ import { ConfigManager } from '../../state/config';
5
+ import { AuthService } from '../../services/auth/AuthService';
6
+ export declare function handleAgentStart(options: {
7
+ passthrough?: boolean;
8
+ debug?: boolean;
9
+ docker?: boolean;
10
+ root?: boolean;
11
+ }, logger: Logger, configManager: ConfigManager, edgibleService: EdgibleService, authService: AuthService, agentManager: LocalAgentManager): Promise<void>;
12
+ //# sourceMappingURL=start.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/start.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAG9D,wBAAsB,gBAAgB,CACpC,OAAO,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,EACrF,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA0Rf"}
@@ -0,0 +1,308 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.handleAgentStart = handleAgentStart;
40
+ const chalk_1 = __importDefault(require("chalk"));
41
+ const inquirer_1 = __importDefault(require("inquirer"));
42
+ const os = __importStar(require("os"));
43
+ const config_validator_1 = require("../utils/config-validator");
44
+ async function handleAgentStart(options, logger, configManager, edgibleService, authService, agentManager) {
45
+ (0, config_validator_1.validateConfig)(configManager, {
46
+ requireAuth: true,
47
+ requireOrganization: true,
48
+ });
49
+ const config = configManager.getConfig();
50
+ let deviceId = config.deviceId;
51
+ let devicePassword = config.devicePassword;
52
+ // Always ask user to select or create a device
53
+ console.log(chalk_1.default.blue('\n🔧 Device Selection'));
54
+ console.log(chalk_1.default.gray('Select which serving device this agent should represent:\n'));
55
+ try {
56
+ // Fetch available serving devices
57
+ const servingDevicesResp = await edgibleService.listServingDevices();
58
+ const servingDevices = servingDevicesResp?.devices || [];
59
+ if (servingDevices.length > 0) {
60
+ // Show list of devices to select from
61
+ const deviceChoices = servingDevices.map((d) => {
62
+ const isCurrentDevice = config.deviceId === d.id;
63
+ const displayName = `${d.name || d.id}${d.description ? ` - ${d.description}` : ''}${isCurrentDevice ? chalk_1.default.gray(' (current)') : ''}`;
64
+ return {
65
+ name: displayName,
66
+ value: d.id
67
+ };
68
+ });
69
+ // Add option to create new device
70
+ deviceChoices.push({
71
+ name: chalk_1.default.cyan('➕ Create new serving device'),
72
+ value: '__create_new__'
73
+ });
74
+ const { selectedDeviceId } = await inquirer_1.default.prompt([{
75
+ type: 'list',
76
+ name: 'selectedDeviceId',
77
+ message: 'Select serving device:',
78
+ choices: deviceChoices,
79
+ default: config.deviceId || undefined
80
+ }]);
81
+ if (selectedDeviceId === '__create_new__') {
82
+ // Create new device
83
+ const deviceNameAnswer = await inquirer_1.default.prompt([{
84
+ type: 'input',
85
+ name: 'deviceName',
86
+ message: 'Enter a name for this device:',
87
+ default: `${os.hostname()}-${os.platform()}`,
88
+ validate: (input) => {
89
+ if (!input.trim()) {
90
+ return 'Device name is required';
91
+ }
92
+ return true;
93
+ }
94
+ }]);
95
+ const descriptionAnswer = await inquirer_1.default.prompt([{
96
+ type: 'input',
97
+ name: 'description',
98
+ message: 'Enter device description (optional):',
99
+ default: `Serving device: ${deviceNameAnswer.deviceName}`
100
+ }]);
101
+ console.log(chalk_1.default.gray('\nCreating device...'));
102
+ // Create device via API - password will be generated and returned by the API
103
+ const createResponse = await edgibleService.createServingDevice({
104
+ name: deviceNameAnswer.deviceName.trim(),
105
+ description: descriptionAnswer.description.trim()
106
+ });
107
+ deviceId = createResponse.device.id;
108
+ devicePassword = createResponse.device.password; // Get password from API response
109
+ console.log(chalk_1.default.green(`✓ Device created: ${deviceId}`));
110
+ console.log(chalk_1.default.yellow(`\n⚠ Device Password: ${devicePassword}`));
111
+ console.log(chalk_1.default.yellow('⚠ Please save this password securely! You will need it to login as this device.\n'));
112
+ // Verify device credentials (don't login as device - CLI should use user credentials)
113
+ if (devicePassword && deviceId) {
114
+ const password = devicePassword;
115
+ const id = deviceId;
116
+ console.log(chalk_1.default.gray('Verifying device credentials...'));
117
+ try {
118
+ const isValid = await authService.verifyDeviceCredentials(id, password);
119
+ if (isValid) {
120
+ console.log(chalk_1.default.green('✓ Device credentials verified'));
121
+ }
122
+ else {
123
+ console.log(chalk_1.default.yellow('⚠ Device credentials verification failed, but continuing anyway.'));
124
+ console.log(chalk_1.default.gray('The agent will use these credentials when it starts.'));
125
+ }
126
+ }
127
+ catch (verifyError) {
128
+ console.log(chalk_1.default.yellow('⚠ Could not verify device credentials. The agent will use these credentials when it starts.'));
129
+ // Continue anyway - credentials are stored and agent will use them
130
+ }
131
+ }
132
+ // Save device credentials to config
133
+ logger.info('Saving device credentials to config', { deviceId });
134
+ configManager.updateConfig({
135
+ deviceId: deviceId,
136
+ deviceName: deviceNameAnswer.deviceName.trim(),
137
+ devicePassword: devicePassword,
138
+ deviceType: 'serving'
139
+ });
140
+ }
141
+ else {
142
+ // Use existing device - need to get password
143
+ deviceId = selectedDeviceId;
144
+ let passwordVerified = false;
145
+ // Check if we have password for this device in config
146
+ if (config.deviceId === deviceId && config.devicePassword) {
147
+ devicePassword = config.devicePassword;
148
+ // Verify the stored password is still valid (without overwriting user tokens)
149
+ console.log(chalk_1.default.gray('Verifying device credentials...'));
150
+ if (!deviceId || !devicePassword) {
151
+ throw new Error('Device ID or password is missing');
152
+ }
153
+ const isValid = await authService.verifyDeviceCredentials(deviceId, devicePassword);
154
+ if (isValid) {
155
+ console.log(chalk_1.default.green('✓ Device credentials verified'));
156
+ // Update config with current device info (password already stored)
157
+ const selectedDevice = servingDevices.find((d) => d.id === deviceId);
158
+ logger.info('Updating device config', { deviceId });
159
+ configManager.updateConfig({
160
+ deviceId: deviceId,
161
+ deviceName: selectedDevice?.name || deviceId,
162
+ devicePassword: devicePassword,
163
+ deviceType: 'serving'
164
+ });
165
+ passwordVerified = true;
166
+ }
167
+ else {
168
+ console.log(chalk_1.default.yellow('⚠ Stored password is invalid, please enter the device password'));
169
+ devicePassword = undefined; // Clear invalid password
170
+ }
171
+ }
172
+ // If we don't have a valid password yet, prompt for it
173
+ if (!devicePassword) {
174
+ const passwordAnswer = await inquirer_1.default.prompt([{
175
+ type: 'password',
176
+ name: 'password',
177
+ message: 'Enter device password:',
178
+ validate: (input) => {
179
+ if (!input.trim()) {
180
+ return 'Device password is required';
181
+ }
182
+ return true;
183
+ }
184
+ }]);
185
+ devicePassword = passwordAnswer.password;
186
+ }
187
+ // Verify password (in case it was newly entered or verification failed)
188
+ if (!passwordVerified && devicePassword && deviceId) {
189
+ console.log(chalk_1.default.gray('Verifying device credentials...'));
190
+ if (!deviceId || !devicePassword) {
191
+ throw new Error('Device ID or password is missing');
192
+ }
193
+ const isValid = await authService.verifyDeviceCredentials(deviceId, devicePassword);
194
+ if (isValid) {
195
+ console.log(chalk_1.default.green('✓ Device credentials verified'));
196
+ // Save device credentials to config
197
+ const selectedDevice = servingDevices.find((d) => d.id === deviceId);
198
+ logger.info('Saving device credentials to config', { deviceId });
199
+ configManager.updateConfig({
200
+ deviceId: deviceId,
201
+ deviceName: selectedDevice?.name || deviceId,
202
+ devicePassword: devicePassword,
203
+ deviceType: 'serving'
204
+ });
205
+ }
206
+ else {
207
+ console.error(chalk_1.default.red('✗ Invalid device password'));
208
+ console.log(chalk_1.default.gray('Please check your password and try again'));
209
+ return;
210
+ }
211
+ }
212
+ }
213
+ }
214
+ else {
215
+ // No devices available, offer to create one
216
+ console.log(chalk_1.default.yellow('⚠ No serving devices found in your organization.\n'));
217
+ const { createNew } = await inquirer_1.default.prompt([{
218
+ type: 'confirm',
219
+ name: 'createNew',
220
+ message: 'Would you like to create a new serving device?',
221
+ default: true
222
+ }]);
223
+ if (!createNew) {
224
+ console.log(chalk_1.default.gray('Agent start cancelled'));
225
+ return;
226
+ }
227
+ // Create new device
228
+ const deviceNameAnswer = await inquirer_1.default.prompt([{
229
+ type: 'input',
230
+ name: 'deviceName',
231
+ message: 'Enter a name for this device:',
232
+ default: `${os.hostname()}-${os.platform()}`,
233
+ validate: (input) => {
234
+ if (!input.trim()) {
235
+ return 'Device name is required';
236
+ }
237
+ return true;
238
+ }
239
+ }]);
240
+ const descriptionAnswer = await inquirer_1.default.prompt([{
241
+ type: 'input',
242
+ name: 'description',
243
+ message: 'Enter device description (optional):',
244
+ default: `Serving device: ${deviceNameAnswer.deviceName}`
245
+ }]);
246
+ console.log(chalk_1.default.gray('\nCreating device...'));
247
+ // Create device via API - password will be generated and returned by the API
248
+ const createResponse = await edgibleService.createServingDevice({
249
+ name: deviceNameAnswer.deviceName.trim(),
250
+ description: descriptionAnswer.description.trim()
251
+ });
252
+ deviceId = createResponse.device.id;
253
+ devicePassword = createResponse.device.password; // Get password from API response
254
+ console.log(chalk_1.default.green(`✓ Device created: ${deviceId}`));
255
+ console.log(chalk_1.default.yellow(`\n⚠ Device Password: ${devicePassword}`));
256
+ console.log(chalk_1.default.yellow('⚠ Please save this password securely! You will need it to login as this device.\n'));
257
+ // Verify device credentials (don't login as device - CLI should use user credentials)
258
+ if (devicePassword && deviceId) {
259
+ const password = devicePassword;
260
+ const id = deviceId;
261
+ console.log(chalk_1.default.gray('Verifying device credentials...'));
262
+ try {
263
+ const isValid = await edgibleService.verifyDeviceCredentials(id, password);
264
+ if (isValid) {
265
+ console.log(chalk_1.default.green('✓ Device credentials verified'));
266
+ }
267
+ else {
268
+ console.log(chalk_1.default.yellow('⚠ Device credentials verification failed, but continuing anyway.'));
269
+ console.log(chalk_1.default.gray('The agent will use these credentials when it starts.'));
270
+ }
271
+ }
272
+ catch (verifyError) {
273
+ console.log(chalk_1.default.yellow('⚠ Could not verify device credentials. The agent will use these credentials when it starts.'));
274
+ // Continue anyway - credentials are stored and agent will use them
275
+ }
276
+ }
277
+ // Save device credentials to config
278
+ logger.info('Saving device credentials to config', { deviceId });
279
+ configManager.updateConfig({
280
+ deviceId: deviceId,
281
+ deviceName: deviceNameAnswer.deviceName.trim(),
282
+ devicePassword: devicePassword,
283
+ deviceType: 'serving'
284
+ });
285
+ }
286
+ }
287
+ catch (error) {
288
+ logger.error('Error selecting device', error);
289
+ const errorMessage = error instanceof Error ? error.message : 'An unexpected error occurred';
290
+ console.error(chalk_1.default.red('Error selecting device:'), errorMessage);
291
+ throw error;
292
+ }
293
+ // Now start the agent with the selected/created device
294
+ logger.info('Starting local agent', { passthrough: options.passthrough, debug: options.debug, docker: options.docker, root: options.root });
295
+ if (options.docker) {
296
+ console.log(chalk_1.default.blue('\n🐳 Starting agent in Docker...'));
297
+ }
298
+ else {
299
+ console.log(chalk_1.default.blue('\n🚀 Starting agent...'));
300
+ }
301
+ await agentManager.startLocalAgent({
302
+ passthrough: options.passthrough || false,
303
+ debug: options.debug || false,
304
+ docker: options.docker || false,
305
+ root: options.root || false,
306
+ });
307
+ }
308
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1,7 @@
1
+ import { LocalAgentManager } from '../../services/LocalAgentManager';
2
+ import { Logger } from '../../utils/logger';
3
+ import { ConfigManager } from '../../state/config';
4
+ export declare function handleAgentStatus(options: {
5
+ watch?: boolean;
6
+ }, logger: Logger, configManager: ConfigManager, agentManager: LocalAgentManager): Promise<void>;
7
+ //# sourceMappingURL=status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/agent/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAErE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,aAAa,EAC5B,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA+Df"}