| 89 | } |
| 90 | |
| 91 | export async function handleUpgradeCommand(version: string): Promise<void> { |
| 92 | const telemetryBootstrap = createCliTelemetryBootstrap(); |
| 93 | const telemetryClient: TelemetryClient = { |
| 94 | track, |
| 95 | withContext: withTelemetryContext, |
| 96 | setContext: setTelemetryContext, |
| 97 | }; |
| 98 | const harness = createKimiHarness({ |
| 99 | homeDir: telemetryBootstrap.homeDir, |
| 100 | identity: createKimiCodeHostIdentity(version), |
| 101 | telemetry: telemetryClient, |
| 102 | }); |
| 103 | let exitCode = 1; |
| 104 | try { |
| 105 | await harness.ensureConfigFile(); |
| 106 | const config = await harness.getConfig(); |
| 107 | initializeCliTelemetry({ |
| 108 | harness, |
| 109 | bootstrap: telemetryBootstrap, |
| 110 | config, |
| 111 | version, |
| 112 | uiMode: CLI_UI_MODE, |
| 113 | }); |
| 114 | exitCode = await handleUpgrade(version, { track, logger: log }); |
| 115 | } finally { |
| 116 | await shutdownTelemetry({ timeoutMs: CLI_SHUTDOWN_TIMEOUT_MS }).catch(() => {}); |
| 117 | await harness.close().catch(() => {}); |
| 118 | } |
| 119 | process.exit(exitCode); |
| 120 | } |
| 121 | |
| 122 | /** A neutral CLIOptions value — `kimi migrate` never opens a chat session. */ |
| 123 | const MIGRATE_CLI_OPTIONS: CLIOptions = { |