from __future__ import annotations from dataclasses import dataclass from pathlib import Path @dataclass(frozen=True, slots=True) class ChannelConfig: name: str outbox_path: Path upstream_url: str | None # None => /api//* returns 501 upstream_path: str = "/api/" # path prefix when proxying (channel injected via {channel}) def build_channels( storage_root: Path, sre_upstream: str, tss_upstream: str | None, ) -> dict[str, ChannelConfig]: return { "sre": ChannelConfig( name="sre", outbox_path=storage_root / "external_bridge_outbox.jsonl", upstream_url=sre_upstream.rstrip("/"), upstream_path="/api/", ), "tss": ChannelConfig( name="tss", outbox_path=storage_root / "tss_bridge_outbox.jsonl", upstream_url=(tss_upstream.rstrip("/") if tss_upstream else None), upstream_path="/api/tss/", ), }