"""Prepare a lead start plan through a ready host adapter."""
from __future__ import annotations

from okstra_ctl.domain.host import (
    HostSessionContext,
    HostUnavailable,
    LeadSessionPlan,
    LeadStartRequest,
)
from okstra_ctl.ports import HostAdapter


def start_run(
    request: LeadStartRequest,
    context: HostSessionContext,
    adapter: HostAdapter,
) -> LeadSessionPlan:
    readiness = adapter.probe(context)
    if not readiness.ok:
        raise HostUnavailable(readiness.reason)
    return adapter.lead_session().build_start(request, context)
