@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
package/dist/lib/jtapi.js CHANGED
@@ -1,27 +1,274 @@
1
1
  import { existsSync } from 'node:fs';
2
2
  import { getPaths } from './paths.js';
3
- import { writeFileSafe, removeSafe } from './fs.js';
3
+ import { removeSafe } from './fs.js';
4
+ import { readEnvKeys, updateEnvKeys } from './env.js';
5
+ import { compose, composeExec } from './compose.js';
6
+ import { exec } from './exec.js';
7
+ import { checkDiskSpace } from './system.js';
8
+ import { debug } from './log.js';
9
+ // ── JTAPI env vars written to .env when enabling ──
10
+ const JTAPI_ENV_VARS = {
11
+ JTAPI_MODE: 'direct',
12
+ JTAPI_SIDECAR_ENDPOINT: 'jtapi-sidecar:50051',
13
+ JTAPI_SIDECAR_URL: 'http://jtapi-sidecar:8080',
14
+ S3_ENABLED: 'true',
15
+ CT_MEDIA_ENDPOINT: 'ct-media:50053',
16
+ };
17
+ const JTAPI_ENV_KEYS = [
18
+ ...Object.keys(JTAPI_ENV_VARS),
19
+ 'JTAPI_VERSION',
20
+ 'CT_MEDIA_VERSION',
21
+ ];
22
+ // ── State management ──
23
+ /**
24
+ * Check if JTAPI is enabled by reading COMPOSE_PROFILES from .env.
25
+ * Pure read — no side effects or migration.
26
+ */
4
27
  export function isJtapiEnabled() {
5
- const { jtapiStateFile, jtapiOverlayFile } = getPaths();
6
- return existsSync(jtapiStateFile) && existsSync(jtapiOverlayFile);
7
- }
8
- export function hasOverlayFile() {
9
- return existsSync(getPaths().jtapiOverlayFile);
28
+ const env = readEnvKeys();
29
+ const profiles = env.COMPOSE_PROFILES ?? '';
30
+ return profiles.split(',').map(p => p.trim()).includes('jtapi');
10
31
  }
32
+ /**
33
+ * Enable JTAPI: add jtapi to COMPOSE_PROFILES and write JTAPI env vars.
34
+ * Also runs migration cleanup if old state file exists.
35
+ */
11
36
  export async function enableJtapi() {
12
- await writeFileSafe(getPaths().jtapiStateFile, '');
37
+ const env = readEnvKeys();
38
+ const existing = (env.COMPOSE_PROFILES ?? '').split(',').map(p => p.trim()).filter(Boolean);
39
+ if (!existing.includes('jtapi')) {
40
+ existing.push('jtapi');
41
+ }
42
+ const updates = {
43
+ COMPOSE_PROFILES: existing.join(','),
44
+ ...JTAPI_ENV_VARS,
45
+ };
46
+ await updateEnvKeys(updates);
47
+ // Clean up old state file if present (one-time migration)
48
+ const { jtapiStateFile } = getPaths();
49
+ if (existsSync(jtapiStateFile)) {
50
+ await removeSafe(jtapiStateFile);
51
+ }
13
52
  }
53
+ /**
54
+ * Disable JTAPI: remove jtapi from COMPOSE_PROFILES and remove JTAPI env vars.
55
+ */
14
56
  export async function disableJtapi() {
57
+ const env = readEnvKeys();
58
+ const existing = (env.COMPOSE_PROFILES ?? '').split(',').map(p => p.trim()).filter(Boolean);
59
+ const filtered = existing.filter(p => p !== 'jtapi');
60
+ const updates = {
61
+ COMPOSE_PROFILES: filtered.length > 0 ? filtered.join(',') : undefined,
62
+ };
63
+ for (const key of JTAPI_ENV_KEYS) {
64
+ updates[key] = undefined;
65
+ }
66
+ await updateEnvKeys(updates);
67
+ }
68
+ /**
69
+ * Explicit migration from old .jtapi-enabled state file to .env approach.
70
+ * Returns true if migration occurred.
71
+ */
72
+ export async function migrateFromStateFile() {
15
73
  const { jtapiStateFile } = getPaths();
16
- if (existsSync(jtapiStateFile))
74
+ if (!existsSync(jtapiStateFile))
75
+ return false;
76
+ // Already migrated?
77
+ if (isJtapiEnabled()) {
17
78
  await removeSafe(jtapiStateFile);
79
+ return false;
80
+ }
81
+ await enableJtapi();
82
+ return true;
83
+ }
84
+ // ── Container / health inspection ──
85
+ /**
86
+ * Get JTAPI sidecar container status via compose ps.
87
+ */
88
+ export async function getJtapiContainerStatus() {
89
+ try {
90
+ const result = await compose(['ps', '--format', 'json', 'jtapi-sidecar'], { pipe: true });
91
+ const stdout = String(result.stdout ?? '').trim();
92
+ if (!stdout)
93
+ return { running: false, state: 'not found', health: 'unknown' };
94
+ // compose ps --format json may output one JSON object per line
95
+ const lines = stdout.split('\n').filter(Boolean);
96
+ for (const line of lines) {
97
+ try {
98
+ const obj = JSON.parse(line);
99
+ const state = (obj.State ?? obj.state ?? '').toLowerCase();
100
+ const health = (obj.Health ?? obj.health ?? 'unknown').toLowerCase();
101
+ const status = obj.Status ?? obj.status ?? '';
102
+ return {
103
+ running: state === 'running',
104
+ state: state || 'unknown',
105
+ health: health || 'unknown',
106
+ uptime: status || undefined,
107
+ };
108
+ }
109
+ catch {
110
+ continue;
111
+ }
112
+ }
113
+ // Fallback: text parsing
114
+ if (stdout.toLowerCase().includes('running')) {
115
+ const healthy = stdout.toLowerCase().includes('healthy');
116
+ return { running: true, state: 'running', health: healthy ? 'healthy' : 'unknown' };
117
+ }
118
+ return { running: false, state: 'exited', health: 'unknown' };
119
+ }
120
+ catch (err) {
121
+ debug(`getJtapiContainerStatus failed: ${err.message}`);
122
+ return { running: false, state: 'not found', health: 'unknown' };
123
+ }
124
+ }
125
+ /**
126
+ * Check JTAPI sidecar health. Primary: compose health field. Fallback: exec curl.
127
+ */
128
+ export async function getJtapiHealthCheck() {
129
+ const container = await getJtapiContainerStatus();
130
+ // If compose reports a known health status, use it
131
+ if (container.health === 'healthy') {
132
+ return { reachable: true, status: 'UP', source: 'compose' };
133
+ }
134
+ if (container.health === 'unhealthy') {
135
+ return { reachable: false, status: 'DOWN', source: 'compose' };
136
+ }
137
+ // Fallback: try exec curl into the container
138
+ if (!container.running) {
139
+ return { reachable: false, source: 'compose', detail: `Container ${container.state}` };
140
+ }
141
+ try {
142
+ const result = await Promise.race([
143
+ composeExec('jtapi-sidecar', ['curl', '-sf', 'http://localhost:8080/actuator/health'], { pipe: true }),
144
+ new Promise((_, reject) => setTimeout(() => reject(new Error('timeout')), 10_000)),
145
+ ]);
146
+ const stdout = String(result.stdout ?? '').trim();
147
+ const status = stdout.includes('"UP"') ? 'UP' : stdout.includes('"DOWN"') ? 'DOWN' : undefined;
148
+ return { reachable: true, status, source: 'exec', detail: stdout };
149
+ }
150
+ catch (err) {
151
+ debug(`Health exec fallback failed: ${err.message}`);
152
+ return { reachable: false, source: 'exec', detail: err.message };
153
+ }
154
+ }
155
+ /**
156
+ * Check status of JTAPI dependency services (nats, ct-media, minio).
157
+ */
158
+ export async function getJtapiDependencyStatus() {
159
+ const services = ['nats', 'ct-media', 'minio'];
160
+ const results = [];
161
+ for (const name of services) {
162
+ try {
163
+ const result = await compose(['ps', '--format', 'json', name], { pipe: true });
164
+ const stdout = String(result.stdout ?? '').trim();
165
+ if (!stdout) {
166
+ results.push({ name, running: false, health: 'not found' });
167
+ continue;
168
+ }
169
+ const lines = stdout.split('\n').filter(Boolean);
170
+ let parsed = false;
171
+ for (const line of lines) {
172
+ try {
173
+ const obj = JSON.parse(line);
174
+ const state = (obj.State ?? obj.state ?? '').toLowerCase();
175
+ const health = (obj.Health ?? obj.health ?? 'unknown').toLowerCase();
176
+ results.push({ name, running: state === 'running', health: health || 'unknown' });
177
+ parsed = true;
178
+ break;
179
+ }
180
+ catch {
181
+ continue;
182
+ }
183
+ }
184
+ if (!parsed) {
185
+ const running = stdout.toLowerCase().includes('running');
186
+ results.push({ name, running, health: running ? 'unknown' : 'not found' });
187
+ }
188
+ }
189
+ catch {
190
+ results.push({ name, running: false, health: 'not found' });
191
+ }
192
+ }
193
+ return results;
194
+ }
195
+ /**
196
+ * Check JTAPI-related env vars on the running web container.
197
+ */
198
+ export async function getJtapiWebConfig() {
199
+ try {
200
+ const result = await composeExec('web', ['env'], { pipe: true });
201
+ const stdout = String(result.stdout ?? '');
202
+ const vars = {};
203
+ for (const line of stdout.split('\n')) {
204
+ const eq = line.indexOf('=');
205
+ if (eq > 0)
206
+ vars[line.slice(0, eq)] = line.slice(eq + 1);
207
+ }
208
+ const mode = vars.JTAPI_MODE || null;
209
+ const sidecarEndpoint = vars.JTAPI_SIDECAR_ENDPOINT || null;
210
+ return { mode, sidecarEndpoint, configured: !!mode };
211
+ }
212
+ catch (err) {
213
+ debug(`getJtapiWebConfig failed: ${err.message}`);
214
+ return { mode: null, sidecarEndpoint: null, configured: false };
215
+ }
216
+ }
217
+ /**
218
+ * Run pre-flight checks before enabling JTAPI.
219
+ */
220
+ export async function checkJtapiPrereqs() {
221
+ const results = [];
222
+ // 1. Docker Compose plugin available (not legacy docker-compose)
223
+ try {
224
+ const result = await exec('docker', ['compose', 'version']);
225
+ const version = String(result.stdout ?? '').trim();
226
+ results.push({ label: 'Docker Compose plugin', passed: true, detail: version });
227
+ }
228
+ catch {
229
+ results.push({ label: 'Docker Compose plugin', passed: false, detail: 'JTAPI requires "docker compose" plugin (not legacy docker-compose)' });
230
+ }
231
+ // 2. Docker daemon running
232
+ try {
233
+ await exec('docker', ['info'], { stdout: 'pipe', stderr: 'pipe' });
234
+ results.push({ label: 'Docker daemon', passed: true, detail: 'running' });
235
+ }
236
+ catch {
237
+ results.push({ label: 'Docker daemon', passed: false, detail: 'Docker daemon is not running' });
238
+ }
239
+ // 3. Current state
240
+ const enabled = isJtapiEnabled();
241
+ results.push({
242
+ label: 'JTAPI status',
243
+ passed: !enabled,
244
+ detail: enabled ? 'Already enabled' : 'Disabled — ready to enable',
245
+ });
246
+ // 4. Disk space
247
+ try {
248
+ const disk = await checkDiskSpace('/', 5);
249
+ results.push({
250
+ label: 'Disk space',
251
+ passed: disk.ok,
252
+ detail: disk.ok ? `${disk.freePercent}% free` : `Only ${disk.freePercent}% free (need 5%)`,
253
+ });
254
+ }
255
+ catch {
256
+ results.push({ label: 'Disk space', passed: true, detail: 'Unable to check' });
257
+ }
258
+ return results;
18
259
  }
19
- export function getComposeFiles() {
20
- const { composeFile, jtapiOverlayFile, jtapiStateFile } = getPaths();
21
- const files = [composeFile];
22
- if (existsSync(jtapiStateFile) && existsSync(jtapiOverlayFile)) {
23
- files.push(jtapiOverlayFile);
260
+ /**
261
+ * Poll sidecar health until healthy or timeout.
262
+ */
263
+ export async function waitForHealth(maxWaitSec = 90) {
264
+ const interval = 5_000;
265
+ const deadline = Date.now() + maxWaitSec * 1000;
266
+ while (Date.now() < deadline) {
267
+ const health = await getJtapiHealthCheck();
268
+ if (health.reachable && health.status === 'UP')
269
+ return true;
270
+ await new Promise(r => setTimeout(r, interval));
24
271
  }
25
- return files;
272
+ return false;
26
273
  }
27
274
  //# sourceMappingURL=jtapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jtapi.js","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,UAAU,cAAc;IAC5B,MAAM,EAAE,cAAc,EAAE,gBAAgB,EAAE,GAAG,QAAQ,EAAE,CAAC;IACxD,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtC,IAAI,UAAU,CAAC,cAAc,CAAC;QAAE,MAAM,UAAU,CAAC,cAAc,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC;IAC5B,IAAI,UAAU,CAAC,cAAc,CAAC,IAAI,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC/D,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"jtapi.js","sourceRoot":"","sources":["../../src/lib/jtapi.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,7 @@ export declare function getPaths(): {
6
6
  overrideFile: string;
7
7
  certsDir: string;
8
8
  postgresDataDir: string;
9
- jtapiOverlayFile: string;
9
+ /** @deprecated JTAPI now uses Docker Compose profiles via .env */
10
10
  jtapiStateFile: string;
11
11
  secretsOverlayFile: string;
12
12
  gcsBaseUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAyDA,wBAAgB,QAAQ;;;;;;;;;;;;;;;;;EAGvB"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAyDA,wBAAgB,QAAQ;;;;;;;;IAZpB,kEAAkE;;;;;;;;;EAerE"}
package/dist/lib/paths.js CHANGED
@@ -38,7 +38,7 @@ function buildPaths() {
38
38
  overrideFile: join(installDir, 'docker-compose.override.yml'),
39
39
  certsDir: join(installDir, 'certs'),
40
40
  postgresDataDir: join(installDir, 'postgres-data'),
41
- jtapiOverlayFile: join(installDir, 'docker-compose-jtapi.yml'),
41
+ /** @deprecated JTAPI now uses Docker Compose profiles via .env */
42
42
  jtapiStateFile: join(installDir, '.jtapi-enabled'),
43
43
  secretsOverlayFile: join(installDir, 'docker-compose.secrets.yml'),
44
44
  gcsBaseUrl: GCS_BASE_URL,
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAClE,MAAM,mBAAmB,GAAG,GAAG,YAAY,WAAW,CAAC;AAEvD,MAAM,mBAAmB,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAE1E,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEd,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,SAAS,KAAK,QAAQ;YAAE,SAAS;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,MAAM,GAAyC,IAAI,CAAC;AAExD,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO;QACL,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC;QACnD,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC;QAC7D,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC;QAClD,gBAAgB,EAAE,IAAI,CAAC,UAAU,EAAE,0BAA0B,CAAC;QAC9D,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;QAClD,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC;QAClE,UAAU,EAAE,YAAY;QACxB,gBAAgB,EAAE,mBAAmB;QACrC,SAAS,EAAE,GAAG,YAAY,SAAS;QACnC,aAAa,EAAE,GAAG,YAAY,UAAU;QACxC,yBAAyB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACzD,sBAAsB,EAAE,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/lib/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,YAAY,GAAG,4CAA4C,CAAC;AAClE,MAAM,mBAAmB,GAAG,GAAG,YAAY,WAAW,CAAC;AAEvD,MAAM,mBAAmB,GAAG,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,CAAC;AAE1E,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;IACvC,MAAM,QAAQ,GAAG,QAAQ;QACvB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;QACzB,CAAC,CAAC,OAAO,EAAE,CAAC;IAEd,KAAK,MAAM,SAAS,IAAI,mBAAmB,EAAE,CAAC;QAC5C,IAAI,SAAS,KAAK,QAAQ;YAAE,SAAS;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAC1D,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBACtC,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,IAAI,MAAM,GAAyC,IAAI,CAAC;AAExD,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;IACtC,OAAO;QACL,UAAU;QACV,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QACtC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC;QACnD,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,6BAA6B,CAAC;QAC7D,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;QACnC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC;QAClD,kEAAkE;QAClE,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC;QAClD,kBAAkB,EAAE,IAAI,CAAC,UAAU,EAAE,4BAA4B,CAAC;QAClE,UAAU,EAAE,YAAY;QACxB,gBAAgB,EAAE,mBAAmB;QACrC,SAAS,EAAE,GAAG,YAAY,SAAS;QACnC,aAAa,EAAE,GAAG,YAAY,UAAU;QACxC,yBAAyB,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACzD,sBAAsB,EAAE,IAAI;KAC7B,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,UAAU,EAAE,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Auto-redact sensitive values from collected diagnostic text.
3
+ * Uses SECRET_CATALOG to identify known sensitive keys, plus
4
+ * regex patterns for common secret formats.
5
+ */
6
+ /**
7
+ * Replace known sensitive values and common secret patterns with [REDACTED].
8
+ */
9
+ export declare function redactSecrets(text: string): string;
10
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../src/lib/redact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAwBlD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Auto-redact sensitive values from collected diagnostic text.
3
+ * Uses SECRET_CATALOG to identify known sensitive keys, plus
4
+ * regex patterns for common secret formats.
5
+ */
6
+ import { SECRET_CATALOG, getSecrets } from './secrets.js';
7
+ const SENSITIVE_KEYS = SECRET_CATALOG.filter(d => d.sensitive).map(d => d.key);
8
+ /**
9
+ * Regex patterns that catch common secret formats in config/log files.
10
+ * Each pattern must have a capture group for the value portion to redact.
11
+ */
12
+ const REDACT_PATTERNS = [
13
+ // KEY=value (env-style), case-insensitive for password/secret/token keys
14
+ /(?<=(?:password|secret|token|api_key|private_key)\s*[=:]\s*).+/gi,
15
+ // Bearer tokens
16
+ /(?<=Bearer\s+)\S+/gi,
17
+ ];
18
+ const PLACEHOLDER = '[REDACTED]';
19
+ /**
20
+ * Replace known sensitive values and common secret patterns with [REDACTED].
21
+ */
22
+ export function redactSecrets(text) {
23
+ let result = text;
24
+ // 1. Replace known secret values (from env/.env/process.env)
25
+ try {
26
+ const secrets = getSecrets();
27
+ for (const key of SENSITIVE_KEYS) {
28
+ const value = secrets[key];
29
+ if (value && value.length > 0) {
30
+ // Escape special regex characters in the value
31
+ const escaped = value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
32
+ result = result.replace(new RegExp(escaped, 'g'), PLACEHOLDER);
33
+ }
34
+ }
35
+ }
36
+ catch {
37
+ // getSecrets() may fail if .env path doesn't exist — proceed with regex-only
38
+ }
39
+ // 2. Apply regex patterns for common secret formats
40
+ for (const pattern of REDACT_PATTERNS) {
41
+ result = result.replace(pattern, PLACEHOLDER);
42
+ }
43
+ return result;
44
+ }
45
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/lib/redact.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1D,MAAM,cAAc,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAE/E;;;GAGG;AACH,MAAM,eAAe,GAAG;IACtB,yEAAyE;IACzE,kEAAkE;IAClE,gBAAgB;IAChB,qBAAqB;CACtB,CAAC;AAEF,MAAM,WAAW,GAAG,YAAY,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,6DAA6D;IAC7D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC;QAC7B,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,+CAA+C;gBAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAC7D,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,WAAW,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;IAC/E,CAAC;IAED,oDAAoD;IACpD,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACtC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -28,11 +28,26 @@ export declare function isCustomized(): boolean;
28
28
  */
29
29
  export declare function countOverrides(): number;
30
30
  /**
31
- * Write secrets to .env file with 0600 permissions
31
+ * Write secrets to .env file with 0600 permissions.
32
+ * Preserves non-catalog keys (e.g. JTAPI config, COMPOSE_PROFILES).
32
33
  */
33
34
  export declare function writeEnvFile(values: Record<string, string>): Promise<void>;
34
35
  /**
35
36
  * Generate docker-compose.secrets.yml overlay file
36
37
  */
37
38
  export declare function writeSecretsOverlay(): Promise<void>;
39
+ /**
40
+ * Generate a cryptographically random password (URL-safe alphanumeric).
41
+ */
42
+ export declare function generatePassword(length?: number): string;
43
+ /**
44
+ * Change the PostgreSQL password in the running database via ALTER USER.
45
+ * Connects using current credentials from getSecrets().
46
+ */
47
+ export declare function alterDbPassword(newPassword: string): Promise<void>;
48
+ /**
49
+ * Update Minio password in .env/overlay and restart the Minio container.
50
+ * Minio reads credentials from environment variables at startup.
51
+ */
52
+ export declare function restartMinioWithPassword(newPassword: string): Promise<void>;
38
53
  //# sourceMappingURL=secrets.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,EAOrC,CAAC;AAEF,eAAO,MAAM,aAAa,0CAA2C,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBpE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAMtC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBhF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBzD"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC;IACvC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,SAAS,EAOrC,CAAC;AAEF,eAAO,MAAM,aAAa,0CAA2C,CAAC;AACtE,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwBpE;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BnD;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAMtC;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAkChF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmBzD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,SAAK,GAAG,MAAM,CAEpD;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQxE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMjF"}
@@ -1,7 +1,9 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
+ import { randomBytes } from 'node:crypto';
2
3
  import { join } from 'node:path';
3
4
  import { getPaths } from './paths.js';
4
5
  import { writeFileSafe } from './fs.js';
6
+ import { composeExec, compose } from './compose.js';
5
7
  export const SECRET_CATALOG = [
6
8
  { key: 'POSTGRES_PASSWORD', label: 'PostgreSQL Password', group: 'PostgreSQL', defaultValue: 'postgres', sensitive: true, required: true },
7
9
  { key: 'POSTGRES_USER', label: 'PostgreSQL User', group: 'PostgreSQL', defaultValue: 'calltelemetry', sensitive: false, required: true },
@@ -88,10 +90,18 @@ export function countOverrides() {
88
90
  return SECRET_CATALOG.filter(def => secrets[def.key] !== def.defaultValue).length;
89
91
  }
90
92
  /**
91
- * Write secrets to .env file with 0600 permissions
93
+ * Write secrets to .env file with 0600 permissions.
94
+ * Preserves non-catalog keys (e.g. JTAPI config, COMPOSE_PROFILES).
92
95
  */
93
96
  export async function writeEnvFile(values) {
94
97
  const envPath = getEnvFilePath();
98
+ // Snapshot non-catalog keys before overwriting
99
+ const catalogKeys = new Set(SECRET_CATALOG.map(d => d.key));
100
+ let preserved = [];
101
+ if (existsSync(envPath)) {
102
+ const existing = parseEnvFile(readFileSync(envPath, 'utf-8'));
103
+ preserved = Object.entries(existing).filter(([k]) => !catalogKeys.has(k));
104
+ }
95
105
  const lines = [
96
106
  '# CallTelemetry secrets — generated by ct secrets setup',
97
107
  `# Last updated: ${new Date().toISOString()}`,
@@ -103,6 +113,13 @@ export async function writeEnvFile(values) {
103
113
  lines.push(`${def.key}=${value}`);
104
114
  }
105
115
  }
116
+ // Re-append preserved non-catalog keys
117
+ if (preserved.length > 0) {
118
+ lines.push('');
119
+ for (const [key, value] of preserved) {
120
+ lines.push(`${key}=${value}`);
121
+ }
122
+ }
106
123
  lines.push('');
107
124
  await writeFileSafe(envPath, lines.join('\n'), { mode: 0o600 });
108
125
  }
@@ -129,4 +146,34 @@ services:
129
146
  `;
130
147
  await writeFileSafe(secretsOverlayFile, content);
131
148
  }
149
+ /**
150
+ * Generate a cryptographically random password (URL-safe alphanumeric).
151
+ */
152
+ export function generatePassword(length = 24) {
153
+ return randomBytes(length).toString('base64url').slice(0, length);
154
+ }
155
+ /**
156
+ * Change the PostgreSQL password in the running database via ALTER USER.
157
+ * Connects using current credentials from getSecrets().
158
+ */
159
+ export async function alterDbPassword(newPassword) {
160
+ const secrets = getSecrets();
161
+ const user = secrets.POSTGRES_USER;
162
+ const escaped = newPassword.replace(/'/g, "''");
163
+ await composeExec('db', [
164
+ 'psql', '-U', user, '-d', secrets.POSTGRES_DB,
165
+ '-c', `ALTER USER ${user} PASSWORD '${escaped}';`,
166
+ ], { env: { PGPASSWORD: secrets.POSTGRES_PASSWORD }, pipe: true });
167
+ }
168
+ /**
169
+ * Update Minio password in .env/overlay and restart the Minio container.
170
+ * Minio reads credentials from environment variables at startup.
171
+ */
172
+ export async function restartMinioWithPassword(newPassword) {
173
+ const secrets = getSecrets();
174
+ secrets.MINIO_ROOT_PASSWORD = newPassword;
175
+ await writeEnvFile(secrets);
176
+ await writeSecretsOverlay();
177
+ await compose(['restart', 'minio']);
178
+ }
132
179
  //# sourceMappingURL=secrets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/lib/secrets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Show Tech support bundle collection pipeline.
3
+ * Returns UpdateStep[] consumed by useStepRunner (TUI) or runStepsCli (CLI).
4
+ */
5
+ import type { UpdateStep } from './update-steps.js';
6
+ export declare function showtechSteps(bundleDir: string): UpdateStep[];
7
+ //# sourceMappingURL=showtech-steps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"showtech-steps.d.ts","sourceRoot":"","sources":["../../src/lib/showtech-steps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,UAAU,EAAe,MAAM,mBAAmB,CAAC;AA0CjE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE,CAyU7D"}