@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.
- package/dist/commands/agent/agent-handlers.d.ts +45 -0
- package/dist/commands/agent/agent-handlers.d.ts.map +1 -0
- package/dist/commands/agent/agent-handlers.js +1159 -0
- package/dist/commands/agent/install.d.ts +11 -0
- package/dist/commands/agent/install.d.ts.map +1 -0
- package/dist/commands/agent/install.js +399 -0
- package/dist/commands/agent/logs.d.ts +12 -0
- package/dist/commands/agent/logs.d.ts.map +1 -0
- package/dist/commands/agent/logs.js +77 -0
- package/dist/commands/agent/restart.d.ts +4 -0
- package/dist/commands/agent/restart.d.ts.map +1 -0
- package/dist/commands/agent/restart.js +33 -0
- package/dist/commands/agent/set-log-level.d.ts +8 -0
- package/dist/commands/agent/set-log-level.d.ts.map +1 -0
- package/dist/commands/agent/set-log-level.js +133 -0
- package/dist/commands/agent/setup.d.ts +9 -0
- package/dist/commands/agent/setup.d.ts.map +1 -0
- package/dist/commands/agent/setup.js +149 -0
- package/dist/commands/agent/start.d.ts +12 -0
- package/dist/commands/agent/start.d.ts.map +1 -0
- package/dist/commands/agent/start.js +308 -0
- package/dist/commands/agent/status.d.ts +7 -0
- package/dist/commands/agent/status.d.ts.map +1 -0
- package/dist/commands/agent/status.js +68 -0
- package/dist/commands/agent/stop.d.ts +4 -0
- package/dist/commands/agent/stop.d.ts.map +1 -0
- package/dist/commands/agent/stop.js +33 -0
- package/dist/commands/agent/uninstall.d.ts +7 -0
- package/dist/commands/agent/uninstall.d.ts.map +1 -0
- package/dist/commands/agent/uninstall.js +168 -0
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +24 -1190
- package/dist/commands/ai/helpers.d.ts +139 -0
- package/dist/commands/ai/helpers.d.ts.map +1 -0
- package/dist/commands/ai/helpers.js +1470 -0
- package/dist/commands/ai/serve.d.ts +6 -0
- package/dist/commands/ai/serve.d.ts.map +1 -0
- package/dist/commands/ai/serve.js +124 -0
- package/dist/commands/ai/setup.d.ts +14 -0
- package/dist/commands/ai/setup.d.ts.map +1 -0
- package/dist/commands/ai/setup.js +86 -0
- package/dist/commands/ai/status.d.ts +2 -0
- package/dist/commands/ai/status.d.ts.map +1 -0
- package/dist/commands/ai/status.js +160 -0
- package/dist/commands/ai/stop.d.ts +2 -0
- package/dist/commands/ai/stop.d.ts.map +1 -0
- package/dist/commands/ai/stop.js +21 -0
- package/dist/commands/ai/teardown.d.ts +5 -0
- package/dist/commands/ai/teardown.d.ts.map +1 -0
- package/dist/commands/ai/teardown.js +78 -0
- package/dist/commands/ai/test.d.ts +4 -0
- package/dist/commands/ai/test.d.ts.map +1 -0
- package/dist/commands/ai/test.js +65 -0
- package/dist/commands/ai.d.ts.map +1 -1
- package/dist/commands/ai.js +16 -1938
- package/dist/commands/application/api-keys/create.d.ts +6 -0
- package/dist/commands/application/api-keys/create.d.ts.map +1 -0
- package/dist/commands/application/api-keys/create.js +68 -0
- package/dist/commands/application/api-keys/delete.d.ts +6 -0
- package/dist/commands/application/api-keys/delete.d.ts.map +1 -0
- package/dist/commands/application/api-keys/delete.js +79 -0
- package/dist/commands/application/api-keys/list.d.ts +5 -0
- package/dist/commands/application/api-keys/list.d.ts.map +1 -0
- package/dist/commands/application/api-keys/list.js +65 -0
- package/dist/commands/application/api-keys.d.ts +3 -0
- package/dist/commands/application/api-keys.d.ts.map +1 -0
- package/dist/commands/application/api-keys.js +227 -0
- package/dist/commands/application/create-compose.d.ts +3 -0
- package/dist/commands/application/create-compose.d.ts.map +1 -0
- package/dist/commands/application/create-compose.js +381 -0
- package/dist/commands/application/create-docker-compose.d.ts +10 -0
- package/dist/commands/application/create-docker-compose.d.ts.map +1 -0
- package/dist/commands/application/create-docker-compose.js +334 -0
- package/dist/commands/application/create-existing.d.ts +14 -0
- package/dist/commands/application/create-existing.d.ts.map +1 -0
- package/dist/commands/application/create-existing.js +359 -0
- package/dist/commands/application/create-interactive.d.ts +3 -0
- package/dist/commands/application/create-interactive.d.ts.map +1 -0
- package/dist/commands/application/create-interactive.js +326 -0
- package/dist/commands/application/create-managed-process.d.ts +15 -0
- package/dist/commands/application/create-managed-process.d.ts.map +1 -0
- package/dist/commands/application/create-managed-process.js +371 -0
- package/dist/commands/application/create-stubs.d.ts +4 -0
- package/dist/commands/application/create-stubs.d.ts.map +1 -0
- package/dist/commands/application/create-stubs.js +19 -0
- package/dist/commands/application/create-workload.d.ts +5 -0
- package/dist/commands/application/create-workload.d.ts.map +1 -0
- package/dist/commands/application/create-workload.js +48 -0
- package/dist/commands/application/delete.d.ts +6 -0
- package/dist/commands/application/delete.d.ts.map +1 -0
- package/dist/commands/application/delete.js +76 -0
- package/dist/commands/application/get.d.ts +5 -0
- package/dist/commands/application/get.d.ts.map +1 -0
- package/dist/commands/application/get.js +35 -0
- package/dist/commands/application/list.d.ts +4 -0
- package/dist/commands/application/list.d.ts.map +1 -0
- package/dist/commands/application/list.js +41 -0
- package/dist/commands/application/short-codes/create.d.ts +7 -0
- package/dist/commands/application/short-codes/create.d.ts.map +1 -0
- package/dist/commands/application/short-codes/create.js +69 -0
- package/dist/commands/application/short-codes/delete.d.ts +6 -0
- package/dist/commands/application/short-codes/delete.d.ts.map +1 -0
- package/dist/commands/application/short-codes/delete.js +79 -0
- package/dist/commands/application/short-codes/list.d.ts +5 -0
- package/dist/commands/application/short-codes/list.d.ts.map +1 -0
- package/dist/commands/application/short-codes/list.js +63 -0
- package/dist/commands/application/short-codes/toggle.d.ts +5 -0
- package/dist/commands/application/short-codes/toggle.d.ts.map +1 -0
- package/dist/commands/application/short-codes/toggle.js +71 -0
- package/dist/commands/application/short-codes.d.ts +3 -0
- package/dist/commands/application/short-codes.d.ts.map +1 -0
- package/dist/commands/application/short-codes.js +226 -0
- package/dist/commands/application/toggle.d.ts +2 -0
- package/dist/commands/application/toggle.d.ts.map +1 -0
- package/dist/commands/application/toggle.js +78 -0
- package/dist/commands/application/update.d.ts +4 -0
- package/dist/commands/application/update.d.ts.map +1 -0
- package/dist/commands/application/update.js +11 -0
- package/dist/commands/application.d.ts.map +1 -1
- package/dist/commands/application.js +32 -1630
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +31 -49
- package/dist/commands/base/BaseCommand.d.ts +3 -3
- package/dist/commands/base/BaseCommand.d.ts.map +1 -1
- package/dist/commands/base/BaseCommand.js +3 -3
- package/dist/commands/base/command-wrapper.d.ts +0 -4
- package/dist/commands/base/command-wrapper.d.ts.map +1 -1
- package/dist/commands/base/command-wrapper.js +13 -14
- package/dist/commands/base/middleware.d.ts +3 -3
- package/dist/commands/base/middleware.d.ts.map +1 -1
- package/dist/commands/base/middleware.js +4 -4
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +15 -32
- package/dist/commands/connectivity.d.ts.map +1 -1
- package/dist/commands/connectivity.js +6 -11
- package/dist/commands/debug.d.ts.map +1 -1
- package/dist/commands/debug.js +187 -46
- package/dist/commands/discover.d.ts.map +1 -1
- package/dist/commands/discover.js +4 -17
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +37 -77
- package/dist/commands/managedGateway/create.d.ts +6 -0
- package/dist/commands/managedGateway/create.d.ts.map +1 -0
- package/dist/commands/managedGateway/create.js +50 -0
- package/dist/commands/managedGateway/delete.d.ts +5 -0
- package/dist/commands/managedGateway/delete.d.ts.map +1 -0
- package/dist/commands/managedGateway/delete.js +57 -0
- package/dist/commands/managedGateway/get.d.ts +4 -0
- package/dist/commands/managedGateway/get.d.ts.map +1 -0
- package/dist/commands/managedGateway/get.js +71 -0
- package/dist/commands/managedGateway/haproxy-stats.d.ts +6 -0
- package/dist/commands/managedGateway/haproxy-stats.d.ts.map +1 -0
- package/dist/commands/managedGateway/haproxy-stats.js +131 -0
- package/dist/commands/managedGateway/list.d.ts +4 -0
- package/dist/commands/managedGateway/list.d.ts.map +1 -0
- package/dist/commands/managedGateway/list.js +50 -0
- package/dist/commands/managedGateway/logs.d.ts +10 -0
- package/dist/commands/managedGateway/logs.d.ts.map +1 -0
- package/dist/commands/managedGateway/logs.js +100 -0
- package/dist/commands/managedGateway/reboot.d.ts +5 -0
- package/dist/commands/managedGateway/reboot.d.ts.map +1 -0
- package/dist/commands/managedGateway/reboot.js +95 -0
- package/dist/commands/managedGateway/resync.d.ts +10 -0
- package/dist/commands/managedGateway/resync.d.ts.map +1 -0
- package/dist/commands/managedGateway/resync.js +69 -0
- package/dist/commands/managedGateway/ssh.d.ts +4 -0
- package/dist/commands/managedGateway/ssh.d.ts.map +1 -0
- package/dist/commands/managedGateway/ssh.js +130 -0
- package/dist/commands/managedGateway/wipe-logs.d.ts +4 -0
- package/dist/commands/managedGateway/wipe-logs.d.ts.map +1 -0
- package/dist/commands/managedGateway/wipe-logs.js +67 -0
- package/dist/commands/managedGateway/wireguard.d.ts +4 -0
- package/dist/commands/managedGateway/wireguard.d.ts.map +1 -0
- package/dist/commands/managedGateway/wireguard.js +68 -0
- package/dist/commands/managedGateway.d.ts.map +1 -1
- package/dist/commands/managedGateway.js +61 -117
- package/dist/commands/utils/config-validator.d.ts +5 -5
- package/dist/commands/utils/config-validator.d.ts.map +1 -1
- package/dist/commands/utils/config-validator.js +8 -8
- package/dist/commands/utils/output-formatter.js +1 -1
- package/dist/config/app-config.d.ts +1 -1
- package/dist/config/app-config.js +2 -2
- package/dist/index.js +0 -3
- package/dist/services/LocalAgentManager.d.ts.map +1 -1
- package/dist/services/LocalAgentManager.js +4 -2
- package/dist/services/agentDeployment/AgentDeploymentService.d.ts +35 -0
- package/dist/services/agentDeployment/AgentDeploymentService.d.ts.map +1 -0
- package/dist/services/agentDeployment/AgentDeploymentService.js +35 -0
- package/dist/services/application/ApplicationService.d.ts +5 -4
- package/dist/services/application/ApplicationService.d.ts.map +1 -1
- package/dist/services/application/ApplicationService.js +22 -35
- package/dist/services/auth/AuthService.d.ts +5 -5
- package/dist/services/auth/AuthService.d.ts.map +1 -1
- package/dist/services/auth/AuthService.js +11 -58
- package/dist/services/daemon/DaemonManagerFactory.d.ts +2 -0
- package/dist/services/daemon/DaemonManagerFactory.d.ts.map +1 -1
- package/dist/services/daemon/DaemonManagerFactory.js +14 -6
- package/dist/services/diagnostics/DiagnosticsService.d.ts +89 -0
- package/dist/services/diagnostics/DiagnosticsService.d.ts.map +1 -0
- package/dist/services/diagnostics/DiagnosticsService.js +37 -0
- package/dist/services/edgible.d.ts +6 -4
- package/dist/services/edgible.d.ts.map +1 -1
- package/dist/services/edgible.js +36 -86
- package/dist/services/gateway/GatewayService.d.ts +5 -6
- package/dist/services/gateway/GatewayService.d.ts.map +1 -1
- package/dist/services/gateway/GatewayService.js +22 -36
- package/dist/services/instances.d.ts +34 -0
- package/dist/services/instances.d.ts.map +1 -0
- package/dist/services/instances.js +64 -0
- package/dist/services/managedGateway/ManagedGatewayService.d.ts +75 -0
- package/dist/services/managedGateway/ManagedGatewayService.d.ts.map +1 -0
- package/dist/services/managedGateway/ManagedGatewayService.js +44 -0
- package/dist/services/token/TokenManager.d.ts +56 -0
- package/dist/services/token/TokenManager.d.ts.map +1 -0
- package/dist/services/token/TokenManager.js +85 -0
- package/dist/types/validation/schemas.d.ts +22 -22
- package/dist/utils/PlatformDetector.d.ts +2 -0
- package/dist/utils/PlatformDetector.d.ts.map +1 -1
- package/dist/utils/PlatformDetector.js +5 -34
- package/dist/validation/schemas.d.ts +6 -6
- package/package.json +1 -1
package/dist/commands/debug.js
CHANGED
|
@@ -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
|
|
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
|
|
56
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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;
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
|
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"}
|