Coverage for src/lilbee/server/chat_dispatch/capability.py: 100%
11 statements
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-14 11:46 +0000
« prev ^ index » next coverage.py v7.15.2, created at 2026-08-14 11:46 +0000
1"""Thin wrapper around the provider's tool-capability probe."""
3from __future__ import annotations
5import logging
7from lilbee.app.services import get_services
8from lilbee.providers.base import ProviderError
10log = logging.getLogger(__name__)
13def model_supports_tools(model_ref: str) -> bool:
14 """Return True iff the active provider reports tool support for *model_ref*.
16 A ``ProviderError`` from the probe (model file unavailable, backend down)
17 is treated as "no tools" so the route layer returns a 400 instead of 500.
18 Other exceptions are intentionally NOT caught here so genuine bugs
19 surface as 500s instead of being silently downgraded.
20 """
21 try:
22 return bool(get_services().provider.supports_tools(model_ref))
23 except ProviderError:
24 log.debug("supports_tools probe raised ProviderError for %s", model_ref, exc_info=True)
25 return False