import { getLiveSourcesForAgent } from "./registry"; import type { AgentId, DataSourceSpec, LiveSourcePlanItem } from "./types"; function defaultPollIntervalMs(source: DataSourceSpec): number { switch (source.kind) { case "telegram": return 15_000; case "structured": case "api": return 30_000; case "rss": return 60_000; case "scrape": return 120_000; case "video": return 180_000; } } function defaultMaxItemsPerPull(source: DataSourceSpec): number { switch (source.kind) { case "telegram": return 20; case "structured": case "api": return 10; case "rss": return 8; case "scrape": return 5; case "video": return 1; } } function isWarmStartSource(source: DataSourceSpec): boolean { return source.kind === "telegram" || source.kind === "structured" || source.tags.includes("official"); } export function buildLiveSourcePlan(agentId: AgentId): LiveSourcePlanItem[] { return getLiveSourcesForAgent(agentId).map((source) => ({ sourceId: source.id, pollIntervalMs: defaultPollIntervalMs(source), warmStart: isWarmStartSource(source), maxItemsPerPull: defaultMaxItemsPerPull(source), })); }