feat(simulation): add portable gaussian provider connector

This commit is contained in:
DCCONSTRUCTIONS
2026-08-26 00:24:53 +03:00
parent 3ff3b9b587
commit 73fbfddf6c
4 changed files with 749 additions and 0 deletions
@@ -0,0 +1,66 @@
"""Read-only Mission Core projection of the external Gaussian build provider."""
from __future__ import annotations
from collections.abc import Callable
from typing import Any, Literal
from fastapi import APIRouter
from pydantic import BaseModel, ConfigDict
from k1link.simulation.gaussian_pipeline_gateway import (
GaussianPipelineGateway,
GaussianPipelineGatewayError,
configured_gaussian_pipeline_gateway,
)
ProviderFactory = Callable[[], GaussianPipelineGateway | None]
class SimulationWorldProviderStatus(BaseModel):
model_config = ConfigDict(extra="forbid", frozen=True)
schema_version: Literal["missioncore.simulation-world-provider-status/v1"] = (
"missioncore.simulation-world-provider-status/v1"
)
provider_id: Literal["gaussian-pipeline"] = "gaussian-pipeline"
configured: bool
state: Literal["ready", "unavailable"]
capabilities: dict[str, Any] | None
def build_simulation_world_provider_router(
provider_factory: ProviderFactory = configured_gaussian_pipeline_gateway,
) -> APIRouter:
router = APIRouter()
@router.get(
"/api/v1/simulation-worlds/provider",
response_model=SimulationWorldProviderStatus,
)
def provider_status() -> SimulationWorldProviderStatus:
provider: GaussianPipelineGateway | None = None
try:
provider = provider_factory()
if provider is None:
return SimulationWorldProviderStatus(
configured=False,
state="unavailable",
capabilities=None,
)
return SimulationWorldProviderStatus(
configured=True,
state="ready",
capabilities=provider.capabilities(),
)
except GaussianPipelineGatewayError:
return SimulationWorldProviderStatus(
configured=True,
state="unavailable",
capabilities=None,
)
finally:
if provider is not None:
provider.close()
return router