wip(k1): checkpoint connection recovery rewrite
Capture the current unreleased K1 connection, recovery, lifecycle, viewer, and test work as a single known-bad baseline for subsequent fixes.
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
import {
|
||||
isXgridsHostFailureDiagnostic,
|
||||
type XgridsHostDiagnosticCode,
|
||||
type XgridsHostDiagnosticAction,
|
||||
type XgridsHostDiagnosticDomain,
|
||||
type XgridsHostDiagnosticImpact,
|
||||
type XgridsHostFailureDiagnostic,
|
||||
type XgridsOperation,
|
||||
} from "./api";
|
||||
|
||||
const CODE_LABELS: Record<XgridsHostDiagnosticCode, string> = {
|
||||
"host.bluetooth.permission-denied":
|
||||
"macOS не разрешила Mission Core использовать Bluetooth.",
|
||||
"host.bluetooth.adapter-powered-off":
|
||||
"Bluetooth на этом Mac выключен.",
|
||||
"host.bluetooth.adapter-unavailable":
|
||||
"Системный Bluetooth-адаптер сейчас недоступен.",
|
||||
"host.bluetooth.runtime-unavailable":
|
||||
"Локальный Bluetooth runtime не готов к новой операции.",
|
||||
"host.bluetooth.operation-timeout":
|
||||
"Bluetooth-операция не завершилась за ограниченное время.",
|
||||
"host.wifi.permission-denied":
|
||||
"macOS не разрешила Mission Core читать состояние Wi‑Fi.",
|
||||
"host.wifi.adapter-powered-off":
|
||||
"Wi‑Fi на этом Mac выключен.",
|
||||
"host.wifi.interface-unavailable":
|
||||
"Системный Wi‑Fi-интерфейс сейчас недоступен.",
|
||||
"host.wifi.ssid-unavailable":
|
||||
"macOS не сообщила имя текущей Wi‑Fi-сети.",
|
||||
"host.wifi.operation-timeout":
|
||||
"Операция с Wi‑Fi не завершилась за ограниченное время.",
|
||||
"host.wifi.association-failed":
|
||||
"Mac не подтвердил подключение к ожидаемой Wi‑Fi-сети.",
|
||||
"host.keychain.interaction-required":
|
||||
"Связка ключей требует явного подтверждения оператора.",
|
||||
"host.keychain.permission-denied":
|
||||
"macOS запретила чтение профиля подключения.",
|
||||
"host.keychain.unavailable":
|
||||
"Профиль подключения сейчас недоступен в связке ключей.",
|
||||
"host.route.unavailable":
|
||||
"Прямой локальный маршрут к адресу подключения не найден.",
|
||||
"host.tcp.connection-refused":
|
||||
"Управляющий TCP endpoint отклонил соединение.",
|
||||
"host.tcp.connection-timeout":
|
||||
"Управляющий TCP endpoint не ответил за ограниченное время.",
|
||||
"host.tcp.endpoint-unavailable":
|
||||
"Управляющий TCP endpoint недоступен из текущей сети.",
|
||||
"host.mqtt.connection-timeout":
|
||||
"Управляющий MQTT-канал не открылся за ограниченное время.",
|
||||
"host.mqtt.connection-refused":
|
||||
"Управляющий MQTT-канал отклонил соединение.",
|
||||
"host.mqtt.transport-unavailable":
|
||||
"Транспорт управляющего MQTT-канала недоступен.",
|
||||
"host.filesystem.permission-denied":
|
||||
"Mission Core не может записать обязательные данные операции в локальное хранилище.",
|
||||
"host.filesystem.ledger-unavailable":
|
||||
"Журнал безопасного результата операции недоступен или не подтверждён.",
|
||||
};
|
||||
|
||||
const DOMAIN_LABELS: Record<XgridsHostDiagnosticDomain, string> = {
|
||||
corebluetooth: "Bluetooth macOS",
|
||||
corewlan: "Wi‑Fi macOS",
|
||||
keychain: "Связка ключей macOS",
|
||||
route: "Локальный сетевой маршрут",
|
||||
tcp: "Управляющий TCP endpoint",
|
||||
mqtt: "Управляющий канал MQTT",
|
||||
filesystem: "Локальное хранилище Mission Core",
|
||||
};
|
||||
|
||||
const IMPACT_LABELS: Record<XgridsHostDiagnosticImpact, string> = {
|
||||
discovery: "Поиск Bluetooth сейчас недоступен.",
|
||||
"host-network": "Сетевой путь между этим компьютером и локальным контуром недоступен.",
|
||||
control: "Управляющая связь не установлена; команды не повторяются автоматически.",
|
||||
"durable-safety": "Надёжная фиксация результата операции недоступна; новая команда заблокирована.",
|
||||
};
|
||||
|
||||
const ACTION_LABELS: Record<XgridsHostDiagnosticAction, string> = {
|
||||
"grant-bluetooth-permission":
|
||||
"Разрешите Mission Core доступ к Bluetooth в системных настройках macOS, затем повторите действие вручную.",
|
||||
"power-on-bluetooth":
|
||||
"Включите Bluetooth на этом Mac и запустите новый поиск вручную.",
|
||||
"restore-bluetooth-adapter":
|
||||
"Восстановите доступность Bluetooth-адаптера macOS и перезапустите локальный сервис перед новой попыткой.",
|
||||
"grant-wifi-permission":
|
||||
"Разрешите Mission Core доступ к данным Wi‑Fi в системных настройках macOS, затем повторите действие вручную.",
|
||||
"power-on-wifi":
|
||||
"Включите Wi‑Fi на этом Mac и заново выберите требуемый способ подключения.",
|
||||
"restore-wifi-interface":
|
||||
"Восстановите системный Wi‑Fi-интерфейс macOS перед новой попыткой подключения.",
|
||||
"unlock-or-authorize-keychain":
|
||||
"Разблокируйте связку ключей macOS и подтвердите доступ Mission Core к профилю подключения.",
|
||||
"review-keychain-access":
|
||||
"Разрешите Mission Core чтение профиля подключения в связке ключей macOS.",
|
||||
"join-expected-network":
|
||||
"Установите связь этого Mac с ожидаемой локальной сетью и повторите действие.",
|
||||
"inspect-host-route":
|
||||
"Восстановите прямой локальный маршрут к адресу подключения.",
|
||||
"verify-broker-endpoint":
|
||||
"Восстановите доступность управляющего endpoint из текущей сети; команда автоматически не повторяется.",
|
||||
"inspect-local-storage":
|
||||
"Освободите место и восстановите доступ к локальному хранилищу Mission Core до следующей операции.",
|
||||
"restart-local-service":
|
||||
"Перезапустите канонический локальный сервис Mission Core и после загрузки обновите состояние.",
|
||||
"explicit-retry":
|
||||
"После устранения причины повторите действие отдельным нажатием; автоматического повтора нет.",
|
||||
};
|
||||
|
||||
export interface HostFailureDiagnosticPresentation {
|
||||
codeLabel: string;
|
||||
domainLabel: string;
|
||||
impactLabel: string;
|
||||
operatorActionLabel: string;
|
||||
}
|
||||
|
||||
export function hostFailureDiagnosticPresentation(
|
||||
value: unknown,
|
||||
): HostFailureDiagnosticPresentation | null {
|
||||
if (!isXgridsHostFailureDiagnostic(value)) return null;
|
||||
return {
|
||||
codeLabel: CODE_LABELS[value.code],
|
||||
domainLabel: DOMAIN_LABELS[value.domain],
|
||||
impactLabel: IMPACT_LABELS[value.impact],
|
||||
operatorActionLabel: ACTION_LABELS[value.operator_action],
|
||||
};
|
||||
}
|
||||
|
||||
export function operationHostFailureDiagnostic(
|
||||
operation: XgridsOperation | null | undefined,
|
||||
): XgridsHostFailureDiagnostic | null {
|
||||
const diagnostic = operation?.error?.host_diagnostic;
|
||||
return isXgridsHostFailureDiagnostic(diagnostic) ? diagnostic : null;
|
||||
}
|
||||
Reference in New Issue
Block a user