| 1 | import type { RemoteConnectionStatus } from "./types"; |
| 2 | |
| 3 | export type RemoteConnectionErrorKind = |
| 4 | | "connection_failed" |
| 5 | | "auth_failed" |
| 6 | | "host_key_rejected" |
| 7 | | "host_key_mismatch" |
| 8 | | "degraded"; |
| 9 | |
| 10 | export type RemoteConnectionErrorSummaryKey = `remote.error.summary.${RemoteConnectionErrorKind}`; |
| 11 | |
| 12 | export function remoteConnectionErrorKind(status?: RemoteConnectionStatus): RemoteConnectionErrorKind { |
| 13 | if (status?.state === "degraded") return "degraded"; |
| 14 | return status?.errorDetails?.code ?? "connection_failed"; |
| 15 | } |
| 16 | |
| 17 | export function remoteConnectionErrorSummaryKey(status?: RemoteConnectionStatus): RemoteConnectionErrorSummaryKey { |
| 18 | return `remote.error.summary.${remoteConnectionErrorKind(status)}`; |
| 19 | } |
| 20 | |
| 21 | export function isRemoteHostKeyMismatch(status?: RemoteConnectionStatus): boolean { |
| 22 | return remoteConnectionErrorKind(status) === "host_key_mismatch"; |
| 23 | } |
| 24 | |
| 25 | export function isRemoteTerminalFailure(status?: RemoteConnectionStatus): boolean { |
| 26 | return status?.state === "stopped" && Boolean(status.error); |
| 27 | } |
| 28 | |
| 29 | export function isRemoteDegradedWarning(status?: RemoteConnectionStatus): boolean { |
| 30 | return status?.state === "degraded" && Boolean(status.error); |
| 31 | } |
| 32 |