From 7bda02169db63b0826f1dddabb57b2e53623f94f Mon Sep 17 00:00:00 2001 From: Dinakar Sarbada Date: Wed, 6 May 2026 12:38:03 -0700 Subject: [PATCH 1/4] fix: allow threads and pinterest search sources --- skills/last30days/scripts/lib/pipeline.py | 2 ++ tests/test_cli_v3.py | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/skills/last30days/scripts/lib/pipeline.py b/skills/last30days/scripts/lib/pipeline.py index 30bcbbf..830f304 100644 --- a/skills/last30days/scripts/lib/pipeline.py +++ b/skills/last30days/scripts/lib/pipeline.py @@ -79,6 +79,8 @@ MOCK_AVAILABLE_SOURCES = [ "xiaohongshu", "github", "perplexity", + "threads", + "pinterest", "xquik", "digg", ] diff --git a/tests/test_cli_v3.py b/tests/test_cli_v3.py index 48f2dd1..9c7d506 100644 --- a/tests/test_cli_v3.py +++ b/tests/test_cli_v3.py @@ -71,6 +71,12 @@ class CliV3Tests(unittest.TestCase): cli.parse_search_flag("web, reddit, hn, web"), ) + def test_parse_search_flag_accepts_optional_social_sources(self): + self.assertEqual( + ["threads", "pinterest"], + cli.parse_search_flag("threads, pinterest"), + ) + def test_parse_search_flag_rejects_invalid_or_empty_inputs(self): with self.assertRaises(SystemExit): cli.parse_search_flag("unknown") From 6a5a122195ddfa9584fbcab1212136cb0f56e9db Mon Sep 17 00:00:00 2001 From: Dinakar Sarbada Date: Wed, 6 May 2026 12:39:08 -0700 Subject: [PATCH 2/4] fix: honor explicit threads source requests --- skills/last30days/scripts/lib/pipeline.py | 4 +++- tests/test_cli_v3.py | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/skills/last30days/scripts/lib/pipeline.py b/skills/last30days/scripts/lib/pipeline.py index 830f304..a5caa88 100644 --- a/skills/last30days/scripts/lib/pipeline.py +++ b/skills/last30days/scripts/lib/pipeline.py @@ -124,7 +124,9 @@ def available_sources(config: dict[str, Any], requested_sources: list[str] | Non available.append("perplexity") if requested_sources and "xiaohongshu" in requested_sources and env.is_xiaohongshu_available(config): available.append("xiaohongshu") - if env.is_threads_available(config): + if env.is_threads_available(config) or ( + requested_sources and "threads" in requested_sources and config.get("SCRAPECREATORS_API_KEY") + ): available.append("threads") if requested_sources and "pinterest" in requested_sources and env.is_pinterest_available(config): available.append("pinterest") diff --git a/tests/test_cli_v3.py b/tests/test_cli_v3.py index 9c7d506..72a8c07 100644 --- a/tests/test_cli_v3.py +++ b/tests/test_cli_v3.py @@ -77,6 +77,13 @@ class CliV3Tests(unittest.TestCase): cli.parse_search_flag("threads, pinterest"), ) + def test_explicit_threads_search_uses_scrapecreators_key_without_include_sources(self): + available = cli.pipeline.available_sources( + {"SCRAPECREATORS_API_KEY": "test-key", "INCLUDE_SOURCES": ""}, + requested_sources=["threads"], + ) + self.assertIn("threads", available) + def test_parse_search_flag_rejects_invalid_or_empty_inputs(self): with self.assertRaises(SystemExit): cli.parse_search_flag("unknown") From 5b29b8f427f413acd9ad8abd8288752aa05d35fe Mon Sep 17 00:00:00 2001 From: Dinakar Sarbada Date: Wed, 6 May 2026 12:40:02 -0700 Subject: [PATCH 3/4] fix: honor explicit perplexity source requests --- skills/last30days/scripts/lib/pipeline.py | 4 +++- tests/test_cli_v3.py | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) 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") From 261ea5895c13cd5de865864f483a320f38ab381c Mon Sep 17 00:00:00 2001 From: Trevin Chow Date: Sun, 17 May 2026 00:20:56 -0700 Subject: [PATCH 4/4] refactor(pipeline): remove dead threads-explicit-request branch --- skills/last30days/scripts/lib/pipeline.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/skills/last30days/scripts/lib/pipeline.py b/skills/last30days/scripts/lib/pipeline.py index 4188e26..ca6afeb 100644 --- a/skills/last30days/scripts/lib/pipeline.py +++ b/skills/last30days/scripts/lib/pipeline.py @@ -126,9 +126,7 @@ def available_sources(config: dict[str, Any], requested_sources: list[str] | Non available.append("perplexity") if requested_sources and "xiaohongshu" in requested_sources and env.is_xiaohongshu_available(config): available.append("xiaohongshu") - if env.is_threads_available(config) or ( - requested_sources and "threads" in requested_sources and config.get("SCRAPECREATORS_API_KEY") - ): + if env.is_threads_available(config): available.append("threads") if requested_sources and "pinterest" in requested_sources and env.is_pinterest_available(config): available.append("pinterest")