@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
@@ -39,45 +39,134 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.setupDebugCommands = setupDebugCommands;
40
40
  const chalk_1 = __importDefault(require("chalk"));
41
41
  const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
42
44
  const child_process_1 = require("child_process");
43
45
  const command_wrapper_1 = require("./base/command-wrapper");
44
- const container_1 = require("../di/container");
45
- const types_1 = require("../di/types");
46
+ const instances_1 = require("../services/instances");
46
47
  const urls_1 = require("../utils/urls");
48
+ const uninstall_1 = require("./agent/uninstall");
49
+ const install_1 = require("./agent/install");
50
+ const teardown_1 = require("./ai/teardown");
51
+ const setup_1 = require("./ai/setup");
52
+ const PlatformDetector_1 = require("../utils/PlatformDetector");
53
+ const sudo_checker_1 = require("../utils/sudo-checker");
47
54
  function setupDebugCommands(program) {
48
55
  const debugCommand = program
49
56
  .command('debug')
50
57
  .description('Debugging commands (not for production)');
58
+ debugCommand
59
+ .command('full-cycle')
60
+ .description('Full debug cycle for customer issue troubleshooting')
61
+ .action((0, command_wrapper_1.wrapCommand)(async () => {
62
+ if (!(0, sudo_checker_1.checkSudoPermissions)()) {
63
+ console.log(chalk_1.default.redBright("Please run this command with administrator privileges (i.e. sudo)"));
64
+ return;
65
+ }
66
+ console.log(chalk_1.default.blue.bold('\n═══════════════════════════════════════════'));
67
+ console.log(chalk_1.default.blue.bold(' Full Debug Cycle'));
68
+ console.log(chalk_1.default.blue.bold('═══════════════════════════════════════════\n'));
69
+ console.log(chalk_1.default.gray('This will perform a complete agent lifecycle test:\n'));
70
+ console.log(chalk_1.default.gray(' 1. Uninstall agent and delete all data'));
71
+ console.log(chalk_1.default.gray(' 2. Teardown AI services'));
72
+ console.log(chalk_1.default.gray(' 3. Install agent'));
73
+ console.log(chalk_1.default.gray(' 4. Wait 2 minutes and capture startup logs'));
74
+ console.log(chalk_1.default.gray(' 5. Setup AI with qwen:0.5b model'));
75
+ console.log(chalk_1.default.gray(' 6. Wait 1 minute and capture runtime logs'));
76
+ console.log(chalk_1.default.gray(' 7. Teardown AI services'));
77
+ console.log(chalk_1.default.gray(' 8. Uninstall agent\n'));
78
+ const documentsFolder = getDocumentsFolder();
79
+ console.log(chalk_1.default.cyan(`Logs will be saved to: ${documentsFolder}\n`));
80
+ try {
81
+ // Step 1: Uninstall agent and delete all data
82
+ console.log(chalk_1.default.blue.bold('\n[Step 1/8] Uninstalling Agent\n'));
83
+ try {
84
+ await (0, uninstall_1.handleAgentUninstall)({ removeFiles: true, force: true }, instances_1.logger, instances_1.configManager);
85
+ }
86
+ catch (error) {
87
+ console.log(chalk_1.default.yellow('⚠ Agent may not have been installed, continuing...\n'));
88
+ }
89
+ // Step 2: Teardown AI services
90
+ console.log(chalk_1.default.blue.bold('\n[Step 2/8] Tearing Down AI Services\n'));
91
+ try {
92
+ await (0, teardown_1.handleAiTeardown)({ stopOllama: true, removeVolumes: true });
93
+ }
94
+ catch (error) {
95
+ console.log(chalk_1.default.yellow('⚠ AI services may not have been running, continuing...\n'));
96
+ }
97
+ // Step 3: Install agent
98
+ console.log(chalk_1.default.blue.bold('\n[Step 3/8] Installing Agent\n'));
99
+ const platform = PlatformDetector_1.PlatformDetector.getPlatform();
100
+ const installationType = platform === 'darwin' ? 'launchd' : 'systemd';
101
+ await (0, install_1.handleAgentInstall)({ type: installationType, dev: false, local: false }, instances_1.logger, instances_1.configManager, instances_1.edgibleService, instances_1.authService, instances_1.localAgentManager);
102
+ // Step 4: Wait 2 minutes and capture startup logs
103
+ console.log(chalk_1.default.blue.bold('\n[Step 4/8] Waiting 2 Minutes for Agent Startup\n'));
104
+ await waitWithProgress(120, 'Capturing startup behavior');
105
+ const startupLogPath = path.join(documentsFolder, 'agent_log_1_startup.log');
106
+ await copyAgentLogs(startupLogPath);
107
+ console.log(chalk_1.default.green(`✓ Startup logs saved to: ${startupLogPath}\n`));
108
+ // Step 5: Setup AI with qwen:0.5b
109
+ console.log(chalk_1.default.blue.bold('\n[Step 5/8] Setting Up AI with qwen:0.5b\n'));
110
+ await (0, setup_1.handleAiSetup)({
111
+ model: 'qwen:0.5b',
112
+ autoInstall: true,
113
+ noInteractive: true
114
+ });
115
+ // Step 6: Wait 1 minute and capture runtime logs
116
+ console.log(chalk_1.default.blue.bold('\n[Step 6/8] Waiting 1 Minute for AI Runtime\n'));
117
+ await waitWithProgress(60, 'Capturing runtime behavior');
118
+ const runtimeLogPath = path.join(documentsFolder, 'agent_log_2_run.log');
119
+ await copyAgentLogs(runtimeLogPath);
120
+ console.log(chalk_1.default.green(`✓ Runtime logs saved to: ${runtimeLogPath}\n`));
121
+ // Step 7: Teardown AI services
122
+ console.log(chalk_1.default.blue.bold('\n[Step 7/8] Tearing Down AI Services\n'));
123
+ await (0, teardown_1.handleAiTeardown)({ stopOllama: true, removeVolumes: true });
124
+ // Step 8: Uninstall agent
125
+ console.log(chalk_1.default.blue.bold('\n[Step 8/8] Uninstalling Agent\n'));
126
+ await (0, uninstall_1.handleAgentUninstall)({ removeFiles: true, force: true }, instances_1.logger, instances_1.configManager);
127
+ // Final summary
128
+ console.log(chalk_1.default.blue.bold('\n═══════════════════════════════════════════'));
129
+ console.log(chalk_1.default.green.bold(' ✓ Full Debug Cycle Complete!'));
130
+ console.log(chalk_1.default.blue.bold('═══════════════════════════════════════════\n'));
131
+ console.log(chalk_1.default.cyan('Debug logs saved:'));
132
+ console.log(chalk_1.default.gray(` • ${startupLogPath}`));
133
+ console.log(chalk_1.default.gray(` • ${runtimeLogPath}\n`));
134
+ console.log(chalk_1.default.yellow('Please send these log files to support for analysis.\n'));
135
+ }
136
+ catch (error) {
137
+ instances_1.logger.error('Full debug cycle failed', error);
138
+ console.error(chalk_1.default.red('\n✗ Debug cycle failed:'), error instanceof Error ? error.message : String(error));
139
+ console.log(chalk_1.default.yellow('\nPartial logs may have been saved to Documents folder.\n'));
140
+ throw error;
141
+ }
142
+ }, {
143
+ requireAuth: true,
144
+ requireOrganization: true,
145
+ }));
51
146
  debugCommand
52
147
  .command('get-start-command')
53
148
  .description('Get the command used to start the agent')
54
149
  .action((0, command_wrapper_1.wrapCommand)(async () => {
55
- const container = (0, container_1.getContainer)();
56
- const logger = container.get(types_1.TYPES.Logger);
57
- const agentManager = container.get(types_1.TYPES.LocalAgentManager);
58
- logger.debug('Getting agent start command');
150
+ const agentManager = instances_1.localAgentManager;
151
+ instances_1.logger.debug('Getting agent start command');
59
152
  const startCommand = await agentManager.getStartCommand();
60
153
  console.log(chalk_1.default.green('Agent start command:'));
61
154
  console.log(startCommand);
62
- }, {
63
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
64
- }));
155
+ }, {}));
65
156
  debugCommand
66
157
  .command('logs')
67
158
  .description('Show agent logs')
68
159
  .option('--watch', 'Watch for new logs')
69
160
  .action((0, command_wrapper_1.wrapCommand)(async (options) => {
70
- const container = (0, container_1.getContainer)();
71
- const logger = container.get(types_1.TYPES.Logger);
72
- const agentManager = container.get(types_1.TYPES.LocalAgentManager);
161
+ const agentManager = instances_1.localAgentManager;
73
162
  const logFilePath = agentManager.getLogFilePath();
74
163
  if (!fs.existsSync(logFilePath)) {
75
- logger.debug('Log file does not exist', { logFilePath });
164
+ instances_1.logger.debug('Log file does not exist', { logFilePath });
76
165
  console.log(chalk_1.default.yellow('Log file does not exist yet.'));
77
166
  return;
78
167
  }
79
168
  if (options.watch) {
80
- logger.debug('Watching agent logs');
169
+ instances_1.logger.debug('Watching agent logs');
81
170
  console.log(chalk_1.default.blue('Watching agent logs (Ctrl+C to stop)...'));
82
171
  const tail = (0, child_process_1.spawn)('tail', ['-f', logFilePath]);
83
172
  tail.stdout.on('data', (data) => {
@@ -88,20 +177,16 @@ function setupDebugCommands(program) {
88
177
  });
89
178
  }
90
179
  else {
91
- logger.debug('Reading agent logs');
180
+ instances_1.logger.debug('Reading agent logs');
92
181
  const logs = fs.readFileSync(logFilePath, 'utf8');
93
182
  console.log(logs);
94
183
  }
95
- }, {
96
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
97
- }));
184
+ }, {}));
98
185
  debugCommand
99
186
  .command('stage')
100
187
  .description('Show current stage and environment information')
101
188
  .action((0, command_wrapper_1.wrapCommand)(async () => {
102
- const container = (0, container_1.getContainer)();
103
- const logger = container.get(types_1.TYPES.Logger);
104
- logger.debug('Getting stage information');
189
+ instances_1.logger.debug('Getting stage information');
105
190
  const stage = (0, urls_1.getStage)();
106
191
  const stageEnv = process.env['STAGE'];
107
192
  const sstStageEnv = process.env['SST_STAGE'];
@@ -124,23 +209,19 @@ function setupDebugCommands(program) {
124
209
  console.log(chalk_1.default.yellow('ℹ Using default stage (prod) - no STAGE or SST_STAGE env var set'));
125
210
  console.log(chalk_1.default.gray(' To change: export STAGE=dev (or uat, staging, prod)'));
126
211
  }
127
- }, {
128
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
129
- }));
212
+ }, {}));
130
213
  debugCommand
131
214
  .command('set-stage <stage>')
132
215
  .description('Display command to set the stage (dev, uat, staging, prod)')
133
216
  .action(async (stage) => {
134
217
  try {
135
- const container = (0, container_1.getContainer)();
136
- const logger = container.get(types_1.TYPES.Logger);
137
218
  const validStages = ['dev', 'uat', 'staging', 'prod', 'test'];
138
219
  if (!validStages.includes(stage)) {
139
220
  console.log(chalk_1.default.red(`✗ Invalid stage: ${stage}`));
140
221
  console.log(chalk_1.default.gray(` Valid stages: ${validStages.join(', ')}`));
141
222
  return;
142
223
  }
143
- logger.debug('Setting stage', { stage });
224
+ instances_1.logger.debug('Setting stage', { stage });
144
225
  console.log(chalk_1.default.blue('\n🔧 Stage Configuration\n'));
145
226
  console.log(chalk_1.default.cyan('To set the stage, run one of these commands:\n'));
146
227
  console.log(chalk_1.default.white.bold('For current shell session:'));
@@ -175,10 +256,7 @@ function setupDebugCommands(program) {
175
256
  .option('--hours <hours>', 'Number of hours to look back (default: 24)', '24')
176
257
  .option('--json', 'Output as JSON')
177
258
  .action((0, command_wrapper_1.wrapCommand)(async (options) => {
178
- const container = (0, container_1.getContainer)();
179
- const logger = container.get(types_1.TYPES.Logger);
180
- const configRepository = container.get(types_1.TYPES.ConfigRepository);
181
- const config = configRepository.getConfig();
259
+ const config = instances_1.configManager.getConfig();
182
260
  if (!config.organizationId && !options.orgId) {
183
261
  throw new Error('Organization ID is required. Use --org-id or ensure you are logged in.');
184
262
  }
@@ -190,12 +268,11 @@ function setupDebugCommands(program) {
190
268
  if (isNaN(hours) || hours <= 0) {
191
269
  throw new Error('Hours must be a positive number');
192
270
  }
193
- logger.debug('Fetching application metrics', {
271
+ instances_1.logger.debug('Fetching application metrics', {
194
272
  organizationId,
195
273
  applicationId: options.appId,
196
274
  hours
197
275
  });
198
- const edgibleService = container.get(types_1.TYPES.EdgibleService);
199
276
  const endTime = Date.now();
200
277
  const startTime = endTime - (hours * 60 * 60 * 1000);
201
278
  try {
@@ -209,7 +286,7 @@ function setupDebugCommands(program) {
209
286
  console.log();
210
287
  let metricsFiles;
211
288
  try {
212
- metricsFiles = await edgibleService.getApplicationMetricsFiles(organizationId, options.appId, startTime, endTime);
289
+ metricsFiles = await instances_1.edgibleService.getApplicationMetricsFiles(organizationId, options.appId, startTime, endTime);
213
290
  console.log(chalk_1.default.green('✅ Metrics Files Response:'));
214
291
  console.log(chalk_1.default.gray(` Total Files: ${metricsFiles.totalFiles}`));
215
292
  console.log(chalk_1.default.gray(` Total Size: ${formatBytes(metricsFiles.totalSizeBytes || 0)}`));
@@ -243,7 +320,7 @@ function setupDebugCommands(program) {
243
320
  }
244
321
  console.log();
245
322
  console.log(chalk_1.default.blue('📊 Fetching Aggregated Metrics\n'));
246
- const metrics = await edgibleService.getApplicationMetrics(organizationId, options.appId, startTime, endTime);
323
+ const metrics = await instances_1.edgibleService.getApplicationMetrics(organizationId, options.appId, startTime, endTime);
247
324
  if (options.json) {
248
325
  console.log(JSON.stringify({ metrics, metricsFiles }, null, 2));
249
326
  return;
@@ -295,11 +372,10 @@ function setupDebugCommands(program) {
295
372
  }
296
373
  }
297
374
  catch (error) {
298
- logger.error('Failed to fetch application metrics', error);
375
+ instances_1.logger.error('Failed to fetch application metrics', error);
299
376
  throw error;
300
377
  }
301
378
  }, {
302
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
303
379
  requireAuth: true,
304
380
  }));
305
381
  debugCommand
@@ -313,10 +389,7 @@ function setupDebugCommands(program) {
313
389
  .option('--json', 'Output as JSON')
314
390
  .option('--limit <limit>', 'Maximum number of logs to display (default: 50)', '50')
315
391
  .action((0, command_wrapper_1.wrapCommand)(async (options) => {
316
- const container = (0, container_1.getContainer)();
317
- const logger = container.get(types_1.TYPES.Logger);
318
- const configRepository = container.get(types_1.TYPES.ConfigRepository);
319
- const config = configRepository.getConfig();
392
+ const config = instances_1.configManager.getConfig();
320
393
  if (!config.organizationId && !options.orgId) {
321
394
  throw new Error('Organization ID is required. Use --org-id or ensure you are logged in.');
322
395
  }
@@ -332,7 +405,7 @@ function setupDebugCommands(program) {
332
405
  if (isNaN(limit) || limit <= 0) {
333
406
  throw new Error('Limit must be a positive number');
334
407
  }
335
- logger.debug('Fetching application logs', {
408
+ instances_1.logger.debug('Fetching application logs', {
336
409
  organizationId,
337
410
  applicationId: options.appId,
338
411
  hours,
@@ -340,11 +413,10 @@ function setupDebugCommands(program) {
340
413
  eventType: options.eventType,
341
414
  limit
342
415
  });
343
- const edgibleService = container.get(types_1.TYPES.EdgibleService);
344
416
  const endTime = Date.now();
345
417
  const startTime = endTime - (hours * 60 * 60 * 1000);
346
418
  try {
347
- const logs = await edgibleService.getApplicationLogs(organizationId, options.appId, startTime, endTime, options.level, options.eventType);
419
+ const logs = await instances_1.edgibleService.getApplicationLogs(organizationId, options.appId, startTime, endTime, options.level, options.eventType);
348
420
  if (options.json) {
349
421
  console.log(JSON.stringify(logs, null, 2));
350
422
  return;
@@ -382,11 +454,10 @@ function setupDebugCommands(program) {
382
454
  }
383
455
  }
384
456
  catch (error) {
385
- logger.error('Failed to fetch application logs', error);
457
+ instances_1.logger.error('Failed to fetch application logs', error);
386
458
  throw error;
387
459
  }
388
460
  }, {
389
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
390
461
  requireAuth: true,
391
462
  }));
392
463
  }
@@ -431,4 +502,74 @@ function getLevelColor(level) {
431
502
  return chalk_1.default.white;
432
503
  }
433
504
  }
505
+ /**
506
+ * Get the user's Documents folder path (cross-platform)
507
+ */
508
+ function getDocumentsFolder() {
509
+ const platform = os.platform();
510
+ const homeDir = os.homedir();
511
+ if (platform === 'win32') {
512
+ // Windows: %USERPROFILE%\Documents
513
+ return path.join(homeDir, 'Documents');
514
+ }
515
+ else if (platform === 'darwin') {
516
+ // macOS: ~/Documents
517
+ return path.join(homeDir, 'Documents');
518
+ }
519
+ else {
520
+ // Linux: Check XDG_DOCUMENTS_DIR or default to ~/Documents
521
+ const xdgDocuments = process.env['XDG_DOCUMENTS_DIR'];
522
+ if (xdgDocuments && fs.existsSync(xdgDocuments)) {
523
+ return xdgDocuments;
524
+ }
525
+ return path.join(homeDir, 'Documents');
526
+ }
527
+ }
528
+ /**
529
+ * Copy agent logs to a specified destination
530
+ */
531
+ async function copyAgentLogs(destinationPath) {
532
+ const logFilePath = instances_1.localAgentManager.getLogFilePath();
533
+ if (!fs.existsSync(logFilePath)) {
534
+ console.log(chalk_1.default.yellow(`⚠ Log file not found at: ${logFilePath}`));
535
+ console.log(chalk_1.default.gray(' Creating empty log file as placeholder\n'));
536
+ // Create an empty file with a note
537
+ const emptyLogContent = `# Agent log file was not found at the time of capture\n# Log path: ${logFilePath}\n# Timestamp: ${new Date().toISOString()}\n`;
538
+ fs.writeFileSync(destinationPath, emptyLogContent, 'utf8');
539
+ return;
540
+ }
541
+ try {
542
+ // Ensure destination directory exists
543
+ const destDir = path.dirname(destinationPath);
544
+ if (!fs.existsSync(destDir)) {
545
+ fs.mkdirSync(destDir, { recursive: true });
546
+ }
547
+ // Copy the log file
548
+ fs.copyFileSync(logFilePath, destinationPath);
549
+ // Add metadata header to the copied file
550
+ const originalContent = fs.readFileSync(destinationPath, 'utf8');
551
+ const metadata = `# Debug Log Capture\n# Timestamp: ${new Date().toISOString()}\n# Source: ${logFilePath}\n# Platform: ${os.platform()}\n# Node Version: ${process.version}\n\n`;
552
+ fs.writeFileSync(destinationPath, metadata + originalContent, 'utf8');
553
+ }
554
+ catch (error) {
555
+ console.error(chalk_1.default.red(`✗ Failed to copy logs: ${error instanceof Error ? error.message : String(error)}`));
556
+ throw error;
557
+ }
558
+ }
559
+ /**
560
+ * Wait for a specified number of seconds with progress indicator
561
+ */
562
+ async function waitWithProgress(seconds, message) {
563
+ const totalSteps = 10;
564
+ const stepDuration = (seconds * 1000) / totalSteps;
565
+ console.log(chalk_1.default.cyan(`${message}...`));
566
+ for (let i = 0; i < totalSteps; i++) {
567
+ const progress = Math.round(((i + 1) / totalSteps) * 100);
568
+ const bar = '█'.repeat(Math.floor(progress / 5)) + '░'.repeat(20 - Math.floor(progress / 5));
569
+ const elapsed = Math.round(((i + 1) / totalSteps) * seconds);
570
+ process.stdout.write(`\r${chalk_1.default.gray('[')}${chalk_1.default.cyan(bar)}${chalk_1.default.gray(']')} ${chalk_1.default.white(progress + '%')} ${chalk_1.default.gray(`(${elapsed}/${seconds}s)`)}`);
571
+ await new Promise(resolve => setTimeout(resolve, stepDuration));
572
+ }
573
+ process.stdout.write('\n\n');
574
+ }
434
575
  //# sourceMappingURL=debug.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4J5D"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/commands/discover.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6I5D"}
@@ -9,8 +9,7 @@ const ToolDetector_1 = require("../detection/ToolDetector");
9
9
  const WorkloadDetector_1 = require("../detection/WorkloadDetector");
10
10
  const SystemCapabilityDetector_1 = require("../detection/SystemCapabilityDetector");
11
11
  const command_wrapper_1 = require("./base/command-wrapper");
12
- const container_1 = require("../di/container");
13
- const types_1 = require("../di/types");
12
+ const instances_1 = require("../services/instances");
14
13
  function setupDiscoverCommands(program) {
15
14
  const discoverCommand = program
16
15
  .command('discover')
@@ -19,25 +18,19 @@ function setupDiscoverCommands(program) {
19
18
  .command('tools')
20
19
  .description('Check available container/VM/workload management tools')
21
20
  .action((0, command_wrapper_1.wrapCommand)(async () => {
22
- const container = (0, container_1.getContainer)();
23
- const logger = container.get(types_1.TYPES.Logger);
24
- logger.debug('Detecting infrastructure tools');
21
+ instances_1.logger.debug('Detecting infrastructure tools');
25
22
  console.log(chalk_1.default.blue('Detecting available infrastructure tools...\n'));
26
23
  const detectedTools = await ToolDetector_1.ToolDetector.detectTools();
27
24
  ToolDetector_1.ToolDetector.displayDetectedTools(detectedTools);
28
25
  const summary = ToolDetector_1.ToolDetector.getToolSummary(detectedTools);
29
26
  console.log(chalk_1.default.gray(`\n📊 Summary: ${summary}`));
30
- }, {
31
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
32
27
  }));
33
28
  discoverCommand
34
29
  .command('workloads')
35
30
  .description('List all running workloads and applications')
36
31
  .option('--json', 'Output as JSON')
37
32
  .action((0, command_wrapper_1.wrapCommand)(async (options) => {
38
- const container = (0, container_1.getContainer)();
39
- const logger = container.get(types_1.TYPES.Logger);
40
- logger.debug('Detecting workloads', { json: options.json });
33
+ instances_1.logger.debug('Detecting workloads', { json: options.json });
41
34
  if (options.json) {
42
35
  const workloads = await WorkloadDetector_1.WorkloadDetector.detectWorkloads();
43
36
  const running = workloads.filter((w) => w.status === 'running');
@@ -59,8 +52,6 @@ function setupDiscoverCommands(program) {
59
52
  const summary = WorkloadDetector_1.WorkloadDetector.getWorkloadSummary(workloads);
60
53
  console.log(chalk_1.default.gray(`\n📊 Summary: ${summary}`));
61
54
  }
62
- }, {
63
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
64
55
  }));
65
56
  discoverCommand
66
57
  .command('capabilities')
@@ -68,9 +59,7 @@ function setupDiscoverCommands(program) {
68
59
  .alias('caps')
69
60
  .option('--json', 'Output as JSON')
70
61
  .action((0, command_wrapper_1.wrapCommand)(async (options) => {
71
- const container = (0, container_1.getContainer)();
72
- const logger = container.get(types_1.TYPES.Logger);
73
- logger.debug('Detecting system capabilities', { json: options.json });
62
+ instances_1.logger.debug('Detecting system capabilities', { json: options.json });
74
63
  if (options.json) {
75
64
  const capabilities = await SystemCapabilityDetector_1.SystemCapabilityDetector.detectCapabilities();
76
65
  console.log(JSON.stringify({
@@ -137,8 +126,6 @@ function setupDiscoverCommands(program) {
137
126
  const summary = SystemCapabilityDetector_1.SystemCapabilityDetector.getCapabilitySummary(capabilities);
138
127
  console.log(chalk_1.default.gray(`\n📊 Summary: ${summary}`));
139
128
  }
140
- }, {
141
- configRepository: (0, container_1.getContainer)().get(types_1.TYPES.ConfigRepository),
142
129
  }));
143
130
  }
144
131
  //# sourceMappingURL=discover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/commands/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmjB3D"}
1
+ {"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/commands/gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4gB3D"}