koala73/worldmonitor · error
Missing publisher origin for provider: ${provider}
Error message
Missing publisher origin for provider: ${provider} What it means
providerOrigin could not resolve a publisher origin for a manifest provider: the provider's entry in PROVIDER_ORIGINS maps to null (resolveSourceOrigin failed for all of its hosts). This is a static registry-build defect in the ACTIVE_PROVIDERS manifest data — a provider lacks a usable host/origin — not a runtime user-input problem.
Source
Thrown at api/mcp/registry/source-tools.ts:62
const PROVIDER_HOSTS = new Map<string, string[]>();
for (const entry of ACTIVE_PROVIDERS) {
const provider = entry.provider || entry.host;
const hosts = PROVIDER_HOSTS.get(provider) || [];
if (!hosts.includes(entry.host)) hosts.push(entry.host);
PROVIDER_HOSTS.set(provider, hosts);
}
const PROVIDER_ORIGINS = new Map<string, string | null>();
for (const [provider, hosts] of PROVIDER_HOSTS) {
PROVIDER_ORIGINS.set(provider, resolveSourceOrigin({ provider, hosts }));
}
function providerOrigin(entry: ManifestEntry): string | null {
const provider = entry.provider || entry.host;
const origin = PROVIDER_ORIGINS.get(provider);
if (origin === undefined && !PROVIDER_ORIGINS.has(provider)) {
throw new Error(`Missing publisher origin for provider: ${provider}`);
}
return origin ?? null;
}
const SOURCE_VIEWS = ['summary', 'providers', 'outlets'] as const;
const SOURCE_PLATFORMS = ['telegram'] as const;
const DEFAULT_ROW_LIMIT = 50;
const MAX_ROW_LIMIT = 200;
interface PlatformIdentity {
platform: (typeof SOURCE_PLATFORMS)[number];
handle: string;
}
const PLATFORM_IDENTITIES_BY_SOURCE = new Map<string, PlatformIdentity[]>();
for (const entry of TELEGRAM_CHANNEL_TRUST) {
const identities = PLATFORM_IDENTITIES_BY_SOURCE.get(entry.name) || [];
identities.push({ platform: 'telegram', handle: entry.handle });View on GitHub (pinned to eeab0a219f)
Solutions
- Fix the provider's manifest entry in ACTIVE_PROVIDERS so it includes a resolvable host
- Make providerOrigin return a safe default or skip the provider instead of throwing when the origin is missing
- Add a registry unit test asserting every ACTIVE_PROVIDERS entry resolves to a non-null origin
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at api/mcp/registry/source-tools.ts:62 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of koala73/worldmonitor@eeab0a219f (2026-08-21).
Data as JSON: /api/errors/bedd9339b2165d79.
Report an issue: GitHub.