@calltelemetry/cli 0.3.9 → 0.4.1
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/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/index.js +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/rpc.d.ts +2 -0
- package/dist/lib/rpc.d.ts.map +1 -1
- package/dist/lib/rpc.js +27 -7
- package/dist/lib/rpc.js.map +1 -1
- package/dist/lib/secrets.d.ts +2 -1
- package/dist/lib/secrets.d.ts.map +1 -1
- package/dist/lib/secrets.js +16 -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/ui/components/TabBar.d.ts +12 -0
- package/dist/ui/components/TabBar.d.ts.map +1 -0
- package/dist/ui/components/TabBar.js +9 -0
- package/dist/ui/components/TabBar.js.map +1 -0
- package/dist/ui/components/index.d.ts +2 -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/views/DiagDatabaseView.d.ts.map +1 -1
- package/dist/ui/views/DiagDatabaseView.js +126 -38
- package/dist/ui/views/DiagDatabaseView.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 +407 -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 +16 -16
- package/dist/ui/views/MainMenu.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,62 +1,150 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { useState, useEffect, useCallback } from 'react';
|
|
3
|
-
import { Box, Text } from 'ink';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
4
|
import { execa } from 'execa';
|
|
5
5
|
import { composeExec } from '../../lib/compose.js';
|
|
6
|
+
import { rpcOk } from '../../lib/rpc.js';
|
|
6
7
|
import { DB_USER, DB_NAME, PG_ENV } from '../../lib/db.js';
|
|
7
|
-
import { AppShell, Section, DataTable, Spinner, StatusLine } from '../components/index.js';
|
|
8
|
+
import { AppShell, Section, DataTable, Spinner, StatusLine, TabBar } from '../components/index.js';
|
|
8
9
|
import { parseDockerTable } from '../../utils/parseDocker.js';
|
|
9
10
|
import { parsePsqlTable } from '../../utils/parsePsql.js';
|
|
11
|
+
/** Wrap a promise with a timeout. */
|
|
12
|
+
function withTimeout(promise, ms) {
|
|
13
|
+
return Promise.race([
|
|
14
|
+
promise,
|
|
15
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error(`Timed out after ${ms}ms`)), ms)),
|
|
16
|
+
]);
|
|
17
|
+
}
|
|
18
|
+
const QUERY_TIMEOUT = 10_000;
|
|
19
|
+
/** Query indices — Overview=0-2, Queries=3-5, Performance=6-10 */
|
|
20
|
+
const QUERY_DEFS = [
|
|
21
|
+
// Overview
|
|
22
|
+
{ title: 'Connection Summary', sql: `SELECT count(*) as total_connections, state FROM pg_stat_activity GROUP BY state ORDER BY count(*) DESC;`, tab: 'overview' },
|
|
23
|
+
{ title: 'Migration Count', sql: `SELECT COUNT(*) as total FROM schema_migrations;`, tab: 'overview' },
|
|
24
|
+
{ title: 'PostgreSQL Version', sql: `SELECT version();`, tab: 'overview' },
|
|
25
|
+
// Queries
|
|
26
|
+
{ title: 'Active Running Queries', sql: `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;`, tab: 'queries' },
|
|
27
|
+
{ title: 'Blocked Queries (lock contention)', sql: `SELECT blocked_locks.pid AS blocked_pid, blocking_locks.pid AS blocking_pid, LEFT(blocked_activity.query,50) AS blocked_stmt FROM pg_catalog.pg_locks blocked_locks JOIN pg_catalog.pg_stat_activity blocked_activity ON blocked_activity.pid = blocked_locks.pid JOIN pg_catalog.pg_locks blocking_locks ON blocking_locks.locktype = blocked_locks.locktype AND blocking_locks.database IS NOT DISTINCT FROM blocked_locks.database AND blocking_locks.relation IS NOT DISTINCT FROM blocked_locks.relation AND blocking_locks.pid <> blocked_locks.pid JOIN pg_catalog.pg_stat_activity blocking_activity ON blocking_activity.pid = blocking_locks.pid WHERE NOT blocked_locks.granted;`, tab: 'queries' },
|
|
28
|
+
{ title: 'Active MV Refreshes, Index Builds, Vacuum', sql: `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%';`, tab: 'queries' },
|
|
29
|
+
// Performance
|
|
30
|
+
{ title: 'Connection Count by State', sql: `SELECT count(*) as total_connections, state, usename FROM pg_stat_activity GROUP BY state, usename ORDER BY count(*) DESC;`, tab: 'performance' },
|
|
31
|
+
{ title: 'Tables with High Sequential Scans', sql: `SELECT relname, seq_scan, idx_scan, n_tup_ins, n_tup_upd, n_tup_del FROM pg_stat_user_tables ORDER BY seq_scan DESC LIMIT 15;`, tab: 'performance' },
|
|
32
|
+
{ title: 'Dead Tuples (needs vacuum)', sql: `SELECT relname, n_dead_tup, n_live_tup, last_vacuum, last_autovacuum FROM pg_stat_user_tables WHERE n_dead_tup > 1000 ORDER BY n_dead_tup DESC LIMIT 10;`, tab: 'performance' },
|
|
33
|
+
{ title: 'Materialized Views', sql: `SELECT matviewname, hasindexes, ispopulated FROM pg_matviews ORDER BY matviewname;`, tab: 'performance' },
|
|
34
|
+
{ title: 'Extensions', sql: `SELECT extname, extversion FROM pg_extension ORDER BY extname;`, tab: 'performance' },
|
|
35
|
+
];
|
|
10
36
|
export function DiagDatabaseView({ onBack }) {
|
|
11
37
|
const [phase, setPhase] = useState('loading');
|
|
38
|
+
const [activeTab, setActiveTab] = useState(0);
|
|
39
|
+
// Health badges
|
|
40
|
+
const [pgReady, setPgReady] = useState(null);
|
|
41
|
+
const [pgReadyError, setPgReadyError] = useState();
|
|
42
|
+
const [appPool, setAppPool] = useState(null);
|
|
43
|
+
const [appPoolError, setAppPoolError] = useState();
|
|
44
|
+
// Docker stats (db container only)
|
|
12
45
|
const [statsData, setStatsData] = useState(null);
|
|
13
|
-
|
|
14
|
-
const [
|
|
46
|
+
// All query results indexed by title
|
|
47
|
+
const [queryResults, setQueryResults] = useState([]);
|
|
48
|
+
// Badge counts derived from results
|
|
49
|
+
const [blockedCount, setBlockedCount] = useState(0);
|
|
50
|
+
const [deadTupleCount, setDeadTupleCount] = useState(0);
|
|
51
|
+
const [activeRefreshCount, setActiveRefreshCount] = useState(0);
|
|
15
52
|
const runAll = useCallback(async () => {
|
|
16
|
-
//
|
|
53
|
+
// 1. pg_isready (direct)
|
|
54
|
+
(async () => {
|
|
55
|
+
try {
|
|
56
|
+
await withTimeout(composeExec('db', ['pg_isready', '-U', DB_USER, '-d', DB_NAME], { pipe: true }), QUERY_TIMEOUT);
|
|
57
|
+
setPgReady(true);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
setPgReady(false);
|
|
61
|
+
setPgReadyError(err.stderr?.trim() || err.message);
|
|
62
|
+
}
|
|
63
|
+
})();
|
|
64
|
+
// 2. App pool RPC check
|
|
65
|
+
(async () => {
|
|
66
|
+
try {
|
|
67
|
+
const ok = await withTimeout(rpcOk(), QUERY_TIMEOUT);
|
|
68
|
+
setAppPool(ok);
|
|
69
|
+
if (!ok)
|
|
70
|
+
setAppPoolError('RPC returned not ok');
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
setAppPool(false);
|
|
74
|
+
setAppPoolError(err.stderr?.trim() || err.message);
|
|
75
|
+
}
|
|
76
|
+
})();
|
|
77
|
+
// 3. Docker stats (db container)
|
|
17
78
|
try {
|
|
18
|
-
const { stdout } = await execa('docker', ['stats', '--no-stream'], { stdout: 'pipe', stderr: 'pipe' });
|
|
79
|
+
const { stdout } = await withTimeout(execa('docker', ['stats', '--no-stream', '--filter', 'name=db'], { stdout: 'pipe', stderr: 'pipe' }), QUERY_TIMEOUT);
|
|
19
80
|
setStatsData({ table: parseDockerTable(stdout.trim()) });
|
|
20
81
|
}
|
|
21
82
|
catch (err) {
|
|
22
83
|
setStatsData({ table: null, error: err.stderr?.trim() || err.message || 'Docker stats not available' });
|
|
23
84
|
}
|
|
24
|
-
//
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
}
|
|
85
|
+
// 4. All SQL queries
|
|
86
|
+
const results = [];
|
|
87
|
+
for (const { title, sql } of QUERY_DEFS) {
|
|
88
|
+
try {
|
|
89
|
+
const result = await withTimeout(composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', sql], { env: PG_ENV, pipe: true }), QUERY_TIMEOUT);
|
|
90
|
+
results.push({ title, table: parsePsqlTable((result.stdout ?? '').trim()) });
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
const errorMessage = err.stderr?.trim() || err.message || 'Query failed';
|
|
94
|
+
results.push({ title, table: { columns: [], rows: [] }, error: true, errorMessage });
|
|
45
95
|
}
|
|
46
|
-
setQueryResults(results);
|
|
47
|
-
}
|
|
48
|
-
catch (err) {
|
|
49
|
-
setQueryError(err.message || 'Database diagnostics failed');
|
|
50
96
|
}
|
|
97
|
+
setQueryResults(results);
|
|
98
|
+
// Derive badge counts
|
|
99
|
+
const blocked = results.find(r => r.title.startsWith('Blocked'));
|
|
100
|
+
if (blocked && !blocked.error)
|
|
101
|
+
setBlockedCount(blocked.table.rows.length);
|
|
102
|
+
const dead = results.find(r => r.title.startsWith('Dead'));
|
|
103
|
+
if (dead && !dead.error)
|
|
104
|
+
setDeadTupleCount(dead.table.rows.length);
|
|
105
|
+
const mvRefresh = results.find(r => r.title.startsWith('Active MV'));
|
|
106
|
+
if (mvRefresh && !mvRefresh.error)
|
|
107
|
+
setActiveRefreshCount(mvRefresh.table.rows.length);
|
|
51
108
|
setPhase('done');
|
|
52
109
|
}, []);
|
|
53
110
|
useEffect(() => { runAll(); }, [runAll]);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
111
|
+
// Handle keyboard — tab switching + back navigation
|
|
112
|
+
useInput((input, key) => {
|
|
113
|
+
if (input === '1')
|
|
114
|
+
setActiveTab(0);
|
|
115
|
+
else if (input === '2')
|
|
116
|
+
setActiveTab(1);
|
|
117
|
+
else if (input === '3')
|
|
118
|
+
setActiveTab(2);
|
|
119
|
+
else if (key.leftArrow)
|
|
120
|
+
setActiveTab(prev => Math.max(0, prev - 1));
|
|
121
|
+
else if (key.rightArrow)
|
|
122
|
+
setActiveTab(prev => Math.min(2, prev + 1));
|
|
123
|
+
else if ((input === 'q' || key.escape) && phase === 'done' && onBack)
|
|
124
|
+
onBack();
|
|
125
|
+
});
|
|
126
|
+
// Build tab definitions with badges
|
|
127
|
+
const queryBadge = blockedCount + activeRefreshCount;
|
|
128
|
+
const perfBadge = deadTupleCount;
|
|
129
|
+
const tabs = [
|
|
130
|
+
{ label: 'Overview' },
|
|
131
|
+
{ label: 'Queries', badge: queryBadge, badgeColor: queryBadge > 0 ? 'red' : undefined },
|
|
132
|
+
{ label: 'Performance', badge: perfBadge, badgeColor: perfBadge > 0 ? 'yellow' : undefined },
|
|
133
|
+
];
|
|
134
|
+
// Get results for a specific tab
|
|
135
|
+
const tabResults = (tab) => QUERY_DEFS
|
|
136
|
+
.map((def, i) => ({ def, result: queryResults[i] }))
|
|
137
|
+
.filter(({ def }) => def.tab === tab)
|
|
138
|
+
.map(({ result }) => result)
|
|
139
|
+
.filter((r) => r !== undefined);
|
|
140
|
+
// Render a query result section
|
|
141
|
+
const renderResult = (result, i) => (_jsx(Section, { title: result.title, children: result.error
|
|
142
|
+
? (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Query failed" }), result.errorMessage && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: result.errorMessage }) }))] }))
|
|
143
|
+
: result.table.rows.length > 0
|
|
144
|
+
? _jsx(DataTable, { columns: result.table.columns, rows: result.table.rows })
|
|
145
|
+
: _jsx(StatusLine, { status: "ok", label: "None found" }) }, i));
|
|
146
|
+
return (_jsxs(AppShell, { command: "ct diag database", children: [phase === 'loading' && (_jsx(Section, { title: "Database Assessment", children: _jsx(Spinner, { label: "Running database diagnostics..." }) })), phase === 'done' && (_jsxs(_Fragment, { children: [_jsx(TabBar, { tabs: tabs, activeIndex: activeTab }), activeTab === 0 && (_jsxs(_Fragment, { children: [_jsxs(Section, { title: "Health", children: [_jsx(StatusLine, { status: pgReady === true ? 'ok' : pgReady === false ? 'fail' : 'info', label: pgReady === true ? 'pg_isready: accepting connections' : pgReady === false ? `pg_isready: ${pgReadyError ?? 'failed'}` : 'pg_isready: checking...' }), _jsx(StatusLine, { status: appPool === true ? 'ok' : appPool === false ? 'fail' : 'info', label: appPool === true ? 'App pool (RPC): connected' : appPool === false ? `App pool (RPC): ${appPoolError ?? 'failed'}` : 'App pool (RPC): checking...' }), _jsx(StatusLine, { status: blockedCount === 0 ? 'ok' : 'warn', label: `Blocked queries: ${blockedCount}` }), _jsx(StatusLine, { status: deadTupleCount === 0 ? 'ok' : 'warn', label: `Tables needing vacuum: ${deadTupleCount}` }), _jsx(StatusLine, { status: activeRefreshCount === 0 ? 'ok' : 'info', label: `Active refreshes/builds: ${activeRefreshCount}` })] }), tabResults('overview').map(renderResult), _jsxs(Section, { title: "Container Stats (db)", children: [!statsData && _jsx(Spinner, { label: "Loading docker stats..." }), 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
|
|
147
|
+
? _jsx(DataTable, { columns: statsData.table.columns, rows: statsData.table.rows })
|
|
148
|
+
: _jsx(StatusLine, { status: "ok", label: "No db container stats" }))] })] })), activeTab === 1 && tabResults('queries').map(renderResult), activeTab === 2 && tabResults('performance').map(renderResult), _jsx(Box, { paddingLeft: 2, paddingTop: 1, children: _jsx(Text, { dimColor: true, children: '1 Overview 2 Queries 3 Performance \u2190\u2192 Switch q Back' }) })] }))] }));
|
|
61
149
|
}
|
|
62
150
|
//# sourceMappingURL=DiagDatabaseView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DiagDatabaseView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,IAAI,
|
|
1
|
+
{"version":3,"file":"DiagDatabaseView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagDatabaseView.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAChE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAmB,MAAM,0BAA0B,CAAC;AAiB3E,qCAAqC;AACrC,SAAS,WAAW,CAAI,OAAmB,EAAE,EAAU;IACrD,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CACnE;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,aAAa,GAAG,MAAM,CAAC;AAE7B,kEAAkE;AAClE,MAAM,UAAU,GAAuF;IACrG,WAAW;IACX,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,0GAA0G,EAAE,GAAG,EAAE,UAAU,EAAE;IACjK,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,kDAAkD,EAAE,GAAG,EAAE,UAAU,EAAE;IACtG,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,UAAU,EAAE;IAC1E,UAAU;IACV,EAAE,KAAK,EAAE,wBAAwB,EAAE,GAAG,EAAE,mNAAmN,EAAE,GAAG,EAAE,SAAS,EAAE;IAC7Q,EAAE,KAAK,EAAE,mCAAmC,EAAE,GAAG,EAAE,6pBAA6pB,EAAE,GAAG,EAAE,SAAS,EAAE;IACluB,EAAE,KAAK,EAAE,2CAA2C,EAAE,GAAG,EAAE,yOAAyO,EAAE,GAAG,EAAE,SAAS,EAAE;IACtT,cAAc;IACd,EAAE,KAAK,EAAE,2BAA2B,EAAE,GAAG,EAAE,4HAA4H,EAAE,GAAG,EAAE,aAAa,EAAE;IAC7L,EAAE,KAAK,EAAE,mCAAmC,EAAE,GAAG,EAAE,+HAA+H,EAAE,GAAG,EAAE,aAAa,EAAE;IACxM,EAAE,KAAK,EAAE,4BAA4B,EAAE,GAAG,EAAE,0JAA0J,EAAE,GAAG,EAAE,aAAa,EAAE;IAC5N,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE,oFAAoF,EAAE,GAAG,EAAE,aAAa,EAAE;IAC9I,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,gEAAgE,EAAE,GAAG,EAAE,aAAa,EAAE;CACnH,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAyB;IAChE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAQ,SAAS,CAAC,CAAC;IACrD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAE9C,gBAAgB;IAChB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAsB,CAAC;IACvE,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAiB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,EAAsB,CAAC;IAEvE,mCAAmC;IACnC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA+E,IAAI,CAAC,CAAC;IAE/H,qCAAqC;IACrC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAgB,EAAE,CAAC,CAAC;IAEpE,oCAAoC;IACpC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,yBAAyB;QACzB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,WAAW,CACf,WAAW,CAAC,IAAI,EAAE,CAAC,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAC/E,aAAa,CACd,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,wBAAwB;QACxB,CAAC,KAAK,IAAI,EAAE;YACV,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,EAAE,EAAE,aAAa,CAAC,CAAC;gBACrD,UAAU,CAAC,EAAE,CAAC,CAAC;gBACf,IAAI,CAAC,EAAE;oBAAE,eAAe,CAAC,qBAAqB,CAAC,CAAC;YAClD,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,UAAU,CAAC,KAAK,CAAC,CAAC;gBAClB,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YACrD,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QAEL,iCAAiC;QACjC,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAClC,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EACpG,aAAa,CACd,CAAC;YACF,YAAY,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,YAAY,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,4BAA4B,EAAE,CAAC,CAAC;QAC1G,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAkB,EAAE,CAAC;QAClC,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,WAAW,CAAC,IAAI,EACd,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,EACjD,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAC9B,aAAa,CACd,CAAC;gBACF,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;YAC/E,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,cAAc,CAAC;gBACzE,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;YACvF,CAAC;QACH,CAAC;QACD,eAAe,CAAC,OAAO,CAAC,CAAC;QAEzB,sBAAsB;QACtB,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;QACjE,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK;YAAE,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QACrE,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK;YAAE,qBAAqB,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEtF,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEzC,oDAAoD;IACpD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,KAAK,KAAK,GAAG;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aAC9B,IAAI,KAAK,KAAK,GAAG;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aACnC,IAAI,KAAK,KAAK,GAAG;YAAE,YAAY,CAAC,CAAC,CAAC,CAAC;aACnC,IAAI,GAAG,CAAC,SAAS;YAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;aAC/D,IAAI,GAAG,CAAC,UAAU;YAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;aAChE,IAAI,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,MAAM,IAAI,MAAM;YAAE,MAAM,EAAE,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,oCAAoC;IACpC,MAAM,UAAU,GAAG,YAAY,GAAG,kBAAkB,CAAC;IACrD,MAAM,SAAS,GAAG,cAAc,CAAC;IACjC,MAAM,IAAI,GAAU;QAClB,EAAE,KAAK,EAAE,UAAU,EAAE;QACrB,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE;QACvF,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,EAAE;KAC7F,CAAC;IAEF,iCAAiC;IACjC,MAAM,UAAU,GAAG,CAAC,GAA2C,EAAE,EAAE,CACjE,UAAU;SACP,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACnD,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;SACpC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC;SAC3B,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IAEtD,gCAAgC;IAChC,MAAM,YAAY,GAAG,CAAC,MAAmB,EAAE,CAAS,EAAE,EAAE,CAAC,CACvD,KAAC,OAAO,IAAS,KAAK,EAAE,MAAM,CAAC,KAAK,YACjC,MAAM,CAAC,KAAK;YACX,CAAC,CAAC,CACA,8BACE,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,cAAc,GAAG,EAChD,MAAM,CAAC,YAAY,IAAI,CACtB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,MAAM,CAAC,YAAY,GAAQ,GAAM,CAC1E,IACA,CACJ;YACD,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;gBAC5B,CAAC,CAAC,KAAC,SAAS,IAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,GAAI;gBACvE,CAAC,CAAC,KAAC,UAAU,IAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,YAAY,GAAG,IAZvC,CAAC,CAcL,CACX,CAAC;IAEF,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,kBAAkB,aACjC,KAAK,KAAK,SAAS,IAAI,CACtB,KAAC,OAAO,IAAC,KAAK,EAAC,qBAAqB,YAClC,KAAC,OAAO,IAAC,KAAK,EAAC,iCAAiC,GAAG,GAC3C,CACX,EAEA,KAAK,KAAK,MAAM,IAAI,CACnB,8BACE,KAAC,MAAM,IAAC,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,GAAI,EAG7C,SAAS,KAAK,CAAC,IAAI,CAClB,8BACE,MAAC,OAAO,IAAC,KAAK,EAAC,QAAQ,aACrB,KAAC,UAAU,IACT,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACrE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,eAAe,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,yBAAyB,GACzJ,EACF,KAAC,UAAU,IACT,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EACrE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,mBAAmB,YAAY,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,6BAA6B,GACzJ,EACF,KAAC,UAAU,IACT,MAAM,EAAE,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC1C,KAAK,EAAE,oBAAoB,YAAY,EAAE,GACzC,EACF,KAAC,UAAU,IACT,MAAM,EAAE,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAC5C,KAAK,EAAE,0BAA0B,cAAc,EAAE,GACjD,EACF,KAAC,UAAU,IACT,MAAM,EAAE,kBAAkB,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAChD,KAAK,EAAE,4BAA4B,kBAAkB,EAAE,GACvD,IACM,EAET,UAAU,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAEzC,MAAC,OAAO,IAAC,KAAK,EAAC,sBAAsB,aAClC,CAAC,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,yBAAyB,GAAG,EACzD,SAAS,EAAE,KAAK,KAAK,IAAI,IAAI,CAC5B,8BACE,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,GAAG,EAC9D,SAAS,CAAC,KAAK,IAAI,CAClB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,SAAS,CAAC,KAAK,GAAQ,GAAM,CACtE,IACA,CACJ,EACA,SAAS,EAAE,KAAK,IAAI,CACnB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;wCAC7B,CAAC,CAAC,KAAC,SAAS,IAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,GAAI;wCAC7E,CAAC,CAAC,KAAC,UAAU,IAAC,MAAM,EAAC,IAAI,EAAC,KAAK,EAAC,uBAAuB,GAAG,CAC7D,IACO,IACT,CACJ,EAGA,SAAS,KAAK,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAG1D,SAAS,KAAK,CAAC,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,EAG/D,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,YAChC,KAAC,IAAI,IAAC,QAAQ,kBACX,mEAAmE,GAC/D,GACH,IACL,CACJ,IACQ,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -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,kDAsgBlE"}
|