@calltelemetry/cli 0.7.5 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +104 -2
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +13 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +33 -0
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/diag.d.ts.map +1 -1
- package/dist/commands/diag.js +3 -0
- package/dist/commands/diag.js.map +1 -1
- package/dist/commands/health.d.ts +3 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +34 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +7 -0
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +1 -0
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/syslog.d.ts +3 -0
- package/dist/commands/syslog.d.ts.map +1 -0
- package/dist/commands/syslog.js +159 -0
- package/dist/commands/syslog.js.map +1 -0
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +143 -3
- package/dist/commands/update.js.map +1 -1
- package/dist/index.js +13 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/bundle.d.ts +3 -1
- package/dist/lib/bundle.d.ts.map +1 -1
- package/dist/lib/bundle.js +90 -15
- package/dist/lib/bundle.js.map +1 -1
- package/dist/lib/compose.d.ts +10 -0
- package/dist/lib/compose.d.ts.map +1 -1
- package/dist/lib/compose.js +251 -13
- package/dist/lib/compose.js.map +1 -1
- package/dist/lib/db-backup.d.ts +23 -0
- package/dist/lib/db-backup.d.ts.map +1 -0
- package/dist/lib/db-backup.js +80 -0
- package/dist/lib/db-backup.js.map +1 -0
- package/dist/lib/health-report.d.ts +93 -0
- package/dist/lib/health-report.d.ts.map +1 -0
- package/dist/lib/health-report.js +391 -0
- package/dist/lib/health-report.js.map +1 -0
- package/dist/lib/migration-003-nm-heal.js +5 -5
- package/dist/lib/migration-003-nm-heal.js.map +1 -1
- package/dist/lib/migration-009-bind-mount-files.d.ts +5 -4
- package/dist/lib/migration-009-bind-mount-files.d.ts.map +1 -1
- package/dist/lib/migration-009-bind-mount-files.js +15 -7
- package/dist/lib/migration-009-bind-mount-files.js.map +1 -1
- package/dist/lib/migration-010-jtapi-state.js +2 -2
- package/dist/lib/migration-010-jtapi-state.js.map +1 -1
- package/dist/lib/migration-011-docker-memory-limit.js +2 -2
- package/dist/lib/migration-011-docker-memory-limit.js.map +1 -1
- package/dist/lib/migration-012-db-pool-sizes.d.ts.map +1 -1
- package/dist/lib/migration-012-db-pool-sizes.js +5 -14
- package/dist/lib/migration-012-db-pool-sizes.js.map +1 -1
- package/dist/lib/migration-013-grafana-password.d.ts.map +1 -1
- package/dist/lib/migration-013-grafana-password.js +5 -13
- package/dist/lib/migration-013-grafana-password.js.map +1 -1
- package/dist/lib/postgres-performance.d.ts +51 -0
- package/dist/lib/postgres-performance.d.ts.map +1 -0
- package/dist/lib/postgres-performance.js +279 -0
- package/dist/lib/postgres-performance.js.map +1 -0
- package/dist/lib/release-migration-progress.d.ts +48 -0
- package/dist/lib/release-migration-progress.d.ts.map +1 -0
- package/dist/lib/release-migration-progress.js +223 -0
- package/dist/lib/release-migration-progress.js.map +1 -0
- package/dist/lib/services.d.ts.map +1 -1
- package/dist/lib/services.js +70 -1
- package/dist/lib/services.js.map +1 -1
- package/dist/lib/showtech-steps.d.ts +5 -1
- package/dist/lib/showtech-steps.d.ts.map +1 -1
- package/dist/lib/showtech-steps.js +44 -13
- package/dist/lib/showtech-steps.js.map +1 -1
- package/dist/lib/syslog.d.ts +5 -0
- package/dist/lib/syslog.d.ts.map +1 -0
- package/dist/lib/syslog.js +21 -0
- package/dist/lib/syslog.js.map +1 -0
- package/dist/lib/update-steps.d.ts.map +1 -1
- package/dist/lib/update-steps.js +119 -1
- package/dist/lib/update-steps.js.map +1 -1
- package/dist/lib/update.d.ts +8 -0
- package/dist/lib/update.d.ts.map +1 -1
- package/dist/lib/update.js +36 -4
- package/dist/lib/update.js.map +1 -1
- package/dist/lib/version.d.ts +1 -1
- package/dist/lib/version.js +1 -1
- package/dist/shell/commands/db.d.ts +1 -0
- package/dist/shell/commands/db.d.ts.map +1 -1
- package/dist/shell/commands/db.js +18 -0
- package/dist/shell/commands/db.js.map +1 -1
- package/dist/shell/commands/registry.d.ts.map +1 -1
- package/dist/shell/commands/registry.js +3 -1
- package/dist/shell/commands/registry.js.map +1 -1
- package/dist/shell/commands/show.d.ts +1 -0
- package/dist/shell/commands/show.d.ts.map +1 -1
- package/dist/shell/commands/show.js +37 -1
- package/dist/shell/commands/show.js.map +1 -1
- package/dist/ui/components/PostgresPerformanceLines.d.ts +7 -0
- package/dist/ui/components/PostgresPerformanceLines.d.ts.map +1 -0
- package/dist/ui/components/PostgresPerformanceLines.js +7 -0
- package/dist/ui/components/PostgresPerformanceLines.js.map +1 -0
- package/dist/ui/components/index.d.ts +1 -0
- package/dist/ui/components/index.d.ts.map +1 -1
- package/dist/ui/components/index.js +1 -0
- package/dist/ui/components/index.js.map +1 -1
- package/dist/ui/views/DbBackupView.d.ts.map +1 -1
- package/dist/ui/views/DbBackupView.js +11 -27
- package/dist/ui/views/DbBackupView.js.map +1 -1
- package/dist/ui/views/DbHealthView.d.ts.map +1 -1
- package/dist/ui/views/DbHealthView.js +10 -3
- package/dist/ui/views/DbHealthView.js.map +1 -1
- package/dist/ui/views/DbStatusView.d.ts.map +1 -1
- package/dist/ui/views/DbStatusView.js +5 -3
- package/dist/ui/views/DbStatusView.js.map +1 -1
- package/dist/ui/views/DiagDatabaseView.d.ts.map +1 -1
- package/dist/ui/views/DiagDatabaseView.js +3 -1
- package/dist/ui/views/DiagDatabaseView.js.map +1 -1
- package/dist/ui/views/DiagShowTechView.d.ts +3 -1
- package/dist/ui/views/DiagShowTechView.d.ts.map +1 -1
- package/dist/ui/views/DiagShowTechView.js +3 -3
- package/dist/ui/views/DiagShowTechView.js.map +1 -1
- package/dist/ui/views/HealthReportView.d.ts +6 -0
- package/dist/ui/views/HealthReportView.d.ts.map +1 -0
- package/dist/ui/views/HealthReportView.js +82 -0
- package/dist/ui/views/HealthReportView.js.map +1 -0
- package/dist/ui/views/MainMenu.d.ts.map +1 -1
- package/dist/ui/views/MainMenu.js +4 -1
- package/dist/ui/views/MainMenu.js.map +1 -1
- package/dist/ui/views/MigrateDrainView.d.ts +6 -0
- package/dist/ui/views/MigrateDrainView.d.ts.map +1 -0
- package/dist/ui/views/MigrateDrainView.js +77 -0
- package/dist/ui/views/MigrateDrainView.js.map +1 -0
- package/dist/ui/views/MigrateStatusView.d.ts.map +1 -1
- package/dist/ui/views/MigrateStatusView.js +16 -7
- package/dist/ui/views/MigrateStatusView.js.map +1 -1
- package/dist/ui/views/MigrateWatchView.d.ts.map +1 -1
- package/dist/ui/views/MigrateWatchView.js +17 -12
- package/dist/ui/views/MigrateWatchView.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-performance.js","sourceRoot":"","sources":["../../src/lib/postgres-performance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface MigrationProgressEntry {
|
|
2
|
+
version?: string;
|
|
3
|
+
name?: string;
|
|
4
|
+
filename?: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
startedAt?: string;
|
|
7
|
+
completedAt?: string;
|
|
8
|
+
runtimeMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export interface MigrationProgressArtifacts {
|
|
11
|
+
statusPath?: string;
|
|
12
|
+
eventsPath?: string;
|
|
13
|
+
logPath?: string;
|
|
14
|
+
}
|
|
15
|
+
export interface MigrationProgressSnapshot {
|
|
16
|
+
state?: string;
|
|
17
|
+
repository?: string;
|
|
18
|
+
appliedCount?: number;
|
|
19
|
+
totalCount?: number;
|
|
20
|
+
pendingCount?: number;
|
|
21
|
+
currentVersion?: string;
|
|
22
|
+
latestApplied?: MigrationProgressEntry;
|
|
23
|
+
currentMigration?: MigrationProgressEntry;
|
|
24
|
+
lastCompletedMigration?: MigrationProgressEntry;
|
|
25
|
+
nextMigration?: MigrationProgressEntry;
|
|
26
|
+
updatedAt?: string;
|
|
27
|
+
error?: string;
|
|
28
|
+
artifacts: MigrationProgressArtifacts;
|
|
29
|
+
}
|
|
30
|
+
export interface MigrationProgressResult {
|
|
31
|
+
source: 'artifact' | 'rpc';
|
|
32
|
+
snapshot: MigrationProgressSnapshot;
|
|
33
|
+
output: string;
|
|
34
|
+
}
|
|
35
|
+
export interface MigrationArtifactTails {
|
|
36
|
+
events: string;
|
|
37
|
+
log: string;
|
|
38
|
+
}
|
|
39
|
+
export declare function formatRuntimeMs(runtimeMs?: number): string;
|
|
40
|
+
export declare function parseMigrationProgressArtifact(raw: string): MigrationProgressSnapshot;
|
|
41
|
+
export declare function formatMigrationProgress(snapshot: MigrationProgressSnapshot): string;
|
|
42
|
+
export declare function getMigrationProgress(): Promise<MigrationProgressResult>;
|
|
43
|
+
export declare function tailMigrationArtifacts(snapshot: MigrationProgressSnapshot, options?: {
|
|
44
|
+
eventLines?: number;
|
|
45
|
+
logLines?: number;
|
|
46
|
+
}): Promise<MigrationArtifactTails>;
|
|
47
|
+
export declare function migrationProgressReportRpc(): string;
|
|
48
|
+
//# sourceMappingURL=release-migration-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-migration-progress.d.ts","sourceRoot":"","sources":["../../src/lib/release-migration-progress.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,sBAAsB,CAAC,EAAE,sBAAsB,CAAC;IAChD,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,0BAA0B,CAAC;CACvC;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IAC3B,QAAQ,EAAE,yBAAyB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAoCD,wBAAgB,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,CAwBrF;AAMD,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,MAAM,CAuCnF;AAuDD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CA4B7E;AAeD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,yBAAyB,EACnC,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACvD,OAAO,CAAC,sBAAsB,CAAC,CAMjC;AAED,wBAAgB,0BAA0B,IAAI,MAAM,CAEnD"}
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { composeExec } from './compose.js';
|
|
2
|
+
import { debug } from './log.js';
|
|
3
|
+
import { rpc } from './rpc.js';
|
|
4
|
+
const DEFAULT_PROGRESS_DIR = '/home/app/logs/migrations';
|
|
5
|
+
function numberValue(value) {
|
|
6
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
7
|
+
return Math.trunc(value);
|
|
8
|
+
if (typeof value === 'string' && /^\d+$/.test(value.trim()))
|
|
9
|
+
return Number.parseInt(value.trim(), 10);
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
function stringValue(value) {
|
|
13
|
+
if (value === null || value === undefined)
|
|
14
|
+
return undefined;
|
|
15
|
+
const text = String(value).trim();
|
|
16
|
+
return text.length > 0 ? text : undefined;
|
|
17
|
+
}
|
|
18
|
+
function objectValue(value) {
|
|
19
|
+
if (value && typeof value === 'object' && !Array.isArray(value)) {
|
|
20
|
+
return value;
|
|
21
|
+
}
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
function migrationEntry(value) {
|
|
25
|
+
const obj = objectValue(value);
|
|
26
|
+
if (!obj)
|
|
27
|
+
return undefined;
|
|
28
|
+
return {
|
|
29
|
+
version: stringValue(obj.version),
|
|
30
|
+
name: stringValue(obj.name),
|
|
31
|
+
filename: stringValue(obj.filename),
|
|
32
|
+
description: stringValue(obj.description),
|
|
33
|
+
startedAt: stringValue(obj.started_at),
|
|
34
|
+
completedAt: stringValue(obj.completed_at),
|
|
35
|
+
runtimeMs: numberValue(obj.runtime_ms),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function formatRuntimeMs(runtimeMs) {
|
|
39
|
+
if (!Number.isFinite(runtimeMs))
|
|
40
|
+
return 'unknown';
|
|
41
|
+
const totalMs = Math.max(0, Math.trunc(runtimeMs ?? 0));
|
|
42
|
+
const totalSeconds = Math.floor(totalMs / 1000);
|
|
43
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
44
|
+
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
45
|
+
const seconds = totalSeconds % 60;
|
|
46
|
+
const ms = totalMs % 1000;
|
|
47
|
+
if (hours > 0)
|
|
48
|
+
return `${hours}h ${minutes}m ${seconds}.${String(ms).padStart(3, '0')}s`;
|
|
49
|
+
if (minutes > 0)
|
|
50
|
+
return `${minutes}m ${seconds}.${String(ms).padStart(3, '0')}s`;
|
|
51
|
+
return `${seconds}.${String(ms).padStart(3, '0')}s`;
|
|
52
|
+
}
|
|
53
|
+
export function parseMigrationProgressArtifact(raw) {
|
|
54
|
+
const data = JSON.parse(raw);
|
|
55
|
+
const currentMigration = migrationEntry(data.current_migration);
|
|
56
|
+
const latestApplied = migrationEntry(data.latest_applied);
|
|
57
|
+
return {
|
|
58
|
+
state: stringValue(data.state ?? data.status),
|
|
59
|
+
repository: stringValue(data.repository),
|
|
60
|
+
appliedCount: numberValue(data.applied_count),
|
|
61
|
+
totalCount: numberValue(data.total_migrations ?? data.total_count),
|
|
62
|
+
pendingCount: numberValue(data.pending_count),
|
|
63
|
+
currentVersion: stringValue(data.current_version) ?? currentMigration?.version,
|
|
64
|
+
latestApplied,
|
|
65
|
+
currentMigration,
|
|
66
|
+
lastCompletedMigration: migrationEntry(data.last_completed_migration),
|
|
67
|
+
nextMigration: migrationEntry(data.next_migration),
|
|
68
|
+
updatedAt: stringValue(data.updated_at),
|
|
69
|
+
error: stringValue(data.error),
|
|
70
|
+
artifacts: {
|
|
71
|
+
statusPath: stringValue(data.artifact_status_path),
|
|
72
|
+
eventsPath: stringValue(data.artifact_events_path),
|
|
73
|
+
logPath: stringValue(data.artifact_log_path),
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
function versionAndFile(entry) {
|
|
78
|
+
return `${entry.version ?? 'unknown'} - ${entry.filename ?? entry.name ?? 'unknown'}`;
|
|
79
|
+
}
|
|
80
|
+
export function formatMigrationProgress(snapshot) {
|
|
81
|
+
const lines = ['=== Migration Progress ==='];
|
|
82
|
+
if (snapshot.state)
|
|
83
|
+
lines.push(`State: ${snapshot.state}`);
|
|
84
|
+
if (snapshot.appliedCount !== undefined || snapshot.totalCount !== undefined) {
|
|
85
|
+
lines.push(`Applied migrations: ${snapshot.appliedCount ?? '?'}/${snapshot.totalCount ?? '?'}`);
|
|
86
|
+
}
|
|
87
|
+
if (snapshot.pendingCount !== undefined)
|
|
88
|
+
lines.push(`Pending migrations: ${snapshot.pendingCount}`);
|
|
89
|
+
if (snapshot.latestApplied) {
|
|
90
|
+
lines.push(`Latest applied: ${versionAndFile(snapshot.latestApplied)}`);
|
|
91
|
+
}
|
|
92
|
+
if (snapshot.currentMigration) {
|
|
93
|
+
lines.push(`Current migration: ${versionAndFile(snapshot.currentMigration)}`);
|
|
94
|
+
if (snapshot.currentMigration.description)
|
|
95
|
+
lines.push(`Current description: ${snapshot.currentMigration.description}`);
|
|
96
|
+
if (snapshot.currentMigration.startedAt)
|
|
97
|
+
lines.push(`Current started: ${snapshot.currentMigration.startedAt}`);
|
|
98
|
+
lines.push(`Current runtime: ${formatRuntimeMs(snapshot.currentMigration.runtimeMs)}`);
|
|
99
|
+
}
|
|
100
|
+
if (snapshot.lastCompletedMigration) {
|
|
101
|
+
lines.push(`Last completed: ${versionAndFile(snapshot.lastCompletedMigration)}`);
|
|
102
|
+
if (snapshot.lastCompletedMigration.description)
|
|
103
|
+
lines.push(`Last completed description: ${snapshot.lastCompletedMigration.description}`);
|
|
104
|
+
if (snapshot.lastCompletedMigration.completedAt)
|
|
105
|
+
lines.push(`Last completed at: ${snapshot.lastCompletedMigration.completedAt}`);
|
|
106
|
+
lines.push(`Last completed runtime: ${formatRuntimeMs(snapshot.lastCompletedMigration.runtimeMs)}`);
|
|
107
|
+
}
|
|
108
|
+
if (snapshot.nextMigration) {
|
|
109
|
+
lines.push(`Next pending: ${versionAndFile(snapshot.nextMigration)}`);
|
|
110
|
+
if (snapshot.nextMigration.description)
|
|
111
|
+
lines.push(`Next description: ${snapshot.nextMigration.description}`);
|
|
112
|
+
}
|
|
113
|
+
if (snapshot.updatedAt)
|
|
114
|
+
lines.push(`Updated at: ${snapshot.updatedAt}`);
|
|
115
|
+
if (snapshot.artifacts.statusPath)
|
|
116
|
+
lines.push(`Artifact status: ${snapshot.artifacts.statusPath}`);
|
|
117
|
+
if (snapshot.artifacts.eventsPath)
|
|
118
|
+
lines.push(`Artifact events: ${snapshot.artifacts.eventsPath}`);
|
|
119
|
+
if (snapshot.artifacts.logPath)
|
|
120
|
+
lines.push(`Artifact log: ${snapshot.artifacts.logPath}`);
|
|
121
|
+
if (snapshot.error)
|
|
122
|
+
lines.push(`Error: ${snapshot.error}`);
|
|
123
|
+
return lines.join('\n');
|
|
124
|
+
}
|
|
125
|
+
function markerValue(raw, key) {
|
|
126
|
+
const prefix = `::${key}=`;
|
|
127
|
+
const line = raw.split('\n').find((entry) => entry.startsWith(prefix));
|
|
128
|
+
return line ? line.slice(prefix.length).trim() : undefined;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Parses release-side migration progress output into the minimum structured
|
|
132
|
+
* snapshot the update loop needs. The contract is strict: a numeric
|
|
133
|
+
* `pendingCount` must be derivable from hidden markers, human-readable pending
|
|
134
|
+
* text, or applied/total counts. Without that value the caller cannot know when
|
|
135
|
+
* migrations are complete, so this throws instead of letting the update poll
|
|
136
|
+
* indefinitely.
|
|
137
|
+
*/
|
|
138
|
+
function parseRpcMarkers(raw) {
|
|
139
|
+
const markerPendingCount = numberValue(markerValue(raw, 'pending_count'));
|
|
140
|
+
const pendingMatch = raw.match(/Pending migrations:\s+(\d+)/);
|
|
141
|
+
const appliedMatch = raw.match(/Applied migrations:\s+(\d+)\/(\d+)/);
|
|
142
|
+
const appliedCount = appliedMatch ? Number.parseInt(appliedMatch[1], 10) : undefined;
|
|
143
|
+
const totalCount = appliedMatch ? Number.parseInt(appliedMatch[2], 10) : undefined;
|
|
144
|
+
const pendingCount = markerPendingCount
|
|
145
|
+
?? (pendingMatch ? Number.parseInt(pendingMatch[1], 10) : undefined)
|
|
146
|
+
?? (appliedCount !== undefined && totalCount !== undefined
|
|
147
|
+
? Math.max(totalCount - appliedCount, 0)
|
|
148
|
+
: undefined);
|
|
149
|
+
if (pendingCount === undefined) {
|
|
150
|
+
throw new Error('Unable to determine pending migration count from release migration progress report');
|
|
151
|
+
}
|
|
152
|
+
return {
|
|
153
|
+
appliedCount,
|
|
154
|
+
totalCount,
|
|
155
|
+
pendingCount,
|
|
156
|
+
artifacts: {},
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
async function readArtifactJson() {
|
|
160
|
+
const artifactDir = process.env.CT_MIGRATION_PROGRESS_DIR ?? DEFAULT_PROGRESS_DIR;
|
|
161
|
+
const result = await composeExec('web', [
|
|
162
|
+
'sh',
|
|
163
|
+
'-lc',
|
|
164
|
+
'status_path="$1"; if [ -f "$status_path" ]; then cat "$status_path"; fi',
|
|
165
|
+
'--',
|
|
166
|
+
`${artifactDir}/current_status.json`,
|
|
167
|
+
], { pipe: true });
|
|
168
|
+
const stdout = String(result.stdout ?? '').trim();
|
|
169
|
+
return stdout.length > 0 ? stdout : null;
|
|
170
|
+
}
|
|
171
|
+
export async function getMigrationProgress() {
|
|
172
|
+
try {
|
|
173
|
+
const artifact = await readArtifactJson();
|
|
174
|
+
if (artifact) {
|
|
175
|
+
const snapshot = parseMigrationProgressArtifact(artifact);
|
|
176
|
+
if (typeof snapshot.pendingCount !== 'number') {
|
|
177
|
+
throw new Error('Migration progress artifact missing pending_count');
|
|
178
|
+
}
|
|
179
|
+
return {
|
|
180
|
+
source: 'artifact',
|
|
181
|
+
snapshot,
|
|
182
|
+
output: formatMigrationProgress(snapshot),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
catch (err) {
|
|
187
|
+
// Fall through to release-side report. Older releases and booting apps may
|
|
188
|
+
// not have written the artifact yet.
|
|
189
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
190
|
+
debug(`Read/parse migration progress artifact failed, falling back to RPC: ${message}`);
|
|
191
|
+
}
|
|
192
|
+
const output = await rpc(migrationProgressReportRpc());
|
|
193
|
+
const snapshot = parseRpcMarkers(output);
|
|
194
|
+
return {
|
|
195
|
+
source: 'rpc',
|
|
196
|
+
snapshot,
|
|
197
|
+
output: output.split('\n').filter((line) => !line.startsWith('::')).join('\n'),
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
async function tailArtifact(path, lines) {
|
|
201
|
+
if (!path)
|
|
202
|
+
return '';
|
|
203
|
+
const result = await composeExec('web', [
|
|
204
|
+
'sh',
|
|
205
|
+
'-lc',
|
|
206
|
+
'artifact_path="$1"; lines="$2"; if [ -f "$artifact_path" ]; then tail -n "$lines" "$artifact_path"; fi',
|
|
207
|
+
'--',
|
|
208
|
+
path,
|
|
209
|
+
String(lines),
|
|
210
|
+
], { pipe: true });
|
|
211
|
+
return String(result.stdout ?? '').trim();
|
|
212
|
+
}
|
|
213
|
+
export async function tailMigrationArtifacts(snapshot, options = {}) {
|
|
214
|
+
const [events, log] = await Promise.all([
|
|
215
|
+
tailArtifact(snapshot.artifacts.eventsPath, options.eventLines ?? 2),
|
|
216
|
+
tailArtifact(snapshot.artifacts.logPath, options.logLines ?? 5),
|
|
217
|
+
]);
|
|
218
|
+
return { events, log };
|
|
219
|
+
}
|
|
220
|
+
export function migrationProgressReportRpc() {
|
|
221
|
+
return 'IO.puts(Cdrcisco.Release.migration_progress_report())';
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=release-migration-progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release-migration-progress.js","sourceRoot":"","sources":["../../src/lib/release-migration-progress.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/lib/services.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../src/lib/services.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,4FAA4F;AAC5F,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAKD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAa/E;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAkB7D;AA+ED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAqBrE;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;IAE9C;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM;;;;;IAE7C;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM;;;;;IAEhD;AAED,wBAAsB,gBAAgB;;;;IAErC;AAED,wBAAsB,eAAe;;;;;IAEpC"}
|
package/dist/lib/services.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { compose, composeUp } from './compose.js';
|
|
2
2
|
import { debug } from './log.js';
|
|
3
|
+
import { getPaths } from './paths.js';
|
|
4
|
+
import { execa } from 'execa';
|
|
3
5
|
/** Fetch resolved compose config for all services. Cached per session — config doesn't change at runtime. */
|
|
4
6
|
let configCache = null;
|
|
5
7
|
export async function getComposeConfig() {
|
|
@@ -23,7 +25,7 @@ export async function getServiceList() {
|
|
|
23
25
|
const result = await compose(['ps', '-a', '--format', 'json'], { pipe: true });
|
|
24
26
|
const raw = (result.stdout ?? '').trim();
|
|
25
27
|
if (!raw)
|
|
26
|
-
return
|
|
28
|
+
return getServiceListFromDockerLabels();
|
|
27
29
|
return raw.split('\n')
|
|
28
30
|
.filter(line => line.trim())
|
|
29
31
|
.map(line => {
|
|
@@ -38,6 +40,73 @@ export async function getServiceList() {
|
|
|
38
40
|
};
|
|
39
41
|
});
|
|
40
42
|
}
|
|
43
|
+
function parseHealth(status) {
|
|
44
|
+
if (status.includes('(healthy)'))
|
|
45
|
+
return 'healthy';
|
|
46
|
+
if (status.includes('(unhealthy)'))
|
|
47
|
+
return 'unhealthy';
|
|
48
|
+
if (status.includes('(health: starting)'))
|
|
49
|
+
return 'starting';
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
function projectScore(project, rows, installDir) {
|
|
53
|
+
const projectRows = rows.filter((row) => row.project === project);
|
|
54
|
+
const services = new Set(projectRows.map((row) => row.service));
|
|
55
|
+
const workingDirScore = Math.max(...projectRows.map((row) => {
|
|
56
|
+
if (row.workingDir === installDir)
|
|
57
|
+
return 3;
|
|
58
|
+
if (row.workingDir.startsWith(`${installDir}/`))
|
|
59
|
+
return 2;
|
|
60
|
+
if (installDir.startsWith(`${row.workingDir}/`))
|
|
61
|
+
return 1;
|
|
62
|
+
return 0;
|
|
63
|
+
}));
|
|
64
|
+
const appScore = (services.has('web') ? 4 : 0) + (services.has('db') ? 3 : 0) + (services.has('nats') ? 1 : 0);
|
|
65
|
+
const defaultProjectScore = project === 'docker-compose' ? 1 : 0;
|
|
66
|
+
return workingDirScore * 10 + appScore + defaultProjectScore;
|
|
67
|
+
}
|
|
68
|
+
async function getServiceListFromDockerLabels() {
|
|
69
|
+
try {
|
|
70
|
+
const { stdout } = await execa('docker', [
|
|
71
|
+
'ps',
|
|
72
|
+
'-a',
|
|
73
|
+
'--filter',
|
|
74
|
+
'label=com.docker.compose.project',
|
|
75
|
+
'--format',
|
|
76
|
+
'{{.Names}}\t{{.Image}}\t{{.State}}\t{{.Status}}\t{{.Ports}}\t{{.Label "com.docker.compose.service"}}\t{{.Label "com.docker.compose.project"}}\t{{.Label "com.docker.compose.project.working_dir"}}',
|
|
77
|
+
], { stdout: 'pipe', stderr: 'pipe' });
|
|
78
|
+
const rows = stdout
|
|
79
|
+
.split('\n')
|
|
80
|
+
.map((line) => line.trim())
|
|
81
|
+
.filter(Boolean)
|
|
82
|
+
.map((line) => {
|
|
83
|
+
const [name = '', image = '', state = '', status = '', ports = '', service = '', project = '', workingDir = ''] = line.split('\t');
|
|
84
|
+
return { name, image, state, status, ports, service, project, workingDir };
|
|
85
|
+
})
|
|
86
|
+
.filter((row) => row.service && row.project);
|
|
87
|
+
if (rows.length === 0)
|
|
88
|
+
return [];
|
|
89
|
+
const { installDir } = getPaths();
|
|
90
|
+
const projects = [...new Set(rows.map((row) => row.project))];
|
|
91
|
+
projects.sort((a, b) => projectScore(b, rows, installDir) - projectScore(a, rows, installDir) || a.localeCompare(b));
|
|
92
|
+
const selectedProject = projects[0];
|
|
93
|
+
return rows
|
|
94
|
+
.filter((row) => row.project === selectedProject)
|
|
95
|
+
.sort((a, b) => a.service.localeCompare(b.service))
|
|
96
|
+
.map((row) => ({
|
|
97
|
+
service: row.service,
|
|
98
|
+
state: row.state,
|
|
99
|
+
health: parseHealth(row.status),
|
|
100
|
+
image: row.image,
|
|
101
|
+
ports: row.ports,
|
|
102
|
+
status: row.status,
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
debug(`Docker label service fallback failed: ${err.message}`);
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
41
110
|
export async function getServiceListSafe() {
|
|
42
111
|
try {
|
|
43
112
|
const services = await getServiceList();
|
package/dist/lib/services.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/lib/services.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"services.js","sourceRoot":"","sources":["../../src/lib/services.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,5 +3,9 @@
|
|
|
3
3
|
* Returns UpdateStep[] consumed by useStepRunner (TUI) or runStepsCli (CLI).
|
|
4
4
|
*/
|
|
5
5
|
import type { UpdateStep } from './update-steps.js';
|
|
6
|
-
export
|
|
6
|
+
export interface ShowtechOptions {
|
|
7
|
+
policyMinutes?: number;
|
|
8
|
+
includeDiskBenchmark?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function showtechSteps(bundleDir: string, policyOrOptions?: number | ShowtechOptions): UpdateStep[];
|
|
7
11
|
//# sourceMappingURL=showtech-steps.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAuBjE,MAAM,WAAW,eAAe;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AA2BD,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,UAAU,EAAE,CAwZzG"}
|
|
@@ -19,12 +19,18 @@ import { loadPrefs } from './prefs.js';
|
|
|
19
19
|
import { exec } from './exec.js';
|
|
20
20
|
import { redactSecrets } from './redact.js';
|
|
21
21
|
import { formatBytes } from './system.js';
|
|
22
|
+
import { buildHealthReport, renderHealthReportText } from './health-report.js';
|
|
22
23
|
/** All known compose services to collect logs from. */
|
|
23
24
|
const LOG_SERVICES = ['web', 'db', 'nats', 'seaweedfs', 'jtapi-sidecar', 'ct-media'];
|
|
24
25
|
/** Helper: write text to a file in the bundle directory. */
|
|
25
26
|
async function writeBundle(bundleDir, filename, content) {
|
|
26
27
|
await writeFile(join(bundleDir, filename), content, 'utf-8');
|
|
27
28
|
}
|
|
29
|
+
function normalizeShowtechOptions(policyOrOptions) {
|
|
30
|
+
if (typeof policyOrOptions === 'number')
|
|
31
|
+
return { policyMinutes: policyOrOptions };
|
|
32
|
+
return policyOrOptions ?? {};
|
|
33
|
+
}
|
|
28
34
|
/** Helper: safely collect container logs. Returns output + whether the service was reachable. */
|
|
29
35
|
async function safeComposeLogs(service) {
|
|
30
36
|
try {
|
|
@@ -39,7 +45,9 @@ async function safeComposeLogs(service) {
|
|
|
39
45
|
return { output: `[${label}]`, available: false };
|
|
40
46
|
}
|
|
41
47
|
}
|
|
42
|
-
export function showtechSteps(bundleDir,
|
|
48
|
+
export function showtechSteps(bundleDir, policyOrOptions) {
|
|
49
|
+
const options = normalizeShowtechOptions(policyOrOptions);
|
|
50
|
+
const policyMinutes = options.policyMinutes;
|
|
43
51
|
return [
|
|
44
52
|
// 0. Prepare bundle directory
|
|
45
53
|
{
|
|
@@ -50,7 +58,30 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
50
58
|
return bundleDir;
|
|
51
59
|
},
|
|
52
60
|
},
|
|
53
|
-
// 1.
|
|
61
|
+
// 1. Health report
|
|
62
|
+
{
|
|
63
|
+
label: 'Health report',
|
|
64
|
+
run: async (ctx) => {
|
|
65
|
+
try {
|
|
66
|
+
const report = await buildHealthReport({ includeDiskBenchmark: options.includeDiskBenchmark !== false });
|
|
67
|
+
await writeBundle(bundleDir, '00-health-report.json', `${JSON.stringify(report, null, 2)}\n`);
|
|
68
|
+
await writeBundle(bundleDir, '00-health-report.txt', renderHealthReportText(report));
|
|
69
|
+
ctx?.log(`${report.reportId}: ${report.summary.status}`);
|
|
70
|
+
return `${report.summary.status} (${report.reportId})`;
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const fallback = {
|
|
74
|
+
error: err.message ?? String(err),
|
|
75
|
+
generated_at: new Date().toISOString(),
|
|
76
|
+
};
|
|
77
|
+
await writeBundle(bundleDir, '00-health-report.json', `${JSON.stringify(fallback, null, 2)}\n`);
|
|
78
|
+
await writeBundle(bundleDir, '00-health-report.txt', `Health report unavailable: ${fallback.error}\n`);
|
|
79
|
+
ctx?.log(`Health report unavailable: ${fallback.error}`);
|
|
80
|
+
return 'unavailable';
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
// 2. System info
|
|
54
85
|
{
|
|
55
86
|
label: 'System info',
|
|
56
87
|
run: async (ctx) => {
|
|
@@ -71,7 +102,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
71
102
|
return `${platform()} ${release()}, ${formatBytes(totalmem())} RAM`;
|
|
72
103
|
},
|
|
73
104
|
},
|
|
74
|
-
//
|
|
105
|
+
// 3. Network interfaces
|
|
75
106
|
{
|
|
76
107
|
label: 'Network interfaces',
|
|
77
108
|
run: async (ctx) => {
|
|
@@ -90,7 +121,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
90
121
|
return `${ifaces.length} interfaces`;
|
|
91
122
|
},
|
|
92
123
|
},
|
|
93
|
-
//
|
|
124
|
+
// 4. Docker container status
|
|
94
125
|
{
|
|
95
126
|
label: 'Docker container status',
|
|
96
127
|
run: async (ctx) => {
|
|
@@ -108,7 +139,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
108
139
|
return `${lineCount} lines`;
|
|
109
140
|
},
|
|
110
141
|
},
|
|
111
|
-
//
|
|
142
|
+
// 5-10. Container logs
|
|
112
143
|
...LOG_SERVICES.map((service, idx) => ({
|
|
113
144
|
label: `Application logs (${service})`,
|
|
114
145
|
run: async (ctx) => {
|
|
@@ -125,7 +156,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
125
156
|
return `${lineCount} lines`;
|
|
126
157
|
},
|
|
127
158
|
})),
|
|
128
|
-
//
|
|
159
|
+
// 11. Systemd journal
|
|
129
160
|
{
|
|
130
161
|
label: 'Systemd journal',
|
|
131
162
|
run: async (ctx) => {
|
|
@@ -146,7 +177,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
146
177
|
return `${lineCount} lines`;
|
|
147
178
|
},
|
|
148
179
|
},
|
|
149
|
-
//
|
|
180
|
+
// 12. Database diagnostics
|
|
150
181
|
{
|
|
151
182
|
label: 'Database diagnostics',
|
|
152
183
|
run: async (ctx) => {
|
|
@@ -188,7 +219,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
188
219
|
}
|
|
189
220
|
},
|
|
190
221
|
},
|
|
191
|
-
//
|
|
222
|
+
// 13. App health
|
|
192
223
|
{
|
|
193
224
|
label: 'App health check',
|
|
194
225
|
run: async (ctx) => {
|
|
@@ -207,7 +238,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
207
238
|
}
|
|
208
239
|
},
|
|
209
240
|
},
|
|
210
|
-
//
|
|
241
|
+
// 14. Migration status
|
|
211
242
|
{
|
|
212
243
|
label: 'Migration status',
|
|
213
244
|
run: async (ctx) => {
|
|
@@ -249,7 +280,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
249
280
|
return 'captured';
|
|
250
281
|
},
|
|
251
282
|
},
|
|
252
|
-
//
|
|
283
|
+
// 15. Install directory listing
|
|
253
284
|
{
|
|
254
285
|
label: 'Install directory listing',
|
|
255
286
|
run: async (ctx) => {
|
|
@@ -267,7 +298,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
267
298
|
return installDir;
|
|
268
299
|
},
|
|
269
300
|
},
|
|
270
|
-
//
|
|
301
|
+
// 16. Docker compose files
|
|
271
302
|
{
|
|
272
303
|
label: 'Docker compose files',
|
|
273
304
|
run: async (ctx) => {
|
|
@@ -294,7 +325,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
294
325
|
return `${count} files`;
|
|
295
326
|
},
|
|
296
327
|
},
|
|
297
|
-
//
|
|
328
|
+
// 17. CLI preferences
|
|
298
329
|
{
|
|
299
330
|
label: 'CLI preferences',
|
|
300
331
|
run: async (ctx) => {
|
|
@@ -307,7 +338,7 @@ export function showtechSteps(bundleDir, policyMinutes) {
|
|
|
307
338
|
return prefs ? 'loaded' : 'first run';
|
|
308
339
|
},
|
|
309
340
|
},
|
|
310
|
-
//
|
|
341
|
+
// Greeting policies + policy history (conditional)
|
|
311
342
|
...(policyMinutes !== undefined
|
|
312
343
|
? [
|
|
313
344
|
{
|