@calltelemetry/cli 0.1.0
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/config.d.ts +3 -0
- package/dist/commands/config.d.ts.map +1 -0
- package/dist/commands/config.js +201 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/db.d.ts +3 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +143 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/diag.d.ts +3 -0
- package/dist/commands/diag.d.ts.map +1 -0
- package/dist/commands/diag.js +123 -0
- package/dist/commands/diag.js.map +1 -0
- package/dist/commands/docker.d.ts +3 -0
- package/dist/commands/docker.d.ts.map +1 -0
- package/dist/commands/docker.js +34 -0
- package/dist/commands/docker.js.map +1 -0
- package/dist/commands/jtapi.d.ts +3 -0
- package/dist/commands/jtapi.d.ts.map +1 -0
- package/dist/commands/jtapi.js +36 -0
- package/dist/commands/jtapi.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +49 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/offline.d.ts +3 -0
- package/dist/commands/offline.d.ts.map +1 -0
- package/dist/commands/offline.js +170 -0
- package/dist/commands/offline.js.map +1 -0
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +55 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +13 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +3 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +202 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +65 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/bundle.d.ts +5 -0
- package/dist/lib/bundle.d.ts.map +1 -0
- package/dist/lib/bundle.js +134 -0
- package/dist/lib/bundle.js.map +1 -0
- package/dist/lib/certs.d.ts +3 -0
- package/dist/lib/certs.d.ts.map +1 -0
- package/dist/lib/certs.js +29 -0
- package/dist/lib/certs.js.map +1 -0
- package/dist/lib/compose.d.ts +36 -0
- package/dist/lib/compose.d.ts.map +1 -0
- package/dist/lib/compose.js +137 -0
- package/dist/lib/compose.js.map +1 -0
- package/dist/lib/db.d.ts +6 -0
- package/dist/lib/db.d.ts.map +1 -0
- package/dist/lib/db.js +6 -0
- package/dist/lib/db.js.map +1 -0
- package/dist/lib/fs.d.ts +20 -0
- package/dist/lib/fs.d.ts.map +1 -0
- package/dist/lib/fs.js +72 -0
- package/dist/lib/fs.js.map +1 -0
- package/dist/lib/jtapi.d.ts +6 -0
- package/dist/lib/jtapi.d.ts.map +1 -0
- package/dist/lib/jtapi.js +27 -0
- package/dist/lib/jtapi.js.map +1 -0
- package/dist/lib/network.d.ts +43 -0
- package/dist/lib/network.d.ts.map +1 -0
- package/dist/lib/network.js +172 -0
- package/dist/lib/network.js.map +1 -0
- package/dist/lib/paths.d.ts +19 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +57 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/postgres.d.ts +4 -0
- package/dist/lib/postgres.d.ts.map +1 -0
- package/dist/lib/postgres.js +49 -0
- package/dist/lib/postgres.js.map +1 -0
- package/dist/lib/rpc.d.ts +5 -0
- package/dist/lib/rpc.d.ts.map +1 -0
- package/dist/lib/rpc.js +28 -0
- package/dist/lib/rpc.js.map +1 -0
- package/dist/lib/secrets.d.ts +38 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +132 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/system.d.ts +12 -0
- package/dist/lib/system.d.ts.map +1 -0
- package/dist/lib/system.js +61 -0
- package/dist/lib/system.js.map +1 -0
- package/dist/ui/components/AppShell.d.ts +9 -0
- package/dist/ui/components/AppShell.d.ts.map +1 -0
- package/dist/ui/components/AppShell.js +6 -0
- package/dist/ui/components/AppShell.js.map +1 -0
- package/dist/ui/components/Confirm.d.ts +7 -0
- package/dist/ui/components/Confirm.d.ts.map +1 -0
- package/dist/ui/components/Confirm.js +14 -0
- package/dist/ui/components/Confirm.js.map +1 -0
- package/dist/ui/components/DataTable.d.ts +12 -0
- package/dist/ui/components/DataTable.d.ts.map +1 -0
- package/dist/ui/components/DataTable.js +28 -0
- package/dist/ui/components/DataTable.js.map +1 -0
- package/dist/ui/components/Divider.d.ts +6 -0
- package/dist/ui/components/Divider.d.ts.map +1 -0
- package/dist/ui/components/Divider.js +6 -0
- package/dist/ui/components/Divider.js.map +1 -0
- package/dist/ui/components/KeyValue.d.ts +11 -0
- package/dist/ui/components/KeyValue.d.ts.map +1 -0
- package/dist/ui/components/KeyValue.js +7 -0
- package/dist/ui/components/KeyValue.js.map +1 -0
- package/dist/ui/components/Section.d.ts +8 -0
- package/dist/ui/components/Section.d.ts.map +1 -0
- package/dist/ui/components/Section.js +6 -0
- package/dist/ui/components/Section.js.map +1 -0
- package/dist/ui/components/SelectMenu.d.ts +14 -0
- package/dist/ui/components/SelectMenu.d.ts.map +1 -0
- package/dist/ui/components/SelectMenu.js +55 -0
- package/dist/ui/components/SelectMenu.js.map +1 -0
- package/dist/ui/components/ShellOutput.d.ts +7 -0
- package/dist/ui/components/ShellOutput.d.ts.map +1 -0
- package/dist/ui/components/ShellOutput.js +10 -0
- package/dist/ui/components/ShellOutput.js.map +1 -0
- package/dist/ui/components/Spinner.d.ts +6 -0
- package/dist/ui/components/Spinner.d.ts.map +1 -0
- package/dist/ui/components/Spinner.js +7 -0
- package/dist/ui/components/Spinner.js.map +1 -0
- package/dist/ui/components/StatusBox.d.ts +8 -0
- package/dist/ui/components/StatusBox.d.ts.map +1 -0
- package/dist/ui/components/StatusBox.js +12 -0
- package/dist/ui/components/StatusBox.js.map +1 -0
- package/dist/ui/components/StatusLine.d.ts +8 -0
- package/dist/ui/components/StatusLine.d.ts.map +1 -0
- package/dist/ui/components/StatusLine.js +13 -0
- package/dist/ui/components/StatusLine.js.map +1 -0
- package/dist/ui/components/StepList.d.ts +11 -0
- package/dist/ui/components/StepList.d.ts.map +1 -0
- package/dist/ui/components/StepList.js +19 -0
- package/dist/ui/components/StepList.js.map +1 -0
- package/dist/ui/components/SubSection.d.ts +8 -0
- package/dist/ui/components/SubSection.d.ts.map +1 -0
- package/dist/ui/components/SubSection.js +6 -0
- package/dist/ui/components/SubSection.js.map +1 -0
- package/dist/ui/components/TextInput.d.ts +11 -0
- package/dist/ui/components/TextInput.d.ts.map +1 -0
- package/dist/ui/components/TextInput.js +7 -0
- package/dist/ui/components/TextInput.js.map +1 -0
- package/dist/ui/components/index.d.ts +16 -0
- package/dist/ui/components/index.d.ts.map +1 -0
- package/dist/ui/components/index.js +15 -0
- package/dist/ui/components/index.js.map +1 -0
- package/dist/ui/hooks/index.d.ts +7 -0
- package/dist/ui/hooks/index.d.ts.map +1 -0
- package/dist/ui/hooks/index.js +5 -0
- package/dist/ui/hooks/index.js.map +1 -0
- package/dist/ui/hooks/useAsyncTask.d.ts +9 -0
- package/dist/ui/hooks/useAsyncTask.d.ts.map +1 -0
- package/dist/ui/hooks/useAsyncTask.js +22 -0
- package/dist/ui/hooks/useAsyncTask.js.map +1 -0
- package/dist/ui/hooks/usePolling.d.ts +8 -0
- package/dist/ui/hooks/usePolling.d.ts.map +1 -0
- package/dist/ui/hooks/usePolling.js +43 -0
- package/dist/ui/hooks/usePolling.js.map +1 -0
- package/dist/ui/hooks/useStepRunner.d.ts +16 -0
- package/dist/ui/hooks/useStepRunner.d.ts.map +1 -0
- package/dist/ui/hooks/useStepRunner.js +42 -0
- package/dist/ui/hooks/useStepRunner.js.map +1 -0
- package/dist/ui/hooks/useStreamingProcess.d.ts +8 -0
- package/dist/ui/hooks/useStreamingProcess.d.ts.map +1 -0
- package/dist/ui/hooks/useStreamingProcess.js +49 -0
- package/dist/ui/hooks/useStreamingProcess.js.map +1 -0
- package/dist/ui/types.d.ts +24 -0
- package/dist/ui/types.d.ts.map +1 -0
- package/dist/ui/types.js +2 -0
- package/dist/ui/types.js.map +1 -0
- package/dist/ui/views/CertsStatusView.d.ts +2 -0
- package/dist/ui/views/CertsStatusView.d.ts.map +1 -0
- package/dist/ui/views/CertsStatusView.js +95 -0
- package/dist/ui/views/CertsStatusView.js.map +1 -0
- package/dist/ui/views/DbBackupView.d.ts +2 -0
- package/dist/ui/views/DbBackupView.d.ts.map +1 -0
- package/dist/ui/views/DbBackupView.js +62 -0
- package/dist/ui/views/DbBackupView.js.map +1 -0
- package/dist/ui/views/DbCompactView.d.ts +2 -0
- package/dist/ui/views/DbCompactView.d.ts.map +1 -0
- package/dist/ui/views/DbCompactView.js +28 -0
- package/dist/ui/views/DbCompactView.js.map +1 -0
- package/dist/ui/views/DbListView.d.ts +2 -0
- package/dist/ui/views/DbListView.d.ts.map +1 -0
- package/dist/ui/views/DbListView.js +30 -0
- package/dist/ui/views/DbListView.js.map +1 -0
- package/dist/ui/views/DbSizeView.d.ts +2 -0
- package/dist/ui/views/DbSizeView.d.ts.map +1 -0
- package/dist/ui/views/DbSizeView.js +21 -0
- package/dist/ui/views/DbSizeView.js.map +1 -0
- package/dist/ui/views/DbStatusView.d.ts +2 -0
- package/dist/ui/views/DbStatusView.d.ts.map +1 -0
- package/dist/ui/views/DbStatusView.js +41 -0
- package/dist/ui/views/DbStatusView.js.map +1 -0
- package/dist/ui/views/DbTablesView.d.ts +6 -0
- package/dist/ui/views/DbTablesView.d.ts.map +1 -0
- package/dist/ui/views/DbTablesView.js +28 -0
- package/dist/ui/views/DbTablesView.js.map +1 -0
- package/dist/ui/views/DiagDatabaseView.d.ts +2 -0
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -0
- package/dist/ui/views/DiagDatabaseView.js +51 -0
- package/dist/ui/views/DiagDatabaseView.js.map +1 -0
- package/dist/ui/views/DiagNetworkView.d.ts +2 -0
- package/dist/ui/views/DiagNetworkView.d.ts.map +1 -0
- package/dist/ui/views/DiagNetworkView.js +169 -0
- package/dist/ui/views/DiagNetworkView.js.map +1 -0
- package/dist/ui/views/DiagServiceView.d.ts +2 -0
- package/dist/ui/views/DiagServiceView.d.ts.map +1 -0
- package/dist/ui/views/DiagServiceView.js +37 -0
- package/dist/ui/views/DiagServiceView.js.map +1 -0
- package/dist/ui/views/DockerNetworkView.d.ts +2 -0
- package/dist/ui/views/DockerNetworkView.d.ts.map +1 -0
- package/dist/ui/views/DockerNetworkView.js +29 -0
- package/dist/ui/views/DockerNetworkView.js.map +1 -0
- package/dist/ui/views/DockerPruneView.d.ts +2 -0
- package/dist/ui/views/DockerPruneView.d.ts.map +1 -0
- package/dist/ui/views/DockerPruneView.js +57 -0
- package/dist/ui/views/DockerPruneView.js.map +1 -0
- package/dist/ui/views/DockerStatusView.d.ts +2 -0
- package/dist/ui/views/DockerStatusView.d.ts.map +1 -0
- package/dist/ui/views/DockerStatusView.js +43 -0
- package/dist/ui/views/DockerStatusView.js.map +1 -0
- package/dist/ui/views/JtapiDisableView.d.ts +2 -0
- package/dist/ui/views/JtapiDisableView.d.ts.map +1 -0
- package/dist/ui/views/JtapiDisableView.js +55 -0
- package/dist/ui/views/JtapiDisableView.js.map +1 -0
- package/dist/ui/views/JtapiEnableView.d.ts +2 -0
- package/dist/ui/views/JtapiEnableView.d.ts.map +1 -0
- package/dist/ui/views/JtapiEnableView.js +47 -0
- package/dist/ui/views/JtapiEnableView.js.map +1 -0
- package/dist/ui/views/JtapiStatusView.d.ts +2 -0
- package/dist/ui/views/JtapiStatusView.d.ts.map +1 -0
- package/dist/ui/views/JtapiStatusView.js +18 -0
- package/dist/ui/views/JtapiStatusView.js.map +1 -0
- package/dist/ui/views/JtapiTroubleshootView.d.ts +2 -0
- package/dist/ui/views/JtapiTroubleshootView.d.ts.map +1 -0
- package/dist/ui/views/JtapiTroubleshootView.js +120 -0
- package/dist/ui/views/JtapiTroubleshootView.js.map +1 -0
- package/dist/ui/views/MainMenu.d.ts +8 -0
- package/dist/ui/views/MainMenu.d.ts.map +1 -0
- package/dist/ui/views/MainMenu.js +110 -0
- package/dist/ui/views/MainMenu.js.map +1 -0
- package/dist/ui/views/MigrateHistoryView.d.ts +2 -0
- package/dist/ui/views/MigrateHistoryView.d.ts.map +1 -0
- package/dist/ui/views/MigrateHistoryView.js +25 -0
- package/dist/ui/views/MigrateHistoryView.js.map +1 -0
- package/dist/ui/views/MigrateRollbackView.d.ts +6 -0
- package/dist/ui/views/MigrateRollbackView.d.ts.map +1 -0
- package/dist/ui/views/MigrateRollbackView.js +50 -0
- package/dist/ui/views/MigrateRollbackView.js.map +1 -0
- package/dist/ui/views/MigrateRunView.d.ts +2 -0
- package/dist/ui/views/MigrateRunView.d.ts.map +1 -0
- package/dist/ui/views/MigrateRunView.js +50 -0
- package/dist/ui/views/MigrateRunView.js.map +1 -0
- package/dist/ui/views/MigrateStatusView.d.ts +2 -0
- package/dist/ui/views/MigrateStatusView.d.ts.map +1 -0
- package/dist/ui/views/MigrateStatusView.js +88 -0
- package/dist/ui/views/MigrateStatusView.js.map +1 -0
- package/dist/ui/views/MigrateWatchView.d.ts +6 -0
- package/dist/ui/views/MigrateWatchView.d.ts.map +1 -0
- package/dist/ui/views/MigrateWatchView.js +83 -0
- package/dist/ui/views/MigrateWatchView.js.map +1 -0
- package/dist/ui/views/OfflineListView.d.ts +2 -0
- package/dist/ui/views/OfflineListView.d.ts.map +1 -0
- package/dist/ui/views/OfflineListView.js +47 -0
- package/dist/ui/views/OfflineListView.js.map +1 -0
- package/dist/ui/views/SecretsSetupView.d.ts +2 -0
- package/dist/ui/views/SecretsSetupView.d.ts.map +1 -0
- package/dist/ui/views/SecretsSetupView.js +94 -0
- package/dist/ui/views/SecretsSetupView.js.map +1 -0
- package/dist/ui/views/SecretsStatusView.d.ts +2 -0
- package/dist/ui/views/SecretsStatusView.d.ts.map +1 -0
- package/dist/ui/views/SecretsStatusView.js +36 -0
- package/dist/ui/views/SecretsStatusView.js.map +1 -0
- package/dist/ui/views/StatusView.d.ts +2 -0
- package/dist/ui/views/StatusView.d.ts.map +1 -0
- package/dist/ui/views/StatusView.js +80 -0
- package/dist/ui/views/StatusView.js.map +1 -0
- package/dist/utils/output.d.ts +11 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +30 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/utils/prompt.d.ts +6 -0
- package/dist/utils/prompt.d.ts.map +1 -0
- package/dist/utils/prompt.js +25 -0
- package/dist/utils/prompt.js.map +1 -0
- package/dist/utils/version.d.ts +8 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +35 -0
- package/dist/utils/version.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { compose } from '../../lib/compose.js';
|
|
6
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
+
export function DockerStatusView() {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
// Section 1: Containers
|
|
11
|
+
const containerTask = useAsyncTask(async () => {
|
|
12
|
+
const result = await compose(['ps'], { pipe: true });
|
|
13
|
+
return result.stdout ?? '';
|
|
14
|
+
});
|
|
15
|
+
// Section 2: Images
|
|
16
|
+
const imageTask = useAsyncTask(async () => {
|
|
17
|
+
const { stdout } = await execa('docker', [
|
|
18
|
+
'images',
|
|
19
|
+
'--format',
|
|
20
|
+
'table {{.Repository}}\t{{.Tag}}\t{{.Size}}',
|
|
21
|
+
], { stdout: 'pipe', stderr: 'pipe' });
|
|
22
|
+
return stdout;
|
|
23
|
+
});
|
|
24
|
+
// Section 3: Networks
|
|
25
|
+
const networkTask = useAsyncTask(async () => {
|
|
26
|
+
const { stdout } = await execa('docker', [
|
|
27
|
+
'network', 'ls',
|
|
28
|
+
'--filter', 'name=ct',
|
|
29
|
+
'--format', 'table {{.Name}}\t{{.Driver}}\t{{.Scope}}',
|
|
30
|
+
], { stdout: 'pipe', stderr: 'pipe' });
|
|
31
|
+
return stdout;
|
|
32
|
+
});
|
|
33
|
+
// Exit when all 3 tasks complete
|
|
34
|
+
const allDone = [containerTask, imageTask, networkTask]
|
|
35
|
+
.every(t => t.status === 'done' || t.status === 'error');
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
if (allDone) {
|
|
38
|
+
exit();
|
|
39
|
+
}
|
|
40
|
+
}, [allDone, exit]);
|
|
41
|
+
return (_jsxs(AppShell, { command: "ct docker status", children: [_jsxs(Section, { title: "Containers", children: [containerTask.status === 'pending' && _jsx(Spinner, { label: "Checking containers..." }), containerTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not list containers" }), containerTask.status === 'done' && containerTask.data && (_jsx(ShellOutput, { content: containerTask.data }))] }), _jsxs(Section, { title: "Images", children: [imageTask.status === 'pending' && _jsx(Spinner, { label: "Loading images..." }), imageTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not list images" }), imageTask.status === 'done' && imageTask.data && (_jsx(ShellOutput, { content: imageTask.data }))] }), _jsxs(Section, { title: "Networks", children: [networkTask.status === 'pending' && _jsx(Spinner, { label: "Loading networks..." }), networkTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Could not list networks" }), networkTask.status === 'done' && networkTask.data && (_jsx(ShellOutput, { content: networkTask.data }))] })] }));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=DockerStatusView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DockerStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/DockerStatusView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiDisableView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/JtapiDisableView.tsx"],"names":[],"mappings":"AAQA,wBAAgB,gBAAgB,4CA6D/B"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { Box, useApp } from 'ink';
|
|
4
|
+
import { compose, composeUp } from '../../lib/compose.js';
|
|
5
|
+
import { isJtapiEnabled, disableJtapi } from '../../lib/jtapi.js';
|
|
6
|
+
import { AppShell, Section, StepList, Divider, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useStepRunner } from '../hooks/index.js';
|
|
8
|
+
export function JtapiDisableView() {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const alreadyDisabled = !isJtapiEnabled();
|
|
11
|
+
const steps = [
|
|
12
|
+
{
|
|
13
|
+
label: 'Check JTAPI status',
|
|
14
|
+
run: async () => {
|
|
15
|
+
if (alreadyDisabled) {
|
|
16
|
+
return 'already disabled';
|
|
17
|
+
}
|
|
18
|
+
return 'enabled — proceeding to disable';
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
label: 'Stop jtapi-sidecar container',
|
|
23
|
+
run: async () => {
|
|
24
|
+
if (alreadyDisabled)
|
|
25
|
+
return 'skipped';
|
|
26
|
+
await compose(['stop', 'jtapi-sidecar'], { pipe: true }).catch(() => { });
|
|
27
|
+
return 'stopped';
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
label: 'Remove state file',
|
|
32
|
+
run: async () => {
|
|
33
|
+
if (alreadyDisabled)
|
|
34
|
+
return 'skipped';
|
|
35
|
+
await disableJtapi();
|
|
36
|
+
return 'removed';
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
label: 'Restart services without overlay',
|
|
41
|
+
run: async () => {
|
|
42
|
+
if (alreadyDisabled)
|
|
43
|
+
return 'skipped';
|
|
44
|
+
await composeUp(['-d'], { pipe: true });
|
|
45
|
+
return 'restarted';
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
];
|
|
49
|
+
const { states, isDone, run } = useStepRunner(steps);
|
|
50
|
+
useEffect(() => { run(); }, [run]);
|
|
51
|
+
useEffect(() => { if (isDone)
|
|
52
|
+
exit(); }, [isDone, exit]);
|
|
53
|
+
return (_jsxs(AppShell, { command: "ct jtapi disable", children: [_jsx(Section, { title: "JTAPI Disable", children: _jsx(StepList, { steps: states }) }), isDone && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Divider, {}), _jsx(StatusLine, { status: alreadyDisabled ? 'warn' : 'ok', label: alreadyDisabled ? 'JTAPI is already disabled' : 'JTAPI sidecar disabled' })] }))] }));
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=JtapiDisableView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiDisableView.js","sourceRoot":"","sources":["../../../src/ui/views/JtapiDisableView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,UAAU,gBAAgB;IAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,CAAC;IAE1C,MAAM,KAAK,GAAW;QACpB;YACE,KAAK,EAAE,oBAAoB;YAC3B,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,eAAe,EAAE,CAAC;oBACpB,OAAO,kBAAkB,CAAC;gBAC5B,CAAC;gBACD,OAAO,iCAAiC,CAAC;YAC3C,CAAC;SACF;QACD;YACE,KAAK,EAAE,8BAA8B;YACrC,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,eAAe;oBAAE,OAAO,SAAS,CAAC;gBACtC,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;gBACzE,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;QACD;YACE,KAAK,EAAE,mBAAmB;YAC1B,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,eAAe;oBAAE,OAAO,SAAS,CAAC;gBACtC,MAAM,YAAY,EAAE,CAAC;gBACrB,OAAO,SAAS,CAAC;YACnB,CAAC;SACF;QACD;YACE,KAAK,EAAE,kCAAkC;YACzC,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,eAAe;oBAAE,OAAO,SAAS,CAAC;gBACtC,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxC,OAAO,WAAW,CAAC;YACrB,CAAC;SACF;KACF,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAErD,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzD,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,kBAAkB,aAClC,KAAC,OAAO,IAAC,KAAK,EAAC,eAAe,YAC5B,KAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,GAAI,GACnB,EACT,MAAM,IAAI,CACT,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,OAAO,KAAG,EACX,KAAC,UAAU,IACT,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EACvC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,wBAAwB,GAC/E,IACE,CACP,IACQ,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiEnableView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/JtapiEnableView.tsx"],"names":[],"mappings":"AAkCA,wBAAgB,eAAe,4CA0B9B"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { Box, useApp } from 'ink';
|
|
4
|
+
import { composeUp } from '../../lib/compose.js';
|
|
5
|
+
import { hasOverlayFile, enableJtapi } from '../../lib/jtapi.js';
|
|
6
|
+
import { AppShell, Section, StepList, Divider, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useStepRunner } from '../hooks/index.js';
|
|
8
|
+
const steps = [
|
|
9
|
+
{
|
|
10
|
+
label: 'Check overlay file exists',
|
|
11
|
+
run: async () => {
|
|
12
|
+
if (!hasOverlayFile()) {
|
|
13
|
+
throw new Error('docker-compose-jtapi.yml not found in install directory');
|
|
14
|
+
}
|
|
15
|
+
return 'found';
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
label: 'Create state file',
|
|
20
|
+
run: async () => {
|
|
21
|
+
await enableJtapi();
|
|
22
|
+
return 'created';
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
label: 'Start services with JTAPI overlay',
|
|
27
|
+
run: async () => {
|
|
28
|
+
await composeUp(['-d'], { pipe: true });
|
|
29
|
+
return 'started';
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
export function JtapiEnableView() {
|
|
34
|
+
const { exit } = useApp();
|
|
35
|
+
const { states, isRunning, isDone, run } = useStepRunner(steps);
|
|
36
|
+
useEffect(() => { run(); }, [run]);
|
|
37
|
+
useEffect(() => { if (isDone)
|
|
38
|
+
exit(); }, [isDone, exit]);
|
|
39
|
+
// Exit on error (isRunning becomes false without isDone)
|
|
40
|
+
const hasError = states.some(s => s.status === 'error');
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
if (!isRunning && hasError)
|
|
43
|
+
exit();
|
|
44
|
+
}, [isRunning, hasError, exit]);
|
|
45
|
+
return (_jsxs(AppShell, { command: "ct jtapi enable", children: [_jsx(Section, { title: "JTAPI Enable", children: _jsx(StepList, { steps: states }) }), isDone && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Divider, {}), _jsx(StatusLine, { status: "ok", label: "JTAPI sidecar enabled" })] }))] }));
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=JtapiEnableView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiEnableView.js","sourceRoot":"","sources":["../../../src/ui/views/JtapiEnableView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,MAAM,KAAK,GAAW;IACpB;QACE,KAAK,EAAE,2BAA2B;QAClC,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;gBACtB,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;KACF;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,WAAW,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;IACD;QACE,KAAK,EAAE,mCAAmC;QAC1C,GAAG,EAAE,KAAK,IAAI,EAAE;YACd,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,OAAO,SAAS,CAAC;QACnB,CAAC;KACF;CACF,CAAC;AAEF,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IAEhE,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACnC,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAEzD,yDAAyD;IACzD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,IAAI,QAAQ;YAAE,IAAI,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;IAEhC,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,iBAAiB,aACjC,KAAC,OAAO,IAAC,KAAK,EAAC,cAAc,YAC3B,KAAC,QAAQ,IAAC,KAAK,EAAE,MAAM,GAAI,GACnB,EACT,MAAM,IAAI,CACT,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,OAAO,KAAG,EACX,KAAC,UAAU,IAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,uBAAuB,GAAG,IACpD,CACP,IACQ,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiStatusView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/JtapiStatusView.tsx"],"names":[],"mappings":"AAKA,wBAAgB,eAAe,4CA2B9B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { isJtapiEnabled, hasOverlayFile } from '../../lib/jtapi.js';
|
|
5
|
+
import { AppShell, Section, StatusLine } from '../components/index.js';
|
|
6
|
+
export function JtapiStatusView() {
|
|
7
|
+
const { exit } = useApp();
|
|
8
|
+
const enabled = isJtapiEnabled();
|
|
9
|
+
const overlay = hasOverlayFile();
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
// These are synchronous, exit immediately after render
|
|
12
|
+
exit();
|
|
13
|
+
}, [exit]);
|
|
14
|
+
return (_jsx(AppShell, { command: "ct jtapi status", children: _jsxs(Section, { title: "JTAPI Status", children: [_jsx(StatusLine, { status: enabled ? 'ok' : 'warn', label: enabled ? 'JTAPI is ENABLED' : 'JTAPI is DISABLED' }), _jsx(StatusLine, { status: overlay ? 'ok' : 'fail', label: overlay
|
|
15
|
+
? 'Overlay file (docker-compose-jtapi.yml) exists'
|
|
16
|
+
: 'Overlay file (docker-compose-jtapi.yml) NOT FOUND' })] }) }));
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=JtapiStatusView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiStatusView.js","sourceRoot":"","sources":["../../../src/ui/views/JtapiStatusView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IACjC,MAAM,OAAO,GAAG,cAAc,EAAE,CAAC;IAEjC,SAAS,CAAC,GAAG,EAAE;QACb,uDAAuD;QACvD,IAAI,EAAE,CAAC;IACT,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,OAAO,CACL,KAAC,QAAQ,IAAC,OAAO,EAAC,iBAAiB,YACjC,MAAC,OAAO,IAAC,KAAK,EAAC,cAAc,aAC3B,KAAC,UAAU,IACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC/B,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,GACzD,EACF,KAAC,UAAU,IACT,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC/B,KAAK,EAAE,OAAO;wBACZ,CAAC,CAAC,gDAAgD;wBAClD,CAAC,CAAC,mDAAmD,GACvD,IACM,GACD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiTroubleshootView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/JtapiTroubleshootView.tsx"],"names":[],"mappings":"AAiGA,wBAAgB,qBAAqB,4CAoCpC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { Box, useApp } from 'ink';
|
|
4
|
+
import { AppShell, Section, StepList, Divider, StatusLine } from '../components/index.js';
|
|
5
|
+
import { useStepRunner } from '../hooks/index.js';
|
|
6
|
+
import { compose, composeExec } from '../../lib/compose.js';
|
|
7
|
+
import { isJtapiEnabled, hasOverlayFile } from '../../lib/jtapi.js';
|
|
8
|
+
const steps = [
|
|
9
|
+
{
|
|
10
|
+
label: 'Feature State',
|
|
11
|
+
run: async () => {
|
|
12
|
+
const enabled = isJtapiEnabled();
|
|
13
|
+
const overlay = hasOverlayFile();
|
|
14
|
+
if (enabled && overlay)
|
|
15
|
+
return 'Enabled';
|
|
16
|
+
if (!enabled && overlay)
|
|
17
|
+
return 'Disabled (overlay present)';
|
|
18
|
+
if (!overlay)
|
|
19
|
+
return 'Disabled (overlay missing)';
|
|
20
|
+
return 'Disabled';
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
label: 'Container: jtapi-sidecar',
|
|
25
|
+
run: async () => {
|
|
26
|
+
const result = await compose(['ps', 'jtapi-sidecar'], { pipe: true });
|
|
27
|
+
const out = result.stdout ?? '';
|
|
28
|
+
const running = out.toLowerCase().includes('running') || out.toLowerCase().includes('up');
|
|
29
|
+
if (!running)
|
|
30
|
+
throw new Error('not running');
|
|
31
|
+
return 'running';
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
label: 'Container: ct-media',
|
|
36
|
+
run: async () => {
|
|
37
|
+
const result = await compose(['ps', 'ct-media'], { pipe: true });
|
|
38
|
+
const out = result.stdout ?? '';
|
|
39
|
+
const running = out.toLowerCase().includes('running') || out.toLowerCase().includes('up');
|
|
40
|
+
if (!running)
|
|
41
|
+
throw new Error('not running');
|
|
42
|
+
return 'running';
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
label: 'Container: minio',
|
|
47
|
+
run: async () => {
|
|
48
|
+
const result = await compose(['ps', 'minio'], { pipe: true });
|
|
49
|
+
const out = result.stdout ?? '';
|
|
50
|
+
const running = out.toLowerCase().includes('running') || out.toLowerCase().includes('up');
|
|
51
|
+
if (!running)
|
|
52
|
+
throw new Error('not running');
|
|
53
|
+
return 'running';
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: 'Container: nats',
|
|
58
|
+
run: async () => {
|
|
59
|
+
const result = await compose(['ps', 'nats'], { pipe: true });
|
|
60
|
+
const out = result.stdout ?? '';
|
|
61
|
+
const running = out.toLowerCase().includes('running') || out.toLowerCase().includes('up');
|
|
62
|
+
if (!running)
|
|
63
|
+
throw new Error('not running');
|
|
64
|
+
return 'running';
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
label: 'NATS KV Stores',
|
|
69
|
+
run: async () => {
|
|
70
|
+
const result = await composeExec('nats', ['nats', 'kv', 'ls'], { pipe: true });
|
|
71
|
+
const out = result.stdout ?? '';
|
|
72
|
+
const buckets = out.split('\n').filter(l => l.trim()).map(l => l.trim());
|
|
73
|
+
return buckets.length > 0 ? buckets.join(', ') : 'none';
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: 'NATS Object Store',
|
|
78
|
+
run: async () => {
|
|
79
|
+
const result = await composeExec('nats', ['nats', 'object', 'ls'], { pipe: true });
|
|
80
|
+
const out = result.stdout ?? '';
|
|
81
|
+
const stores = out.split('\n').filter(l => l.trim()).map(l => l.trim());
|
|
82
|
+
return stores.length > 0 ? stores.join(', ') : 'none';
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: 'Sidecar Health',
|
|
87
|
+
run: async () => {
|
|
88
|
+
const result = await composeExec('jtapi-sidecar', ['curl', '-sf', 'http://localhost:8080/actuator/health'], { pipe: true });
|
|
89
|
+
return (result.stdout ?? '').trim() || 'OK';
|
|
90
|
+
},
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
label: 'Web JTAPI Config',
|
|
94
|
+
run: async () => {
|
|
95
|
+
const result = await composeExec('web', ['env'], { pipe: true });
|
|
96
|
+
const out = result.stdout ?? '';
|
|
97
|
+
const vars = out.split('\n').filter(l => l.startsWith('JTAPI_'));
|
|
98
|
+
return vars.length > 0 ? vars.join(', ') : 'no JTAPI_ vars set';
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
export function JtapiTroubleshootView() {
|
|
103
|
+
const { exit } = useApp();
|
|
104
|
+
const { states, isDone, run } = useStepRunner(steps);
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
run();
|
|
107
|
+
}, [run]);
|
|
108
|
+
useEffect(() => {
|
|
109
|
+
if (isDone) {
|
|
110
|
+
exit();
|
|
111
|
+
}
|
|
112
|
+
}, [isDone, exit]);
|
|
113
|
+
const passed = states.filter(s => s.status === 'done').length;
|
|
114
|
+
const failed = states.filter(s => s.status === 'error').length;
|
|
115
|
+
const total = states.length;
|
|
116
|
+
return (_jsxs(AppShell, { command: "ct jtapi troubleshoot", children: [_jsx(Section, { title: "JTAPI Troubleshoot", children: _jsx(StepList, { steps: states }) }), isDone && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Divider, {}), _jsx(StatusLine, { status: failed === 0 ? 'ok' : 'warn', label: failed === 0
|
|
117
|
+
? `${passed}/${total} checks passed`
|
|
118
|
+
: `${passed}/${total} checks passed, ${failed} failed` })] }))] }));
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=JtapiTroubleshootView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiTroubleshootView.js","sourceRoot":"","sources":["../../../src/ui/views/JtapiTroubleshootView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
interface MainMenuProps {
|
|
2
|
+
version: string;
|
|
3
|
+
onSelect: (command: string) => void;
|
|
4
|
+
onExit: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function MainMenu({ version, onSelect, onExit }: MainMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=MainMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainMenu.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MainMenu.tsx"],"names":[],"mappings":"AA4GA,UAAU,aAAa;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,aAAa,2CAiBpE"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
import { AppShell, SelectMenu } from '../components/index.js';
|
|
4
|
+
const MENU_ITEMS = [
|
|
5
|
+
{
|
|
6
|
+
label: 'Status',
|
|
7
|
+
description: 'Show application status and health',
|
|
8
|
+
value: 'status',
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
label: 'Update',
|
|
12
|
+
description: 'Update to latest or specific version',
|
|
13
|
+
value: 'update',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
label: 'Database',
|
|
17
|
+
description: 'Backup, restore, compact, and inspect',
|
|
18
|
+
value: 'db',
|
|
19
|
+
children: [
|
|
20
|
+
{ label: 'Status', description: 'Show database status', value: 'db status' },
|
|
21
|
+
{ label: 'Backup', description: 'Create a database backup', value: 'db backup' },
|
|
22
|
+
{ label: 'Restore', description: 'Restore from backup', value: 'db restore' },
|
|
23
|
+
{ label: 'List', description: 'List available backups', value: 'db list' },
|
|
24
|
+
{ label: 'Compact', description: 'Vacuum and compact database', value: 'db compact' },
|
|
25
|
+
{ label: 'Tables', description: 'Show table sizes', value: 'db tables' },
|
|
26
|
+
{ label: 'Size', description: 'Show database size', value: 'db size' },
|
|
27
|
+
],
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
label: 'Migrate',
|
|
31
|
+
description: 'Database migration status and control',
|
|
32
|
+
value: 'migrate',
|
|
33
|
+
children: [
|
|
34
|
+
{ label: 'Status', description: 'Show migration status', value: 'migrate status' },
|
|
35
|
+
{ label: 'Run', description: 'Run pending migrations', value: 'migrate run' },
|
|
36
|
+
{ label: 'Rollback', description: 'Rollback last migration', value: 'migrate rollback' },
|
|
37
|
+
{ label: 'History', description: 'Show last 10 migrations', value: 'migrate history' },
|
|
38
|
+
{ label: 'Watch', description: 'Watch migration progress', value: 'migrate watch' },
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
label: 'Secrets',
|
|
43
|
+
description: 'Manage deployment secrets and credentials',
|
|
44
|
+
value: 'secrets',
|
|
45
|
+
children: [
|
|
46
|
+
{ label: 'Status', description: 'Show current secrets', value: 'secrets' },
|
|
47
|
+
{ label: 'Setup', description: 'Configure secrets wizard', value: 'secrets setup' },
|
|
48
|
+
{ label: 'Reset', description: 'Revert to defaults', value: 'secrets reset' },
|
|
49
|
+
],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
label: 'Config',
|
|
53
|
+
description: 'Logging, IPv6, PostgreSQL, certificates',
|
|
54
|
+
value: 'config',
|
|
55
|
+
children: [
|
|
56
|
+
{ label: 'Logging', description: 'Show or set logging level', value: 'logging' },
|
|
57
|
+
{ label: 'IPv6', description: 'Show or toggle IPv6 support', value: 'ipv6' },
|
|
58
|
+
{ label: 'PostgreSQL', description: 'PostgreSQL version management', value: 'postgres' },
|
|
59
|
+
{ label: 'Certificates', description: 'Certificate management', value: 'certs' },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: 'Docker',
|
|
64
|
+
description: 'Container status, cleanup, networking',
|
|
65
|
+
value: 'docker',
|
|
66
|
+
children: [
|
|
67
|
+
{ label: 'Status', description: 'Docker container status', value: 'docker status' },
|
|
68
|
+
{ label: 'Prune', description: 'Docker cleanup', value: 'docker prune' },
|
|
69
|
+
{ label: 'Network', description: 'Docker network config', value: 'docker network' },
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
label: 'Diagnostics',
|
|
74
|
+
description: 'Network, service, and database checks',
|
|
75
|
+
value: 'diag',
|
|
76
|
+
children: [
|
|
77
|
+
{ label: 'Network', description: 'Comprehensive network diagnostics', value: 'diag network' },
|
|
78
|
+
{ label: 'Service', description: 'Systemd service and container logs', value: 'diag service' },
|
|
79
|
+
{ label: 'Database', description: 'Database health and performance', value: 'diag database' },
|
|
80
|
+
{ label: 'Tesla', description: 'TCP + HTTP connectivity test', value: 'diag tesla' },
|
|
81
|
+
{ label: 'Capture', description: 'Packet capture with tcpdump', value: 'diag capture' },
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
label: 'JTAPI',
|
|
86
|
+
description: 'Phone control sidecar management',
|
|
87
|
+
value: 'jtapi',
|
|
88
|
+
children: [
|
|
89
|
+
{ label: 'Enable', description: 'Enable JTAPI sidecar', value: 'jtapi enable' },
|
|
90
|
+
{ label: 'Disable', description: 'Disable JTAPI sidecar', value: 'jtapi disable' },
|
|
91
|
+
{ label: 'Status', description: 'Show JTAPI status', value: 'jtapi status' },
|
|
92
|
+
{ label: 'Troubleshoot', description: 'Comprehensive JTAPI diagnostics', value: 'jtapi troubleshoot' },
|
|
93
|
+
],
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
label: 'Offline',
|
|
97
|
+
description: 'Air-gapped update bundle management',
|
|
98
|
+
value: 'offline',
|
|
99
|
+
children: [
|
|
100
|
+
{ label: 'Fetch', description: 'Download pre-built config bundle', value: 'offline fetch' },
|
|
101
|
+
{ label: 'Download', description: 'Build full offline bundle', value: 'offline download' },
|
|
102
|
+
{ label: 'Apply', description: 'Apply offline bundle', value: 'offline apply' },
|
|
103
|
+
{ label: 'List', description: 'List images in docker-compose.yml', value: 'offline list' },
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
export function MainMenu({ version, onSelect, onExit }) {
|
|
108
|
+
return (_jsxs(AppShell, { title: `CallTelemetry CLI v${version}`, children: [_jsxs(Box, { flexDirection: "column", paddingLeft: 2, children: [_jsx(Text, { children: "What would you like to do?" }), _jsx(Text, { children: ' ' })] }), _jsx(SelectMenu, { items: MENU_ITEMS, onSelect: (item) => onSelect(item.value), onExit: onExit }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: '↑↓ Navigate Enter Select q Quit' }) })] }));
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=MainMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainMenu.js","sourceRoot":"","sources":["../../../src/ui/views/MainMenu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateHistoryView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateHistoryView.tsx"],"names":[],"mappings":"AAOA,wBAAgB,kBAAkB,4CAoCjC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { composeExec } from '../../lib/compose.js';
|
|
5
|
+
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
6
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
+
export function MigrateHistoryView() {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const historyTask = useAsyncTask(async () => {
|
|
11
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c',
|
|
12
|
+
'SELECT version, inserted_at FROM schema_migrations ORDER BY version DESC LIMIT 10;'], { env: PG_ENV, pipe: true });
|
|
13
|
+
return (result.stdout ?? '').trim();
|
|
14
|
+
});
|
|
15
|
+
const countTask = useAsyncTask(async () => {
|
|
16
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c',
|
|
17
|
+
'SELECT COUNT(*) as total_migrations FROM schema_migrations;'], { env: PG_ENV, pipe: true });
|
|
18
|
+
return (result.stdout ?? '').trim();
|
|
19
|
+
});
|
|
20
|
+
const allDone = [historyTask, countTask].every(t => t.status === 'done' || t.status === 'error');
|
|
21
|
+
useEffect(() => { if (allDone)
|
|
22
|
+
exit(); }, [allDone, exit]);
|
|
23
|
+
return (_jsxs(AppShell, { command: "ct migrate history", children: [_jsxs(Section, { title: "Last 10 Applied Migrations", children: [historyTask.status === 'pending' && _jsx(Spinner, { label: "Querying migrations..." }), historyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Query failed" }), historyTask.status === 'done' && historyTask.data && _jsx(ShellOutput, { content: historyTask.data })] }), _jsxs(Section, { title: "Migration Count", children: [countTask.status === 'pending' && _jsx(Spinner, { label: "Counting..." }), countTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: "Query failed" }), countTask.status === 'done' && countTask.data && _jsx(ShellOutput, { content: countTask.data })] })] }));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=MigrateHistoryView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateHistoryView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateHistoryView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,kBAAkB;IAChC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EACnC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAC1C,oFAAoF,CAAC,EACtF,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACxC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EACnC,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;YAC1C,6DAA6D,CAAC,EAC/D,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACjG,SAAS,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO;QAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAE3D,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,oBAAoB,aACpC,MAAC,OAAO,IAAC,KAAK,EAAC,4BAA4B,aACxC,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,wBAAwB,GAAG,EAC9E,WAAW,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,cAAc,GAAG,EACnF,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,WAAW,CAAC,IAAI,GAAI,IACxF,EACV,MAAC,OAAO,IAAC,KAAK,EAAC,iBAAiB,aAC7B,SAAS,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,aAAa,GAAG,EACjE,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,cAAc,GAAG,EACjF,SAAS,CAAC,MAAM,KAAK,MAAM,IAAI,SAAS,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,SAAS,CAAC,IAAI,GAAI,IAClF,IACD,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateRollbackView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateRollbackView.tsx"],"names":[],"mappings":"AAOA,UAAU,wBAAwB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,KAAS,EAAE,EAAE,wBAAwB,2CAqD1E"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import { useApp } from 'ink';
|
|
4
|
+
import { composePs } from '../../lib/compose.js';
|
|
5
|
+
import { rpc, rpcOk } from '../../lib/rpc.js';
|
|
6
|
+
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
+
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
+
export function MigrateRollbackView({ steps = 1 }) {
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
const readyTask = useAsyncTask(async () => {
|
|
11
|
+
const container = await composePs('web');
|
|
12
|
+
if (!container)
|
|
13
|
+
throw new Error('Web container not found or not running.');
|
|
14
|
+
if (!await rpcOk())
|
|
15
|
+
throw new Error('Cannot connect to application via RPC. It may still be starting up.');
|
|
16
|
+
return true;
|
|
17
|
+
});
|
|
18
|
+
const rollbackTask = useAsyncTask(async () => {
|
|
19
|
+
const output = await rpc(`
|
|
20
|
+
IO.puts("=== Rolling Back Migrations ===")
|
|
21
|
+
try do
|
|
22
|
+
result = Ecto.Migrator.run(Cdrcisco.Repo, :down, step: ${steps})
|
|
23
|
+
case result do
|
|
24
|
+
[] -> IO.puts("No migrations to rollback.")
|
|
25
|
+
migrations ->
|
|
26
|
+
IO.puts("Successfully rolled back \#{length(migrations)} migrations:")
|
|
27
|
+
for {status, version, name} <- migrations do
|
|
28
|
+
IO.puts(" \#{status} \#{version} \#{name}")
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
IO.puts("")
|
|
32
|
+
IO.puts("Migration rollback completed successfully!")
|
|
33
|
+
rescue
|
|
34
|
+
e -> IO.puts("Error rolling back migrations: \#{inspect(e)}")
|
|
35
|
+
end
|
|
36
|
+
`);
|
|
37
|
+
return output;
|
|
38
|
+
}, false);
|
|
39
|
+
// Chain: run rollback after ready check passes
|
|
40
|
+
useEffect(() => {
|
|
41
|
+
if (readyTask.status === 'done')
|
|
42
|
+
rollbackTask.run();
|
|
43
|
+
}, [readyTask.status]);
|
|
44
|
+
// Exit when done or on error
|
|
45
|
+
const allDone = readyTask.status === 'error' || rollbackTask.status === 'done' || rollbackTask.status === 'error';
|
|
46
|
+
useEffect(() => { if (allDone)
|
|
47
|
+
exit(); }, [allDone, exit]);
|
|
48
|
+
return (_jsx(AppShell, { command: "ct migrate rollback", children: _jsxs(Section, { title: `Rollback Migrations (${steps} step${steps === 1 ? '' : 's'})`, children: [readyTask.status === 'pending' && _jsx(Spinner, { label: "Checking web container..." }), readyTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: readyTask.error?.message ?? 'Web container not ready' }), readyTask.status === 'done' && rollbackTask.status === 'pending' && _jsx(Spinner, { label: `Rolling back ${steps} migration${steps === 1 ? '' : 's'}...` }), rollbackTask.status === 'error' && _jsx(StatusLine, { status: "fail", label: rollbackTask.error?.message ?? 'Migration rollback failed' }), rollbackTask.status === 'done' && rollbackTask.data && _jsx(ShellOutput, { content: rollbackTask.data }), rollbackTask.status === 'done' && _jsx(StatusLine, { status: "ok", label: "Migration rollback completed" })] }) }));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=MigrateRollbackView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateRollbackView.js","sourceRoot":"","sources":["../../../src/ui/views/MigrateRollbackView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MigrateRunView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/MigrateRunView.tsx"],"names":[],"mappings":"AAOA,wBAAgB,cAAc,4CAqD7B"}
|