Coverage for src / lexigram / ai / relay / gateway / module.py: 100%
14 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-08 23:08 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-08 23:08 +0800
1"""Relay gateway module for dependency injection."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7from lexigram.contracts.ai.relay import RelayGatewayProtocol
8from lexigram.di.module import DynamicModule, Module, module
10if TYPE_CHECKING:
11 from lexigram.ai.relay.gateway.config import RelayGatewayConfig
13__all__ = ["RelayGatewayModule"]
16@module
17class RelayGatewayModule(Module):
18 """Protocol-facing relay gateway module for Lexigram applications.
20 Provides the relay gateway behind the :class:`RelayGatewayProtocol`
21 contract: channel selection, orchestration, upstream I/O, and SSE
22 handling. The :class:`RelayGatewayProvider` composes the gateway
23 from caller-owned config, conversion engine, and HTTP client.
25 Usage::
27 from lexigram.ai.relay.gateway import RelayGatewayModule
29 @module(
30 imports=[RelayGatewayModule.configure()]
31 )
32 class AppModule(Module):
33 pass
34 """
36 @classmethod
37 def configure(cls, config: RelayGatewayConfig | None = None) -> DynamicModule:
38 """Create a RelayGatewayModule with the built-in gateway routes.
40 Args:
41 config: Static gateway configuration (channel table, model
42 suffixes, auto-test flags, job TTL). Defaults to an empty
43 configuration when omitted.
45 Returns:
46 A :class:`~lexigram.di.module.DynamicModule` descriptor.
47 """
48 from lexigram.ai.relay.gateway.di.provider import RelayGatewayProvider
49 from lexigram.ai.relay.gateway.operations.controls import RelayControlsService
50 from lexigram.ai.relay.gateway.operations.health import RelayHealthService
51 from lexigram.ai.relay.gateway.operations.metrics import RelayMetricsService
53 return DynamicModule(
54 module=cls,
55 providers=[RelayGatewayProvider(config=config)],
56 exports=[
57 RelayGatewayProtocol,
58 RelayHealthService,
59 RelayMetricsService,
60 RelayControlsService,
61 ],
62 )