Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/Thysrael/Horizon
/ types & classes
Types & classes
97 in github.com/Thysrael/Horizon
⨍
Functions
669
◇
Types & classes
97
↓ 50 callers
Class
WebhookConfig
Webhook notification configuration.
src/models.py:321
↓ 44 callers
Class
WebhookNotifier
Sends webhook notifications after pipeline completion or failure.
src/services/webhook.py:218
↓ 24 callers
Class
ContentItem
Unified content item model from any source.
src/models.py:24
↓ 22 callers
Class
OpenAIClient
Client for OpenAI-compatible APIs.
src/ai/client.py:174
↓ 21 callers
Class
HorizonMcpError
Structured exception with stable error code.
src/mcp/errors.py:10
↓ 20 callers
Class
DailySummarizer
Generates daily Markdown summaries from pre-analyzed content items.
src/ai/summarizer.py:64
↓ 15 callers
Class
TwitterScraper
Fetch tweets via the Apify altimis/scweet actor.
src/scrapers/twitter.py:23
↓ 14 callers
Class
_DummyClient
Mock AI client for testing.
tests/test_chained_client.py:12
↓ 12 callers
Class
AIConfig
AI client configuration.
src/models.py:99
↓ 11 callers
Class
GDELTScraper
Scraper backed by the GDELT 2.0 DOC API.
src/scrapers/gdelt.py:36
↓ 11 callers
Class
GoogleNewsScraper
Scraper backed by the Google News RSS search endpoint.
src/scrapers/google_news.py:46
↓ 11 callers
Class
RunStore
Store intermediate artifacts per pipeline run.
src/mcp/run_store.py:25
↓ 10 callers
Class
GDELTConfig
GDELT 2.0 DOC API source configuration. Queries the key-less GDELT DOC API (https://api.gdeltproject.org/api/v2/doc/doc) for recent news arti
src/models.py:269
↓ 10 callers
Class
GoogleNewsConfig
Google News RSS search source configuration. Builds Google News RSS search URLs (https://news.google.com/rss/search) for a query and parses t
src/models.py:289
↓ 8 callers
Class
CategoryGroupConfig
A quota group containing one or more source categories.
src/models.py:405
↓ 8 callers
Class
ChainedAIClient
Chain multiple AI clients with automatic fallback. When a provider fails with a retryable error (rate limit, auth/quota, service unavailable,
src/ai/client.py:538
↓ 8 callers
Class
FilteringConfig
Content filtering configuration.
src/models.py:413
↓ 8 callers
Class
StorageManager
Manages file-based storage for configuration and state.
src/storage/manager.py:53
↓ 7 callers
Class
EmailManager
Manages email subscriptions and sending summaries.
src/services/email.py:25
↓ 7 callers
Class
HorizonPipelineService
High-level staged pipeline service.
src/mcp/service.py:43
↓ 7 callers
Class
OpenBBWatchlist
A named watchlist of tickers fetched from one OpenBB provider. Each watchlist produces one news.company() call per run, so group symbols by p
src/models.py:215
↓ 7 callers
Class
RedditScraper
Scraper for Reddit posts and comments.
src/scrapers/reddit.py:46
↓ 6 callers
Class
AzureOpenAIClient
Client for Azure OpenAI deployments. Uses the native AsyncAzureOpenAI client, which requires the deployment name (passed as `model`), azure_e
src/ai/client.py:329
↓ 6 callers
Class
ContentAnalyzer
Analyzes content items using AI to determine importance.
src/ai/analyzer.py:18
↓ 5 callers
Class
OpenBBConfig
OpenBB Platform source configuration. Uses the installed `openbb` SDK to fetch news and filings for a set of tickers. The SDK is an optional
src/models.py:230
↓ 4 callers
Class
RedditSubredditConfig
Configuration for monitoring a specific subreddit.
src/models.py:145
↓ 3 callers
Class
FakeOrchestrator
tests/test_mcp_service_smoke.py:94
↓ 3 callers
Class
RedditConfig
Reddit source configuration.
src/models.py:167
↓ 2 callers
Class
AIProvider
Supported AI providers.
src/models.py:44
↓ 2 callers
Class
BalancedDigestResult
Items and selection statistics from balanced digest filtering.
src/orchestrator.py:35
↓ 2 callers
Class
Config
Main configuration model.
src/models.py:424
↓ 2 callers
Class
ConfigError
Raised when configuration is missing or invalid.
src/storage/manager.py:47
↓ 2 callers
Class
GitHubSourceConfig
GitHub source configuration.
src/models.py:118
↓ 2 callers
Class
HorizonOrchestrator
Orchestrates the complete workflow for content aggregation and analysis.
src/orchestrator.py:45
↓ 2 callers
Class
OpenBBScraper
Scraper backed by the OpenBB Platform Python SDK.
src/scrapers/openbb.py:42
↓ 2 callers
Class
RSSScraper
Scraper for RSS/Atom feeds.
src/scrapers/rss.py:20
↓ 2 callers
Class
RSSSourceConfig
RSS feed source configuration.
src/models.py:136
↓ 2 callers
Class
SourcesConfig
All sources configuration.
src/models.py:306
↓ 2 callers
Class
TwitterConfig
Twitter source configuration. Two modes are supported: - "apify": Use Apify scweet actor (requires APIFY_TOKEN, more reliable) - "playwri
src/models.py:191
↓ 1 callers
Class
AnthropicClient
Client for Anthropic Claude models.
src/ai/client.py:114
↓ 1 callers
Class
ContentEnricher
Enriches high-scoring content items with background knowledge.
src/ai/enricher.py:27
↓ 1 callers
Class
DummyConsole
src/services/email.py:38
↓ 1 callers
Class
DummyConsole
src/services/webhook.py:230
↓ 1 callers
Class
EmailConfig
Email configuration for updates/subscriptions.
src/models.py:388
↓ 1 callers
Class
GeminiClient
Client for Google Gemini models.
src/ai/client.py:459
↓ 1 callers
Class
GitHubScraper
Scraper for GitHub events and releases.
src/scrapers/github.py:15
↓ 1 callers
Class
HackerNewsConfig
Hacker News configuration.
src/models.py:128
↓ 1 callers
Class
HackerNewsScraper
Scraper for Hacker News stories with top comments.
src/scrapers/hackernews.py:19
↓ 1 callers
Class
HorizonRuntime
Loaded runtime references from a Horizon codebase.
src/mcp/horizon_adapter.py:32
↓ 1 callers
Class
OSSInsightScraper
Scraper for OSS Insight trending repositories endpoint.
src/scrapers/ossinsight.py:19
↓ 1 callers
Class
PipelineContext
Resolved execution context per call.
src/mcp/service.py:34
↓ 1 callers
Class
ProviderUsage
src/ai/tokens.py:14
↓ 1 callers
Class
RedditBlockedError
Raised when Reddit blocks an unauthenticated JSON listing request.
src/scrapers/reddit.py:42
↓ 1 callers
Class
RedditUserConfig
Configuration for monitoring a specific Reddit user.
src/models.py:158
↓ 1 callers
Class
TelegramChannelConfig
Configuration for monitoring a specific Telegram channel.
src/models.py:176
↓ 1 callers
Class
TelegramConfig
Telegram source configuration.
src/models.py:184
↓ 1 callers
Class
TelegramScraper
Scraper for Telegram public channels via web preview.
src/scrapers/telegram.py:21
↓ 1 callers
Class
TokenUsageSnapshot
src/ai/tokens.py:24
↓ 1 callers
Class
TwitterPlaywrightScraper
Fetch tweets via Playwright + Cookie using GraphQL interception (free alternative to Apify).
src/scrapers/twitter_playwright.py:64
↓ 1 callers
Class
_MockFactory
Factory that returns pre-built dummy clients in order.
tests/test_chained_client.py:27
Class
AIClient
Abstract base class for AI clients.
src/ai/client.py:89
Class
BaseScraper
Abstract base class for all scrapers.
src/scrapers/base.py:11
Class
FakeIMAP
tests/test_email.py:30
Class
FakeSMTP
tests/test_email.py:7
Class
OSSInsightConfig
OSS Insight trending repos source configuration. Pulls top star-gain repositories from the OSS Insight public API and emits them as ContentIt
src/models.py:248
Class
SourceType
Supported information source types.
src/models.py:9
Class
TestAzureOpenAIClientComplete
tests/test_azure_client.py:61
Class
TestAzureOpenAIClientInit
tests/test_azure_client.py:36
Class
TestExceptionClassification
tests/test_webhook.py:1510
Class
TestExpandEnvVars
Recursive ${VAR} expansion on config dicts/lists/strings.
tests/test_storage.py:57
Class
TestExtractHeaders
tests/test_webhook.py:376
Class
TestFactoryFunction
tests/test_azure_client.py:101
Class
TestFactoryFunction
tests/test_minimax_client.py:322
Class
TestFetchGuards
tests/test_openbb_scraper.py:76
Class
TestFiltering
tests/test_openbb_scraper.py:174
Class
TestHTTPStatusHandling
tests/test_webhook.py:1306
Class
TestIsJson
tests/test_webhook.py:353
Class
TestMapping
tests/test_openbb_scraper.py:116
Class
TestOpenAIClientComplete
tests/test_minimax_client.py:142
Class
TestOpenAIClientInit
tests/test_minimax_client.py:39
Class
TestRender
tests/test_webhook.py:34
Class
TestRenderDictAndList
tests/test_webhook.py:64
Class
TestRenderParameterized
tests/test_webhook.py:161
Class
TestResilience
tests/test_openbb_scraper.py:214
Class
TestSendDailySummary
tests/test_webhook.py:823
Class
TestSendFailureNotification
tests/test_webhook.py:1167
Class
TestSkipConsoleOutput
tests/test_webhook.py:1642
Class
TestStatic
tests/test_openbb_scraper.py:266
Class
TestTemperatureFallback
Retry-without-temperature path for models that deprecated temperature. Triggered by Claude Opus 4.7 on Bedrock Converse and any OpenAI-compatible
tests/test_minimax_client.py:207
Class
TestTruncate
tests/test_webhook.py:116
Class
TestURLValidation
tests/test_webhook.py:1223
Class
TestWebhookConfigFieldValidation
tests/test_webhook.py:1597
Class
TestWebhookConfigModel
tests/test_webhook.py:765
Class
TestWebhookMarkdownFormatting
tests/test_webhook.py:205
Class
TestWebhookNotifier
tests/test_webhook.py:423
Class
TestWebhookPreview
tests/test_webhook.py:297
Class
TestWebhookRedaction
tests/test_webhook.py:401