@calltelemetry/cli 0.12.11 → 0.12.13

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 (157) hide show
  1. package/dist/commands/config.d.ts +25 -0
  2. package/dist/commands/config.d.ts.map +1 -1
  3. package/dist/commands/config.js +42 -3
  4. package/dist/commands/config.js.map +1 -1
  5. package/dist/commands/db.d.ts +24 -0
  6. package/dist/commands/db.d.ts.map +1 -1
  7. package/dist/commands/db.js +43 -4
  8. package/dist/commands/db.js.map +1 -1
  9. package/dist/commands/go-parity.d.ts +32 -0
  10. package/dist/commands/go-parity.d.ts.map +1 -0
  11. package/dist/commands/go-parity.js +359 -0
  12. package/dist/commands/go-parity.js.map +1 -0
  13. package/dist/commands/jtapi.d.ts.map +1 -1
  14. package/dist/commands/jtapi.js +2 -0
  15. package/dist/commands/jtapi.js.map +1 -1
  16. package/dist/commands/migrate.d.ts.map +1 -1
  17. package/dist/commands/migrate.js +2 -0
  18. package/dist/commands/migrate.js.map +1 -1
  19. package/dist/commands/network.d.ts.map +1 -1
  20. package/dist/commands/network.js +63 -50
  21. package/dist/commands/network.js.map +1 -1
  22. package/dist/commands/offline.d.ts.map +1 -1
  23. package/dist/commands/offline.js +2 -0
  24. package/dist/commands/offline.js.map +1 -1
  25. package/dist/commands/seed.d.ts.map +1 -1
  26. package/dist/commands/seed.js +2 -0
  27. package/dist/commands/seed.js.map +1 -1
  28. package/dist/commands/ship-certs.d.ts +7 -0
  29. package/dist/commands/ship-certs.d.ts.map +1 -0
  30. package/dist/commands/ship-certs.js +105 -0
  31. package/dist/commands/ship-certs.js.map +1 -0
  32. package/dist/commands/ship-db.d.ts +8 -0
  33. package/dist/commands/ship-db.d.ts.map +1 -0
  34. package/dist/commands/ship-db.js +358 -0
  35. package/dist/commands/ship-db.js.map +1 -0
  36. package/dist/commands/ship-diag.d.ts +10 -0
  37. package/dist/commands/ship-diag.d.ts.map +1 -0
  38. package/dist/commands/ship-diag.js +73 -0
  39. package/dist/commands/ship-diag.js.map +1 -0
  40. package/dist/commands/ship-docker.d.ts +6 -0
  41. package/dist/commands/ship-docker.d.ts.map +1 -0
  42. package/dist/commands/ship-docker.js +153 -0
  43. package/dist/commands/ship-docker.js.map +1 -0
  44. package/dist/commands/ship-ipv6.d.ts +6 -0
  45. package/dist/commands/ship-ipv6.d.ts.map +1 -0
  46. package/dist/commands/ship-ipv6.js +59 -0
  47. package/dist/commands/ship-ipv6.js.map +1 -0
  48. package/dist/commands/ship-logging.d.ts +7 -0
  49. package/dist/commands/ship-logging.d.ts.map +1 -0
  50. package/dist/commands/ship-logging.js +71 -0
  51. package/dist/commands/ship-logging.js.map +1 -0
  52. package/dist/commands/ship-migrate.d.ts +6 -0
  53. package/dist/commands/ship-migrate.d.ts.map +1 -0
  54. package/dist/commands/ship-migrate.js +152 -0
  55. package/dist/commands/ship-migrate.js.map +1 -0
  56. package/dist/commands/ship-offline.d.ts +6 -0
  57. package/dist/commands/ship-offline.d.ts.map +1 -0
  58. package/dist/commands/ship-offline.js +110 -0
  59. package/dist/commands/ship-offline.js.map +1 -0
  60. package/dist/commands/ship-os-updates.d.ts +6 -0
  61. package/dist/commands/ship-os-updates.d.ts.map +1 -0
  62. package/dist/commands/ship-os-updates.js +116 -0
  63. package/dist/commands/ship-os-updates.js.map +1 -0
  64. package/dist/commands/ship-postgres.d.ts +6 -0
  65. package/dist/commands/ship-postgres.d.ts.map +1 -0
  66. package/dist/commands/ship-postgres.js +84 -0
  67. package/dist/commands/ship-postgres.js.map +1 -0
  68. package/dist/commands/ship-rollback.d.ts +7 -0
  69. package/dist/commands/ship-rollback.d.ts.map +1 -0
  70. package/dist/commands/ship-rollback.js +63 -0
  71. package/dist/commands/ship-rollback.js.map +1 -0
  72. package/dist/commands/ship-services.d.ts +7 -0
  73. package/dist/commands/ship-services.d.ts.map +1 -0
  74. package/dist/commands/ship-services.js +127 -0
  75. package/dist/commands/ship-services.js.map +1 -0
  76. package/dist/commands/ship-sql-monitor.d.ts +6 -0
  77. package/dist/commands/ship-sql-monitor.d.ts.map +1 -0
  78. package/dist/commands/ship-sql-monitor.js +89 -0
  79. package/dist/commands/ship-sql-monitor.js.map +1 -0
  80. package/dist/commands/ship-status.d.ts +6 -0
  81. package/dist/commands/ship-status.d.ts.map +1 -0
  82. package/dist/commands/ship-status.js +21 -0
  83. package/dist/commands/ship-status.js.map +1 -0
  84. package/dist/commands/ship-update.d.ts +31 -0
  85. package/dist/commands/ship-update.d.ts.map +1 -0
  86. package/dist/commands/ship-update.js +234 -0
  87. package/dist/commands/ship-update.js.map +1 -0
  88. package/dist/commands/ship-users.d.ts +7 -0
  89. package/dist/commands/ship-users.d.ts.map +1 -0
  90. package/dist/commands/ship-users.js +118 -0
  91. package/dist/commands/ship-users.js.map +1 -0
  92. package/dist/commands/update.d.ts +45 -0
  93. package/dist/commands/update.d.ts.map +1 -1
  94. package/dist/commands/update.js +74 -3
  95. package/dist/commands/update.js.map +1 -1
  96. package/dist/commands/users.d.ts.map +1 -1
  97. package/dist/commands/users.js +51 -0
  98. package/dist/commands/users.js.map +1 -1
  99. package/dist/index.js +3 -72
  100. package/dist/index.js.map +1 -1
  101. package/dist/lib/network-apply.d.ts +102 -0
  102. package/dist/lib/network-apply.d.ts.map +1 -0
  103. package/dist/lib/network-apply.js +472 -0
  104. package/dist/lib/network-apply.js.map +1 -0
  105. package/dist/lib/ops-port.d.ts +205 -0
  106. package/dist/lib/ops-port.d.ts.map +1 -0
  107. package/dist/lib/ops-port.js +906 -0
  108. package/dist/lib/ops-port.js.map +1 -0
  109. package/dist/lib/public-doc.d.ts +37 -0
  110. package/dist/lib/public-doc.d.ts.map +1 -0
  111. package/dist/lib/public-doc.js +27 -0
  112. package/dist/lib/public-doc.js.map +1 -0
  113. package/dist/lib/ship-identity.d.ts +9 -0
  114. package/dist/lib/ship-identity.d.ts.map +1 -0
  115. package/dist/lib/ship-identity.js +12 -0
  116. package/dist/lib/ship-identity.js.map +1 -0
  117. package/dist/lib/ship-logo.d.ts +11 -0
  118. package/dist/lib/ship-logo.d.ts.map +1 -0
  119. package/dist/lib/ship-logo.js +17 -0
  120. package/dist/lib/ship-logo.js.map +1 -0
  121. package/dist/lib/ship-status.d.ts +21 -0
  122. package/dist/lib/ship-status.d.ts.map +1 -0
  123. package/dist/lib/ship-status.js +82 -0
  124. package/dist/lib/ship-status.js.map +1 -0
  125. package/dist/lib/version.d.ts +1 -1
  126. package/dist/lib/version.js +1 -1
  127. package/dist/program.d.ts +22 -0
  128. package/dist/program.d.ts.map +1 -0
  129. package/dist/program.js +124 -0
  130. package/dist/program.js.map +1 -0
  131. package/dist/shell/commands/diag.d.ts.map +1 -1
  132. package/dist/shell/commands/diag.js +47 -19
  133. package/dist/shell/commands/diag.js.map +1 -1
  134. package/dist/shell/commands/ops-mutates.d.ts +16 -0
  135. package/dist/shell/commands/ops-mutates.d.ts.map +1 -0
  136. package/dist/shell/commands/ops-mutates.js +62 -0
  137. package/dist/shell/commands/ops-mutates.js.map +1 -0
  138. package/dist/shell/commands/registry.d.ts.map +1 -1
  139. package/dist/shell/commands/registry.js +43 -0
  140. package/dist/shell/commands/registry.js.map +1 -1
  141. package/dist/shell/commands/show.d.ts +12 -0
  142. package/dist/shell/commands/show.d.ts.map +1 -1
  143. package/dist/shell/commands/show.js +190 -10
  144. package/dist/shell/commands/show.js.map +1 -1
  145. package/dist/shell/commands/telemetry.d.ts +11 -0
  146. package/dist/shell/commands/telemetry.d.ts.map +1 -0
  147. package/dist/shell/commands/telemetry.js +49 -0
  148. package/dist/shell/commands/telemetry.js.map +1 -0
  149. package/dist/shell/network-onboarding.d.ts +7 -4
  150. package/dist/shell/network-onboarding.d.ts.map +1 -1
  151. package/dist/shell/network-onboarding.js +22 -38
  152. package/dist/shell/network-onboarding.js.map +1 -1
  153. package/dist/ship-entry.d.ts +3 -0
  154. package/dist/ship-entry.d.ts.map +1 -0
  155. package/dist/ship-entry.js +122 -0
  156. package/dist/ship-entry.js.map +1 -0
  157. package/package.json +9 -2
@@ -0,0 +1,89 @@
1
+ import { readEnvKeys, updateEnvKeys } from '../lib/env.js';
2
+ import { composeUp, compose } from '../lib/compose.js';
3
+ import { attachSqlMonitorPassword } from './go-parity.js';
4
+ import * as out from '../utils/output.js';
5
+ const PROFILE = 'sql-monitor';
6
+ const SERVICE = 'pghero';
7
+ function parseProfiles(raw) {
8
+ return (raw ?? '')
9
+ .split(',')
10
+ .map((p) => p.trim())
11
+ .filter(Boolean);
12
+ }
13
+ function isEnabled(raw) {
14
+ return parseProfiles(raw).includes(PROFILE);
15
+ }
16
+ function addProfile(raw) {
17
+ const p = parseProfiles(raw);
18
+ if (!p.includes(PROFILE))
19
+ p.push(PROFILE);
20
+ return p.join(',');
21
+ }
22
+ function removeProfile(raw) {
23
+ return parseProfiles(raw).filter((x) => x !== PROFILE).join(',');
24
+ }
25
+ export function registerShipSqlMonitorCommand(program) {
26
+ const sql = program
27
+ .command('sql-monitor')
28
+ .description('PgHero SQL-health dashboard (opt-in compose profile)');
29
+ attachSqlMonitorPassword(sql);
30
+ sql
31
+ .command('status')
32
+ .description('Show whether sql-monitor profile is enabled')
33
+ .action(() => {
34
+ const env = readEnvKeys();
35
+ const on = isEnabled(env.COMPOSE_PROFILES);
36
+ console.log(`sql-monitor profile: ${on ? 'enabled' : 'disabled'}`);
37
+ console.log(`COMPOSE_PROFILES=${env.COMPOSE_PROFILES ?? '(unset)'}`);
38
+ });
39
+ sql
40
+ .command('enable')
41
+ .description('Enable sql-monitor compose profile and start pghero')
42
+ .action(async () => {
43
+ try {
44
+ const env = readEnvKeys();
45
+ await updateEnvKeys({ COMPOSE_PROFILES: addProfile(env.COMPOSE_PROFILES) });
46
+ out.ok('sql-monitor profile enabled in .env');
47
+ try {
48
+ await composeUp(['-d', SERVICE]);
49
+ out.ok(`${SERVICE} started`);
50
+ }
51
+ catch {
52
+ out.info('Profile written. Recreate stack: ct restart');
53
+ }
54
+ }
55
+ catch (err) {
56
+ out.fail(err instanceof Error ? err.message : String(err));
57
+ process.exitCode = 1;
58
+ }
59
+ });
60
+ sql
61
+ .command('disable')
62
+ .description('Disable sql-monitor compose profile and stop pghero')
63
+ .action(async () => {
64
+ try {
65
+ const env = readEnvKeys();
66
+ const next = removeProfile(env.COMPOSE_PROFILES);
67
+ await updateEnvKeys({
68
+ COMPOSE_PROFILES: next.length > 0 ? next : undefined,
69
+ });
70
+ out.ok('sql-monitor profile removed from .env');
71
+ try {
72
+ await compose(['stop', SERVICE]);
73
+ await compose(['rm', '-f', SERVICE]);
74
+ out.ok(`${SERVICE} stopped`);
75
+ }
76
+ catch {
77
+ out.info('Profile cleared. Stop remaining containers if needed.');
78
+ }
79
+ }
80
+ catch (err) {
81
+ out.fail(err instanceof Error ? err.message : String(err));
82
+ process.exitCode = 1;
83
+ }
84
+ });
85
+ sql.action(() => {
86
+ console.log('Usage: ct sql-monitor status|enable|disable|password|rotate-password');
87
+ });
88
+ }
89
+ //# sourceMappingURL=ship-sql-monitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-sql-monitor.js","sourceRoot":"","sources":["../../src/commands/ship-sql-monitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Slim non-Ink `ct status` for the multi-arch ship binary.
3
+ */
4
+ import type { Command } from 'commander';
5
+ export declare function registerShipStatusCommand(program: Command): void;
6
+ //# sourceMappingURL=ship-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-status.d.ts","sourceRoot":"","sources":["../../src/commands/ship-status.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgBhE"}
@@ -0,0 +1,21 @@
1
+ import { collectShipStatus, formatShipStatus } from '../lib/ship-status.js';
2
+ import * as out from '../utils/output.js';
3
+ export function registerShipStatusCommand(program) {
4
+ program
5
+ .command('status')
6
+ .description('Show appliance status (compose, version, install dir)')
7
+ .action(async () => {
8
+ try {
9
+ const snapshot = await collectShipStatus();
10
+ console.log(formatShipStatus(snapshot));
11
+ if (snapshot.error && !snapshot.composeFileExists) {
12
+ process.exitCode = 1;
13
+ }
14
+ }
15
+ catch (err) {
16
+ out.fail(err?.message ?? String(err));
17
+ process.exitCode = 1;
18
+ }
19
+ });
20
+ }
21
+ //# sourceMappingURL=ship-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-status.js","sourceRoot":"","sources":["../../src/commands/ship-status.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,uDAAuD,CAAC;SACpE,MAAM,CAAC,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;gBAClD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Slim non-Ink `ct update` for the multi-arch ship binary.
3
+ *
4
+ * Uses lib/update-steps (preflightSteps + executeSteps + runStepsCli) — the same
5
+ * pipeline as the full Node CLI, without Ink TUI or Node runtime self-upgrade.
6
+ */
7
+ import type { Command } from 'commander';
8
+ /**
9
+ * Resolve the operator's version argument / flags to a concrete release string.
10
+ * Fail-closed on unknown targets.
11
+ */
12
+ export declare function resolveShipUpdateTarget(versionArg: string | undefined, opts: {
13
+ latest?: boolean;
14
+ rc?: boolean;
15
+ stable?: boolean;
16
+ line?: string;
17
+ channel?: string;
18
+ }): Promise<string>;
19
+ /** Run the non-Ink update pipeline. Throws / sets exitCode on failure. */
20
+ export declare function runShipUpdate(versionArg: string | undefined, opts: {
21
+ latest?: boolean;
22
+ rc?: boolean;
23
+ stable?: boolean;
24
+ line?: string;
25
+ channel?: string;
26
+ forceUpgrade?: boolean;
27
+ cleanup?: boolean;
28
+ backupDb?: boolean;
29
+ }): Promise<void>;
30
+ export declare function registerShipUpdateCommand(program: Command): void;
31
+ //# sourceMappingURL=ship-update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-update.d.ts","sourceRoot":"","sources":["../../src/commands/ship-update.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYzC;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,MAAM,CAAC,CAkGjB;AAED,0EAA0E;AAC1E,wBAAsB,aAAa,CACjC,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,IAAI,EAAE;IACJ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GACA,OAAO,CAAC,IAAI,CAAC,CAmFf;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2ChE"}
@@ -0,0 +1,234 @@
1
+ import { fetchLatestVersion, fetchLatestForLine, fetchLatestForChannel } from '../lib/bundle.js';
2
+ import { detectTargetType, getPin, setPin } from '../lib/prefs.js';
3
+ import { getCurrentVersion } from '../lib/update.js';
4
+ import { createDatabaseBackup } from '../lib/db-backup.js';
5
+ import { preflightSteps, executeSteps, runStepsCli } from '../lib/update-steps.js';
6
+ import { capturePostUpgradeHealth } from '../lib/post-upgrade-health.js';
7
+ import { getDockerVersion } from '../lib/system.js';
8
+ import { updateService } from '../lib/ops-port.js';
9
+ import { reportOpsResult } from './go-parity.js';
10
+ import * as out from '../utils/output.js';
11
+ /**
12
+ * Resolve the operator's version argument / flags to a concrete release string.
13
+ * Fail-closed on unknown targets.
14
+ */
15
+ export async function resolveShipUpdateTarget(versionArg, opts) {
16
+ let version = versionArg;
17
+ let pinIntent = null;
18
+ if (opts.line) {
19
+ pinIntent = { type: 'line', value: opts.line };
20
+ version = opts.line;
21
+ }
22
+ else if (opts.channel) {
23
+ pinIntent = { type: 'channel', value: opts.channel };
24
+ version = opts.channel;
25
+ }
26
+ else if (versionArg) {
27
+ const detected = detectTargetType(versionArg);
28
+ if (detected === 'line')
29
+ pinIntent = { type: 'line', value: versionArg };
30
+ else if (detected === 'channel')
31
+ pinIntent = { type: 'channel', value: versionArg };
32
+ else if (detected === 'unknown') {
33
+ throw new Error(`Don't know how to interpret target '${versionArg}'. Accepted forms:\n` +
34
+ ` ct update # follow saved pin or global stable\n` +
35
+ ` ct update 0.8.6 # pin to the 0.8.6 line\n` +
36
+ ` ct update 0.8.6.5 # install exact version\n` +
37
+ ` ct update stable # follow the stable channel\n` +
38
+ ` ct update --line 0.8.6 # explicit line flag\n` +
39
+ ` ct update --channel stable # explicit channel flag`);
40
+ }
41
+ }
42
+ if (pinIntent) {
43
+ setPin(pinIntent);
44
+ console.log(`Pinned: ${pinIntent.type} = ${pinIntent.value}`);
45
+ console.log(`(saved to ~/.ct/preferences.json)`);
46
+ }
47
+ if (!version && !opts.latest && !opts.rc && !opts.stable) {
48
+ const saved = getPin();
49
+ if (saved) {
50
+ console.log(`Using saved pin: ${saved.type} = ${saved.value}`);
51
+ version = saved.value;
52
+ }
53
+ }
54
+ const targetType = detectTargetType(version);
55
+ if (targetType === 'line') {
56
+ console.log(`Fetching latest stable for line ${version}...`);
57
+ const resolved = await fetchLatestForLine(version);
58
+ console.log(`Latest ${version} stable: ${resolved}`);
59
+ return resolved;
60
+ }
61
+ if (targetType === 'channel') {
62
+ console.log(`Fetching latest on channel '${version}'...`);
63
+ const resolved = await fetchLatestForChannel(version);
64
+ console.log(`Latest on ${version}: ${resolved}`);
65
+ return resolved;
66
+ }
67
+ if (targetType === 'keyword') {
68
+ if (version === 'latest') {
69
+ console.log('Fetching latest version (including pre-releases)...');
70
+ const resolved = await fetchLatestVersion('latest');
71
+ console.log(`Latest version: ${resolved}`);
72
+ return resolved;
73
+ }
74
+ if (version === 'rc') {
75
+ console.log('Fetching latest release candidate...');
76
+ const resolved = await fetchLatestVersion('rc');
77
+ console.log(`Latest release candidate: ${resolved}`);
78
+ return resolved;
79
+ }
80
+ if (version === 'dev') {
81
+ console.log("Fetching latest on channel 'dev'...");
82
+ const resolved = await fetchLatestForChannel('dev');
83
+ console.log(`Latest on dev: ${resolved}`);
84
+ return resolved;
85
+ }
86
+ console.log('Fetching latest stable version...');
87
+ const resolved = await fetchLatestVersion('stable');
88
+ console.log(`Latest stable version: ${resolved}`);
89
+ return resolved;
90
+ }
91
+ if (!version && opts.latest) {
92
+ console.log('Fetching latest version (including pre-releases)...');
93
+ const resolved = await fetchLatestVersion('latest');
94
+ console.log(`Latest version: ${resolved}`);
95
+ return resolved;
96
+ }
97
+ if (!version && opts.rc) {
98
+ console.log('Fetching latest release candidate...');
99
+ const resolved = await fetchLatestVersion('rc');
100
+ console.log(`Latest release candidate: ${resolved}`);
101
+ return resolved;
102
+ }
103
+ if (!version || opts.stable) {
104
+ console.log('Fetching latest stable version...');
105
+ const resolved = await fetchLatestVersion('stable');
106
+ console.log(`Latest stable version: ${resolved}`);
107
+ return resolved;
108
+ }
109
+ // exact version
110
+ return version;
111
+ }
112
+ /** Run the non-Ink update pipeline. Throws / sets exitCode on failure. */
113
+ export async function runShipUpdate(versionArg, opts) {
114
+ const version = await resolveShipUpdateTarget(versionArg, opts);
115
+ const currentVersion = getCurrentVersion();
116
+ console.log(`Current version: ${currentVersion}`);
117
+ console.log(`Target version: ${version}`);
118
+ console.log();
119
+ if (!opts.forceUpgrade) {
120
+ try {
121
+ await runStepsCli(preflightSteps(version));
122
+ console.log();
123
+ }
124
+ catch {
125
+ out.fail('Pre-flight checks failed. Use --force-upgrade to proceed anyway.');
126
+ process.exitCode = 1;
127
+ return;
128
+ }
129
+ }
130
+ const dockerVer = await getDockerVersion();
131
+ if (dockerVer === null) {
132
+ out.warn('Docker not found or not responding');
133
+ }
134
+ else if (dockerVer < 26) {
135
+ out.warn(`Docker version ${dockerVer} detected — Docker 26+ is recommended`);
136
+ // Ship path: fail-closed when force not set (no automatic dnf upgrade here).
137
+ if (!opts.forceUpgrade) {
138
+ out.fail('Docker < 26. Use --force-upgrade to continue, or upgrade Docker first.');
139
+ process.exitCode = 1;
140
+ return;
141
+ }
142
+ }
143
+ else {
144
+ out.ok(`Docker version ${dockerVer} is supported`);
145
+ }
146
+ console.log();
147
+ console.log(`Upgrading from ${currentVersion} to ${version}`);
148
+ console.log('(ship binary — non-interactive step runner; no Ink TUI)');
149
+ let steps = executeSteps(version);
150
+ if (opts.forceUpgrade) {
151
+ steps = steps.filter((s) => s.label !== 'Check image availability');
152
+ }
153
+ if (opts.cleanup === false) {
154
+ steps = steps.filter((s) => s.label !== 'Cleanup unused resources');
155
+ }
156
+ if (opts.backupDb) {
157
+ steps = [
158
+ {
159
+ label: 'Database backup',
160
+ run: async (ctx) => {
161
+ ctx?.log('Creating database backup before update...');
162
+ const backup = await createDatabaseBackup();
163
+ return backup.filePath;
164
+ },
165
+ },
166
+ ...steps,
167
+ ];
168
+ }
169
+ console.log();
170
+ let stepError;
171
+ try {
172
+ await runStepsCli(steps);
173
+ }
174
+ catch (err) {
175
+ stepError = err;
176
+ }
177
+ console.log();
178
+ const anyFailed = await capturePostUpgradeHealth(`post-upgrade container health check (${version})`, { upgradeFailed: Boolean(stepError) });
179
+ if (stepError) {
180
+ out.fail(`Update failed: ${stepError instanceof Error ? stepError.message : String(stepError)}`);
181
+ process.exitCode = 1;
182
+ return;
183
+ }
184
+ if (anyFailed) {
185
+ out.warn('Update applied, but one or more containers are unhealthy — see captured logs above.');
186
+ process.exitCode = 1;
187
+ }
188
+ else {
189
+ out.successBox('Update complete!');
190
+ }
191
+ }
192
+ export function registerShipUpdateCommand(program) {
193
+ const update = program
194
+ .command('update [version]')
195
+ .description('Update to a version, line, channel, or latest stable (ship binary step runner)')
196
+ .option('--latest', 'Use latest build including pre-releases')
197
+ .option('--rc', 'Use latest release candidate')
198
+ .option('--stable', 'Use latest stable release (default)')
199
+ .option('--line <X.Y.Z>', 'Pin to a specific version line')
200
+ .option('--channel <name>', 'Pin to a customer-facing channel')
201
+ .option('--force-upgrade', 'Skip preflight / allow Docker < 26')
202
+ .option('--no-cleanup', 'Skip Docker cleanup after update')
203
+ .option('--backup-db', 'Create a database backup before update', false)
204
+ .option('--no-backup-db', 'Skip database backup before update')
205
+ .action(async (versionArg, opts) => {
206
+ try {
207
+ await runShipUpdate(versionArg, {
208
+ latest: opts.latest,
209
+ rc: opts.rc,
210
+ stable: opts.stable,
211
+ line: opts.line,
212
+ channel: opts.channel,
213
+ forceUpgrade: opts.forceUpgrade,
214
+ cleanup: opts.cleanup,
215
+ backupDb: opts.backupDb,
216
+ });
217
+ }
218
+ catch (err) {
219
+ out.fail(err?.message ?? String(err));
220
+ process.exitCode = 1;
221
+ }
222
+ });
223
+ // Dual-form: ct update service <svc> <tag> (also top-level update-service via go-parity)
224
+ update
225
+ .command('service <service> <tag>')
226
+ .description('Update ONE compose service image tag (atomic recreate)')
227
+ .option('-y, --yes', 'Confirm non-interactive apply')
228
+ .option('--dry-run', 'Show plan only')
229
+ .action(async (service, tag, opts) => {
230
+ const r = await updateService(service, tag, { yes: opts.yes, dryRun: opts.dryRun });
231
+ reportOpsResult(r);
232
+ });
233
+ }
234
+ //# sourceMappingURL=ship-update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-update.js","sourceRoot":"","sources":["../../src/commands/ship-update.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,GAAG,MAAM,oBAAoB,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAA8B,EAC9B,IAMC;IAED,IAAI,OAAO,GAAuB,UAAU,CAAC;IAC7C,IAAI,SAAS,GAAuD,IAAI,CAAC;IAEzE,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,CAAC;SAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACxB,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACrD,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IACzB,CAAC;SAAM,IAAI,UAAU,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,QAAQ,KAAK,MAAM;YAAE,SAAS,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;aACpE,IAAI,QAAQ,KAAK,SAAS;YAAE,SAAS,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;aAC/E,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CACb,uCAAuC,UAAU,sBAAsB;gBACrE,qEAAqE;gBACrE,yDAAyD;gBACzD,yDAAyD;gBACzD,6DAA6D;gBAC7D,sDAAsD;gBACtD,uDAAuD,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,SAAS,CAAC,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,WAAW,SAAS,CAAC,IAAI,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC/D,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,mCAAmC,OAAO,KAAK,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,OAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,OAAO,YAAY,QAAQ,EAAE,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,+BAA+B,OAAO,MAAM,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,OAAQ,CAAC,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,KAAK,QAAQ,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;YAC3C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;YACrD,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;YACtB,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;YAC1C,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;QACnE,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;QAC3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;QACrD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;QAClD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,gBAAgB;IAChB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,UAA8B,EAC9B,IASC;IAED,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAChE,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,cAAc,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACP,GAAG,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YAC7E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAC3C,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,GAAG,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;QAC1B,GAAG,CAAC,IAAI,CAAC,kBAAkB,SAAS,uCAAuC,CAAC,CAAC;QAC7E,6EAA6E;QAC7E,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,GAAG,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;YACnF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,EAAE,CAAC,kBAAkB,SAAS,eAAe,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,kBAAkB,cAAc,OAAO,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAEvE,IAAI,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,0BAA0B,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,0BAA0B,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,KAAK,GAAG;YACN;gBACE,KAAK,EAAE,iBAAiB;gBACxB,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;oBACjB,GAAG,EAAE,GAAG,CAAC,2CAA2C,CAAC,CAAC;oBACtD,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC;oBAC5C,OAAO,MAAM,CAAC,QAAQ,CAAC;gBACzB,CAAC;aACF;YACD,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,IAAI,SAAkB,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,SAAS,GAAG,GAAG,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC9C,wCAAwC,OAAO,GAAG,EAClD,EAAE,aAAa,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,CACtC,CAAC;IAEF,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,kBAAkB,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;QAChG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;IACrC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAgB;IACxD,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,kBAAkB,CAAC;SAC3B,WAAW,CACV,gFAAgF,CACjF;SACA,MAAM,CAAC,UAAU,EAAE,yCAAyC,CAAC;SAC7D,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC;SAC9C,MAAM,CAAC,UAAU,EAAE,qCAAqC,CAAC;SACzD,MAAM,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SAC1D,MAAM,CAAC,kBAAkB,EAAE,kCAAkC,CAAC;SAC9D,MAAM,CAAC,iBAAiB,EAAE,oCAAoC,CAAC;SAC/D,MAAM,CAAC,cAAc,EAAE,kCAAkC,CAAC;SAC1D,MAAM,CAAC,aAAa,EAAE,wCAAwC,EAAE,KAAK,CAAC;SACtE,MAAM,CAAC,gBAAgB,EAAE,oCAAoC,CAAC;SAC9D,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,IAAI,EAAE,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,aAAa,CAAC,UAAU,EAAE;gBAC9B,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACtC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,yFAAyF;IACzF,MAAM;SACH,OAAO,CAAC,yBAAyB,CAAC;SAClC,WAAW,CAAC,wDAAwD,CAAC;SACrE,MAAM,CAAC,WAAW,EAAE,+BAA+B,CAAC;SACpD,MAAM,CAAC,WAAW,EAAE,gBAAgB,CAAC;SACrC,MAAM,CAAC,KAAK,EAAE,OAAe,EAAE,GAAW,EAAE,IAAyC,EAAE,EAAE;QACxF,MAAM,CAAC,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACpF,eAAe,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Ship (no-Ink) users: list | orgs | reset-password.
3
+ * Uses lib/users.ts RPC. Top-level alias: ct reset-password.
4
+ */
5
+ import type { Command } from 'commander';
6
+ export declare function registerShipUsersCommand(program: Command): void;
7
+ //# sourceMappingURL=ship-users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-users.d.ts","sourceRoot":"","sources":["../../src/commands/ship-users.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqFzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAsD/D"}
@@ -0,0 +1,118 @@
1
+ import { listOrgs, listOrgUsers, resetUserPassword, generateUserPassword, } from '../lib/users.js';
2
+ import { attachUsersAddAdmin } from './go-parity.js';
3
+ import * as out from '../utils/output.js';
4
+ async function printOrgs() {
5
+ const orgs = await listOrgs();
6
+ if (orgs.length === 0) {
7
+ console.log('No organizations found.');
8
+ return;
9
+ }
10
+ console.log('Organizations');
11
+ for (const org of orgs) {
12
+ console.log(` ${String(org.id).padStart(4)} ${org.name}`);
13
+ }
14
+ }
15
+ async function printUsers() {
16
+ const orgs = await listOrgs();
17
+ if (orgs.length === 0) {
18
+ console.log('No organizations found.');
19
+ return;
20
+ }
21
+ for (const org of orgs) {
22
+ console.log(`\nOrganization: ${org.name} (id=${org.id})`);
23
+ const users = await listOrgUsers(org.id);
24
+ if (users.length === 0) {
25
+ console.log(' (no users)');
26
+ continue;
27
+ }
28
+ console.log(' ID Email Role');
29
+ for (const u of users) {
30
+ const roles = u.roles?.length ? u.roles.join(',') : u.role || '-';
31
+ console.log(` ${String(u.id).padEnd(5)} ${u.email.padEnd(30)} ${roles}`);
32
+ }
33
+ }
34
+ }
35
+ async function doResetPassword(opts) {
36
+ if (!opts.user) {
37
+ out.fail('Usage: ct users reset-password --user <id> [--password <pw>|--generate]');
38
+ out.info('Legacy: ct reset-password --user <id>');
39
+ process.exitCode = 1;
40
+ return;
41
+ }
42
+ const userId = parseInt(opts.user, 10);
43
+ if (Number.isNaN(userId) || userId <= 0) {
44
+ out.fail(`Invalid user id: ${opts.user}`);
45
+ process.exitCode = 1;
46
+ return;
47
+ }
48
+ let password = opts.password;
49
+ if (!password || opts.generate) {
50
+ password = generateUserPassword();
51
+ }
52
+ if (password.length < 8) {
53
+ out.fail('Password must be at least 8 characters');
54
+ process.exitCode = 1;
55
+ return;
56
+ }
57
+ try {
58
+ await resetUserPassword(userId, password);
59
+ out.ok(`Password reset for user ${userId}`);
60
+ console.log(` New password: ${password}`);
61
+ }
62
+ catch (err) {
63
+ out.fail(err instanceof Error ? err.message : String(err));
64
+ process.exitCode = 1;
65
+ }
66
+ }
67
+ export function registerShipUsersCommand(program) {
68
+ const users = program.command('users').description('Manage application user accounts');
69
+ // Hidden experimental add-admin (requires --experimental)
70
+ attachUsersAddAdmin(users);
71
+ users
72
+ .command('list')
73
+ .description('List users across all organizations (RPC)')
74
+ .action(async () => {
75
+ try {
76
+ await printUsers();
77
+ }
78
+ catch (err) {
79
+ out.fail(err instanceof Error ? err.message : String(err));
80
+ process.exitCode = 1;
81
+ }
82
+ });
83
+ users
84
+ .command('orgs')
85
+ .description('List organizations (RPC)')
86
+ .action(async () => {
87
+ try {
88
+ await printOrgs();
89
+ }
90
+ catch (err) {
91
+ out.fail(err instanceof Error ? err.message : String(err));
92
+ process.exitCode = 1;
93
+ }
94
+ });
95
+ users
96
+ .command('reset-password')
97
+ .description('Reset a user password via RPC')
98
+ .option('--user <id>', 'User ID')
99
+ .option('--password <pw>', 'New password (default: generate)')
100
+ .option('--generate', 'Force generate a random password')
101
+ .action(async (opts) => {
102
+ await doResetPassword(opts);
103
+ });
104
+ users.action(() => {
105
+ console.log('Usage: ct users list|orgs|reset-password|add-admin');
106
+ });
107
+ // Legacy Go/cli.sh alias
108
+ program
109
+ .command('reset-password')
110
+ .description('Alias for ct users reset-password')
111
+ .option('--user <id>', 'User ID')
112
+ .option('--password <pw>', 'New password (default: generate)')
113
+ .option('--generate', 'Force generate a random password')
114
+ .action(async (opts) => {
115
+ await doResetPassword(opts);
116
+ });
117
+ }
118
+ //# sourceMappingURL=ship-users.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ship-users.js","sourceRoot":"","sources":["../../src/commands/ship-users.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,40 @@
1
1
  import { Command } from 'commander';
2
+ /**
3
+ * Public-doc metadata for appliance update / lifecycle commands.
4
+ *
5
+ * @publicDoc
6
+ * @command update
7
+ * @category Updates
8
+ * @summary Update the CallTelemetry appliance to a version, line, or channel
9
+ * @when Routine upgrades, pin to a release line/channel, or apply a specific build
10
+ * @danger Updates restart services; use --backup-db for a pre-update database dump. Prefer non-peak windows.
11
+ * @see https://docs.calltelemetry.com
12
+ * @example ct update
13
+ * @example ct update 0.8.6
14
+ * @example ct update --latest
15
+ * @example ct update --backup-db
16
+ */
17
+ export declare const updatePublicDoc: import("../lib/public-doc.js").PublicDocMeta;
18
+ /**
19
+ * @publicDoc
20
+ * @command rollback
21
+ * @category Updates
22
+ * @summary Roll back to the previous docker-compose configuration
23
+ * @when Immediately after a failed or undesired update when a compose backup exists
24
+ * @danger Restores the last compose backup and restarts services; does not restore the database
25
+ * @example ct rollback
26
+ */
27
+ export declare const rollbackPublicDoc: import("../lib/public-doc.js").PublicDocMeta;
28
+ /**
29
+ * @publicDoc
30
+ * @command reset
31
+ * @category Updates
32
+ * @summary Stop the application, remove Docker volumes, and restart (destructive)
33
+ * @when Recovering a broken install when data loss is acceptable
34
+ * @danger Removes application containers and volumes; irreversible without external backups. Requires --yes or interactive confirm.
35
+ * @example ct reset --yes
36
+ */
37
+ export declare const resetPublicDoc: import("../lib/public-doc.js").PublicDocMeta;
2
38
  /** @internal */
3
39
  export declare const dockerPackageUpdateArgs: readonly ["dnf", "update", "-y", "docker-ce", "docker-ce-cli", "containerd.io", "docker-buildx-plugin", "docker-compose-plugin"];
4
40
  /** @internal */
@@ -8,6 +44,15 @@ export declare function sudoNonInteractive(args: string[], options?: {
8
44
  stdout?: 'inherit' | 'ignore';
9
45
  }): Promise<void>;
10
46
  export declare function ensureNodeRuntime(): Promise<string>;
47
+ /**
48
+ * Register update, rollback, and service lifecycle commands (start/stop/restart/reset).
49
+ *
50
+ * @publicDoc
51
+ * @command update
52
+ * @category Updates
53
+ * @summary Appliance update and lifecycle management
54
+ * @when Upgrades, rollbacks, and compose lifecycle control
55
+ */
11
56
  export declare function registerUpdateCommand(program: Command): void;
12
57
  /**
13
58
  * Phase 3: pin / unpin commands for multi-line concurrent shipping.
@@ -1 +1 @@
1
- {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,kIAS1B,CAAC;AAEX,gBAAgB;AAChB,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CASnE;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAO,GACvE,OAAO,CAAC,IAAI,CAAC,CAoCf;AAOD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBzD;AAOD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA0YrD;AAaD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAuCnD"}
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,eAAe,8CAQ1B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,8CAO5B,CAAC;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,8CAOzB,CAAC;AAEH,gBAAgB;AAChB,eAAO,MAAM,uBAAuB,kIAS1B,CAAC;AAEX,gBAAgB;AAChB,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,IAAI,CAAC,CASnE;AAED,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAA;CAAO,GACvE,OAAO,CAAC,IAAI,CAAC,CAoCf;AAOD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBzD;AAOD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,QA8YrD;AAaD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,QAuCnD"}