Coverage for src / lexigram / ai / relay / quality.py: 100%
9 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"""Route quality matrix for the relay conversion engine.
3Quality values mirror relaykit and describe semantic closeness between
4two wire protocols, not test confidence. Every directed pair has one
5stable value; same-format conversion is always :data:`ConversionQuality.GOOD`.
6"""
8from __future__ import annotations
10from lexigram.contracts.ai.relay.types import ConversionQuality, RelayFormat
12__all__ = ["ROUTE_QUALITY", "route_quality"]
15ROUTE_QUALITY: dict[tuple[RelayFormat, RelayFormat], ConversionQuality] = {
16 (RelayFormat.OPENAI_CHAT, RelayFormat.OPENAI_RESPONSES): ConversionQuality.GOOD,
17 (RelayFormat.OPENAI_RESPONSES, RelayFormat.OPENAI_CHAT): ConversionQuality.GOOD,
18 (RelayFormat.OPENAI_CHAT, RelayFormat.CLAUDE): ConversionQuality.FAIR,
19 (RelayFormat.OPENAI_CHAT, RelayFormat.GEMINI): ConversionQuality.FAIR,
20 (RelayFormat.OPENAI_RESPONSES, RelayFormat.CLAUDE): ConversionQuality.FAIR,
21 (RelayFormat.OPENAI_RESPONSES, RelayFormat.GEMINI): ConversionQuality.FAIR,
22 (RelayFormat.CLAUDE, RelayFormat.OPENAI_CHAT): ConversionQuality.FAIR,
23 (RelayFormat.CLAUDE, RelayFormat.OPENAI_RESPONSES): ConversionQuality.FAIR,
24 (RelayFormat.GEMINI, RelayFormat.OPENAI_CHAT): ConversionQuality.FAIR,
25 (RelayFormat.GEMINI, RelayFormat.OPENAI_RESPONSES): ConversionQuality.FAIR,
26 (RelayFormat.CLAUDE, RelayFormat.GEMINI): ConversionQuality.DISCOURAGED,
27 (RelayFormat.GEMINI, RelayFormat.CLAUDE): ConversionQuality.DISCOURAGED,
28}
29"""Stable quality for every directed pair, keyed by ``(source, target)``."""
32def route_quality(source: RelayFormat, target: RelayFormat) -> ConversionQuality:
33 """Return the semantic-closeness quality for a directed pair.
35 Args:
36 source: Source wire format.
37 target: Target wire format.
39 Returns:
40 :data:`ConversionQuality.GOOD` for same-format conversion and for
41 routes without a configured quality, otherwise the configured
42 matrix value.
43 """
44 if source is target:
45 return ConversionQuality.GOOD
46 return ROUTE_QUALITY.get((source, target), ConversionQuality.DISCOURAGED)