diff --git a/skills/last30days/scripts/lib/pipeline.py b/skills/last30days/scripts/lib/pipeline.py index a5caa88..4188e26 100644 --- a/skills/last30days/scripts/lib/pipeline.py +++ b/skills/last30days/scripts/lib/pipeline.py @@ -120,7 +120,9 @@ def available_sources(config: dict[str, Any], requested_sources: list[str] | Non available.append("grounding") # Perplexity Sonar: opt-in additive source via INCLUDE_SOURCES=perplexity include_sources = (config.get("INCLUDE_SOURCES") or "").lower().split(",") - if config.get("OPENROUTER_API_KEY") and "perplexity" in include_sources: + if config.get("OPENROUTER_API_KEY") and ( + "perplexity" in include_sources or (requested_sources and "perplexity" in requested_sources) + ): available.append("perplexity") if requested_sources and "xiaohongshu" in requested_sources and env.is_xiaohongshu_available(config): available.append("xiaohongshu") diff --git a/tests/test_cli_v3.py b/tests/test_cli_v3.py index 72a8c07..60ff5eb 100644 --- a/tests/test_cli_v3.py +++ b/tests/test_cli_v3.py @@ -84,6 +84,13 @@ class CliV3Tests(unittest.TestCase): ) self.assertIn("threads", available) + def test_explicit_perplexity_search_uses_openrouter_key_without_include_sources(self): + available = cli.pipeline.available_sources( + {"OPENROUTER_API_KEY": "test-key", "INCLUDE_SOURCES": ""}, + requested_sources=["perplexity"], + ) + self.assertIn("perplexity", available) + def test_parse_search_flag_rejects_invalid_or_empty_inputs(self): with self.assertRaises(SystemExit): cli.parse_search_flag("unknown")