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

1"""Thin wrapper around the provider's tool-capability probe.""" 

2 

3from __future__ import annotations 

4 

5import logging 

6 

7from lilbee.app.services import get_services 

8from lilbee.providers.base import ProviderError 

9 

10log = logging.getLogger(__name__) 

11 

12 

13def model_supports_tools(model_ref: str) -> bool: 

14 """Return True iff the active provider reports tool support for *model_ref*. 

15 

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