@calltelemetry/cli 0.3.8 → 0.4.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/README.md +13 -1
- package/dist/commands/diag.d.ts.map +1 -1
- package/dist/commands/diag.js +7 -0
- package/dist/commands/diag.js.map +1 -1
- package/dist/commands/jtapi.d.ts.map +1 -1
- package/dist/commands/jtapi.js +10 -9
- package/dist/commands/jtapi.js.map +1 -1
- package/dist/commands/secrets.d.ts.map +1 -1
- package/dist/commands/secrets.js +12 -0
- package/dist/commands/secrets.js.map +1 -1
- package/dist/commands/users.d.ts +3 -0
- package/dist/commands/users.d.ts.map +1 -0
- package/dist/commands/users.js +24 -0
- package/dist/commands/users.js.map +1 -0
- package/dist/index.js +6 -3
- package/dist/index.js.map +1 -1
- package/dist/lib/compose.d.ts.map +1 -1
- package/dist/lib/compose.js +1 -3
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/env.d.ts +14 -0
- package/dist/lib/env.d.ts.map +1 -0
- package/dist/lib/env.js +74 -0
- package/dist/lib/env.js.map +1 -0
- package/dist/lib/jtapi.d.ts +67 -2
- package/dist/lib/jtapi.d.ts.map +1 -1
- package/dist/lib/jtapi.js +261 -14
- package/dist/lib/jtapi.js.map +1 -1
- package/dist/lib/paths.d.ts +1 -1
- package/dist/lib/paths.d.ts.map +1 -1
- package/dist/lib/paths.js +1 -1
- package/dist/lib/paths.js.map +1 -1
- package/dist/lib/redact.d.ts +10 -0
- package/dist/lib/redact.d.ts.map +1 -0
- package/dist/lib/redact.js +45 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/secrets.d.ts +16 -1
- package/dist/lib/secrets.d.ts.map +1 -1
- package/dist/lib/secrets.js +48 -1
- package/dist/lib/secrets.js.map +1 -1
- package/dist/lib/showtech-steps.d.ts +7 -0
- package/dist/lib/showtech-steps.d.ts.map +1 -0
- package/dist/lib/showtech-steps.js +351 -0
- package/dist/lib/showtech-steps.js.map +1 -0
- package/dist/lib/users.d.ts +33 -0
- package/dist/lib/users.d.ts.map +1 -0
- package/dist/lib/users.js +67 -0
- package/dist/lib/users.js.map +1 -0
- package/dist/ui/components/AppShell.d.ts +3 -1
- package/dist/ui/components/AppShell.d.ts.map +1 -1
- package/dist/ui/components/AppShell.js +5 -2
- package/dist/ui/components/AppShell.js.map +1 -1
- package/dist/ui/components/MetricsFooter.d.ts +7 -0
- package/dist/ui/components/MetricsFooter.d.ts.map +1 -0
- package/dist/ui/components/MetricsFooter.js +36 -0
- package/dist/ui/components/MetricsFooter.js.map +1 -0
- package/dist/ui/components/index.d.ts +1 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +1 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/context/MetricsContext.d.ts +7 -0
- package/dist/ui/context/MetricsContext.d.ts.map +1 -0
- package/dist/ui/context/MetricsContext.js +13 -0
- package/dist/ui/context/MetricsContext.js.map +1 -0
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
- package/dist/ui/views/DiagDatabaseView.js +36 -28
- package/dist/ui/views/DiagDatabaseView.js.map +1 -1
- package/dist/ui/views/DiagServiceView.d.ts.map +1 -1
- package/dist/ui/views/DiagServiceView.js +29 -18
- package/dist/ui/views/DiagServiceView.js.map +1 -1
- package/dist/ui/views/DiagShowTechView.d.ts +6 -0
- package/dist/ui/views/DiagShowTechView.d.ts.map +1 -0
- package/dist/ui/views/DiagShowTechView.js +68 -0
- package/dist/ui/views/DiagShowTechView.js.map +1 -0
- package/dist/ui/views/JtapiView.d.ts +7 -0
- package/dist/ui/views/JtapiView.d.ts.map +1 -0
- package/dist/ui/views/JtapiView.js +405 -0
- package/dist/ui/views/JtapiView.js.map +1 -0
- package/dist/ui/views/MainMenu.d.ts.map +1 -1
- package/dist/ui/views/MainMenu.js +25 -22
- package/dist/ui/views/MainMenu.js.map +1 -1
- package/dist/ui/views/SecretsResetPasswordView.d.ts +11 -0
- package/dist/ui/views/SecretsResetPasswordView.d.ts.map +1 -0
- package/dist/ui/views/SecretsResetPasswordView.js +205 -0
- package/dist/ui/views/SecretsResetPasswordView.js.map +1 -0
- package/dist/ui/views/UserResetPasswordView.d.ts +10 -0
- package/dist/ui/views/UserResetPasswordView.d.ts.map +1 -0
- package/dist/ui/views/UserResetPasswordView.js +220 -0
- package/dist/ui/views/UserResetPasswordView.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { SystemMetrics } from '../../lib/system.js';
|
|
3
|
+
export declare function MetricsProvider({ children }: {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export declare function useMetrics(): SystemMetrics | undefined;
|
|
7
|
+
//# sourceMappingURL=MetricsContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsContext.d.ts","sourceRoot":"","sources":["../../../src/ui/context/MetricsContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoC,MAAM,OAAO,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQzD,wBAAgB,eAAe,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,2CAO1E;AAED,wBAAgB,UAAU,IAAI,aAAa,GAAG,SAAS,CAEtD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useContext } from 'react';
|
|
3
|
+
import { usePolling } from '../hooks/usePolling.js';
|
|
4
|
+
import { getSystemMetrics } from '../../lib/system.js';
|
|
5
|
+
const MetricsContext = createContext({ metrics: undefined });
|
|
6
|
+
export function MetricsProvider({ children }) {
|
|
7
|
+
const { data: metrics } = usePolling(getSystemMetrics, 10_000, true);
|
|
8
|
+
return (_jsx(MetricsContext.Provider, { value: { metrics }, children: children }));
|
|
9
|
+
}
|
|
10
|
+
export function useMetrics() {
|
|
11
|
+
return useContext(MetricsContext).metrics;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=MetricsContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricsContext.js","sourceRoot":"","sources":["../../../src/ui/context/MetricsContext.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAOvD,MAAM,cAAc,GAAG,aAAa,CAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAElF,MAAM,UAAU,eAAe,CAAC,EAAE,QAAQ,EAAiC;IACzE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,UAAU,CAAgB,gBAAgB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IACpF,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,OAAO,EAAE,YACxC,QAAQ,GACe,CAC3B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC;AAC5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagDatabaseView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DiagDatabaseView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":"AAmBA,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAwGjE"}
|
|
@@ -1,25 +1,27 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
2
3
|
import { Box, Text } from 'ink';
|
|
3
4
|
import { execa } from 'execa';
|
|
4
5
|
import { composeExec } from '../../lib/compose.js';
|
|
5
6
|
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
6
7
|
import { AppShell, Section, DataTable, Spinner, StatusLine } from '../components/index.js';
|
|
7
|
-
import { useAsyncTask } from '../hooks/index.js';
|
|
8
|
-
import { parsePsqlTable } from '../../utils/parsePsql.js';
|
|
9
8
|
import { parseDockerTable } from '../../utils/parseDocker.js';
|
|
9
|
+
import { parsePsqlTable } from '../../utils/parsePsql.js';
|
|
10
10
|
export function DiagDatabaseView({ onBack }) {
|
|
11
|
-
|
|
12
|
-
const
|
|
11
|
+
const [phase, setPhase] = useState('loading');
|
|
12
|
+
const [statsData, setStatsData] = useState(null);
|
|
13
|
+
const [queryResults, setQueryResults] = useState(null);
|
|
14
|
+
const [queryError, setQueryError] = useState(null);
|
|
15
|
+
const runAll = useCallback(async () => {
|
|
16
|
+
// Run docker stats
|
|
13
17
|
try {
|
|
14
18
|
const { stdout } = await execa('docker', ['stats', '--no-stream'], { stdout: 'pipe', stderr: 'pipe' });
|
|
15
|
-
|
|
19
|
+
setStatsData({ table: parseDockerTable(stdout.trim()) });
|
|
16
20
|
}
|
|
17
21
|
catch (err) {
|
|
18
|
-
|
|
22
|
+
setStatsData({ table: null, error: err.stderr?.trim() || err.message || 'Docker stats not available' });
|
|
19
23
|
}
|
|
20
|
-
|
|
21
|
-
// All SQL queries
|
|
22
|
-
const queriesTask = useAsyncTask(async () => {
|
|
24
|
+
// Run all SQL queries
|
|
23
25
|
const queries = [
|
|
24
26
|
['Active Running Queries', `SELECT pid, now() - pg_stat_activity.query_start AS duration, query, state, wait_event_type FROM pg_stat_activity WHERE state <> 'idle' AND query NOT ILIKE '%pg_stat_activity%' ORDER BY duration DESC LIMIT 20;`],
|
|
25
27
|
['Connection Count by State', `SELECT count(*) as total_connections, state, usename FROM pg_stat_activity GROUP BY state, usename ORDER BY count(*) DESC;`],
|
|
@@ -29,26 +31,32 @@ export function DiagDatabaseView({ onBack }) {
|
|
|
29
31
|
['Active MV Refreshes, Index Builds, Vacuum', `SELECT pid, now() - query_start AS duration, state, LEFT(query, 80) as operation FROM pg_stat_activity WHERE query ILIKE '%REFRESH MATERIALIZED%' OR query ILIKE '%CREATE INDEX%' OR query ILIKE '%VACUUM%' OR query ILIKE '%ANALYZE%';`],
|
|
30
32
|
['Materialized Views', `SELECT matviewname, hasindexes, ispopulated FROM pg_matviews ORDER BY matviewname;`],
|
|
31
33
|
];
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
34
|
+
try {
|
|
35
|
+
const results = [];
|
|
36
|
+
for (const [title, query] of queries) {
|
|
37
|
+
try {
|
|
38
|
+
const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', query], { env: PG_ENV, pipe: true });
|
|
39
|
+
results.push({ title, table: parsePsqlTable((result.stdout ?? '').trim()) });
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
const errorMessage = err.stderr?.trim() || err.message || 'Query failed';
|
|
43
|
+
results.push({ title, table: { columns: [], rows: [] }, error: true, errorMessage });
|
|
44
|
+
}
|
|
41
45
|
}
|
|
46
|
+
setQueryResults(results);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
setQueryError(err.message || 'Database diagnostics failed');
|
|
42
50
|
}
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
return (_jsxs(AppShell, { command: "ct diag database", onBack: onBack, isComplete:
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
setPhase('done');
|
|
52
|
+
}, []);
|
|
53
|
+
useEffect(() => { runAll(); }, [runAll]);
|
|
54
|
+
return (_jsxs(AppShell, { command: "ct diag database", onBack: onBack, isComplete: phase === 'done', children: [phase === 'loading' && (_jsx(Section, { title: "Database Assessment", children: _jsx(Spinner, { label: "Running database diagnostics..." }) })), phase === 'done' && (_jsxs(_Fragment, { children: [_jsxs(Section, { title: "Container CPU/Memory Usage", children: [!statsData && _jsx(StatusLine, { status: "warn", label: "Docker stats not available" }), statsData?.table === null && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "warn", label: "Docker stats not available" }), statsData.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: statsData.error }) }))] })), statsData?.table && (statsData.table.rows.length > 0
|
|
55
|
+
? _jsx(DataTable, { columns: statsData.table.columns, rows: statsData.table.rows })
|
|
56
|
+
: _jsx(StatusLine, { status: "ok", label: "No containers running" }))] }), queryError && (_jsxs(Section, { title: "Database Queries", children: [_jsx(StatusLine, { status: "fail", label: "Database diagnostics failed" }), _jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: queryError }) })] })), queryResults && queryResults.map((result, i) => (_jsx(Section, { title: result.title, children: result.error
|
|
57
|
+
? (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Query failed" }), result.errorMessage && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: result.errorMessage }) }))] }))
|
|
58
|
+
: result.table.rows.length > 0
|
|
59
|
+
? _jsx(DataTable, { columns: result.table.columns, rows: result.table.rows })
|
|
60
|
+
: _jsx(StatusLine, { status: "ok", label: "None found" }) }, i)))] }))] }));
|
|
53
61
|
}
|
|
54
62
|
//# sourceMappingURL=DiagDatabaseView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagDatabaseView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DiagDatabaseView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagServiceView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DiagServiceView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":"AAaA,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAuF/D"}
|
|
@@ -1,33 +1,44 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
2
3
|
import { Box, Text } from 'ink';
|
|
3
4
|
import { execa } from 'execa';
|
|
4
5
|
import { compose } from '../../lib/compose.js';
|
|
5
6
|
import { AppShell, Section, ShellOutput, Spinner, StatusLine } from '../components/index.js';
|
|
6
|
-
import { useAsyncTask } from '../hooks/index.js';
|
|
7
7
|
export function DiagServiceView({ onBack }) {
|
|
8
|
-
|
|
9
|
-
const
|
|
8
|
+
const [phase, setPhase] = useState('loading');
|
|
9
|
+
const [systemdData, setSystemdData] = useState(null);
|
|
10
|
+
const [webData, setWebData] = useState(null);
|
|
11
|
+
const [dbData, setDbData] = useState(null);
|
|
12
|
+
const runAll = useCallback(async () => {
|
|
13
|
+
// Systemd logs
|
|
10
14
|
try {
|
|
11
15
|
const { stdout } = await execa('sudo', [
|
|
12
16
|
'journalctl', '-u', 'docker-compose-app.service', '-n', '50', '--no-pager'
|
|
13
17
|
], { stdout: 'pipe', stderr: 'pipe' });
|
|
14
|
-
|
|
18
|
+
setSystemdData({ logs: stdout });
|
|
15
19
|
}
|
|
16
20
|
catch (err) {
|
|
17
|
-
|
|
21
|
+
setSystemdData({ logs: null, error: err.stderr?.trim() || err.message || 'Systemd logs not available' });
|
|
18
22
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
// Web container logs
|
|
24
|
+
try {
|
|
25
|
+
const result = await compose(['logs', '--tail=50', 'web'], { pipe: true });
|
|
26
|
+
setWebData({ logs: result.stdout ?? '' });
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
setWebData({ logs: null, error: err.stderr?.trim() || err.message || 'Could not fetch web logs' });
|
|
30
|
+
}
|
|
31
|
+
// DB container logs
|
|
32
|
+
try {
|
|
33
|
+
const result = await compose(['logs', '--tail=50', 'db'], { pipe: true });
|
|
34
|
+
setDbData({ logs: result.stdout ?? '' });
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
setDbData({ logs: null, error: err.stderr?.trim() || err.message || 'Could not fetch database logs' });
|
|
38
|
+
}
|
|
39
|
+
setPhase('done');
|
|
40
|
+
}, []);
|
|
41
|
+
useEffect(() => { runAll(); }, [runAll]);
|
|
42
|
+
return (_jsxs(AppShell, { command: "ct diag service", onBack: onBack, isComplete: phase === 'done', children: [phase === 'loading' && (_jsx(Section, { title: "Service Diagnostics", children: _jsx(Spinner, { label: "Collecting service logs..." }) })), phase === 'done' && (_jsxs(_Fragment, { children: [_jsxs(Section, { title: "Systemd Service Logs (Last 50 lines)", children: [systemdData?.logs === null && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "warn", label: "Systemd logs not available" }), systemdData?.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: systemdData.error }) }))] })), systemdData?.logs && _jsx(ShellOutput, { content: systemdData.logs })] }), _jsxs(Section, { title: "Web Container (Last 50 lines)", children: [webData?.logs === null && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Could not fetch web logs" }), webData?.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: webData.error }) }))] })), webData?.logs && _jsx(ShellOutput, { content: webData.logs })] }), _jsxs(Section, { title: "Database Container (Last 50 lines)", children: [dbData?.logs === null && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Could not fetch database logs" }), dbData?.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: dbData.error }) }))] })), dbData?.logs && _jsx(ShellOutput, { content: dbData.logs })] })] }))] }));
|
|
32
43
|
}
|
|
33
44
|
//# sourceMappingURL=DiagServiceView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagServiceView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"DiagServiceView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagShowTechView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/DiagShowTechView.tsx"],"names":[],"mappings":"AAWA,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAeD,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAsFjE"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect, useMemo } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { AppShell, Section, StepList, StatusBox } from '../components/index.js';
|
|
6
|
+
import { useStepRunner, useLogLevel } from '../hooks/index.js';
|
|
7
|
+
import { showtechSteps } from '../../lib/showtech-steps.js';
|
|
8
|
+
import { getPaths } from '../../lib/paths.js';
|
|
9
|
+
function timestamp() {
|
|
10
|
+
const d = new Date();
|
|
11
|
+
return [
|
|
12
|
+
d.getFullYear(),
|
|
13
|
+
String(d.getMonth() + 1).padStart(2, '0'),
|
|
14
|
+
String(d.getDate()).padStart(2, '0'),
|
|
15
|
+
'-',
|
|
16
|
+
String(d.getHours()).padStart(2, '0'),
|
|
17
|
+
String(d.getMinutes()).padStart(2, '0'),
|
|
18
|
+
String(d.getSeconds()).padStart(2, '0'),
|
|
19
|
+
].join('');
|
|
20
|
+
}
|
|
21
|
+
export function DiagShowTechView({ onBack }) {
|
|
22
|
+
const { installDir } = getPaths();
|
|
23
|
+
const bundleDir = useMemo(() => join(installDir, `ct-showtech-${timestamp()}`), [installDir]);
|
|
24
|
+
const steps = useMemo(() => showtechSteps(bundleDir), [bundleDir]);
|
|
25
|
+
const runner = useStepRunner(steps);
|
|
26
|
+
const { level: logLevel, cycle: cycleLogLevel } = useLogLevel();
|
|
27
|
+
const [phase, setPhase] = useState('running');
|
|
28
|
+
const [error, setError] = useState(null);
|
|
29
|
+
// Start collection immediately
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
runner.run();
|
|
32
|
+
}, []); // eslint-disable-line react-hooks/exhaustive-deps
|
|
33
|
+
// Track completion
|
|
34
|
+
useEffect(() => {
|
|
35
|
+
if (phase !== 'running')
|
|
36
|
+
return;
|
|
37
|
+
if (runner.isDone)
|
|
38
|
+
setPhase('done');
|
|
39
|
+
const failed = runner.states.find(s => s.status === 'error');
|
|
40
|
+
if (failed) {
|
|
41
|
+
setError(failed.detail ?? 'Collection failed');
|
|
42
|
+
setPhase('error');
|
|
43
|
+
}
|
|
44
|
+
}, [phase, runner.isDone, runner.states]);
|
|
45
|
+
useInput((input, key) => {
|
|
46
|
+
if (input === 'd' && phase === 'running') {
|
|
47
|
+
cycleLogLevel();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (phase === 'done' || phase === 'error') {
|
|
51
|
+
if (input === 'q' || key.escape || key.leftArrow)
|
|
52
|
+
onBack?.();
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const isComplete = phase === 'done' || phase === 'error';
|
|
56
|
+
// Get archive path from last step detail
|
|
57
|
+
const archiveDetail = runner.states[runner.states.length - 1]?.detail;
|
|
58
|
+
return (_jsxs(AppShell, { command: "ct diag showtech", onBack: onBack, isComplete: isComplete, logLevel: logLevel, children: [phase === 'running' && (_jsxs(Section, { title: "Collecting Support Bundle", children: [_jsx(StepList, { steps: runner.states, expanded: logLevel !== 'normal' }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "d Log Level" }) })] })), phase === 'done' && (_jsxs(_Fragment, { children: [_jsx(Section, { title: "Collecting Support Bundle", children: _jsx(StepList, { steps: runner.states }) }), _jsx(Box, { paddingLeft: 2, marginTop: 1, children: _jsx(StatusBox, { variant: "success", title: "Support Bundle Ready", lines: [
|
|
59
|
+
archiveDetail ?? `${bundleDir}.tar.gz`,
|
|
60
|
+
'',
|
|
61
|
+
'Share this file with CallTelemetry support.',
|
|
62
|
+
'Sensitive values have been automatically redacted.',
|
|
63
|
+
] }) })] })), phase === 'error' && (_jsxs(_Fragment, { children: [_jsx(Section, { title: "Collecting Support Bundle", children: _jsx(StepList, { steps: runner.states, expanded: true }) }), _jsx(Box, { paddingLeft: 2, marginTop: 1, children: _jsx(StatusBox, { variant: "error", title: "Collection Failed", lines: [
|
|
64
|
+
error ?? 'Unknown error',
|
|
65
|
+
'A partial bundle may have been created.',
|
|
66
|
+
] }) }), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: "q Back" }) })] }))] }));
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=DiagShowTechView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiagShowTechView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagShowTechView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface JtapiViewProps {
|
|
2
|
+
onBack?: () => void;
|
|
3
|
+
initialAction?: 'enable' | 'disable' | 'status' | 'troubleshoot';
|
|
4
|
+
}
|
|
5
|
+
export declare function JtapiView({ onBack, initialAction }: JtapiViewProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=JtapiView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JtapiView.d.ts","sourceRoot":"","sources":["../../../src/ui/views/JtapiView.tsx"],"names":[],"mappings":"AAkBA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;CAClE;AAED,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,cAAc,kDAogBlE"}
|