# Copyright (c) 2026 Beijing Volcano Engine Technology Co., Ltd.
# SPDX-License-Identifier: AGPL-3.0
"""HTTP router helpers for operation telemetry."""

from __future__ import annotations

from typing import Any, Awaitable, Callable

from openviking.telemetry import TelemetryRequest, TelemetrySelection
from openviking.telemetry.execution import (
    TelemetryExecutionResult,
    parse_telemetry_selection,
    run_with_telemetry,
)


def resolve_selection(telemetry: TelemetryRequest) -> TelemetrySelection:
    """Validate a router telemetry request without starting execution."""
    return parse_telemetry_selection(telemetry)


async def run_operation(
    *,
    operation: str,
    telemetry: TelemetryRequest,
    fn: Callable[[], Awaitable[Any]],
) -> TelemetryExecutionResult[Any]:
    """Execute a router operation with request-scoped telemetry."""
    return await run_with_telemetry(
        operation=operation,
        telemetry=telemetry,
        fn=fn,
    )
