From 5994a3a56f9d26b186eef77e22d12c8db939bd24 Mon Sep 17 00:00:00 2001 From: Apple Date: Tue, 3 Mar 2026 07:15:39 -0800 Subject: [PATCH] feat(node-capabilities): add voice HA capability pass-through from node-worker Made-with: Cursor --- services/node-capabilities/main.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/services/node-capabilities/main.py b/services/node-capabilities/main.py index 607efae2..7828fde2 100644 --- a/services/node-capabilities/main.py +++ b/services/node-capabilities/main.py @@ -212,7 +212,11 @@ def _build_served_models(ollama: Dict, swapper: Dict, llama: Optional[Dict]) -> def _derive_capabilities(served: List[Dict], worker_caps: Dict) -> Dict[str, Any]: - """Merge served model types + worker provider flags into capability map.""" + """Merge served model types + worker provider flags into capability map. + + Voice HA caps (voice_tts, voice_llm, voice_stt) pass through directly from + node-worker /caps where they are validated against active NATS subscriptions. + """ served_types = {m.get("type", "llm") for m in served} wc = worker_caps.get("capabilities", {}) wp = worker_caps.get("providers", {}) @@ -225,7 +229,12 @@ def _derive_capabilities(served: List[Dict], worker_caps: Dict) -> Dict[str, Any "tts": wc.get("tts", False), "ocr": has_vision and wp.get("ocr", "none") != "none", "image": wc.get("image", False), + # Voice HA — pass through from node-worker /caps (reflects active subjects) + "voice_tts": wc.get("voice_tts", False), + "voice_llm": wc.get("voice_llm", False), + "voice_stt": wc.get("voice_stt", False), "providers": wp, + "voice_concurrency": worker_caps.get("voice_concurrency", {}), }