ethernet
398867326d
fix(voice): requirement checks answer from state, never install
...
Provider RESOLUTION ran an installer. `_detect_local_backend` called
`_try_lazy_install_stt` -> `pm.ensure_import`, and the TTS requirement entries called the
SDK importers, which install their extra on import. Both sit in status paths:
`wake.status` fires on every desktop gateway-open, `/voice status` and
`GET /api/audio/voice-config` resolve the same chain, and `check_tts_requirements` is the
`text_to_speech` tool's `check_fn`, so it runs on every tool listing.
The install is a whole-environment rebuild (a fresh generation, `--all-packages` over the
enabled set) under the per-install lock, so a passive probe could hold a sibling profile's
backend off its port for tens of seconds — the `hermes-setup` onboarding backend gave up at
40 s while an unrelated status probe's rebuild held the lock.
Availability now reads state: `pm.extras.available` for the extra (pm owns the extra->anchor
table, counts sys.modules fakes, and honours platform gates), `find_spec` for the rest. A
provider whose SDK installs at first use still counts as READY when lazy installs are allowed
and its own credential and platform gate permit — otherwise the tool would vanish from the
schema for exactly the users that install serves. Synthesis keeps its on-demand install, and
the lazy STT path now asks for `stt-whisper`, the extra carrying only faster-whisper.
Validated: tests/tools/ for the TTS/STT suites (test_tts_mistral's importable-SDK contract
included). A/B on HEAD: the two new files' non-guard tests fail there (3 + 1), pass here; the
guard test that transcription still installs passes on both.
2026-09-15 10:48:09 -04:00
..
2026-09-13 15:10:31 -04:00
2026-09-14 15:38:34 -04:00
2026-09-13 15:10:31 -04:00
2026-09-13 21:04:45 -07:00
2026-09-11 12:23:51 -04:00
2026-09-07 14:30:41 -07:00
2026-09-14 15:38:34 -04:00
2026-09-11 06:24:54 -07:00
2026-09-14 15:38:34 -04:00
2026-09-11 09:36:04 -04:00
2026-09-11 11:17:18 -04:00
2026-09-13 18:21:59 -04:00
2026-09-13 21:13:23 -07:00
2026-09-13 18:21:59 -04:00
2026-09-06 13:08:31 -07:00
2026-09-07 08:15:32 -07:00
2026-09-14 21:18:47 +05:30
2026-09-12 08:43:28 -07:00
2026-09-13 14:41:26 -07:00
2026-09-12 14:57:38 -04:00
2026-09-10 16:08:03 -04:00
2026-09-10 16:08:03 -04:00
2026-09-06 16:00:55 -04:00
2026-09-13 15:10:31 -04:00
2026-09-13 15:10:31 -04:00
2026-09-08 05:10:57 -07:00
2026-09-12 14:57:38 -04:00
2026-09-12 14:57:38 -04:00
2026-09-13 15:10:31 -04:00
2026-09-13 14:41:26 -07:00
2026-09-13 15:10:31 -04:00
2026-09-13 09:18:02 -07:00
2026-09-13 15:10:31 -04:00
2026-09-12 19:03:39 -04:00
2026-09-08 19:17:39 -04:00
2026-09-09 15:17:08 -04:00
2026-09-12 19:03:39 -04:00
2026-09-12 21:50:30 -07:00
2026-09-12 21:50:30 -07:00
2026-09-13 15:10:31 -04:00
2026-09-13 15:10:31 -04:00
2026-09-13 15:10:31 -04:00
2026-09-14 15:38:34 -04:00
2026-09-11 09:36:04 -04:00
2026-09-13 09:18:02 -07:00
2026-09-14 15:38:34 -04:00
2026-09-13 05:21:02 -07:00
2026-09-13 05:21:02 -07:00
2026-09-13 05:21:02 -07:00
2026-09-13 05:21:02 -07:00
2026-09-14 07:21:18 -07:00
2026-09-14 15:38:34 -04:00
2026-09-15 00:41:13 +05:30
2026-09-15 00:41:13 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:13 +05:30
2026-09-15 00:41:13 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:13 +05:30
2026-09-15 00:41:13 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:14 +05:30
2026-09-15 00:41:14 +05:30
2026-09-12 10:37:00 -04:00
2026-09-09 12:17:13 +05:30
2026-09-09 12:17:13 +05:30
2026-09-12 20:57:21 -07:00
2026-09-13 15:10:31 -04:00
2026-09-10 02:21:15 +05:30
2026-09-09 10:55:32 -07:00
2026-09-13 21:31:57 -07:00
2026-09-07 05:57:26 -07:00
2026-09-07 08:08:41 -07:00
2026-09-11 12:23:51 -04:00
2026-09-08 13:38:18 -07:00
2026-09-13 21:05:42 -07:00
2026-09-07 07:10:28 -07:00
2026-09-13 20:13:12 -07:00
2026-09-07 06:15:43 -07:00
2026-09-06 16:42:35 -04:00
2026-09-08 02:26:05 +05:30
2026-09-15 00:41:13 +05:30
2026-09-11 12:23:51 -04:00
2026-09-13 05:07:11 -07:00
2026-09-11 21:10:19 -04:00
2026-09-13 15:10:31 -04:00
2026-09-07 06:12:24 -07:00
2026-09-13 15:10:31 -04:00
2026-09-12 20:52:49 -07:00
2026-09-14 15:38:34 -04:00
2026-09-14 15:38:34 -04:00
2026-09-11 21:10:19 -04:00
2026-09-07 06:02:41 -07:00
2026-09-08 19:17:39 -04:00
2026-09-06 16:00:55 -04:00
2026-09-11 21:10:19 -04:00
2026-09-13 15:10:31 -04:00
2026-09-10 05:02:41 -07:00
2026-09-12 21:55:07 -07:00
2026-09-12 19:03:39 -04:00
2026-09-14 09:19:25 -07:00
2026-09-07 07:10:28 -07:00
2026-09-13 09:18:02 -07:00
2026-09-14 15:38:34 -04:00
2026-09-13 21:03:11 -07:00
2026-09-13 09:18:54 -07:00
2026-09-07 07:10:28 -07:00
2026-09-07 14:16:57 -07:00
2026-09-09 12:18:58 -07:00
2026-09-12 12:32:55 -07:00
2026-09-07 06:05:51 -07:00
2026-09-13 15:10:31 -04:00
2026-09-07 14:10:46 -07:00
2026-09-09 11:46:36 -07:00
2026-09-12 10:00:06 +05:30
2026-09-12 16:55:32 -04:00
2026-09-13 20:45:25 -07:00
2026-09-07 08:22:35 -07:00
2026-09-07 22:47:33 +05:30
2026-09-13 20:45:25 -07:00
2026-09-07 07:04:52 -07:00
2026-09-13 15:41:01 -07:00
2026-09-13 15:10:31 -04:00
2026-09-13 20:43:33 -07:00
2026-09-08 17:44:51 -07:00
2026-09-13 06:29:12 -07:00
2026-09-13 20:42:37 -07:00
2026-09-13 06:29:12 -07:00
2026-09-13 06:29:12 -07:00
2026-09-12 21:05:29 -07:00
2026-09-09 11:27:29 -07:00
2026-09-12 08:23:28 -07:00
2026-09-14 15:38:34 -04:00
2026-09-12 20:43:42 -07:00
2026-09-08 19:17:39 -04:00
2026-09-13 09:18:02 -07:00
2026-09-12 16:30:35 -04:00
2026-09-11 15:26:46 -07:00
2026-09-11 15:44:00 -07:00
2026-09-11 19:39:12 -07:00
2026-09-07 08:25:33 -07:00
2026-09-13 20:46:22 -07:00
2026-09-12 21:13:40 -07:00
2026-09-12 22:03:19 -07:00
2026-09-13 09:18:02 -07:00
2026-09-13 14:43:04 -07:00
2026-09-14 15:38:34 -04:00
2026-09-14 15:38:34 -04:00
2026-09-14 15:38:34 -04:00
2026-09-12 22:06:03 -07:00
2026-09-14 15:38:34 -04:00
2026-09-07 12:50:29 -07:00
2026-09-12 21:25:00 -07:00
2026-09-12 22:09:19 -07:00
2026-09-13 15:10:31 -04:00
2026-09-11 19:50:46 -07:00
2026-09-15 00:41:13 +05:30
2026-09-13 19:58:33 -07:00
2026-09-07 06:12:24 -07:00
2026-09-07 08:14:51 -07:00
2026-09-07 14:10:46 -07:00
2026-09-07 00:28:46 +05:30
2026-09-07 00:28:46 +05:30
2026-09-10 18:17:22 -07:00
2026-09-08 17:51:35 +10:00
2026-09-11 11:54:49 -07:00
2026-09-11 11:54:49 -07:00
2026-09-11 06:24:11 -07:00
2026-09-09 21:57:21 -04:00
2026-09-11 15:29:15 -07:00
2026-09-11 11:54:49 -07:00
2026-09-09 12:19:13 +05:30
2026-09-11 11:54:49 -07:00
2026-09-11 11:54:49 -07:00
2026-09-13 15:10:31 -04:00
2026-09-12 10:37:00 -04:00
2026-09-12 21:50:30 -07:00
2026-09-12 16:55:32 -04:00
2026-09-11 21:10:19 -04:00
2026-09-11 21:10:19 -04:00
2026-09-13 11:22:08 -07:00
2026-09-15 10:48:09 -04:00
2026-09-07 12:50:29 -07:00
2026-09-14 15:38:34 -04:00
2026-09-11 11:19:53 +05:30
2026-09-14 15:38:34 -04:00
2026-09-11 11:54:49 -07:00
2026-09-11 15:29:15 -07:00
2026-09-12 20:55:04 -07:00
2026-09-11 12:23:51 -04:00
2026-09-11 15:29:15 -07:00
2026-09-13 12:35:36 -07:00
2026-09-11 11:19:53 +05:30
2026-09-11 21:10:19 -04:00
2026-09-13 09:18:02 -07:00
2026-09-13 15:10:31 -04:00
2026-09-13 05:09:43 -07:00
2026-09-12 10:37:00 -04:00
2026-09-10 02:21:16 +05:30
2026-09-13 21:04:08 -07:00
2026-09-13 09:18:02 -07:00
2026-09-13 09:18:02 -07:00
2026-09-13 05:07:50 -07:00
2026-09-13 15:10:31 -04:00
2026-09-07 08:09:20 -07:00
2026-09-13 05:07:50 -07:00
2026-09-13 15:10:31 -04:00
2026-09-11 12:23:51 -04:00
2026-09-13 15:10:31 -04:00
2026-09-14 15:38:34 -04:00
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:50 -07:00
2026-09-14 15:38:34 -04:00
2026-09-15 10:48:09 -04:00
2026-09-14 15:38:34 -04:00
2026-09-13 05:07:50 -07:00
2026-09-12 13:44:52 -07:00
2026-09-11 12:23:51 -04:00
2026-09-14 15:38:34 -04:00
2026-09-13 12:35:36 -07:00
2026-09-11 12:23:51 -04:00
2026-09-13 09:18:02 -07:00
2026-09-14 15:38:34 -04:00
2026-09-13 15:10:31 -04:00
2026-09-12 21:30:38 -07:00
2026-09-13 05:07:50 -07:00
2026-09-13 05:07:50 -07:00
2026-09-11 12:23:51 -04:00
2026-09-13 15:10:31 -04:00