From cd419558fd11eea4171354113a3bd1821dc47711 Mon Sep 17 00:00:00 2001 From: kemal Date: Fri, 28 Aug 2026 02:03:51 +0300 Subject: [PATCH] Do not require claude on PATH when assistant uses a hosted provider --- dikte/cli.py | 2 +- tests/test_cli.py | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/dikte/cli.py b/dikte/cli.py index c1ef786..37bc87d 100644 --- a/dikte/cli.py +++ b/dikte/cli.py @@ -873,7 +873,7 @@ def cmd_doctor(opts): # Recording, the device list, and KDE's shortcut registry. wanted += ["pw-record", "pactl", "kwriteconfig6"] wanted += ["ffmpeg", - assistant.executable(assistant.provider(conf)) or "claude", + assistant.executable(assistant.provider(conf)), cleanup.executable(cleanup.provider(conf))] programs = {name: shutil.which(name) or "" for name in wanted if name} target = conf.transcribe_target() diff --git a/tests/test_cli.py b/tests/test_cli.py index 67c6f21..c319d4b 100644 --- a/tests/test_cli.py +++ b/tests/test_cli.py @@ -577,6 +577,21 @@ class Doctor(DikteTest): self.run_doctor(as_json=False, cleanup_provider="codex", cleanup_codex_model="gpt-5.4")) + def test_agent_on_hosted_provider_does_not_ask_for_a_cli_program(self): + for provider in ("openrouter", "opencode"): + with self.subTest(provider=provider): + reply = self.run_doctor(assistant_provider=provider) + self.assertEqual(reply["agent"]["provider"], provider) + for cli_name in ("claude", "codex", "agy"): + self.assertNotIn(cli_name, reply["programs"]) + + def test_agent_on_a_cli_asks_for_the_program(self): + for provider, binary in (("claude", "claude"), ("codex", "codex"), ("agy", "agy")): + with self.subTest(provider=provider): + reply = self.run_doctor(assistant_provider=provider) + self.assertEqual(reply["agent"]["provider"], provider) + self.assertIn(binary, reply["programs"]) + class Devices(DikteTest): def test_a_machine_with_nothing_names_its_own_missing_program(self):