github Python re-analysis due

Thysrael/Horizon

github

📡 Your own AI-powered news radar. Generates daily briefings in English & Chinese. | 用 AI 构建你专属的新闻雷达

maintainer
Thysrael
licence
MIT
first seen
2026-06-01
last seen
2026-09-17
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 13 tools
transport stdio · http counts 13 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • hz_enrich_items
  • hz_fetch_items
  • hz_filter_items
  • hz_generate_summary
  • hz_get_metrics
  • hz_get_run_meta
  • hz_get_run_stage
  • hz_get_run_summary
  • hz_list_runs
  • hz_run_pipeline
  • hz_score_items
  • hz_send_webhook
  • hz_validate_config
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 596e2b1 · analyzer v33 · 1d ago

danger signals2

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 105

filesystem 23

  • fs Thysrael-Horizon-596e2b1/src/_file_utils.py :5 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/main.py :7 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/mcp/horizon_adapter.py :11 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/mcp/run_store.py :9 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/mcp/service.py :9 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/orchestrator.py :7 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/processing/profiles.py :5 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/scrapers/twitter_playwright.py :11 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/setup/presets.py :10 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/setup/wizard.py :7 from pathlib import Path
  • fs Thysrael-Horizon-596e2b1/src/storage/manager.py :6 import shutil
  • fs (weak) Thysrael-Horizon-596e2b1/tests/conftest.py :4 from pathlib import Path
show 11 more
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_analyzer.py :4 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_balanced_digest.py :3 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_classifier.py :4 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_enricher.py :4 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_main.py :1 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_adapter.py :5 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_run_store.py :3 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_service_smoke.py :5 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_profiles.py :2 import shutil
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_prompting.py :1 from pathlib import Path
  • fs (weak) Thysrael-Horizon-596e2b1/tests/test_storage.py :6 from pathlib import Path

network 29

  • net Thysrael-Horizon-596e2b1/src/ai/markdown_utils.py :5 from urllib.parse import urlsplit
  • net Thysrael-Horizon-596e2b1/src/ai/summarizer.py :7 from urllib.parse import quote, urlsplit
  • net Thysrael-Horizon-596e2b1/src/extractors/base.py :6 import httpx
  • net Thysrael-Horizon-596e2b1/src/extractors/trafilatura.py :6 import httpx
  • net Thysrael-Horizon-596e2b1/src/mcp/service.py :11 from urllib.parse import parse_qsl, urlencode, urlsplit, urlunsplit
  • net Thysrael-Horizon-596e2b1/src/orchestrator.py :9 from urllib.parse import unquote_plus, urlsplit
  • net Thysrael-Horizon-596e2b1/src/scrapers/base.py :6 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/gdelt.py :28 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/github.py :7 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/google_news.py :38 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/hackernews.py :8 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/openbb.py :34 import httpx
show 17 more
  • net Thysrael-Horizon-596e2b1/src/scrapers/ossinsight.py :13 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/reddit.py :12 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/rss.py :11 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/telegram.py :9 import httpx
  • net Thysrael-Horizon-596e2b1/src/scrapers/twitter.py :11 import httpx
  • net Thysrael-Horizon-596e2b1/src/services/webhook.py :10 from urllib.parse import urlsplit, urlunsplit
  • net Thysrael-Horizon-596e2b1/src/setup/presets.py :13 import httpx
  • net Thysrael-Horizon-596e2b1/src/url_security.py :7 import socket
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_extractors_trafilatura.py :7 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_gdelt.py :7 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_google_news.py :7 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_minimax_client.py :9 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_openbb_scraper.py :21 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_reddit.py :5 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_telegram.py :5 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_twitter.py :6 import httpx
  • net (weak) Thysrael-Horizon-596e2b1/tests/test_webhook.py :10 import httpx

secrets 3

  • secrets Thysrael-Horizon-596e2b1/src/mcp/service.py :259 if ctx.config.sources.github and not os.getenv("GITHUB_TOKEN"):
  • secrets Thysrael-Horizon-596e2b1/src/scrapers/github.py :26 self.token = os.getenv("GITHUB_TOKEN")
  • secrets (weak) Thysrael-Horizon-596e2b1/tests/test_mcp_adapter.py :56 assert os.environ["ANTHROPIC_API_KEY"] == "sk-ant-test"

tool registrations 13

  • hz_validate_config Thysrael-Horizon-596e2b1/src/mcp/server.py :136
  • hz_fetch_items Thysrael-Horizon-596e2b1/src/mcp/server.py :156
  • hz_score_items Thysrael-Horizon-596e2b1/src/mcp/server.py :178
  • hz_filter_items Thysrael-Horizon-596e2b1/src/mcp/server.py :198
  • hz_enrich_items Thysrael-Horizon-596e2b1/src/mcp/server.py :222
  • hz_generate_summary Thysrael-Horizon-596e2b1/src/mcp/server.py :242
  • hz_run_pipeline Thysrael-Horizon-596e2b1/src/mcp/server.py :266
  • hz_list_runs Thysrael-Horizon-596e2b1/src/mcp/server.py :296
  • hz_get_run_meta Thysrael-Horizon-596e2b1/src/mcp/server.py :318
  • hz_get_run_stage Thysrael-Horizon-596e2b1/src/mcp/server.py :340
  • hz_get_run_summary Thysrael-Horizon-596e2b1/src/mcp/server.py :362
  • hz_get_metrics Thysrael-Horizon-596e2b1/src/mcp/server.py :384
show 1 more
  • hz_send_webhook Thysrael-Horizon-596e2b1/src/mcp/server.py :406

declared dependencies 22

  • mcp@>=1.0.0
  • httpx@>=0.27.0
  • feedparser@>=6.0.11
  • anthropic@>=0.39.0
  • openai@>=1.54.0
  • google-genai@>=0.3.0
  • pydantic@>=2.9.0
  • python-dateutil@>=2.9.0
  • rich@>=13.9.0
  • tenacity@>=9.0.0
  • python-dotenv@>=1.0.0
  • ddgs@>=7.0.0
show 10 more
  • beautifulsoup4@>=4.12.0
  • markdown@>=3.10.2
  • opencc-python-reimplemented@>=0.1.7
  • trafilatura@>=2.1.0
  • pytest@>=8.0.0
  • pytest-cov@>=5.0.0
  • openbb@>=4.4.0
  • openbb-benzinga@>=1.6.0
  • playwright@>=1.40.0
  • playwright-stealth@>=1.0.0