fix(reboot): surface windows99 vmx repair package
All checks were successful
CD Pipeline / workflow-shape (push) Successful in 0s
CD Pipeline / cancel-stale-cd (push) Has been skipped
CD Pipeline / tests (push) Successful in 2m13s
CD Pipeline / build-and-deploy (push) Successful in 5m15s
CD Pipeline / post-deploy-checks (push) Successful in 1m51s

This commit is contained in:
Your Name
2026-07-03 11:16:10 +08:00
parent ccc6741c76
commit 92edb3ab8a
8 changed files with 490 additions and 0 deletions

View File

@@ -1154,6 +1154,15 @@ type PriorityWorkOrderResponse = {
controlled_service_data_backup_next_safe_action?: string | null;
windows99_verify_collection_blocker_count?: number | null;
windows99_verify_collection_blockers?: string[] | null;
windows99_vmx_source_repair_package_status?: string | null;
windows99_vmx_source_repair_package_ready?: boolean | null;
windows99_vmx_source_repair_missing_aliases?: string[] | null;
windows99_vmx_source_repair_powered_off_aliases?: string[] | null;
windows99_vmx_source_repair_controlled_restore_required_count?: number | null;
windows99_vmx_source_repair_powered_off_count?: number | null;
windows99_vmx_source_repair_safe_next_step?: string | null;
windows99_vmx_source_repair_controlled_apply_mode?: string | null;
windows99_vmx_source_repair_apply_allowed_by_this_package?: boolean | null;
ai_loop_log_source_grouping_key_count?: number | null;
ai_loop_log_source_grouping_keys?: string[] | null;
ai_loop_log_source_tagging_contract_count?: number | null;
@@ -1191,6 +1200,15 @@ type PriorityWorkOrderResponse = {
controlled_service_data_backup_blocker_count?: number | null;
controlled_service_data_backup_can_clear_blockers?: boolean | null;
windows99_verify_collection_blockers?: string[] | null;
windows99_vmx_source_repair_package_status?: string | null;
windows99_vmx_source_repair_package_ready?: boolean | null;
windows99_vmx_source_repair_missing_aliases?: string[] | null;
windows99_vmx_source_repair_powered_off_aliases?: string[] | null;
windows99_vmx_source_repair_controlled_restore_required_count?: number | null;
windows99_vmx_source_repair_powered_off_count?: number | null;
windows99_vmx_source_repair_safe_next_step?: string | null;
windows99_vmx_source_repair_controlled_apply_mode?: string | null;
windows99_vmx_source_repair_apply_allowed_by_this_package?: boolean | null;
drill_preflight_blocker_count?: number | null;
ai_loop_current_blocker_log_source_tags?: AiLoopLogSourceTag[] | null;
ai_loop_log_source_tagging_contract?: AiLoopLogSourceContract[] | null;
@@ -1286,6 +1304,18 @@ const COMMANDER_INSERTED_REQUIREMENT_FALLBACK: PriorityWorkOrderResponse = {
"windows99_vmware_vmx_missing",
"windows99_uptime_unknown",
],
windows99_vmx_source_repair_package_status:
"check_mode_package_ready_windows99_vmx_source_repair_required",
windows99_vmx_source_repair_package_ready: true,
windows99_vmx_source_repair_missing_aliases: ["111"],
windows99_vmx_source_repair_powered_off_aliases: ["111", "112", "120", "121", "188"],
windows99_vmx_source_repair_controlled_restore_required_count: 1,
windows99_vmx_source_repair_powered_off_count: 5,
windows99_vmx_source_repair_safe_next_step:
"restore_windows99_missing_vmx_source_for_aliases_then_rerun_no_secret_collector_and_scorecard_no_vm_power_change",
windows99_vmx_source_repair_controlled_apply_mode:
"check_mode_package_only_no_windows_or_vm_write",
windows99_vmx_source_repair_apply_allowed_by_this_package: false,
stockplatform_public_api_runtime_status: "stockplatform_public_api_runtime_ready",
stockplatform_public_api_controlled_recovery_preflight_status:
"not_required_stockplatform_runtime_ready",
@@ -1342,6 +1372,18 @@ const COMMANDER_INSERTED_REQUIREMENT_FALLBACK: PriorityWorkOrderResponse = {
"windows99_vmware_vmx_missing",
"windows99_uptime_unknown",
],
windows99_vmx_source_repair_package_status:
"check_mode_package_ready_windows99_vmx_source_repair_required",
windows99_vmx_source_repair_package_ready: true,
windows99_vmx_source_repair_missing_aliases: ["111"],
windows99_vmx_source_repair_powered_off_aliases: ["111", "112", "120", "121", "188"],
windows99_vmx_source_repair_controlled_restore_required_count: 1,
windows99_vmx_source_repair_powered_off_count: 5,
windows99_vmx_source_repair_safe_next_step:
"restore_windows99_missing_vmx_source_for_aliases_then_rerun_no_secret_collector_and_scorecard_no_vm_power_change",
windows99_vmx_source_repair_controlled_apply_mode:
"check_mode_package_only_no_windows_or_vm_write",
windows99_vmx_source_repair_apply_allowed_by_this_package: false,
drill_preflight_blocker_count: 5,
stockplatform_public_api_runtime_status: "stockplatform_public_api_runtime_ready",
stockplatform_public_api_runtime_ready: true,
@@ -8898,7 +8940,9 @@ function compactBlockerLabel(value: string | null | undefined) {
service_green_not_1: "service green",
wazuh_dashboard_degraded: "Wazuh dashboard",
windows99_remote_execution_channel_unavailable: "windows99 remote",
windows99_update_no_auto_reboot_policy_not_ready: "update policy",
windows99_vmware_autostart_readback_missing: "VMware autostart",
windows99_vmware_autostart_config_not_ready: "autostart config",
windows99_vmware_guest_power_not_ready: "VM power",
windows99_vmware_vmx_missing: "VMX missing",
windows99_uptime_unknown: "Windows99 uptime",
@@ -9050,6 +9094,35 @@ function ManagerSituationBoard({
summary?.controlled_service_data_backup_blocker_count ??
evidence?.controlled_service_data_backup_blocker_count ??
0;
const vmxRepairMissingAliases = (
summary?.windows99_vmx_source_repair_missing_aliases ??
evidence?.windows99_vmx_source_repair_missing_aliases ??
[]
).filter(Boolean);
const vmxRepairPoweredOffAliases = (
summary?.windows99_vmx_source_repair_powered_off_aliases ??
evidence?.windows99_vmx_source_repair_powered_off_aliases ??
[]
).filter(Boolean);
const vmxRepairPackageReady =
summary?.windows99_vmx_source_repair_package_ready ??
evidence?.windows99_vmx_source_repair_package_ready ??
false;
const vmxRepairRestoreCount =
summary?.windows99_vmx_source_repair_controlled_restore_required_count ??
evidence?.windows99_vmx_source_repair_controlled_restore_required_count ??
vmxRepairMissingAliases.length;
const vmxRepairPoweredOffCount =
summary?.windows99_vmx_source_repair_powered_off_count ??
evidence?.windows99_vmx_source_repair_powered_off_count ??
vmxRepairPoweredOffAliases.length;
const vmxRepairApplyAllowed =
summary?.windows99_vmx_source_repair_apply_allowed_by_this_package ??
evidence?.windows99_vmx_source_repair_apply_allowed_by_this_package ??
false;
const vmxRepairMissingLabel = vmxRepairMissingAliases.length
? vmxRepairMissingAliases.join(", ")
: "0";
const readinessPercent = summary?.active_p0_readiness_percent ?? null;
const rebootEvidenceReady =
evidence?.live_slo_metric_present === true &&
@@ -9248,6 +9321,43 @@ function ManagerSituationBoard({
</div>
{isRebootP0 ? (
<div className="mt-2 border border-[#d8d3c7] bg-[#f7f8f4] p-2">
<div
className="mb-2 flex flex-wrap items-center gap-1.5"
data-testid="awooop-windows99-vmx-repair-status"
>
<span className="inline-flex items-center gap-1.5 border border-[#c9d8ea] bg-white px-2 py-0.5 text-[11px] font-semibold text-[#1f5b9b]">
<FileText className="h-3.5 w-3.5" aria-hidden="true" />
{t("vmxRepair.label")}
</span>
<span className="border border-[#cbd7bf] bg-white px-2 py-0.5 text-[11px] font-semibold text-[#3d6b24]">
{vmxRepairPackageReady
? t("vmxRepair.ready")
: t("vmxRepair.waiting")}
</span>
<span className="border border-[#f0c6a8] bg-white px-2 py-0.5 font-mono text-[11px] font-semibold text-[#9a4d16]">
{vmxRepairRestoreCount > 0
? t("vmxRepair.missing", { aliases: vmxRepairMissingLabel })
: t("vmxRepair.missingNone")}
</span>
<span className="border border-[#f0c6a8] bg-white px-2 py-0.5 font-mono text-[11px] font-semibold text-[#9a4d16]">
{t("vmxRepair.poweredOff", { count: vmxRepairPoweredOffCount })}
</span>
<span className="border border-[#d8d3c7] bg-white px-2 py-0.5 text-[11px] font-semibold text-[#5f5b52]">
{t("vmxRepair.checkMode")}
</span>
<span
className={cn(
"border bg-white px-2 py-0.5 text-[11px] font-semibold",
vmxRepairApplyAllowed
? "border-[#b9d9c2] text-[#236332]"
: "border-[#d8d3c7] text-[#5f5b52]"
)}
>
{vmxRepairApplyAllowed
? t("vmxRepair.applyOpen")
: t("vmxRepair.applyClosed")}
</span>
</div>
<div className="text-[11px] font-semibold text-[#77736a]">
{t("blockerLanes.label")}
</div>