@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.
Files changed (89) hide show
  1. package/README.md +13 -1
  2. package/dist/commands/diag.d.ts.map +1 -1
  3. package/dist/commands/diag.js +7 -0
  4. package/dist/commands/diag.js.map +1 -1
  5. package/dist/commands/jtapi.d.ts.map +1 -1
  6. package/dist/commands/jtapi.js +10 -9
  7. package/dist/commands/jtapi.js.map +1 -1
  8. package/dist/commands/secrets.d.ts.map +1 -1
  9. package/dist/commands/secrets.js +12 -0
  10. package/dist/commands/secrets.js.map +1 -1
  11. package/dist/commands/users.d.ts +3 -0
  12. package/dist/commands/users.d.ts.map +1 -0
  13. package/dist/commands/users.js +24 -0
  14. package/dist/commands/users.js.map +1 -0
  15. package/dist/index.js +6 -3
  16. package/dist/index.js.map +1 -1
  17. package/dist/lib/compose.d.ts.map +1 -1
  18. package/dist/lib/compose.js +1 -3
  19. package/dist/lib/compose.js.map +1 -1
  20. package/dist/lib/env.d.ts +14 -0
  21. package/dist/lib/env.d.ts.map +1 -0
  22. package/dist/lib/env.js +74 -0
  23. package/dist/lib/env.js.map +1 -0
  24. package/dist/lib/jtapi.d.ts +67 -2
  25. package/dist/lib/jtapi.d.ts.map +1 -1
  26. package/dist/lib/jtapi.js +261 -14
  27. package/dist/lib/jtapi.js.map +1 -1
  28. package/dist/lib/paths.d.ts +1 -1
  29. package/dist/lib/paths.d.ts.map +1 -1
  30. package/dist/lib/paths.js +1 -1
  31. package/dist/lib/paths.js.map +1 -1
  32. package/dist/lib/redact.d.ts +10 -0
  33. package/dist/lib/redact.d.ts.map +1 -0
  34. package/dist/lib/redact.js +45 -0
  35. package/dist/lib/redact.js.map +1 -0
  36. package/dist/lib/secrets.d.ts +16 -1
  37. package/dist/lib/secrets.d.ts.map +1 -1
  38. package/dist/lib/secrets.js +48 -1
  39. package/dist/lib/secrets.js.map +1 -1
  40. package/dist/lib/showtech-steps.d.ts +7 -0
  41. package/dist/lib/showtech-steps.d.ts.map +1 -0
  42. package/dist/lib/showtech-steps.js +351 -0
  43. package/dist/lib/showtech-steps.js.map +1 -0
  44. package/dist/lib/users.d.ts +33 -0
  45. package/dist/lib/users.d.ts.map +1 -0
  46. package/dist/lib/users.js +67 -0
  47. package/dist/lib/users.js.map +1 -0
  48. package/dist/ui/components/AppShell.d.ts +3 -1
  49. package/dist/ui/components/AppShell.d.ts.map +1 -1
  50. package/dist/ui/components/AppShell.js +5 -2
  51. package/dist/ui/components/AppShell.js.map +1 -1
  52. package/dist/ui/components/MetricsFooter.d.ts +7 -0
  53. package/dist/ui/components/MetricsFooter.d.ts.map +1 -0
  54. package/dist/ui/components/MetricsFooter.js +36 -0
  55. package/dist/ui/components/MetricsFooter.js.map +1 -0
  56. package/dist/ui/components/index.d.ts +1 -0
  57. package/dist/ui/components/index.d.ts.map +1 -1
  58. package/dist/ui/components/index.js +1 -0
  59. package/dist/ui/components/index.js.map +1 -1
  60. package/dist/ui/context/MetricsContext.d.ts +7 -0
  61. package/dist/ui/context/MetricsContext.d.ts.map +1 -0
  62. package/dist/ui/context/MetricsContext.js +13 -0
  63. package/dist/ui/context/MetricsContext.js.map +1 -0
  64. package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
  65. package/dist/ui/views/DiagDatabaseView.js +36 -28
  66. package/dist/ui/views/DiagDatabaseView.js.map +1 -1
  67. package/dist/ui/views/DiagServiceView.d.ts.map +1 -1
  68. package/dist/ui/views/DiagServiceView.js +29 -18
  69. package/dist/ui/views/DiagServiceView.js.map +1 -1
  70. package/dist/ui/views/DiagShowTechView.d.ts +6 -0
  71. package/dist/ui/views/DiagShowTechView.d.ts.map +1 -0
  72. package/dist/ui/views/DiagShowTechView.js +68 -0
  73. package/dist/ui/views/DiagShowTechView.js.map +1 -0
  74. package/dist/ui/views/JtapiView.d.ts +7 -0
  75. package/dist/ui/views/JtapiView.d.ts.map +1 -0
  76. package/dist/ui/views/JtapiView.js +405 -0
  77. package/dist/ui/views/JtapiView.js.map +1 -0
  78. package/dist/ui/views/MainMenu.d.ts.map +1 -1
  79. package/dist/ui/views/MainMenu.js +25 -22
  80. package/dist/ui/views/MainMenu.js.map +1 -1
  81. package/dist/ui/views/SecretsResetPasswordView.d.ts +11 -0
  82. package/dist/ui/views/SecretsResetPasswordView.d.ts.map +1 -0
  83. package/dist/ui/views/SecretsResetPasswordView.js +205 -0
  84. package/dist/ui/views/SecretsResetPasswordView.js.map +1 -0
  85. package/dist/ui/views/UserResetPasswordView.d.ts +10 -0
  86. package/dist/ui/views/UserResetPasswordView.d.ts.map +1 -0
  87. package/dist/ui/views/UserResetPasswordView.js +220 -0
  88. package/dist/ui/views/UserResetPasswordView.js.map +1 -0
  89. 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":"AAkBA,UAAU,qBAAqB;IAC7B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,qBAAqB,2CAuGjE"}
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
- // Docker stats
12
- const statsTask = useAsyncTask(async () => {
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
- return { table: parseDockerTable(stdout.trim()) };
19
+ setStatsData({ table: parseDockerTable(stdout.trim()) });
16
20
  }
17
21
  catch (err) {
18
- return { table: null, error: err.stderr?.trim() || err.message || 'Docker stats not available' };
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
- const results = [];
33
- for (const [title, query] of queries) {
34
- try {
35
- const result = await composeExec('db', ['psql', '-U', DB_USER, '-d', DB_NAME, '-c', query], { env: PG_ENV, pipe: true });
36
- results.push({ title, table: parsePsqlTable((result.stdout ?? '').trim()) });
37
- }
38
- catch (err) {
39
- const errorMessage = err.stderr?.trim() || err.message || 'Query failed';
40
- results.push({ title, table: { columns: [], rows: [] }, error: true, errorMessage });
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
- return results;
44
- });
45
- const allDone = [statsTask, queriesTask].every(t => t.status === 'done' || t.status === 'error');
46
- return (_jsxs(AppShell, { command: "ct diag database", onBack: onBack, isComplete: allDone, children: [_jsxs(Section, { title: "Container CPU/Memory Usage", children: [statsTask.status === 'pending' && _jsx(Spinner, { label: "Loading docker stats..." }), statsTask.status === 'error' && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Could not get docker stats" }), statsTask.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: statsTask.error.stderr?.trim() || statsTask.error.message }) }))] })), statsTask.status === 'done' && statsTask.data?.table === null && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "warn", label: "Docker stats not available" }), statsTask.data.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: statsTask.data.error }) }))] })), statsTask.status === 'done' && statsTask.data?.table && (statsTask.data.table.rows.length > 0
47
- ? _jsx(DataTable, { columns: statsTask.data.table.columns, rows: statsTask.data.table.rows })
48
- : _jsx(StatusLine, { status: "ok", label: "No containers running" }))] }), queriesTask.status === 'pending' && (_jsx(Section, { title: "Database Queries", children: _jsx(Spinner, { label: "Running database diagnostics..." }) })), queriesTask.status === 'error' && (_jsxs(Section, { title: "Database Queries", children: [_jsx(StatusLine, { status: "fail", label: "Database diagnostics failed" }), queriesTask.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: queriesTask.error.stderr?.trim() || queriesTask.error.message }) }))] })), queriesTask.status === 'done' && queriesTask.data && queriesTask.data.map((result, i) => (_jsx(Section, { title: result.title, children: result.error
49
- ? (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Query failed" }), result.errorMessage && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: result.errorMessage }) }))] }))
50
- : result.table.rows.length > 0
51
- ? _jsx(DataTable, { columns: result.table.columns, rows: result.table.rows })
52
- : _jsx(StatusLine, { status: "ok", label: "None found" }) }, i)))] }));
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":"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"}
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":"AAOA,UAAU,oBAAoB;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CA8E/D"}
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
- // Section 1: Systemd logs
9
- const systemdTask = useAsyncTask(async () => {
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
- return { logs: stdout, error: undefined };
18
+ setSystemdData({ logs: stdout });
15
19
  }
16
20
  catch (err) {
17
- return { logs: null, error: err.stderr?.trim() || err.message || 'Systemd logs not available' };
21
+ setSystemdData({ logs: null, error: err.stderr?.trim() || err.message || 'Systemd logs not available' });
18
22
  }
19
- });
20
- // Section 2: Web container logs
21
- const webTask = useAsyncTask(async () => {
22
- const result = await compose(['logs', '--tail=50', 'web'], { pipe: true });
23
- return result.stdout ?? '';
24
- });
25
- // Section 3: DB container logs
26
- const dbTask = useAsyncTask(async () => {
27
- const result = await compose(['logs', '--tail=50', 'db'], { pipe: true });
28
- return result.stdout ?? '';
29
- });
30
- const allDone = [systemdTask, webTask, dbTask].every(t => t.status === 'done' || t.status === 'error');
31
- return (_jsxs(AppShell, { command: "ct diag service", onBack: onBack, isComplete: allDone, children: [_jsxs(Section, { title: "Systemd Service Logs (Last 50 lines)", children: [systemdTask.status === 'pending' && _jsx(Spinner, { label: "Loading systemd logs..." }), systemdTask.status === 'error' && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Systemd logs not available" }), systemdTask.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: systemdTask.error.stderr?.trim() || systemdTask.error.message }) }))] })), systemdTask.status === 'done' && systemdTask.data?.logs === null && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "warn", label: "Systemd logs not available" }), systemdTask.data.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: systemdTask.data.error }) }))] })), systemdTask.status === 'done' && systemdTask.data?.logs && _jsx(ShellOutput, { content: systemdTask.data.logs })] }), _jsxs(Section, { title: "Web Container (Last 50 lines)", children: [webTask.status === 'pending' && _jsx(Spinner, { label: "Loading web logs..." }), webTask.status === 'error' && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Could not fetch web logs" }), webTask.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: webTask.error.stderr?.trim() || webTask.error.message }) }))] })), webTask.status === 'done' && webTask.data && _jsx(ShellOutput, { content: webTask.data })] }), _jsxs(Section, { title: "Database Container (Last 50 lines)", children: [dbTask.status === 'pending' && _jsx(Spinner, { label: "Loading database logs..." }), dbTask.status === 'error' && (_jsxs(_Fragment, { children: [_jsx(StatusLine, { status: "fail", label: "Could not fetch database logs" }), dbTask.error && (_jsx(Box, { paddingLeft: 4, children: _jsx(Text, { color: "red", children: dbTask.error.stderr?.trim() || dbTask.error.message }) }))] })), dbTask.status === 'done' && dbTask.data && _jsx(ShellOutput, { content: dbTask.data })] })] }));
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":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,MAAM,UAAU,eAAe,CAAC,EAAE,MAAM,EAAwB;IAE9D,0BAA0B;IAC1B,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBACrC,YAAY,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY;aAC3E,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAA+B,EAAE,CAAC;QAClE,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,OAAO,IAAI,4BAA4B,EAAE,CAAC;QAClG,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,gCAAgC;IAChC,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3E,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,+BAA+B;IAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE;QACrC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IAEvG,OAAO,CACL,MAAC,QAAQ,IAAC,OAAO,EAAC,iBAAiB,EAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,aACrE,MAAC,OAAO,IAAC,KAAK,EAAC,sCAAsC,aAClD,WAAW,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,yBAAyB,GAAG,EAC/E,WAAW,CAAC,MAAM,KAAK,OAAO,IAAI,CACjC,8BACE,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,GAAG,EAC9D,WAAW,CAAC,KAAK,IAAI,CACpB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAG,WAAW,CAAC,KAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,GAAQ,GAAM,CAC7H,IACA,CACJ,EACA,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,IAAI,CACnE,8BACE,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,4BAA4B,GAAG,EAC9D,WAAW,CAAC,IAAI,CAAC,KAAK,IAAI,CACzB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,WAAW,CAAC,IAAI,CAAC,KAAK,GAAQ,GAAM,CAC7E,IACA,CACJ,EACA,WAAW,CAAC,MAAM,KAAK,MAAM,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,GAAI,IACnG,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,+BAA+B,aAC3C,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,qBAAqB,GAAG,EACvE,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,CAC7B,8BACE,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,0BAA0B,GAAG,EAC5D,OAAO,CAAC,KAAK,IAAI,CAChB,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAG,OAAO,CAAC,KAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,GAAQ,GAAM,CACrH,IACA,CACJ,EACA,OAAO,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,OAAO,CAAC,IAAI,GAAI,IAC5E,EAEV,MAAC,OAAO,IAAC,KAAK,EAAC,oCAAoC,aAChD,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,OAAO,IAAC,KAAK,EAAC,0BAA0B,GAAG,EAC3E,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,CAC5B,8BACE,KAAC,UAAU,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAC,+BAA+B,GAAG,EACjE,MAAM,CAAC,KAAK,IAAI,CACf,KAAC,GAAG,IAAC,WAAW,EAAE,CAAC,YAAE,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAG,MAAM,CAAC,KAAa,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,GAAQ,GAAM,CACnH,IACA,CACJ,EACA,MAAM,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,KAAC,WAAW,IAAC,OAAO,EAAE,MAAM,CAAC,IAAI,GAAI,IACzE,IACD,CACZ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"DiagServiceView.js","sourceRoot":"","sources":["../../../src/ui/views/DiagServiceView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ interface DiagShowTechViewProps {
2
+ onBack?: () => void;
3
+ }
4
+ export declare function DiagShowTechView({ onBack }: DiagShowTechViewProps): import("react/jsx-runtime").JSX.Element;
5
+ export {};
6
+ //# sourceMappingURL=DiagShowTechView.d.ts.map
@@ -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"}